From e1b80650d9b3ee0b03a20b36cc2490262ca636b6 Mon Sep 17 00:00:00 2001 From: Rbb666 Date: Tue, 5 Mar 2024 13:51:03 +0800 Subject: [PATCH] [bsp][renesas]add ra8d1-vision-board support --- .github/workflows/bsp_buildings.yml | 1 + bsp/renesas/libraries/HAL_Drivers/drv_sci.c | 26 +- bsp/renesas/ra8d1-vision-board/.api_xml | 2 + bsp/renesas/ra8d1-vision-board/.config | 1083 + bsp/renesas/ra8d1-vision-board/.cproject | 222 + bsp/renesas/ra8d1-vision-board/.gitignore | 5 + .../ra8d1-vision-board/.ignore_format.yml | 9 + bsp/renesas/ra8d1-vision-board/.project | 28 + bsp/renesas/ra8d1-vision-board/.secure_azone | 151 + bsp/renesas/ra8d1-vision-board/.secure_xml | 213 + .../ra8d1-vision-board/.settings/.rtmenus | Bin 0 -> 1696400 bytes ...gnumcueclipse.managedbuild.cross.arm.prefs | 2 + .../.settings/language.settings.xml | 14 + .../.settings/local_temp_storage.prefs | 2 + .../.settings/org.eclipse.core.runtime.prefs | 3 + .../ra8d1-vision-board/.settings/projcfg.ini | 20 + ...ra8d1-vision-board.DAPLink.Debug.rttlaunch | 64 + .../.settings/standalone.prefs | 21 + bsp/renesas/ra8d1-vision-board/Kconfig | 29 + bsp/renesas/ra8d1-vision-board/README.md | 185 + bsp/renesas/ra8d1-vision-board/SConscript | 28 + bsp/renesas/ra8d1-vision-board/SConstruct | 67 + bsp/renesas/ra8d1-vision-board/board/Kconfig | 617 + .../ra8d1-vision-board/board/SConscript | 21 + bsp/renesas/ra8d1-vision-board/board/board.h | 38 + .../ra8d1-vision-board/board/ports/SConscript | 16 + .../board/ports/drv_sdram.c | 262 + .../ra8d1-vision-board/board/ports/fal_cfg.h | 38 + .../ra8d1-vision-board/board/ports/gpio_cfg.h | 82 + .../ra8d1-vision-board/board/ports/lcd_port.h | 36 + .../board/ports/mipi_lcd/SConscript | 13 + .../board/ports/mipi_lcd/mipi_config.c | 154 + .../ra8d1-vision-board/board/ports/mnt.c | 165 + bsp/renesas/ra8d1-vision-board/board/ra8_it.c | 20 + .../ra8d1-vision-board/buildinfo.gpdsc | 164 + .../ra8d1-vision-board/configuration.xml | 945 + .../ra8d1-vision-board/docs/picture/1.png | Bin 0 -> 17676 bytes .../ra8d1-vision-board/docs/picture/2.png | Bin 0 -> 11855 bytes .../ra8d1-vision-board/docs/picture/build.png | Bin 0 -> 28891 bytes .../docs/picture/download.png | Bin 0 -> 18100 bytes .../docs/picture/fsp_configure.png | Bin 0 -> 46405 bytes .../ra8d1-vision-board/docs/picture/hw.png | Bin 0 -> 75328 bytes .../ra8d1-vision-board/docs/picture/logo.png | Bin 0 -> 246090 bytes .../docs/picture/mdk_rasc.png | Bin 0 -> 263617 bytes .../docs/picture/mklinks.png | Bin 0 -> 70755 bytes .../docs/picture/uvprojx.png | Bin 0 -> 28165 bytes .../ra8d1-vision-board/memory_regions.scat | 30 + bsp/renesas/ra8d1-vision-board/project.uvoptx | 810 + .../ra8d1-vision-board/project.uvprojx | 2058 + bsp/renesas/ra8d1-vision-board/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 + .../ra/arm/CMSIS_5/LICENSE.txt | 201 + .../ra/board/ra8d1_ek/board.h | 63 + .../ra/board/ra8d1_ek/board_ethernet_phy.h | 61 + .../ra/board/ra8d1_ek/board_init.c | 62 + .../ra/board/ra8d1_ek/board_init.h | 58 + .../ra/board/ra8d1_ek/board_leds.c | 71 + .../ra/board/ra8d1_ek/board_leds.h | 75 + .../ra/board/ra8d1_ek/board_sdram.c | 246 + .../ra/board/ra8d1_ek/board_sdram.h | 46 + .../ra/fsp/inc/api/bsp_api.h | 111 + .../ra/fsp/inc/api/fsp_common_api.h | 387 + .../ra/fsp/inc/api/r_ioport_api.h | 206 + .../ra/fsp/inc/api/r_transfer_api.h | 381 + .../ra/fsp/inc/api/r_uart_api.h | 267 + .../ra/fsp/inc/fsp_features.h | 304 + .../ra/fsp/inc/fsp_version.h | 90 + .../ra/fsp/inc/instances/r_ioport.h | 527 + .../ra/fsp/inc/instances/r_sci_b_uart.h | 218 + .../cmsis/Device/RENESAS/Include/R7FA8D1BH.h | 43948 ++++++++++++++++ .../cmsis/Device/RENESAS/Include/renesas.h | 150 + .../bsp/cmsis/Device/RENESAS/Include/system.h | 58 + .../bsp/cmsis/Device/RENESAS/Source/startup.c | 156 + .../bsp/cmsis/Device/RENESAS/Source/system.c | 845 + .../ra/fsp/src/bsp/mcu/all/bsp_clocks.c | 2535 + .../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 | 582 + .../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 + .../ra/fsp/src/bsp/mcu/all/bsp_io.c | 41 + .../ra/fsp/src/bsp/mcu/all/bsp_io.h | 470 + .../ra/fsp/src/bsp/mcu/all/bsp_irq.c | 123 + .../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 + .../ra/fsp/src/bsp/mcu/all/bsp_tfu.h | 232 + .../ra/fsp/src/bsp/mcu/ra8d1/bsp_elc.h | 376 + .../ra/fsp/src/bsp/mcu/ra8d1/bsp_feature.h | 454 + .../ra/fsp/src/bsp/mcu/ra8d1/bsp_mcu_info.h | 58 + .../ra/fsp/src/bsp/mcu/ra8d1/bsp_override.h | 97 + .../ra/fsp/src/r_ioport/r_ioport.c | 922 + .../ra/fsp/src/r_sci_b_uart/r_sci_b_uart.c | 1817 + .../ra8d1-vision-board/ra_cfg/SConscript | 20 + .../ra_cfg/fsp_cfg/bsp/board_cfg.h | 5 + .../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 | 560 + .../ra_cfg/fsp_cfg/bsp/bsp_pin_cfg.h | 174 + .../ra_cfg/fsp_cfg/r_ioport_cfg.h | 13 + .../ra_cfg/fsp_cfg/r_sci_b_uart_cfg.h | 16 + .../ra8d1-vision-board/ra_gen/SConscript | 20 + .../ra8d1-vision-board/ra_gen/bsp_clock_cfg.h | 58 + .../ra8d1-vision-board/ra_gen/common_data.c | 11 + .../ra8d1-vision-board/ra_gen/common_data.h | 20 + .../ra8d1-vision-board/ra_gen/hal_data.c | 89 + .../ra8d1-vision-board/ra_gen/hal_data.h | 24 + bsp/renesas/ra8d1-vision-board/ra_gen/main.c | 6 + .../ra8d1-vision-board/ra_gen/pin_data.c | 512 + .../ra8d1-vision-board/ra_gen/vector_data.c | 29 + .../ra8d1-vision-board/ra_gen/vector_data.h | 32 + bsp/renesas/ra8d1-vision-board/rtconfig.h | 266 + bsp/renesas/ra8d1-vision-board/rtconfig.py | 137 + .../script/ac6/fsp_keep.via | 1 + bsp/renesas/ra8d1-vision-board/script/fsp.ld | 794 + .../ra8d1-vision-board/script/fsp.scat | 986 + .../script/memory_regions.ld | 28 + .../ra8d1-vision-board/src/hal_entry.c | 32 + .../ra8d1-vision-board/template.uvoptx | 218 + .../ra8d1-vision-board/template.uvprojx | 424 + 162 files changed, 125967 insertions(+), 4 deletions(-) create mode 100644 bsp/renesas/ra8d1-vision-board/.api_xml create mode 100644 bsp/renesas/ra8d1-vision-board/.config create mode 100644 bsp/renesas/ra8d1-vision-board/.cproject create mode 100644 bsp/renesas/ra8d1-vision-board/.gitignore create mode 100644 bsp/renesas/ra8d1-vision-board/.ignore_format.yml create mode 100644 bsp/renesas/ra8d1-vision-board/.project create mode 100644 bsp/renesas/ra8d1-vision-board/.secure_azone create mode 100644 bsp/renesas/ra8d1-vision-board/.secure_xml create mode 100644 bsp/renesas/ra8d1-vision-board/.settings/.rtmenus create mode 100644 bsp/renesas/ra8d1-vision-board/.settings/ilg.gnumcueclipse.managedbuild.cross.arm.prefs create mode 100644 bsp/renesas/ra8d1-vision-board/.settings/language.settings.xml create mode 100644 bsp/renesas/ra8d1-vision-board/.settings/local_temp_storage.prefs create mode 100644 bsp/renesas/ra8d1-vision-board/.settings/org.eclipse.core.runtime.prefs create mode 100644 bsp/renesas/ra8d1-vision-board/.settings/projcfg.ini create mode 100644 bsp/renesas/ra8d1-vision-board/.settings/ra8d1-vision-board.DAPLink.Debug.rttlaunch create mode 100644 bsp/renesas/ra8d1-vision-board/.settings/standalone.prefs create mode 100644 bsp/renesas/ra8d1-vision-board/Kconfig create mode 100644 bsp/renesas/ra8d1-vision-board/README.md create mode 100644 bsp/renesas/ra8d1-vision-board/SConscript create mode 100644 bsp/renesas/ra8d1-vision-board/SConstruct create mode 100644 bsp/renesas/ra8d1-vision-board/board/Kconfig create mode 100644 bsp/renesas/ra8d1-vision-board/board/SConscript create mode 100644 bsp/renesas/ra8d1-vision-board/board/board.h create mode 100644 bsp/renesas/ra8d1-vision-board/board/ports/SConscript create mode 100644 bsp/renesas/ra8d1-vision-board/board/ports/drv_sdram.c create mode 100644 bsp/renesas/ra8d1-vision-board/board/ports/fal_cfg.h create mode 100644 bsp/renesas/ra8d1-vision-board/board/ports/gpio_cfg.h create mode 100644 bsp/renesas/ra8d1-vision-board/board/ports/lcd_port.h create mode 100644 bsp/renesas/ra8d1-vision-board/board/ports/mipi_lcd/SConscript create mode 100644 bsp/renesas/ra8d1-vision-board/board/ports/mipi_lcd/mipi_config.c create mode 100644 bsp/renesas/ra8d1-vision-board/board/ports/mnt.c create mode 100644 bsp/renesas/ra8d1-vision-board/board/ra8_it.c create mode 100644 bsp/renesas/ra8d1-vision-board/buildinfo.gpdsc create mode 100644 bsp/renesas/ra8d1-vision-board/configuration.xml create mode 100644 bsp/renesas/ra8d1-vision-board/docs/picture/1.png create mode 100644 bsp/renesas/ra8d1-vision-board/docs/picture/2.png create mode 100644 bsp/renesas/ra8d1-vision-board/docs/picture/build.png create mode 100644 bsp/renesas/ra8d1-vision-board/docs/picture/download.png create mode 100644 bsp/renesas/ra8d1-vision-board/docs/picture/fsp_configure.png create mode 100644 bsp/renesas/ra8d1-vision-board/docs/picture/hw.png create mode 100644 bsp/renesas/ra8d1-vision-board/docs/picture/logo.png create mode 100644 bsp/renesas/ra8d1-vision-board/docs/picture/mdk_rasc.png create mode 100644 bsp/renesas/ra8d1-vision-board/docs/picture/mklinks.png create mode 100644 bsp/renesas/ra8d1-vision-board/docs/picture/uvprojx.png create mode 100644 bsp/renesas/ra8d1-vision-board/memory_regions.scat create mode 100644 bsp/renesas/ra8d1-vision-board/project.uvoptx create mode 100644 bsp/renesas/ra8d1-vision-board/project.uvprojx create mode 100644 bsp/renesas/ra8d1-vision-board/ra/SConscript create mode 100644 bsp/renesas/ra8d1-vision-board/ra/arm/CMSIS_5/CMSIS/Core/Include/cachel1_armv7.h create mode 100644 bsp/renesas/ra8d1-vision-board/ra/arm/CMSIS_5/CMSIS/Core/Include/cmsis_armcc.h create mode 100644 bsp/renesas/ra8d1-vision-board/ra/arm/CMSIS_5/CMSIS/Core/Include/cmsis_armclang.h create mode 100644 bsp/renesas/ra8d1-vision-board/ra/arm/CMSIS_5/CMSIS/Core/Include/cmsis_armclang_ltm.h create mode 100644 bsp/renesas/ra8d1-vision-board/ra/arm/CMSIS_5/CMSIS/Core/Include/cmsis_compiler.h create mode 100644 bsp/renesas/ra8d1-vision-board/ra/arm/CMSIS_5/CMSIS/Core/Include/cmsis_gcc.h create mode 100644 bsp/renesas/ra8d1-vision-board/ra/arm/CMSIS_5/CMSIS/Core/Include/cmsis_iccarm.h create mode 100644 bsp/renesas/ra8d1-vision-board/ra/arm/CMSIS_5/CMSIS/Core/Include/cmsis_version.h create mode 100644 bsp/renesas/ra8d1-vision-board/ra/arm/CMSIS_5/CMSIS/Core/Include/core_armv81mml.h create mode 100644 bsp/renesas/ra8d1-vision-board/ra/arm/CMSIS_5/CMSIS/Core/Include/core_armv8mbl.h create mode 100644 bsp/renesas/ra8d1-vision-board/ra/arm/CMSIS_5/CMSIS/Core/Include/core_armv8mml.h create mode 100644 bsp/renesas/ra8d1-vision-board/ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm0.h create mode 100644 bsp/renesas/ra8d1-vision-board/ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm0plus.h create mode 100644 bsp/renesas/ra8d1-vision-board/ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm1.h create mode 100644 bsp/renesas/ra8d1-vision-board/ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm23.h create mode 100644 bsp/renesas/ra8d1-vision-board/ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm3.h create mode 100644 bsp/renesas/ra8d1-vision-board/ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm33.h create mode 100644 bsp/renesas/ra8d1-vision-board/ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm35p.h create mode 100644 bsp/renesas/ra8d1-vision-board/ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm4.h create mode 100644 bsp/renesas/ra8d1-vision-board/ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm55.h create mode 100644 bsp/renesas/ra8d1-vision-board/ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm7.h create mode 100644 bsp/renesas/ra8d1-vision-board/ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm85.h create mode 100644 bsp/renesas/ra8d1-vision-board/ra/arm/CMSIS_5/CMSIS/Core/Include/core_sc000.h create mode 100644 bsp/renesas/ra8d1-vision-board/ra/arm/CMSIS_5/CMSIS/Core/Include/core_sc300.h create mode 100644 bsp/renesas/ra8d1-vision-board/ra/arm/CMSIS_5/CMSIS/Core/Include/core_starmc1.h create mode 100644 bsp/renesas/ra8d1-vision-board/ra/arm/CMSIS_5/CMSIS/Core/Include/mpu_armv7.h create mode 100644 bsp/renesas/ra8d1-vision-board/ra/arm/CMSIS_5/CMSIS/Core/Include/mpu_armv8.h create mode 100644 bsp/renesas/ra8d1-vision-board/ra/arm/CMSIS_5/CMSIS/Core/Include/pac_armv81.h create mode 100644 bsp/renesas/ra8d1-vision-board/ra/arm/CMSIS_5/CMSIS/Core/Include/pmu_armv8.h create mode 100644 bsp/renesas/ra8d1-vision-board/ra/arm/CMSIS_5/CMSIS/Core/Include/tz_context.h create mode 100644 bsp/renesas/ra8d1-vision-board/ra/arm/CMSIS_5/LICENSE.txt create mode 100644 bsp/renesas/ra8d1-vision-board/ra/board/ra8d1_ek/board.h create mode 100644 bsp/renesas/ra8d1-vision-board/ra/board/ra8d1_ek/board_ethernet_phy.h create mode 100644 bsp/renesas/ra8d1-vision-board/ra/board/ra8d1_ek/board_init.c create mode 100644 bsp/renesas/ra8d1-vision-board/ra/board/ra8d1_ek/board_init.h create mode 100644 bsp/renesas/ra8d1-vision-board/ra/board/ra8d1_ek/board_leds.c create mode 100644 bsp/renesas/ra8d1-vision-board/ra/board/ra8d1_ek/board_leds.h create mode 100644 bsp/renesas/ra8d1-vision-board/ra/board/ra8d1_ek/board_sdram.c create mode 100644 bsp/renesas/ra8d1-vision-board/ra/board/ra8d1_ek/board_sdram.h create mode 100644 bsp/renesas/ra8d1-vision-board/ra/fsp/inc/api/bsp_api.h create mode 100644 bsp/renesas/ra8d1-vision-board/ra/fsp/inc/api/fsp_common_api.h create mode 100644 bsp/renesas/ra8d1-vision-board/ra/fsp/inc/api/r_ioport_api.h create mode 100644 bsp/renesas/ra8d1-vision-board/ra/fsp/inc/api/r_transfer_api.h create mode 100644 bsp/renesas/ra8d1-vision-board/ra/fsp/inc/api/r_uart_api.h create mode 100644 bsp/renesas/ra8d1-vision-board/ra/fsp/inc/fsp_features.h create mode 100644 bsp/renesas/ra8d1-vision-board/ra/fsp/inc/fsp_version.h create mode 100644 bsp/renesas/ra8d1-vision-board/ra/fsp/inc/instances/r_ioport.h create mode 100644 bsp/renesas/ra8d1-vision-board/ra/fsp/inc/instances/r_sci_b_uart.h create mode 100644 bsp/renesas/ra8d1-vision-board/ra/fsp/src/bsp/cmsis/Device/RENESAS/Include/R7FA8D1BH.h create mode 100644 bsp/renesas/ra8d1-vision-board/ra/fsp/src/bsp/cmsis/Device/RENESAS/Include/renesas.h create mode 100644 bsp/renesas/ra8d1-vision-board/ra/fsp/src/bsp/cmsis/Device/RENESAS/Include/system.h create mode 100644 bsp/renesas/ra8d1-vision-board/ra/fsp/src/bsp/cmsis/Device/RENESAS/Source/startup.c create mode 100644 bsp/renesas/ra8d1-vision-board/ra/fsp/src/bsp/cmsis/Device/RENESAS/Source/system.c create mode 100644 bsp/renesas/ra8d1-vision-board/ra/fsp/src/bsp/mcu/all/bsp_clocks.c create mode 100644 bsp/renesas/ra8d1-vision-board/ra/fsp/src/bsp/mcu/all/bsp_clocks.h create mode 100644 bsp/renesas/ra8d1-vision-board/ra/fsp/src/bsp/mcu/all/bsp_common.c create mode 100644 bsp/renesas/ra8d1-vision-board/ra/fsp/src/bsp/mcu/all/bsp_common.h create mode 100644 bsp/renesas/ra8d1-vision-board/ra/fsp/src/bsp/mcu/all/bsp_compiler_support.h create mode 100644 bsp/renesas/ra8d1-vision-board/ra/fsp/src/bsp/mcu/all/bsp_delay.c create mode 100644 bsp/renesas/ra8d1-vision-board/ra/fsp/src/bsp/mcu/all/bsp_delay.h create mode 100644 bsp/renesas/ra8d1-vision-board/ra/fsp/src/bsp/mcu/all/bsp_exceptions.h create mode 100644 bsp/renesas/ra8d1-vision-board/ra/fsp/src/bsp/mcu/all/bsp_group_irq.c create mode 100644 bsp/renesas/ra8d1-vision-board/ra/fsp/src/bsp/mcu/all/bsp_group_irq.h create mode 100644 bsp/renesas/ra8d1-vision-board/ra/fsp/src/bsp/mcu/all/bsp_guard.c create mode 100644 bsp/renesas/ra8d1-vision-board/ra/fsp/src/bsp/mcu/all/bsp_guard.h create mode 100644 bsp/renesas/ra8d1-vision-board/ra/fsp/src/bsp/mcu/all/bsp_io.c create mode 100644 bsp/renesas/ra8d1-vision-board/ra/fsp/src/bsp/mcu/all/bsp_io.h create mode 100644 bsp/renesas/ra8d1-vision-board/ra/fsp/src/bsp/mcu/all/bsp_irq.c create mode 100644 bsp/renesas/ra8d1-vision-board/ra/fsp/src/bsp/mcu/all/bsp_irq.h create mode 100644 bsp/renesas/ra8d1-vision-board/ra/fsp/src/bsp/mcu/all/bsp_mcu_api.h create mode 100644 bsp/renesas/ra8d1-vision-board/ra/fsp/src/bsp/mcu/all/bsp_module_stop.h create mode 100644 bsp/renesas/ra8d1-vision-board/ra/fsp/src/bsp/mcu/all/bsp_register_protection.c create mode 100644 bsp/renesas/ra8d1-vision-board/ra/fsp/src/bsp/mcu/all/bsp_register_protection.h create mode 100644 bsp/renesas/ra8d1-vision-board/ra/fsp/src/bsp/mcu/all/bsp_rom_registers.c create mode 100644 bsp/renesas/ra8d1-vision-board/ra/fsp/src/bsp/mcu/all/bsp_sbrk.c create mode 100644 bsp/renesas/ra8d1-vision-board/ra/fsp/src/bsp/mcu/all/bsp_security.c create mode 100644 bsp/renesas/ra8d1-vision-board/ra/fsp/src/bsp/mcu/all/bsp_security.h create mode 100644 bsp/renesas/ra8d1-vision-board/ra/fsp/src/bsp/mcu/all/bsp_tfu.h create mode 100644 bsp/renesas/ra8d1-vision-board/ra/fsp/src/bsp/mcu/ra8d1/bsp_elc.h create mode 100644 bsp/renesas/ra8d1-vision-board/ra/fsp/src/bsp/mcu/ra8d1/bsp_feature.h create mode 100644 bsp/renesas/ra8d1-vision-board/ra/fsp/src/bsp/mcu/ra8d1/bsp_mcu_info.h create mode 100644 bsp/renesas/ra8d1-vision-board/ra/fsp/src/bsp/mcu/ra8d1/bsp_override.h create mode 100644 bsp/renesas/ra8d1-vision-board/ra/fsp/src/r_ioport/r_ioport.c create mode 100644 bsp/renesas/ra8d1-vision-board/ra/fsp/src/r_sci_b_uart/r_sci_b_uart.c create mode 100644 bsp/renesas/ra8d1-vision-board/ra_cfg/SConscript create mode 100644 bsp/renesas/ra8d1-vision-board/ra_cfg/fsp_cfg/bsp/board_cfg.h create mode 100644 bsp/renesas/ra8d1-vision-board/ra_cfg/fsp_cfg/bsp/bsp_cfg.h create mode 100644 bsp/renesas/ra8d1-vision-board/ra_cfg/fsp_cfg/bsp/bsp_mcu_device_cfg.h create mode 100644 bsp/renesas/ra8d1-vision-board/ra_cfg/fsp_cfg/bsp/bsp_mcu_device_pn_cfg.h create mode 100644 bsp/renesas/ra8d1-vision-board/ra_cfg/fsp_cfg/bsp/bsp_mcu_family_cfg.h create mode 100644 bsp/renesas/ra8d1-vision-board/ra_cfg/fsp_cfg/bsp/bsp_pin_cfg.h create mode 100644 bsp/renesas/ra8d1-vision-board/ra_cfg/fsp_cfg/r_ioport_cfg.h create mode 100644 bsp/renesas/ra8d1-vision-board/ra_cfg/fsp_cfg/r_sci_b_uart_cfg.h create mode 100644 bsp/renesas/ra8d1-vision-board/ra_gen/SConscript create mode 100644 bsp/renesas/ra8d1-vision-board/ra_gen/bsp_clock_cfg.h create mode 100644 bsp/renesas/ra8d1-vision-board/ra_gen/common_data.c create mode 100644 bsp/renesas/ra8d1-vision-board/ra_gen/common_data.h create mode 100644 bsp/renesas/ra8d1-vision-board/ra_gen/hal_data.c create mode 100644 bsp/renesas/ra8d1-vision-board/ra_gen/hal_data.h create mode 100644 bsp/renesas/ra8d1-vision-board/ra_gen/main.c create mode 100644 bsp/renesas/ra8d1-vision-board/ra_gen/pin_data.c create mode 100644 bsp/renesas/ra8d1-vision-board/ra_gen/vector_data.c create mode 100644 bsp/renesas/ra8d1-vision-board/ra_gen/vector_data.h create mode 100644 bsp/renesas/ra8d1-vision-board/rtconfig.h create mode 100644 bsp/renesas/ra8d1-vision-board/rtconfig.py create mode 100644 bsp/renesas/ra8d1-vision-board/script/ac6/fsp_keep.via create mode 100644 bsp/renesas/ra8d1-vision-board/script/fsp.ld create mode 100644 bsp/renesas/ra8d1-vision-board/script/fsp.scat create mode 100644 bsp/renesas/ra8d1-vision-board/script/memory_regions.ld create mode 100644 bsp/renesas/ra8d1-vision-board/src/hal_entry.c create mode 100644 bsp/renesas/ra8d1-vision-board/template.uvoptx create mode 100644 bsp/renesas/ra8d1-vision-board/template.uvprojx diff --git a/.github/workflows/bsp_buildings.yml b/.github/workflows/bsp_buildings.yml index 659a3139c9..08fc5b2fac 100644 --- a/.github/workflows/bsp_buildings.yml +++ b/.github/workflows/bsp_buildings.yml @@ -218,6 +218,7 @@ jobs: - "renesas/ra2l1-cpk" - "renesas/ra8m1-ek" - "renesas/ra8d1-ek" + - "renesas/ra8d1-vision-board" - RTT_BSP: "gd32_n32_apm32" RTT_TOOL_CHAIN: "sourcery-arm" SUB_RTT_BSP: diff --git a/bsp/renesas/libraries/HAL_Drivers/drv_sci.c b/bsp/renesas/libraries/HAL_Drivers/drv_sci.c index f97f005eb0..38023e25fa 100644 --- a/bsp/renesas/libraries/HAL_Drivers/drv_sci.c +++ b/bsp/renesas/libraries/HAL_Drivers/drv_sci.c @@ -22,6 +22,15 @@ #endif /* DRV_DEBUG */ #include +#ifdef R_SCI_B_SPI_H + #define R_SCI_SPI_Write R_SCI_B_SPI_Write + #define R_SCI_SPI_Read R_SCI_B_SPI_Read + #define R_SCI_SPI_WriteRead R_SCI_B_SPI_WriteRead + #define R_SCI_SPI_Open R_SCI_B_SPI_Open + #define R_SCI_SPI_Close R_SCI_B_SPI_Close + #define R_SCI_SPI_CallbackSet R_SCI_B_SPI_CallbackSet +#endif + enum { #ifdef BSP_USING_SCI0 @@ -108,7 +117,7 @@ struct ra_sci_object #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 @@ -225,7 +234,7 @@ const static struct ra_sci_param sci_param[] = #endif }; -static struct ra_sci_object sci_obj[RA_SCI_INDEX_MAX] = {0}; +static struct ra_sci_object sci_obj[RA_SCI_INDEX_MAX]; rt_used static rt_err_t ra_wait_complete(struct ra_sci_object *obj) { rt_uint32_t event = 0; @@ -625,6 +634,7 @@ static rt_err_t ra_write_read_message(struct rt_spi_device *device, struct rt_sp LOG_E("%s write and read failed. %d", param->bus_name, err); return -RT_ERROR; } + /* Wait for SPI_EVENT_TRANSFER_COMPLETE callback event. */ ra_wait_complete(obj); return message->length; @@ -648,13 +658,21 @@ static rt_err_t ra_hw_spi_configure(struct rt_spi_device *device, configuration->data_width = configuration->data_width / 8; obj->spi_cfg = configuration; - sci_spi_extended_cfg_t *cfg_ext = (sci_spi_extended_cfg_t *)cfg->p_extend; +#ifdef R_SCI_B_SPI_H + sci_b_spi_extended_cfg_t spi_cfg = *(sci_b_spi_extended_cfg_t *)cfg->p_extend; +#else + sci_spi_extended_cfg_t *spi_cfg = (sci_spi_extended_cfg_t *)cfg->p_extend; +#endif /**< Configure Select Line */ rt_pin_write(device->cs_pin, PIN_HIGH); /**< config bitrate */ +#ifdef R_SCI_B_SPI_H + R_SCI_B_SPI_CalculateBitrate(obj->spi_cfg->max_hz, SCI_B_SPI_SOURCE_CLOCK_PCLK, &spi_cfg.clk_div); +#else R_SCI_SPI_CalculateBitrate(obj->spi_cfg->max_hz, &cfg_ext->clk_div, false); +#endif /**< init */ err = R_SCI_SPI_Open((spi_ctrl_t *)param->sci_ctrl, cfg); @@ -863,7 +881,7 @@ rt_weak int rt_hw_usart_init(void) * Attach the spi device to SPI bus, this function must be used after initialization. */ #ifdef BSP_USING_SCIn_SPI -rt_err_t drv_sci_spi_device_attach(const char *bus_name, const char *device_name, rt_base_t cs_pin) +rt_err_t rt_hw_sci_spi_device_attach(const char *bus_name, const char *device_name, rt_base_t cs_pin) { RT_ASSERT(bus_name != RT_NULL); RT_ASSERT(device_name != RT_NULL); diff --git a/bsp/renesas/ra8d1-vision-board/.api_xml b/bsp/renesas/ra8d1-vision-board/.api_xml new file mode 100644 index 0000000000..fc9bf0b30e --- /dev/null +++ b/bsp/renesas/ra8d1-vision-board/.api_xml @@ -0,0 +1,2 @@ + + diff --git a/bsp/renesas/ra8d1-vision-board/.config b/bsp/renesas/ra8d1-vision-board/.config new file mode 100644 index 0000000000..6eb44c0384 --- /dev/null +++ b/bsp/renesas/ra8d1-vision-board/.config @@ -0,0 +1,1083 @@ +# +# Automatically generated file; DO NOT EDIT. +# RT-Thread Configuration +# + +# +# RT-Thread Kernel +# +CONFIG_RT_NAME_MAX=12 +# CONFIG_RT_USING_ARCH_DATA_TYPE is not set +# CONFIG_RT_USING_SMART is not set +# CONFIG_RT_USING_NANO is not set +# CONFIG_RT_USING_AMP is not set +# CONFIG_RT_USING_SMP is not set +CONFIG_RT_CPUS_NR=1 +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_HOOKLIST is not set +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_AUTO_INIT is not set + +# +# 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=y +# CONFIG_RT_USING_SMALL_MEM is not set +# CONFIG_RT_USING_SLAB is not set +CONFIG_RT_USING_MEMHEAP=y +CONFIG_RT_MEMHEAP_FAST_MODE=y +# CONFIG_RT_MEMHEAP_BEST_MODE is not set +# CONFIG_RT_USING_SMALL_MEM_AS_HEAP is not set +CONFIG_RT_USING_MEMHEAP_AS_HEAP=y +CONFIG_RT_USING_MEMHEAP_AUTO_BINDING=y +# 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 +CONFIG_RT_USING_DEVICE=y +# CONFIG_RT_USING_DEVICE_OPS is not set +# CONFIG_RT_USING_INTERRUPT_INFO is not set +# CONFIG_RT_USING_THREADSAFE_PRINTF is not set +# CONFIG_RT_USING_SCHED_THREAD_CTX 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_BACKTRACE_LEVEL_MAX_NR=32 +# 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_DM is not set +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_CPUTIME is not set +# CONFIG_RT_USING_I2C is not set +# CONFIG_RT_USING_PHY is not set +# 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_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_PIN=y +# CONFIG_RT_USING_KTIME is not set +# CONFIG_RT_USING_HWTIMER 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 + +# +# Memory protection +# +# CONFIG_RT_USING_MEM_PROTECTION is not set +# CONFIG_RT_USING_HW_STACK_GUARD 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 + +# +# 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 + +# +# BL808 WiFi +# +# CONFIG_PKG_USING_WLAN_BL808 is not set + +# +# CYW43439 WiFi +# +# CONFIG_PKG_USING_WLAN_CYW43439 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_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_BT_CYW43012 is not set +# CONFIG_PKG_USING_CYW43XX 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 +# CONFIG_PKG_USING_LHC_MODBUS 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 +# CONFIG_PKG_USING_RTP is not set +# CONFIG_PKG_USING_REB is not set +# CONFIG_PKG_USING_R_RHEALSTONE 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_VS1003 is not set +# CONFIG_PKG_USING_X9555 is not set +# CONFIG_PKG_USING_SYSTEM_RUN_LED is not set +# CONFIG_PKG_USING_BT_MX01 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 +# CONFIG_PKG_USING_R_TINYMAIX 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_TINYSQUARE 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_RALARAM 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_SKETCH_LOADER_DEMO is not set +# CONFIG_PKG_USING_ARDUINO_ULTRASOUND_RADAR is not set +# CONFIG_PKG_USING_ARDUINO_NINEINONE_SENSOR_SHIELD 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_ADAFRUIT_SENSOR is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SENSORLAB 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_VL6180X is not set +# CONFIG_PKG_USING_ARDUINO_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_ARDUINO_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_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_ARDUINO_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_ARDUINO_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 +# CONFIG_PKG_USING_ARDUINO_CAPACITIVESENSOR 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_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 +# CONFIG_PKG_USING_ARDUINO_SEEED_PCF85063TP 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_R7FA8D1AH=y + +# +# 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_ADC is not set +# CONFIG_BSP_USING_DAC is not set +CONFIG_BSP_USING_UART=y +# CONFIG_BSP_USING_UART2 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 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_SDHI is not set +# CONFIG_BSP_USING_PWM is not set +# CONFIG_BSP_USING_CAN is not set +# CONFIG_BSP_USING_LCD is not set +# CONFIG_BSP_USING_G2D is not set +CONFIG_BSP_USING_SDRAM=y +CONFIG_BSP_USING_SDRAM_SIZE=0x2000000 +# CONFIG_BSP_USING_ETH is not set +# CONFIG_BSP_USING_LVGL is not set +# CONFIG_BSP_USING_RW007 is not set diff --git a/bsp/renesas/ra8d1-vision-board/.cproject b/bsp/renesas/ra8d1-vision-board/.cproject new file mode 100644 index 0000000000..d2c6e6484c --- /dev/null +++ b/bsp/renesas/ra8d1-vision-board/.cproject @@ -0,0 +1,222 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/bsp/renesas/ra8d1-vision-board/.gitignore b/bsp/renesas/ra8d1-vision-board/.gitignore new file mode 100644 index 0000000000..9ac428c1b3 --- /dev/null +++ b/bsp/renesas/ra8d1-vision-board/.gitignore @@ -0,0 +1,5 @@ +/RTE +/Listings +/Objects +ra_cfg.txt + diff --git a/bsp/renesas/ra8d1-vision-board/.ignore_format.yml b/bsp/renesas/ra8d1-vision-board/.ignore_format.yml new file mode 100644 index 0000000000..af51bf92aa --- /dev/null +++ b/bsp/renesas/ra8d1-vision-board/.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/ra8d1-vision-board/.project b/bsp/renesas/ra8d1-vision-board/.project new file mode 100644 index 0000000000..dbce321609 --- /dev/null +++ b/bsp/renesas/ra8d1-vision-board/.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/ra8d1-vision-board/.secure_azone b/bsp/renesas/ra8d1-vision-board/.secure_azone new file mode 100644 index 0000000000..77af82ec1d --- /dev/null +++ b/bsp/renesas/ra8d1-vision-board/.secure_azone @@ -0,0 +1,151 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/bsp/renesas/ra8d1-vision-board/.secure_xml b/bsp/renesas/ra8d1-vision-board/.secure_xml new file mode 100644 index 0000000000..ceceb35637 --- /dev/null +++ b/bsp/renesas/ra8d1-vision-board/.secure_xml @@ -0,0 +1,213 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/bsp/renesas/ra8d1-vision-board/.settings/.rtmenus b/bsp/renesas/ra8d1-vision-board/.settings/.rtmenus new file mode 100644 index 0000000000000000000000000000000000000000..bed57a56a0a5cc87f3e0f1b47d44308bcb5b7f5d GIT binary patch literal 1696400 zcmV(wKSrDT4?lm~~HDfExsama!%8~zvf|G-@=Sc~xf%!SN-SHK~UVuvg zZC@NDQMy&Y_?D*;C$~e;;7B^w7HF2DkS@D`vdbImtaZ6Kc2vEY+R@3zWqQ;PQon5f z8;NvU1oQ8HuGM!#dS4Un&vk9?{3q*8XC}(5M5icIqLLS0;h@|Ky$GWCojDXz{Lp@T z1zsWf1WPXB9k3b@T_}7uK1_gYAt*9&d*#tL;`5OAt~l4^M){w~^)H%RMO`@I-o@EL zclt=LT&f>z)5b458TJFQ@T`gbpJfxAvyA3#uPy z0HU95@F+6oau}6}dK#y?yWwNQ33J#H@UBUnb<5m-RF8ZhvV_<}o@59- zVtCV9Y;u?pvqIz6mBXf`rE%ezPj9HB?5u#^>ifMTquvuvs^GY3>Z#+JJ|A@o^q>(9 zyh+=c=RQt^`wJynlbg9FR9ae-*qF*rJd8?*t}lAzUc6jR#q}Ua`CmjiM#D?;r@^ACYarH|tma{?V-wmRm$ZF$B z1J&TuZs9)yTgxN5)XtgRC|h_Q!W#qb`^@?S*vk*_Ll}j~*6ROjGaxsa(|H#EYHB#2Kjwotunbvxs0Si(BjJG-zhlP{@5jJOgu<}@kwo<-Wh zA;i5Lzw}#>n~-b*7TYcY!f$S`GRGn`L!fwHMQWgyQwybBf&wYofSv0Fk-*u>b>)ai zIUc+UezhF!wm^Zezt7W1<8?r0Hl+?vp(fUmxGF&GY8Mh{;xVwcR`~L~4bo}I#ka9{ zQTJZiw*9RFnK~{eGuDJA1%w&|Lh%uk0aR1$d|zSfh6d!s8O;;fOT;N`@0^UVOpkt_++6n<*knCPMOB=ensw81Qa+!b6MW-^ zK}3iD9RK0-w|P7-u#9Rw4ZhFh@T9Gqz%h5dPXgMv_uoV99Oj|MZPMj0;oQfmS3^dv z0yBwOCx>w@Ws8E)sIuBJoWec3LezVQ^-=sAp|Z{c)N8N}pg|8wJeEH;dmn~AT_I!e z=Z#FqKj%RmG0;Id3?c)bM3mTZ92K5W#LYZaW+*q+7;+<&?F|VTv1q{?B-#ugk3t7He!xzgzS`}R+ymhOjQg*{}mdY8bHh8a5 zRwkp9bj;k#Fnc(RY%&_bc6ns=CAaw)xF#zUvaW=ttS*KHySC0J!8NWava;`bWf!$G zN;Z9`QWAf4$i^t>+KZa)m(;-=1rZX?$iQg;KWK@&vcpP|ME%AZGmnOuRVD*LNGtE} zTeJnkE&Gy?XwW#7oFqA9Z$~22gZiyL*?4)w(}Yv1AGTQaJ-&Dg>u@@DjAS^P`8ioE zM^Ts*zHzO4R#;4~^XBf$KlR-FzkoT6A>V2t2iDx56PyV$5Z(DmE7as##85KWy10)8 zJQW&%=bknWwZ$vyP_Z4?xCztX>|tg>;W5&DaBzO+e>kx#$h7P`9^x}Ohjl{RRU zY9FYW!B=&?4i#gKirn{h(DkSkGFn<4c7t zR|C+PD4cw@FL6&>jW+Y=tQ2Ec$RqQ`)g`egyG+IIvvU5} zDhGiH+yf0%B9>6U{IMXPpUF?u>OY~kB$V60$`-{Q4g_x;V;~G(#bYYkAn!?1m10g1 zvHdhqgPoPwqKjn91`&2K*`{3-bAioniVhqA`RoI?vAiX-^hS>kxh;zZDoce$EVeTd zlJQbKTPWr^1yN)64HFn*m=Jcm^d0_5^>+ZP*{m*rC3f14qDiSw3xuXkQA66VR0$A2 zU@rdywSa!&=@uhign2Y7w8b6gc%jqN9n_r9h5W(cLHNr8v_AONG!PXub)aDJfPsJl zcOgc@t4U0AJ9j)Ru@EtIs3%2LTRZT&Thtn_y=9w|w0+Cz6b z6OJ{`C}&#HueC6Wf5Z#=j=p>hVi^pd3 z(^lr6<=R6SmQ2k0YfscRbY$7susWX`(w~&ka(VwTA-i*SE#{Vt$XZXR&-vXZZIezpQD~th1BTDUZmv+N^`r%Oa=; z(76`kJ2Qjv{xU(@&=)5qiEJ6jrj)44Ln>SdvyiT1q9WoiXV%@+C@pc<%a5Y<#Ofh+ z^P+o1k4(a%|EXJMW`5HeOv!6=p_QQ7l|ezF5LWj2A$mlL*4rlV29c2Pywsgus$5yE zkgBmF3U5zko+c;CPWQ`F3>oR!c9^y-P0udca7(wY+BYnuJ~Q1cF6Z3?sTXNYJjVQr z*Y5AV6`@8q4~@muYvDf1_-)-S_Dd8Ii7{wtdL1A^79waC%svsr)3?F>(qI9bU6w{f zp`n9t`H+J5Dk63_i~=`i`8aV?FG}*!s?T&6mY7x1t)TLu1+bz9|Im^-p16bItgFfTGapK!4rXHeVV{`*X1D9wt8|q(am`IHVLx!z* zBzmr{s`sZu=lfb!VuWY*2XJ?@>?s2-Uk=16=o1@oKNBbzP-t1Sq zB+o;_pom-lBiJu!S2d>(E9GfvTUm0_dv#izm6ddJi_WQ)$A*aqzGdu0tay9UOT8=6 zEHMXm$`@iQ!{b9-T6iW{c{B}Rd~gV@6@l(YYTa^cP(zJ9Q=Esk(`5M7a6cLN9hTv= z0JMO>nI1XaPwK|8=n$>(@GIf^@nkRi^lI{TiE681h(FrB;X!3dYN71Nwm>U|>5Y4# zUb7X|Xbl0l-DhMF0|vH`3OK1#R@{AcT5fU+X{Dr(Ud_|VpF#9epj>%j1|Tx5ynkc~zT z`--PeO53^~6QJfKWLGMFFm~F!^|E*vv<#=cn3k?wBsR@vE=8G|V9oXG-CAoC3QN*M zY0K`V@QSF1@d+w6?zh~ZsqBsZSzZFbHc-DJ)9xq3Bqp*lw?dI^bSHpgL3S$7H#0E| zS4^_2DcegaM-P0^v=~J;;lT<>%Nr;)ovELPNPa*SQ^Ou)|2ecJ|Hl-K>s?mVZm?_( zNVGh#U4$}9e802S0(DWdbN}>6U=;bg-0A6d!K6yq5JpnoF@oE=q1J20YGP=a_92`kac6mYu&$pTCq;)W-eKjwDsdO7ojQ^yJo^!$;5)Q0h$A$8o1KFS`>m?- z&dk11(>p7TJc@S@)hme=w|{tCwMT(ni2_Me%8xg++{+pEE;_;w2Ho(h`v>q()T(3H#YmXxZK%n_yr5Dn6 z7h7{cPEC5LkPl-z^*Oh9a?`Uo@eYdLv~^9Q5L7b3gCy@@gTO-tH&dw6>@>qH5Z*?)bh4@!1hA2P01we5_;(d z+Wq8C)ww!$=EAPLyVM`44jtpH*~l6>Yi$+;ue}^(F7g1wvx1`z_A%ynF8f7%)b99Q zQLnt(N<3bpNlLjA+5eZ+XEEq`ZLcSxt5vzId|2$EKzaYymvRm=7;V+wfDUw_+gja;kf9vj3`lf(#&ndP{ihB0lee5iy=#P{}Zuze?3AW!RN4ZmeE3u4Qa zUu)%={9LHK2#Lyd6Zaeid7tJ7eR@Wgt|bh%CtUL}lA)e!L?WNB(i;pTKv89U4lgqT>H|FdE%U(G_P zP8gsnQoraBSInG;l`&PFb2gDPQn$Wd&##@3+~rgnTyk>g74svz5%vWAV}1B#a$E4j zDIqMB+Ut~#j+On0uwqz7C8TVh?AFLEME?;T5+^)sfu8&W+0EPzUd|JKBfU2CNWoWr>a z|2=9xItd1wb|=&*J4O{+sLOsu1Cj@!3=>}nzu>kr>N&J^d zKqW>GGzL)GJHa;6KG)`?wnSDL8N}A5v|S(}RB5n);kN^K{#CYWyhgCQl1XCgMmZ>6 z;PB(?muHsFY@X&n&|LNp*DoQyB?3@!4%Y!6ep;^*NlrjvS{u1F7T0HFh_8H+Unugh z_#T#e^GYG%mcYhOaBW}D;%UBu8jfSTQMjo00C=303w`Q&;gv8#;t7usz@HOB>7)`i zDAt5>IT;L+fKZ6ZVzNLH2##d$%Uo@lj*t%#V6v|exqhOG2g8$Q`pu|krFoY zV^vEu#j_h`82d$9fz7U($Ib7i3TV~-MSWPFWQdeYCL@tUPwmX_6E)3az~xAM#5 zmCRW&Tyoy#RVzMR(17W}TBV6MQ)Pi_uI|w!z1v0`6MSzlX!{9MK4wr+ zWI{@PJGEB$h+&8JtUT?%|Nj6DnCqD@%78uT+z2g2k5XEbH0cky6XmpBcNUp z3h;8UXC}8gQR4I|b+EQO1SubH|L6DbZ|#A(U%jsMsg+5mvE{eu+}ns8)IeQMVmepF zL@gDRM7F-G98BX7W_^dR?9Kdum4(8>XihO1rMb#bwe z5SH6jpG-n)EjmveN+&dPXd_L3-eZ}qB{eLS$ zAWVS69OqcmqXjcnHn6Svxd_SKXW}T93O0z_5Z2uUY_m`P+Mf=Ch08$ITpJgh;Se9D zWYv3CSN7wx!LD{kVcX=ZE^nss=C;u->53O5eyi0te1GQs`11Y4-~s?zCCf#T9f7pD z*$tR(<=>C==vay(?KA1lu>>$yi|Xth!abS&me6Ams9Ie$qD6KqT2THjkMWsG;~;+g zfgOsz1mjoAxz5~`Xyfi!O$-+Y5T*dx9gs>5OIZAvmO3E51146|B)1d06!tYNj@~v~ zJSgPivGAb>W!H4p{l!>^D+4=j?BxkT22SSPqR`qxnH83x7+Af9 zb&@q6-$R-^wQBJJ3 z;P04G%~0O0SK%AxtW?1N-T+gyho8&SxD%#-gGyk~hEbvAv%N-^FkHWmr}5o$&#F6T z{RcrlOL8$H<7b9I1!%1$KOCeo(TtrZdGv~B6*bJRAy$?j?ciXuf9C)t<`?NfP6R zU57w8qVKXm&v^M@l@DVIq?q=g@xL(L-NuHI7VBU5&7*LbV)K=`&1j-i-4Z#P7Wk4&U3E4aWCCnS)|wmqg4H^WIA0-j3L>o#fT;c!!hLqh zjHd`&yo+el1Lx&Wre`RU9_U3|#=&&$n=7+*ZktUAgumli5+1a(F zs>hJksP*co%2@{TdltfeJK1UHKtlMgBnbC8G12p>qzb@LxW3EYhbs!6f}g6Dl{ktp zwk)%x^SYdy;tfevYh?()CaL+0@LKEyuOxej&NxdWZHf%1sAo@oB*MnmN$Yc>(3Xq0d>M9&?<7w+Lmezql0p)E$Yo=706HZQ| z(IunBjl)Q8oC;^g=i7)U2w;>IU`h39uOr_u$+jpwl-mbWwVp zV7vW2m|zg$?jo1^k0=ZMVmzKpjwd7o1`7&U(Ac&j-BLgf&T>W{_t9HMXi{)2i=vy= zlJKqSql3_jrMsh-MjaKgbN=cxd`CZl-qf4#z>n*AQ4BPlSk5ZkVVF!-`d_ysV_4rO4Npe$FPR;Zq{P8I$o#<*~@|%?Wy#R4^DVZT+1wssA?2lJ2Va1=I zu}oGujc0@zX+`sN3nYz?#^tND&XwuRsp3V*qVLfBjyZQ$^s^cez6) z=d&AtnFw=zdEKexEaStl zb>tKwQ-FLqb(9H_rM2f_dI_D!U@aFU8!kYNp+Gh!?Fnc}0}bL=ei}Qkef6Y; z^mmVnfx?GLWFxc1twM9Ym_@xBkjk%5+Xnsw=L9@o#2atXr(3Ot;LYY$-2T}8Jyn4? zG((MePA6FT;@lXQu{WH4&bF470rm#2>q)Z5Vc9t+tq)?fIwA1SspoVwa_}rWPIG5! z3xtTh)?0?E%oP0->B1>PrSw86HPW((-Run~H?c_n9RJpA;iv2!|E zrl&PLyyo8LAi>QNm(1+>WQqXbLLr8phF}=ACWR-ZSy2riA1HSSSPo+;9zJMeTdsP? zp>=WJ)XbR-I}isEiU8IU&$C;(!}04ec3Pfn1g_D9j8HkWKU(z$`8j;&Z}%2>E#EWy zt;|dK6GyY<`UiFtq+~&k@R24@hnt4vr|(ADi*GmSMyDY(7}GT(85vBJ?~kztCu=hk zFx`T{I<>Jby1FxKN!=l+!0`iup!}S~3lY(#z}?(-6Kv~cR>K{OfsL9YQ0al{|KRf0 zXicGK5k0~JyPyx>>kxhqvG(Bw&P~vi2dZd~XxlZ}n@dg3ZZSdq1?#Y4f{)N?fzVnT z2}o7_xaRx6aRz+jy?iy=7{bUi?*@q3DGv;&<^_T=UF3-Q+)a$ z$DQWT!vbMu!w1ek96!*Y96hFroC`{;F|$p*cL(0;_P(M-W^FHja1E)iV@7mxG&Ucc zWmd~0HI+mcnIQjv;uLq}JuqubZEj2e%kt3#WhRyz6BD>HW9*Ib z`3xecc>2MYI{AL#+XdaIxE*tQLPg(h6&Gpi5B6EWCk@>V)uRmy0$i49b>M8KX#&5h zh3EX#tJ~Gk&_EPy(DG0K)L~4B%aVT=s=IVik7Zw~1!oo1wVK7vCe|xuO8J<*H~MZ0 zLhZ#M_o#6LuIA?XwunDwZA{rKjth17=lBN=gc;5f&5b!J`c-v8eLufRZW~OO5Xs=( zWy8L`2R|%rCJ_=c4zec_zjtDXGjcmr%B`jSQfW0>#s13YoIox;2aW-$^D=#~6(OHY z;~1K5Ac2L_4GX#7My7+AW}q|WAOC3aggXKv2kg?cF`+wSPlAbMw+fW_!t}D_>8EjE zvcPT-lh6+=HWn&*)i02 zC3TIzpKCom2EJd}g8++Z!(o9eoWiHxFU^NdbTUMihWlCXxe40Ne2ns^lZ&&)LdHyo zr?=(W;$gS5NxJBj-ULYBU$)hOlE(9i<4H{CR@&|?HVW<`0Ki13l=x;C@mb=h*Dh07&w$w?^emn zS}WNQfRLBzoS*!o{WZmpnHfl|5UP5J+)fBhaRT}SjMNU6mQzN42?hrKHXpP;R``&a zW26yPydadwKZN@wL05t8OT!79w=J^Rj~NGz zZw%9mCxonfDMrK)SE;cWD)ofFD|uG|X;3RYZk!778Wb!k2$-nfq+GEE0iW|wY)&Z! zW=jUM7q90Iq*Ke^bz|bq73*M-oxok_iYG9wdeA!w8wN)?g(OoRYmyozgS`kYWE=x^ zNoEik^&Tz?r!4!fO2{>*JVs0cnGCULg>`+NYiM4)_!VX9m4VTHZbIX8$#M2hKX?h> z=}Q6PW6VLnz3{ddyg1eA_pbuDU6~E3-(p|#$((FYEOY*hU>O}-<=rT5-Sdlvh{8w% zj}X^~&_(v1cS}D7HpzuOESNTK{xg6~XKdcQ zGOnGhKPeOv&2&ysz(^qyJy?5E!#wsb)~fL~ct{~$un!PZzlIKg?*jvjvEEInBUac# z6B(NZ1pnh#{3#2jGX5UX7D-{^Zeme5a{ZZoDq9ya91tkg|B>ZY8&*DkQPHS4E9P6U zaIoT5q5|lED4Tb>7@)eafn^x|dU5=(76(Qn8aG@v?l^XkPjw@gj7V83TdhKM`egv!wp7x=m` z*z&@lS2xZXwFkAZEVH~vYAf9C=UAoOC?VxtI7onCV_)0NGFn*pA7)$*Y-nO9H|@v{ z40eJv24enugdql>4^vIiCnM)qi6K0n)BW z#O=!6^mc_5_?QUiileBnp%4-M{38ex zHBig$w!Jsghuz^NsTh?UbYR_200ukK=cp#8`JR!A^KldKGvY5iNwY6ouOifb6`A6! z6xB*X1!bzca8Xd@4CIh4GOUR{_*hdM;A_KpW(q(C*w1-YFN>fxXEN1QfEdFwvU z)eXV*yPp7$1$AweD3PSnLAbZtqb%8I^qa>ZO0B7VNl8N?*1SL2Mfle3-w_}w2OMR1 zD%cLrJSapu2Ll-**HYpF3gN+|g613EBW<@TNQFI*ttms|a&Y)2&AxW8hs2~0Mn02_ z%lV>VFWN#;)-{NtM292P2r9d6!+$w~U-LJ~z)_tikraV(#f8jO%3cDitm<}a6;Yv$ zdB8+vE{}X!U>>g$DrmID0Wwu!iV3{*#>oX(3%i=9Vs0`Z5vT6iM8B3VD@e*Kwi&U; zl-kE`fs9M_5?TOH?vK?uv!*nhn-1S!g?qlA+-J?Pq1ON*MVmQl~T8rZYJ%uNw4J;CJCJSjFQ`e1)wCm}rfp?~kK% zqKJD-+4C61xz@+u9ZjG{t{hYh+cOais34hQm=Itj+*?p1fSf&Mw4`=oy`%FWL~^UH zTW86`gg(|fj8HKtqI|g}W$e@3b0c>vh``kAJa?`uMcr@!1gAamQFL5wWYepD9foIp z_FVg2t-9VG!?YkR5eUO}U13!OiI_x7RlqN+$~iE(Z)*wnEj{kbFr(C-QP+b)j;Lak z#*6tu`JDTWb7%RB_@Qj%ps%Pf>m}|m&FfO28gs>IxRhLM_m#@b&ggo>HhU;|a+v3*yX_=n&7<~`T zif>IuHmkiwaB^!MOB~9jW`ijtwAw+(52!)esJygO=K42Qa(YOtS-3$)&g$PMXt24v z)a3ViNf?&m%7-`Xf!4pDEN=qP9=utbRfkoclcj;R-QB4-<7e5u|1UR1G{s?xMP|yj zC??alHV4P;BYAw4Zsl70Z4ePGHmIp4#Cn~q(jk$XqvYN(8r;ff_kq7%{5Xe_q@-(n zu6bC#C4Tghk9n>pOI%A%h!g(2gJ;$7H4zbsPD~6AB3{*&R4AbS5)E#~9uqPV9N_@* zMbxqMh203cO4jUe9`DPPPl)(Os3|E3FSnwGjo8?dwvBqRRa&1Tw#@(PJzcAZ>DZ=f<`=92|Pisj0BN&~gliSzwuiTkG-%jPA%;(y7zTNf`y#VK`+4ECqBz1R{$s$vSV z35Ix%;XhwzO;Ci7G{GEI)RGWla`cz6Os`QY5w#a`6U8ujsxRJ|nJEatMN9^L$I3pm zf*hv^?7a0$&YwK>)~A%XrTCL0%X_+1iNsab1}{mWsu>BEM$Sl3uz`st9JD?C)rE81 zH|7{ZSf(3#k=k>)+uOeX{i?jzWK2g6V}-43azfjwu9?8;<$c82xqd;fOT;?>l$@ z)aHl7f0PkIy5_9l*AzoaRp&1F9yU`4Xp3}9h2EPY4%R>QH4q(k-Z*){*o2^Qe1&_) zOzI4Q$yVq)wV@SmlRqfe6$)^g7hN}0N=kuwS`Ml{p$05bB9#Q&eY4~WPvjI=u5cd{y_qfFdnF!w-?VbxEq)K zFSv?4uC~#e)#1^x&W(-KA6GYD9J*brhpKDyWtn1E#>TI3x~?2W_b>Lhmeyu$7;}TL z9_ho+sEeB`trj&|QsRe2%zoU6I`m<9hf0+l&aip|kS%k*H8VkCV5DjbiEOI!!L>eL z9D-}Z!nudh#ym!{Ga~~k285JDYz)g_#bc`6dJXn@eOsj09=?Xv%sm6SXL`V}a4XUY zYeCZoZej1vfXo#%GaFP@59a0+nK61 z!)2^8SfD0&lc?3v`8*ciZ$#av8RcRZ7LCJvt36H`M(vY?fkxxdP^+@%`2tW!-VEq2 zni0%2EUk^-7!ZXZGq;E7u2T_g`4Bv!(?D+aoTGJqS{c%{*K`~<@w6S<&l(iX>vi1+ zynT-5`cx_c&$$;SZy$eDUJE>{4R!rW*T}J|8q~ANSZSlY-9m%8Q6ljf?eE)vd>LLl z*5W{9lsWRgT~~M-I&;Hw8a2dF8fwtP^Rwn!6{Nn}Ni^@+(fV@Kz)+rSW^Kq3@=5-#l zs$RM6ZoE!6I?6M+H|$&vCrF+pw0$J?$tWa5Qt83D8i+L0#MUb>C3Pl-(*&d{YVFzi zsl|o<*EI7?Eyjs5+hR+ntoYopo8+*~grzlpQA0@7*ZktcC?XlL4vIwi;)Wj{H_oi^ zL*_2z{5UgkiV(49S(J4ICD<>2W!_XWq=hpEoiZQ&OlmQ*oimkXqhQD#ZhNgHz^50# zK)Gs2MItu~XT)lLM7ZGH=CsGWT_y5&*lsSAoR@XHLF0ZOhoHHW5czy+?_FTQhVbSO zC>kBK3>s}^3XpW$a^5#}m5OCul;a)}Nh9Zh6M`!mu6LXhnHFjpJO><2Yz_YRhx#`VL|Bt;#ly2n( z{nv$}iKL@KFlNkzODniXKl@ang58X7W1@JH4HvDOq!&sAUUCaBo0#4TVSV-{64?8@ ziobw`aqVE*zJGBj;u;-n&?|JlUYr@xJ^((gK-dI&q=INt>O zPrb?0v<$*=y6J-8;nB%!ugtmAiO8DX5?0t9>PYVt-osxg?5eo%Mj^SvZ!R$|au#8a zcSCUwe?9B3=iW&O=055z8vpKFvqCnyhjjH$1dnDv0NQv14@(U1yl}XdOYZ`XmdEpY z3{_FO*5xP)$H4!m4%etNXUMF#*@CN<191z3Flr=BpSuKi=krM4thQgS{N|h0B&Y!j zHaMsRCYYT~+psw03KUjvhCp?Au6=r8ho*i0E z9FcuRL1s&(&eqhs$|1&@star;4B=+zUTR^-*Z5laoh(_5HmKR4*VukpSgapiv^lSB zD%uJ%S;DRb@Ce?VHZ8`n|i z7%J93S{k_rD#x4NRRlvOGnGj{2L%f*9hNM6RDqjL5n% zhnQF?1DOMyspw`;d9_Gy=#&m0K6ifb16vxVI1E5}l9UdHAPz`cV_Z08U#uQRs3A)r zROldRP;lQj%bA@nEak3Nu9>i|&Kf?5<)X2z^yNc><0F(#;mY^(DjG=%Ee!46TE*wV zucEK>N3WM9nnISv{(p~Ghc@#&U7A3t+|-`Pp(H4Sg_6g-JQad^40=-&xJ{Ry{l!XI zmr&CS_#dYqrjrnGl8>_dHI{Cf;h^F&+iS@b642N0q=@H&WwWqnSh(bH>*#)#pe)4y}G@#)bfCOl{tR zVU7z?7%FehU#{RF0{Cf`<)VKXmZYL>N9ebSdZ0mJsGB9CJEU7e5hH!k}iB`F(o%d&VZ zrrdWI{pcFXV94iY)E@LKOOHVg*E77NmY8Y+8yi(k%{%i~u7I5-PD-_F@V&3aQTTYZ z?`RJi0cD}N-tZ4eHxVon^U+N31$85wUBcf35ywZTjba$E+|)J?lNt^4sZKi%s25=< zfo8f`&9_!#eR@CKq{rx+@)ejv7+w7x#n(L7@^TYXM&73(eh27ZvOF`kh%cl>n?e_8 z1)WRO=rQ(3e*jdX{3xkmBZvZ|99ZfXee>iuG&BNVgwd*Fta0dSDj*U9cLHf`NL)VY zq7@b5@w@)W%v5>ET6#yMGPes&|KK5I5d+P<9E6T$y5DDLfr-qk`-GQ zyz_(wL@1eoy7(ULt;>1yK=onS!7Zs+o^Hs4PyZbf^rEeIB+I0uLl>ty1!%vBWYw;` z05Q-Y55n%Exz10zKV|Zq<5^ro==C(`PgHY*ea(TqhqJ1;cyV{2|IKakMJzDh>Zjbmpe+~kR>ql z#x7g@_Vnby9mNR(8XWQeyN(eu;-Ok*8Ava%lJMiNLc84uN)DRvUn9bT6*h>#J8p~0 zJ&SmEcs@#Kqs0hLOy~-*yY_S*!fbYUL@{bI!+tQiBM-yG)#fNB{34~R!9v49O^Ip3 zW_COFA3mbcB}U$JPhE`^9nEHiP{-EpjHHY0Kstq-;Kw9WXNpTb4khzwPJfft50p2< z##b;emNL78hG;%4dhu$P+c`>Lu=)Z>(DzeLH%ol(V(oZ?QkBJWV2qs0?Ha~ZO(MT2 z4ncmg#Xc(7f&nbbcRrwx9xc{SeH9D8txmX84BA-+V7T4T5DV@?ywb2uy_l}5o^m!3Dl3WFGOJ^9Dhe^68YMB%T+5DdMCh3?Q%Njb;Vam{mqk{h)8RX;Qc%&54qbjrI2 zt>Jj$`ktD`akD#|RoV(1Lc#v%OMI7;>?=srK9l(O1Rr!b%y;UpcC^G*zHj-cYF+99 zBE%mLO@ThZ1H-}%<3fR#T7Acw2AsPe(h;D>7QE@V+wCOk%Yk z0wxSybnH|a$yZ(UQc~{L&E9Q($e7%HI3ytVi$iv{&kSUPg}ylXKJBJz-NC*Kw0Ui+ zz74Q?OPozZ5|N}*robfT^msEMDGUKV1egGek*yD_*5i@Dd9D6%ZsCWZbI^4AL*QpSIMLK`1sv@vQh zJ(wzY!kd(9XL90Qhfs~c6+yppZG>BjKqVn-dF|BOLe0+h6yo?Vg5Axy%!s)$L;C<& zC@CL=>9u&=@LQ&jZ^`SK(>D%^gz{L=H~FMRU)QFg*$sR*+cDt(y&!f&EL<6$TT56o zov$J^nm&NW zx@^mv>YC4FK%6rZ_0nAmRqo`U_5GD4>ygVJJ3T@^BVvS%(0B+;#A~qx!5Mi2QlFrp z5{DzK_I{HeB^(`U#B2?svG&#rR6jc*O1}~YfySah4RE*;$UcthcB=E|;Yr!3wn=K! z_%jV^rK7Ih>m86_wq*@`Oz*mMETYMm>n9Ho!B6>^MG;Lk7|Ovnn=I*Q~Bq{ML=%{$Xq8kMvg+&{8UMy(Dr_9}{vTV$+~4KJn}dpOY)q$sR` z>7VSS60>ySM&3I6iff7c{BYQJ~FA;i1b6j@_tG-1S0j;wa$ zne&f-LGxTQ%jrAOo$X@V^u>}kBL(X$BzwJF?S&(_g`SZ_tGTKKNiFE;>AMY==vi%! zc46x3+lZ6G0L$wv^C+uOYglR3DlQ&LWT{^?Tr@&jIm9Qw3ggudLA0I0nh4FUJA5bM zD4z%frrwAb*&Dj|Ggj?6KmB=MT}yhuGkMZu{IB*~j|i2g z_^A~dT_4+T1uemLuF_KfQaA!=^qq^NJHb`1I+G^K}5BKj&5%8mIc z>VK?VDW6UsqT(G&BQ1v-gtlewqlaV^zKSYrSN5c99-%`~S-a=Btixc8o%THP<5elo z`LaqN<(MJMIxWpw&7fbw-yIHrR$&TRjb=Rq%s?b3CRnFG1D?HAI|o!JYIe1I%S-2h z7vEt#9+C^UYa>VFZ1=Iupd%1QRF)yf;vLd8AdFby$2R^o>*-0g2xa_hmp)Ins?2{Oq>`Z3%;i6Iw>gRL$cI%a{R@V$$UhuHshImjvI?h3}18S$9G&i@wwK^$e zI?>cUJIXg3!4{K5P(A>~YXX>oDcn z=|=YUF>AzRLH=7Kmv`86YT4)5jw0o3|D;YVr3hUSTJ2p~W{E85QHKJ8g^bZQk4ttM zadM>uA|*@9&rF#cRz0YEeLTds6H!Ug%JK&F!wL>m@@C`$`84hvx}S#V1i6VUlhqru zuq}z<39>FWS);G(?lj$I@981-z!jH=H^eWW4=#Y>8Wu2&9~36VZCoeNH&$c|Q#(Cx z)I{Uup>QWLy?u`Wkou#}#s!@AzWljGs*m~H#L*>y3op5ui~UhRp%4)Z1x7;e1-;sa zW*ogeNNXYFKL-UhGRDWGJIQ7&Z9U#%Wn75fjj7Kho5O(A3irYXD2j-~YHLD*)niWu zR=`BQ9=NPZw9$I;;C6`~iSf=~k@0;Qb)3n;YC!210|7x{Ja0fld{qw~@1`NSo(Z`_ z(?98**Z1T&`bJ4@-)hfQuzLwOgA*i!RCW&{Czyb763blc@qHDjWjUiwE!zX)W1ZUPAw?8*1nihJfv!) zYEO_n@4R(GE|`j(00t%*-PT54W5q#cD7B>3)JC>@H=0`VKTlb(NgfLERQiwg?pO{l z&$*RctCy9U6th2%w5mF5sO7UQ6BQxxe@FkU{nQ0`&IpyPc}L`STLkcHC+C;)qWcfT zlV8cFiB}zoQ=!SzO`sS8DrPs;bdB4i(hj4J2s*jU8Xh+ zJHd?l5!NJsXfYz^Mma)AawFqT*#D!P^y@HRXjoJr&UXRq0*|O}wgg6h_(7u*UnJ z<{Yh*N>mS2V&^oBKo;gzm&kqC3Fdnx%<5ot-e|BMl+n8SHiB3=-Xp12PWF1umtYPO zu0H`KB8$EPj+cflo^~90AAx`8x}SH@BzDh2YG`kO3)c&(46?kB;^bJMH}(?UD842~ z0zz1L8Htgl0}F3QFCzYMVeaYl6`OIXOPAt(1HAHB$eE#=ta{i z#-W^Sf!-a3x0L51rkx`+DNuWY)P0;IZ|!h^MNf7*F0B+NSQ?RF@p~VTmEdCN+Zb=R z`U({khC9B6)(WkRV1=wN{j5<_Z@X$jJf8$SV%X-iJ7TsP<><6raM}5xr$ESO#}Dm& zZ{B()K|7)K?LcmLu2qMclAs9fP4tagIWkkUZ6L6&PK24G6k}WO%bexaw<25C2!bpd1@34waX%+I;iP}U379l# z6zHT$FiZ2+unL^w8j3-^=hMfyyOb@^p#*?@clx_v2+|1)7%|SZR&$V}&sMdLtpQUs zvE7NKjX4_Kcwswa8NGE@kRQO_5n-kaV?;WtJ%3$+YM3u&Pv4;^*??kfHNGy6{7S3gCn;d8 z^eQ3VIgU&U|SHXStUw`6@}=Qu4Yj-14P*F6A16 zze9LoM2x?2LC)_7`ph*zr#10W%yu>_4h|nhFl(cFZ~i_`QYuV_aW0NQKwdBjn+fOE zic`b3sefah1wkxag~`pbVu?bAD_IsojtMKV&eZrF_MAMp)ep3dz3`SD?k`c?PH!~k zXr9gZr|f$CDar5So5og+zj}wm0M|ds^Cb}=xB<+ zt_~GGBS@gL*QMY*u10pR(TPFdD-(NgYmr_|F-#0Sj+-K88Z#GnmRI~XQ#z~Unh&Sb zzlTP6D-39Om31xi+6SeETS<*gzIeN~hQfDfkbdipyCpek9C_t54FH)M80pJdqtd!P zcLGWbcCJBaXp-4aWd0UmMV+d;CpKcqpO?S!e2b%H#-`+&M3u%nhOoAascZMCzG4L)yNZ5NBqR*Vp!LU(3bxO9i+q~V4JSmOfa46 z6{HX&Ix7gbPKSH9LXngY?OgDZU&LG*70H<=y6@qU+#CvLP zc>b3Y0Zrlu7WX;OspmS=ukSddSH*V&c9yrgoBNWElW0}vog>7#U^bxB3!atlC$+B}w)`Oi@CvNyyWaKEFPr2Jv>hPf!RV_#?S=m&L*9YV~yva=i$th$3p8OfDCjKAq<+Uk$ z4JM;z-E6%k#_1#}C7f7c5Ya^C2${G9)`b$LEgv#Wg$>BZcu?CagTBIqT}zJUEHFB@ z-@@4p7CNu6^4o8)XHj}mE08}Uy#a!JzYL44#TG~0_(QT4{7E@J!#3Dyy-NgiSpEDj zJGj}2b&xonK)sjHIqbc_*!ma6JCw3Kg>}SLKB-d_$5jYJdz-3wLca@ijB;TF|AJPW z=s`K=dao-HnVhd;=;6ige$D0gV_tzoqak592@0KD;I?735~L2gzgu*k1=O&R9n?@X~jJeo|W*`sJ5){e&51Wzq!cd%8x167$z@)}@VFw0_!#hbP875^a$j6vR zcb7bsWlrDAx91ia(xy6TKKikz83K!yLkIR6&s+t#Lp+H|I$Nq}`<|6R7~UIw;TK$6 z!Y1rLn{a4Ybg_l=;iP$txV@j{|A=yBC3uVXns?l*ktt>_Vo-TLyT*^c`=>_xKFUCN)*ucXIEx(K;^9rQFYl!kkz=qBZjP)>tZ1!?1rI_>mM=a6^y8qFLoC@eiDUxmNGd1*acm?nrH&5C)6eNF^O5RD z4jaGmgIQODfyVF<;o}d&j{3$sd}}ySpZXV;hb?>~n$JenH{lgco;*rrsi&|0;Hc&- z3o4gy#V-K8J9_64n*}tyK~#Xw8_o4Jj-uIz=z9Nf9zdT#sME)mQEV- zXF#cd{5zHdtn-f1SH*K`Iwuh$F?ga534?a@PCn(GHf#?}bbwxS9oH9BsMy@!$SCEh zo=M5tc4Y+uhchZcu$MvO(8C6A>eDyXA)K|s#sE<=#u)p=?XzaTKx_3&C)ykL?6vz3 zawuXNGq3@$^h2-9KN9mj!R{fdx7QF60A`B7KOnSEB}j$Qv+Du#JvT;-WbHVwq?rb9 zo&a9NM6+>`102v1j!Oxp&55w~Ot`*reM%&UarS`~xonJQVm$-$Y8~-DP*w)M3GvL0 z(L&K`aVGyzcuJ5h8gQ=c21rbPOKDSp0HO1SO0AI*J-0a|=H+su=n-=FpGgX#D8dqC zQ4Qbnq@TVVU?qcKCm&0hD`;N{?{h?KY6qA?;u|^F&qU#b_P%NAXr9?^jbPt+xzW0i zoj9BtE($zCECWecn%AYRk%~^z24l;N?lOcgE^6ejX|@idH_MLte!#&f+v7`aiM?w3+0%cum!?grj9q-wq6 z1a%*bX>A0p0uDA|X%;&fVD-lR`ElqRJ{?OnYk2>D$A}Yy(G;hnwy;MTL)L);PY!A! zna&Q{_8zQXPN9SyZ&aoUG`t2oL>)D!L5jquV1c~P5X;%`$5aHSmN02#-45+&L_;as zE)BdBa>P{We;D*@Q;k)qd+-m6}}qe7zt`{qTsSptuKe;;LK@w?Irg*K zGNY5!@grH%t!PU;Ln4<-Nl6b)P+QIdUr*~_f zZ3iE5pU$$K#h%>&v7I2Xw_}L27CqGVDSQ0?S(0D_KfrsBf<&*P-IrBRD1)vGd9hI! z(_An3f`0IkOep0u8BMv9(w62_n;^ck)m+pho_X%@Y~JlLexm7q{NRVS!sUlfYU3WN zh7CS7@~Z!TEO1Xal6u}gkAcXftPW*RVLW}fX!p_QYy-#BaWnhGbt89MX7!t2L?>p+ zFbC09Udp%OhmJXdygWu>i9H5U0PZ$^)iBD>5(g75Y2Te$zuW(rMI;8?4aQXF-81Op z*$?t5?RtoRX@=#1pltBucdZ)7Q-`?)6xawbvPiv+wWxQ;#i%X3SAX#F9+uvaL@1nJ zx%=ObMs(Eo61&~uts0hDsK4ZZe`{at2H4Vobv|cH1sH4TV}XJH14|M=WI$f;=Z|+y z(b*mn##N$DDzF*SkXpF-2N8zaniEve-&=uspy2A4XY-BxSTkgNiwS16&+*!0i#dC*Vj;cJ zq+pyofil{v(x$eooKI*VB#g~R2{?KG=*gT_o|64!^uer@VoB{&GGt}iL;P0iN;VTO zqmF6Cb4HN$ymc!i7W|wQ13?}vp`7JoK_}hn9`&`Xr}fR}vK5o8tSxYOK32TKzHRFu zp1#?^u#vWqY7bROdkJ_%CXl3oxvSRTzD@S=KZ!XFQquhK77}J)z;Cn^VY?;_J_p~Y zXNIRuHAqDyM5Q+Y83|1$&P=M=HBT{~PK_owJS6fXJwq!_dAsB})l!@DXO!b*WnwiU z%KlO0kbd9?xpk)~5mE4Yq?zD0gs=p~Q`#Yh0@*z!+`LPRA879rnsLcs)TnfypJ#t01i|xks}( z9E>r-Sj>46_Ex%<-}2tSa2C@Iz-UwrPF{9`Nf{yZ{WmZvSWf8Z%pY5&dM789nie$vv2i4q;L7#MR0 z$fD`%bv;%!x=!vT-jv}a9^_SVY;}q=0fgi>bA~7!4FP>F)U-*;j;4C(l=p)O{4T-z2&=&cW5Vg4r63=o^cY$j=8RZctZx^%!aPka_)2? zwJ}t2PX%w-5BGUhI!-5>%oUK+o)|-#FBZg5z^6n>ELTwVDM%o1|7Ax7XB2bjh}5_B z8X9=&%kC7Q?{IF9YyNg&yg?7r>wGoc&i!zS8ZG5C(xfKa{%kOH&nxHN;`{2yi`50I zCc9a>CoEp|Yq}Gm>=NE_v+AxnB2%HA=BRZuU?=k+!rstnl{(Y6wKg=o58k!@c^0NhLK|uS?xd% zEs?)00T1z^et!G2i2B^j(K5GL`kLEj*I;h?e!1^?`$p-`5$(=H;Oj@6w=XbH*Vy zN38wvN!{+LsT;6V#-Z}B#>wFib2421^npHpzZabqmascTMiBdS=pzYJIYaHFhscRV z=nai+h?umtdsUMzBli@gJ=--iLJ38S!R+nmhWFnO1bb7wuJD9Kg-JRfcqF7A&9r`> z08v{HGDeZ~>~pkYGQg9Z7vD@rQS6Cs!)ND@bW(?;%;yXC$+{q+?}FPohxEw7MHAt; zFjt?VgO<5+e`-8>i{OpypLQ$jG`a#zIokU|i*9pfoMNb2gM*}%%0d(@cHKdB9NheM zDuuvjtJ12T6)UIvar_^gM;iH(0kZE^8cP@Aj?oSu^q1=x!sNa1KQVL{%_#FVBGUmT zxp3~9qTJN`26=e(4dDnvACib9DyDsAn+!7(45vX5zog5Y@yx)|mc z)VHVL^;2;NI&_WIAS+e%bx$!Lk!Ppg?Z4yjgYe@#o{%zv*GknUgMq{+|Lz5F%AQcf z1Z%N+6e}g{+71plRJY-Rv|j6G9wTSYyvFqmdMnJ_mh3MtJ}`i+9e;eOl)`@qN%mys zHyCT6ZIy@dM>XCM!OI$IQ0w-EGoL*(NH%DwnN761%CyeXW?Op7bCEGbNf*m(Eg!lVY5f0|?1mS{$P5 zY~(et!|paSdzJ%VR*$qH`>VNb_p>rY+nq@#W^&c^kStG@VWg&-ixJv<*Lo)8QgoPB z5pD9D8r6-z4(}6gVrMj!2lJZ?X@;6lNE<$ZwWd{lP3b7#B@k)Hak)7J8#)Lf z=V@?2KeI1Hn?4CiwUmf!BhU)5nH?k|ILG*0-WAi~Z$4fKB>Jef8FL7>;IX58=siCt zarOU&kyST2>C;UPyKJyqT{MFTOGD#IZtt1TI=a&((5@lwg6`1MGBR%16a7AjCFUk4 z@_A`a%F&fz8Zmv5R3DCJy5{SM6Z!jpGZq32JP;SfAJqQ$_S>k$a$ycj`rN5H5)f=IT3Q z@&R;<5}@z8nLl04lBRlU#V3|G*gkmL5~!4qRuZK$G1jbH2_+8@d)emCND z2%nNKFgi@{@U42M+S~l2>iDKKPMUa{=qAS@=tk?kjM-#J@LNU_>5QGWec?Y_S~I1UA@1@LjQrg|bo)Vbcj|6k@Ht%2H>^ z206k1!tGBACv&wP46QZy+vi0<$oty_NI-UIRb3Ry zwGhCwX+2mtgiL=S(vSL?fB6uk4ALaz6K{34yxLCyv&ES1?O=$PQ+^!4-N%X3o2Lb`*FnEUV(ka2V=`&zkQW!-OdgNMGcDDvblVH>fi>bP#~pdWj@qo50GPCxa6|=4~Z_3`u0HZyvY1(6_qr58UuzVSh-8NUl5&ZhX#)Dc-iv zw|?uYmKX?*go71?WSJEM5($ihb#%)k7sE*so0y zHc+00_We;3Og{+Mq5UBW>w>d5#fn@|UKEb${&G3Hwc(@J%*kzgb&4*D*yJU73<1@D z-6V5k0?jj>3}D>i$jVcX9uc8FZUAw00!>ZCv04H#Vw#S@}p&P5OhMhhH3<4Tr% zcsS+hx`-lAjf?(1QCy_1RLT&3B;oMXBkE%-(Q&(1Y9O<&#W3ay`k)v*ZXFXmu_h-8 zv~*xju>`UD^v@;oI6p&bLj?rp^kIO&IHvp)y+@sA0DywDWf~=xR|W_KZ^NeHc~W)? zneZ>t=gnzoV8JQyR&dWl1k^xQKjEljGI)?fq}<}6%!e@o6f$MPTd&)$HZZMKMslKr z0xwMvw^`U)LH~7cs&W)hIx+L(H0oXsQHh`qX=G;}Z^zs$boTSZPjl`$B>FDFp zTm7!4p+&qxL#L}_Hz~5nQGX<-{Fj@Ph6F)^ci@>CpU4+r6104|pKx!}4!}lMK#Q~q zT<@9EMPZK>Fol$FZdl{78w}CBz8t>QPc9|1=wIqb6T+JHFQP`H2^8Sw3ioCcG1yfg>#>OIDIjk~KDDx$gsh+;pIIMA1lYOq^6 zo{vnN%|!1r>>grVm-rE9-HkckesT}Xn#7j4qzN~lMbP6660_+za*A!=7kHJ zp^EM!;tY05yd;pCXr77W6#Od7?wJ=(qjsi_tOkXiUr4~84Y^8(DHjoS9>&~)6gz;{ z4tZ`LZnUb9lC#R3=%hVr0w2Qbk-?iR4=b5x90AxR9 z^Z)NrRX4vp4}c!hvh-n(jT9J$FU&F0#S2trAH%W*?90WnLhEp|I$R?_lVqR- zm=;urjJS#OZ6h{rJSp$UbOYH{JOo_8w221%&I&PX7QocH9e4<|yT{i`B7pIx2i1W& zY-XObZJogTbLN-b6$S;ooLVv9+@fx$+-6T~{EaHzmsHr2q~H0~mo*xzmJ=PWe(^fzF{{b^BzOLrze@-i%nfb0PI_%1C{imQkFKCz+Kruc{y zrHwxGXo;_6Eq>8dC1qwNHoLz6hu+I3H=yH`G%w^Qei7`XfIu)$l3IW)4n1;3?)H=M zVN_-EMg>Sox2n!I_tOS5u~UZfrFfPe^hwrfUa9>EA~?-Z&g|nY^i$uI(;N6G1!PP8 z8W7Z6h^khC+#mcIhFdjUZ3XK{P8RH(-t*V>M(E}iva%XwdQ&`4%z7R_m4ie6CYtkF5n)t0(mrj|gD+(L(&ybb zqCM@&-o+`et-5(Bq)8uO^%B3yaRuqH3bj7yf-dt|p9WGKb9OAteI}MPB|{mlEV5#& z+1)>GtynmD4v49pZRYmQ5E#;I{#n}m0l`8nrU;cO<$xB&SLUL~kxwEblg==eabWf= zS_=V&3eo^hMPpc2|V~6=gdP8>MnhAj7)|LX_QrQ(2+m4S1>Gr5Jw`-i~y`Cap z`aWHOQrc4kN9h4eVQAg|nLRch!9y4zA^|-S#-}@7AGWzQq@ZfVlWQ7xf;SocbulwS zz4Q~GWz!4SZx8+|FmT^b4P;a}+saStFTOfc5!4T4k`k{~Y2G52?7VkFCPglxYdTp1 zmI(s3kDmZ}z{fwBwek945}5gGV%Jxll7*&wu-eLU<_B~iYZBL?RW^QVtr}%jB&jTO zFAJb2=p5qYz_**KG}R0)&9oUKmyH8p{3K~+Yr?p#B3lSp0ek$_0!xu7g+N2n-dGaB zw#$Ijaq)xwG$9swpBjn+EYi!^O=9b6^|9l8skT+@61$+13|6ZY zY{S*H)&3CyYs`gGA)*L5=-|fNH)g-xkg#-`mIr?-e`nR-D6w-)yT|sVWsbYiVmGc4i~5303F(;wfdH8+9$0mNw@#v;WCzQG?;y^Q)Pt2)ns} zsW!+?b{V>-X1Tk^``&59xm%h?-atON;r*5>b9vHT89k@Kbv00VJmSn8K6XqR8MeRo z;q-GoEcH?!SlWW9U$Y~c)Bs&+ZrH-O{hv_NU;h^6i_apSO=#|+wixAN6=?|?X4O_( z&frV!<{8NoN0f!<4?@a(R@Bd*ucMKqiRXtF!dNb!6-prlR#}9dbYFdCFPbZ-Pqc#B z)jM+vYLx*9O5kU}gK~DiU->qcn{jR|nsLuxCLnH=g2;0rvNaOv_&MEmn}j)z1~pp_ z%X=G^%n^D3kHvaWpn$H2orqf@CVIWBI+BhO)r%EG(S6O?VSzQG$Yad44Kx{^R80Ls zgrzJd-?&rV&@>FETdB8f;}Vfpm0mXNSpnohn#couz7Luk5(-JCKDAafyTS9R#e_&d z*8|84)N8p1N860_UKJO`Wh}8|dPVq?mjC}3uQ*~@PbVoWxbwvIpthiJnI&>d&a}bc z-Jl~{sDU7DV7WsWj&b7+c}h*y(`~Ok^r{d0EYp}iw_d0DHrRJIL62FTxe!Re?&QbQ z9VL-3F(b}6cR858v;?P8Bt4zKnyv~BrKUx07v}Zo-Z;Dg&0~BgGLSUtlZi>+ z;GzQEF=4MkB$UW|TF?#v@XRXy&iEpMnO**Y&}{l?{3v!0;&7x^w*fBdo2-YS1>yAY zH^|}PzU07*@{$B7eJ}lUcW5O?(BUpCR4P-jII9F(w5f$#NktoHR`+V(0#a3^Kp(Pyr-D!Snb*ey z1(z2)Q|neeb}_%uj9H>qL*qIvMpcV?Et&i0si(bvx&dYBE)SjRakGo&zUk6EaY_tu z;<77Y0c3pM&mxT9?&m6eSz#9t=1>ju(?v(v7shWBy)+6aM%7b;O6oh!@KE&?;PXy@ zde*t&D^7JcWAOv5r=DVu4dyjn$?^}qm(;p(;QmgFc!LL)>nz@XEre#tJ3&q`Ds3_O9_VvR} z*P~1RulDAs8B7#avuy7hK~}6cUg=akxyb_D^*Wywo25MD0fU~D9Mkgqny^I>h7h&- zpG!8PRPv2(@*SCE((cJ?kt;M)%GotupS`LORuQ!R0WvuL8SmUmX=tZqPX(!qY(2MDwPRrcGh>kD~=S2=1k@UIauW>VjH#t!bCCqr_90rRO?jethFa^z-@ zt=c!Xgb1!$A8=+hzhF_C8Fk#;d?94%m$Z9dm3CyVGhgjEx^4$5_(w39JDGFbI#OBo zbw(^097bL+4kI~OU|t-4n1_PEsmieP+9J0fd-3vxApVgqV~2^%J|n)dRL0JLc>yo)`8^&4fjrhKrtA+svT{V-3j z%0>I!s14OVYh57bdc#!n`^Sg0*rB5CdT#B2%B%uqH&NuKm)L3zhlKbMZ3UtjUxOmi zA-8xJ-M(Q~G)6s-V8i%?%5ZtT53!@^kYQo_pEA%!a$QgT(V3g`L*UojF~d;7c|zuPx_0~mG=>@L#`l08@5W#+)9R?jAPi8C#&ECJoQKxM>kA!ZD?m(5w9U!pM5m=wr(qx2L1C-W zaBQq#FURJH^UZk(B|ZACgeP{5wKJ<2H)EKAz-dc#MXKgGKaileS_QPv{x7p+U1b`2 zZzS(f!hg@!9S(_gdXnhsx?SP1Q8Hsy5UkIMk4G}4a&0c+Dmrc>4w z;$;&k-1O`-N1!o=#_>RTgw+h^@xfkZG)0=2R7`7Lkf79TyykATulv+c@xiusX>w=F zqz~s2F#20$`|CT$hqnD(K@)Y2QC1Y3&`ahfZDo}%P&7z4eD$XKa0#^5O*2MQLX@M* z3I5H&`?@6ro&DKLXN8mY2^?&y9^AT)R3N*(umY~`@@j1? zQQnFye-b4)8P?gu&A4qrI{jp31Tm?%4wjO?=;(6SKM=u<8wuBn+Z4e$Z)w*t#f#4=c>7jY zMV1gw3QB2so~@Bi1gfAmnXs)}o+szqZ2S(cK#h#_M{8z&Ls*cL*wS7TU>vt{HQ%fn z0!W=wTtVsY zaW1qcK3uU2*?`fVanF&-YAQ5Y_fq&W0l0XWGKye)1YMmq^i^MH^`Hn`ufhFbJe+DZ zv1dNwm!5aFLl(kS#?!KZC$pVn!N5j?MY$}(EvQN%-%U`{GM=q-{g#|~=cn3Fgj(b@ zJ~T$1Q{eb*yEZG_gwUTb<=4%_eXq=xE%%#&iB+{Q_DwUKzQ*&EIduhSJ0aSAXAL(o zFB~D7y3W5aQ;;W!KZ1<|5V`Wds6EGY(wgTdHfWE@P&UlO4= zQgYQwJ|~A6kl5LbxETbXGWYhstudC^`8*r3>r%0aUh5M0x9Co&l1WPy9H-9lZKwm1 zdT`X^(YyP!d5u}}(Anl{GYi*?g!Lpds{CDc!d2HUeN4Z+{^I%xoZ=>8kd1GI7S=kR z%S74S!#-a;#r1*O_ZJ@`5uiRUYt=}w@RoUQ<6fb5VnWs#(($&4n?M*;?9_QvQS0{& zL*3g$J><2`FzqlU$Mjv*kP{KJHZSTW=mC{G7qJIND2tG3z#Ait*3AbPf-9fHy>_!m zkyEr5Wol-ikdqDC%s2e2r<usRk>CA2f`?35SI9Mt>m4 z`LU24%2In6dg6AYFDZW{j|^#fiQJhfH!PgZph3{LbYlS}tO3|gXqbqB_( zQ#ZSv+>>8@5n|<0eTVIChTA-Zo^Lq&Fzr;Mp{5Nhf{gLV^-9fInbZ+#x$-e9fk_^z zF{)f; zAwz#+>esernAGw_O}b6R;t!jx1*p`fZM((9$VDx6O`}0nVf-R5dNv zB;T3WGg60NVT2`-unpR`u=|CUKyNowSo*M(&`v%`a(f^@^_ z`ClkiPSZ*GZL=T=WpX>Pb5y%eL5}X4PI1Ntm?;khB=SS! zSs=i3G6*FY!12D|I3_@fn_gYzU0gKRE-MNEd-F5Q6shIRtE)7|=!e9_fW=OKde z)}@k(|A|F*dzIDvIPD&M%afwT*2J9E%LyY+`1~=->Eu$Q^lqy3eQt1a$JlnT50=RS zU#XrR6jrat5FU3#O-OJ-IE#qf1B%|jXzupGnBps{p!lXn-@*q(Q8pxHKPw_Rv(e320EoT&PE?zX zh7nW7S!$(&OH5k$tmz>1@c%m z*z*v})yefX{E}2GoC*Dn_IySp^rc5=5daZLRt{LX1pB&`po`es4%z8_4F|ZwkSy6^ zuNgCuZ&m+dpjR8?*}?KC3ty8TEyo#X+yV%K-!zdYwU^hV&L?3hWW!hE2Clb9O%QWT zg0U$IQD9&CldSSVX|RWsM^lb=qeLEtkOwMz9B&>&{ zC5{6)U%4-!x9)A>{;9Hr^5Gy4V#MNu1AIdKHiUA&Lv@6g;+J5)haK<5tL-&r|1+5@ zc~sH5Nrqjd7+|LZ2kd*l6?;+JGh+>Yw9nlzv`4+0p*TSn6A2FF0{~V`CZ}08AGbmJ zS;$Y^Ez(KAx%KDI{GXbBDl*uiV_n`MJSuy(eraMXMGFM{^Ja+Nxn{Y>zp43#3J|&0 zJOg)ivQ+h{sJcAgz6a2f6L!f{m4DH(~Q(i8vh2k`IKy60-wY-h8jiD+Bu~s zgw1s%_R^wc|10{pr2L~ErPU9;Z_2+(N3}6@OUg$<@ zzwB*m^TiY0>N&KQr$8&z{B6*|{qY#wOpijgLCjG;fF?6lyO4zG_N8-XQrh8S9x`d9 z&>?tU-^O~`h`47vf5MCuJsQypms}`PmCCmHP+0@4)_O9E zRpP5QyyyA@vz+k8`jOtmJ&(+knis0IWZ=MJSZ6qCFWPVl(syzE^+U+1Sf}}{HK!ZX zrp>C+qiCN1$na#orojVDKRuMhhbaa;8;9kr^80Fs*A%dkdqaX4!UwP(ey3dxfnMQd zzq*qhLfN5foO4p|Zuf&Dw5>>D91A53}hnD~1?=zdJb{HWlX&EMUa7o%@X+j!UL@k0SQx+?u zt}E_!87iM(8&=mAn<}v(oHB~S5bbt5zx|5tWLV#1p^QMSX1+CZ1&Q3Dfl{~(6j;Lg zV12=3jYG{QjLr)L?62sblGXfJ8a*}f=Omk>!`&&~LfY0ae!vZt{d!w`wB1t$jTWgIFs)~bfYu^Ij10`mcA02*WtB5saz{HYuKDc)e%a&u!9M&iH?(YG>lJN zNiO_!V>+M|eKsmfbDocp zXvj7Ikb*KL0s$EzJu+mwFU7nj)f(C$ZKzMyZEE0We(r&KgboTY(?+vQn5b%3q6b%S zo=)q9JOJ2wtol@15P;CA7T{m+ERG&M{*aT?=mV8hbLsva^lpD=(7J@w+5lqEOOshGe4e|@amet1w^z-1BkUV-@JHcePUd9^SSl(CF?keJ&3Yv4qe#-P#Z zZF!fO%F1$~+_#!)4tJ|>tgA2V0#>TjeG3k5R|1tMBlNpUy!d1DLA|0v@oE(V#`4NC zUo2r?>Q?{dV&Rz*a_0?@*D0d9N%(Ig&MI=&iy;#zKKHIkj0gE8Q$ZQAv*iMXMa^I4 zz4!j>3ylNh_@d4wWyf@I(q>BQ4g2os^f@o*7Y=C*refV~s1s4I^WZQP-|vRtOv@_n zfKgA*t+_AxZ3i?<{iNC(StB#l-_nPeuW~)D0rg6T7PZ2|aGdK5A8|cxM%$?YZfuJG z7-BV~}@< z%n#TQJfPzXlJ_PaF81uOWOxl1u)yu$G9}gclYdB=zt+V7r4a_$A$vdVPRwZb$~icR z(muxmbPg&M=~+sYWNgLASKFWwhNc#a*>pkY^2}u>y0v}^BHm>hScSlAf#4gQ6=^&Z zM(VccS4rAAQnb)uwg#odg^)cKULLKQ+f7jY4ZaG5Lp|QEcjB@-1pSBW%SrGfa8MNi zqtS)`97w@&C z1X93gR(_l|3?^={k8EF%KA*}k(;M#I`!Q0bu_o-F^N{Y3#I?_rUh2AOnH;_Wy`n-( zOT^#fs3fMY7+}H*F1uNrg$bx?<^6XERR~af!EI^9!zrX6Rv#4us=P`)kd;S-5~XWY z4?JC#2~kC1Q76VQT2x4T!UkVZuV*Bfw|^`CyiNbR1<(_JY*Dqj^CWQXW}5enjFMI+ zYN@NRM#fvARz#&v0F~)D1cE1O&i1bC*Df6O?uvsHRRhdM*gaRAws@~v04$+@^&Y=W zUtn-dR}_*iu#CT&!g;&SDV_-YJ9(BLovIh9$%^#n-ElLhI!G2cO|rvLK(ISMD5o@; zkW9EB%C-_Ju=CnSzF)df#gzIrIZ5gJhiqp=_x1aOfRn6$WW!jtp*jH?8Ip`b%KrBu>qF@y{1SHJE|S{30Q1a7t5bV5h}qPP!+ zr+g7(8JAXNPfkaTm82{e|4CBAiilOP%HbireE@R-W)m?Lea<_f)O2-a5z>V-Y<(=0 zUZEJ=>}KkNI-sYEM0qKsghcZXgj~h|UQk;&60bb@bh6KQT97Z)JY@bfT=?DViytqU z$87H^2j^Sn&i*?=zZ(~Xsx}xB;W>P(=>1{XSX--?HMGL5mA@C-C<_PlE8X%ckOYux9X&lHUPA3P?CN5hcp&V zri4T`ycdXdlD}I!;>>MU?NfCW;A&$nCv``|>6ka1%^mF3LvdCrKHkYFgHt(O z0B+%=9D6y+Qi(J9#>rFsTYkB8i+gxz+1-2Z@*dx%#5eX;y9gHqs5qEgYu$T$f`~4A zp9kl=X9%}GnQmas(ERs-vS4>cC0g#55(_YH^}_BTD&I~eJYfr@;`OuTjG*De5l~`& z1Wp?G501Li$mv}A-PzxjeIpO_!jp)1_zSdfMSGn*DM3;|8Q!_WS-L@pA7knO5UO+? z{xYf>^C`hr&+xC?UUl;MA=UXiMj2}F$~(>`UkGd6;{K5)(DgufAZgX!&pE0I;eP)K zIxg!Zm~GWhmDNVJ2olE(sq@&B@$@u?jTN4~m2qr;-eXuFSLfj&N8-+>qc!^~@?wH{ zSY$HH3)$7hVK8$Dn`C>W1?M+=^pDIlNLBG2X4Q2L_?GGAANG6VN|w$#aIW|3uUId) zcFaj@f`^bg(J-l^i%YbqO2D(Ph3+9gU~N13?{$cI`pm%bYZ-zYI?TFBL{z&tO9=?K zbFpbCrK?b+C;KFW`_OwD$x^wbiFmR);||&VD8q?MqX0EP%D>-L0PJ5fnoW5<8-7Pc zYAi%{6}vG)73vd%S~GTZQiV?18Sb!(vJ&oEP=?n6?ai=~ysz0gG;`JRsFweKRScy0 z1{4hWo1}L$qLeJt{(Adq7o_{#W+rwb-#|D2Ev2&Omn2_uR(w)9=)cK>EsCgdrtLRG zN^y5S|B{$&pB+5y%Vjfb7vAUw1+CI;x`U~1?m`BXVUclfEHlhZ4)GTN6|Go4?{(e^ zeMk9S*`t4Ghw^X|1G-`U7}aZQq!|+oE@~nPn%s@>a=CW=atxSrR?kcj0j1uNms(Tcy;e%{X)j za2U^&&Q@UyOFrC6T!TengG8LHC~=-(zu5O}qz?bJu5`JD0V!LM6;6DF7gQHkCGr3O zC)K*~7FT>h-7xwYLzo&fryV`Yv)fAMojpTU!1+4Yoy)8%p17p$973_Z4vBjVco;f* zDY;YZXggF5;#Rt%6-htI0TzD`X||eub=t&4l#I0}n1f7Xv&ZyCX)4!-?uNZ}GSl|$ z{pMyerMI~9IMWQ>|M*;_BS}|f-X`ZbX#?rO@b!dqcFSccYCM!D)xn8=RLz)=W&6&X z?5G@1(;)g2wLm_s^Ta3o_H`|ocx2xJKq{D>7(UoYV8_pR7=RgSA_nrJ4Ky0SI5t}} z2_>e=e);3Qs2vvr^^BPaEW7tfHQnErSpW`$oK1p5%fmXPk2n!5t0G9WIPeOKN}pC( z6CfE^3a+Xv=n#`XND9g>o-kIr+! zMS41uay5>Km>P`nU%Tl{&NwM~g)Dp>XatJv4qGat??_hz|CF3!;yv}z zi@~#MFC8`HITLM40zvVg1F@cy8--;aN19gv6?&p3u&{v`Jmua4#=N_A@?-z7t zDC=kt5JHZ#nO@wcB9L>IN%?GqRjijXbP3RIXQ`==>y{XV@@$)hOlkdkYQD78nl@sP zwc?8)!|H&dgU8+HX&z_qN+!s`wt!Ktj4oNvM zE=be`l6-I1h)<%rV%*BTVE)MhE2O*R{0BDR#K`OL(}1m+6-Iw?B>rqC503~*gT-dS zZysJ@GXzk!A`8iVyL0X^F+e6gto2SZWh(yo+m368(_1A6un^vq7&cVEcEsB;^k!OF z9RN2CsnbpSL)G@ZWwSlblm;`sxB&10&TptAFOOcS0s~qN6*$q#ZdqknP07a6HshgT zi{kLk|2s_Y#}T9yUuK(i5kxe5JOAYwC&gP_FW$7=PbncvtSOy6x;9?kjUp17qY@#` zNF(sbh40kyBT^?m6N}|-dPY~V@Ya}cX~Wc!LJka{{%vSlY&dsa6PKHy(ITMIO;7O!5bK2N!foJtXneFkN^YI)KAdF?AodX~STY_aWq zia<~JP0bKO-QW)jO-$#rKq?M*K__ggeHqr3aDjkKiWqQ}g}j(&yqg}0SY>5RSwh%I zmm9NLFYS0?s50-6kOoUePE%wefZOc1UK?FD7(cqz5iAIBIPGFrbL+;2^~z1yp?-w4 zP$LzCEGeh5tb@Hr4aPF}h_ki7(C4Sz{R}A^Fxfmg@+bMrQ87ZdJ8qJs(u)hykZ$k$s zqZ7L$RigBhV-_{C4HfOX)XTd-ckTF!ItrY2UY+h`PWhh63T?v?;uJa=g}wDS(#I?+ zU8VMra)Vp+J7*M#145*kkG(QB_Q*Aeo=a53{jdQ1Z=RIBJa=t4k zofOne4)%yWNGzvxJ3+JFQO16k`4w2aWa3j@S0} zJV*lKh0JsfW?kynUDN1VcU?+?@I_;D0dYY?fCK8q< z>0ktN=R$y4$d(k&{E^7BxHZ9isIpU0lEb7$X^Jc2zA<^@KHP%4FMfRc|JHD)0ldTy zUyq^6lW3h6R{-m#Wj1vZS2!tlirP{W2IWujPI5kpJ^g`{wRi4YFJB3-Bu#Sv$qN8% zS@(!%IR;N1PmwI-o>}=+ z@*e$~SplV9ONV)=ZXyqcH!%par?a~y!yTt~4;H4VpB|^x#9soIN~2C{Q$BHDpW$Bt zyE ziawG0-$a1jSM?tWF5~E}lBI@$lF-g^ZOGGiQ$!L(h_{PtxE_cEDtuvNmLoQag;&!6&{uqUGeTjI1B( z*!NLP)-5~1ebL@_gnPAu>sB?UTrsm$3Ah0QaT2w_I)qMrpEM~Ow_{InPb@laLw`gj z?f8r$yk0oez&cqq-vA7>S2&%iX{R~Q;MaRb3};bmKY zI=LdyT|F0VFkX|<{xWQr37u6L8ZJzu-`I3LwLW870h^FFyM|i%xuHyc@l7NI_v3Ny z*=I?IkUEVf&43w4djsMI=KKfZA-Sya3~hpJI@8o-_|UI~27IrB3l+#hZtUL}*~|!Z zNMA)MSkveREM9!= zQwgkH-Jdj1u?P!AboBee7bWoeUcWBJ3^0;5XK|QuUtfh5&+O)S1MVuevjL)z7#%5=k z5(ROjk%u%v`061wa@DnpyHip2LAm|Vhy66TmY#=-CSpa z3AL+Ibqbsli+$vH*e~UDQ*6hQWsG+-@{!!{ExENZqXA6$B_VPj7Kvp9rF~8t!LK6ygCG$ zNI$kr%zYJ^pPD;{w zpIx0P8NEx`_?rzEepmQf;Nyh`=%RzTXNhK;DB11nP?tb=@yj#3@aN8NC9{y#wpW6$ zjO?a3|1OV43THQ!8)CEAs6#4>Kosk8-AU`NFGVx^vbvL#-NJ6*#)x*PBFml1$%4}mDggwrU8)KZb5CW9aV^<_#&|Vbz2z+zz z`5^n3tj_dDI@IL;-xbtQC0FfK-v#}}7Ul279lU)>^sDA%5CfvO_(HeAPZf1M`UNFL zv#toJ&teM)#p+r8DUP32D3Od?gl?ov*N%?nooESj!vaPq^M(#Fl2>P)?7 zQ3QwjIz*sq^(EQfdYtE9P5u=aHsD)xmttHmKi95l)%(O^=+d&1;t5$= zgw{*HujG=ane}kFrZGLqKAepCnxx4G{Or^UsE+>0I%zSH_x3KSXPln0#Z9ux{?eE@ z(unT@d2&2f{&36_gqvjFZL}bsW?}R#9Su%%)-R5RRD268<{9=)*DZ_Z3!rMVTuSZ<}&?mabeY2K252sv<@2L*K zYd4eEdlLXE72&KwwI1sKJo`Z|aq@w-K%@49j3*D^7S8(oW5)@DBphb2vypuC$uQ{d zs9fYr@VLlYc@PxeGfmhW_n2g;NGYCIqCJ8|KToDv-xeKK5pE)oa{Na z^8gLk;oVv8R7YfYa6~o9)yPc>Y+!^zGKdN{%{BK|cFrkgnX>-Y&T2 z0veMZrML2kKN8!?p@SKRu%t`mP5r@qV@VfLS=uA(GMl7S`z zIuzXgZBZ$1~J1Lh+W|6{+q@N%OSUc@@n`Z-?K#4yCbBsO`lO-sYHo8YC6_t3C-?l*0j#)pJd;t%=!7hy0uMg@)B(g2glD;`If~-@RcTf!Nc)3MQ)fxdwZwEstm{-kmX@Wnf63+B zI%vCS+qK&(V3`0+wugs7s%?lznW%YL=Z_KG@I>J!=)_?j)le(zLLU{pP=*pfgV_z- zK<2uC=uNLds?O7tG3eGvD`M-SG<2nd1R%79Ag)DN?T)6q$n?T_k^!-a0sgs)^3OfL z`KHq*%r?npenome)(W1V21^EG4?=BrybVA#UJms-Czrs>#^@v+<^SgWdXvVy=C%Dfx8UAEjmVXl}T?Hx(V#^@vVqrc7>@?+V~ZE^k}txI4%4Y(W}$J1W&~T>=`x2yt~P+)Bq*!5{tnz`W~_w>xhuX=`+W1LmY( z(pyvNo`jdtk*Xf}ZFbMYyFjN@O*7k;I$}WF3Ab6vmEmiF2U@;t6 zfai+I{ad{KkPkns*ML?-yYI{uLKKI|0|zPX=RH01$m_;+->qp|+3-S=m5nd=jopWF z%Yj%ufrUUYN{_Cj40Suav&@UnQ$9{mRyftYo_(ofW6vCRXXRL%X7}SnKSy?|Z^@B0{4f^T z-~Das5Ags0#)z}Bwc>6X>^(VRhA&P-Ka~t4U1>VCCLihWub%zDqfHbpOyzCkDB!pp zUjaA|hm~!@mHA_m5z`THH11AJBKaoQy>1V=s)W?3}5> zTn~P3?GWAXFSO}EmP6ERl;@=2Ch+qLj;{0-l1k{&vm?34(GGwo(*C{)TQO{yxkH-n zKtgz28%+rE)U_Y`tPyWYKsniNl2crzBML{S8f;|`sa3a-i#$(TN`Wcxk(1mq^W)X& z`Vsy75Kkv=>YRb&D4o~01pnEVxIcs#`ip_oFDW0}inv3A-jWKrkFCGo#Cf%Z|ImS0 zhRFdw4pZEzvjs?aR5Dpm8sBh2~87RC?C zp4M>G08l^Q&B>=&@H#%2+w&tgO+c+tJL(bASA$2I_h-R%4;!EEW>v;9PRm?tduHsC z@``BbINvU`&uF@_hWSKuA1JybAmNyhF`g!ljv-!ah>g!TnFjqkI&FHlj7#}fRjk+u zDEbu}8yt_f<*##CfMTh4nJXtl(CAi%u=HYU$c#ZAsi~?)e59dYu4iwJRZ? zP!5PbtoF~$0^1*Dy$A6WbAZiX@#aw+y$ON{H-9>io)8F|`ul?WaC)uYU*5oXXATZu zq6TCP;!n+xBv7%d`zdWRcH4&-Lu^tNDRn%4VTFXN_8|3)#iw;_IRQpFqO}EF2=nDM zwI^5ZVG)H+Je!^${jg23P}!5_*Z7;}W- zE5Aa$WkfmsQX$lk(_lr^xrBonhOwUmLA6d<4xw&sODd)~b2uRl8eK~KtD-3~7QCbj zOu@WP7HO9d=L(?&%^hfHc5mTctCu6TiN<1HnLA*SYIL;-y4>*C&#(Lf?jqKIbKT@BGx7ms z*a11we@<1kq= z=wjj|6g?K43txTMz!qNbak-{(O>Uxg9fg|Vpoa5jgngXH9SU9XM^QGGY{bB|iELk}y z7Fte3VGvGiJg0x!qda52h=edtUu9rG#07GoQ{p-N;Wnimf(kCGAS9V3!b)R`XF>2!5Dufkmb zeMA*Xj_&wugFe(+&uI`U zAUq8MdSW`|cTzRSyZhYCt(w_NV7P<}oXpXKNrkS_=e;5mjWd(+{8z_}p zokX=7HC28o7+~R7w%Y%;Cn-L=!x#$3gZ`ume0l4NgKPVC7C9qX3SkP`N8UmjUgb1bUG0u0ScovD)J`JbD0CM#>BF_)tp zsz=gyQEI?}A#gT2e~({__Pcl|U#>rlnn?>6*B_uTDs`@+)6Gxy3e6a+JNOC$I7mm4 zB)=@82__iMH*Zlgg)5f2T$f>^jU)h{*VAmXP1!3tFv&KMP|p*jhKH4wS`JH%>ApOa z@)fE%Tw8v=ltYB+IS09#p_xXI>wTuzp$ePe*XzzMT19+i%U3tGlY=34}V0 zGcSCp^eh|=Zz;=ndy=^HiEYI~o-v@!DC*BuhL(LYdm{Zoz!VvPSdwBX`{qI>^||cJ;EIw_To@H!61zQqIq)d+@t&yK zQXnXiK7dd2o#Pr$Jh)k|2YS?eCNW_RuM2h`yHUQ>X7umW`#=TBr(0EMyKz27#m9Qb94WhXoSAIu&v8>Ow{bXp^{K5X6w^;B=_y*dj;Za07IgB^7lmG1XSQtt?wR{N$!;#Kv0VgUtrG+6 zRh#uw_SU>oa{Me5LW~^m&%Q%NY^Aa;rec!fz58Vfon~uICth8=&=GV!T}6NnT!7d1 z>2Dy=xc|y!z^MteKsj;Z8w=t20zP3?8J>1x@3pwZR)JPX~?^(FCo(`~4t3&ZCJvRn)d%lhi>V8|ek1!F>{w z+p00s2A@_jXzgV74b)V}Za2 zbGi}Q&7r>y+Z}ulMR9FV>t8qD28jOYAc@TFc;eGihwcggLl?uFM`x7t3~PHsMzd&? zBZ3M_3KdHn<|D^wXE-)eSjS}&VZc@G@9-b$3agO1tPOt_dv#pgW8q{IuAxe(d!^MI?42)%%T_RzNWK0%j<}H5Tb3W!I^* z_rykh9`O$N*;m^SlmWeM;&$s}^Rt4b*Xa%-OnsH^T_;N*3wfi;GFrPPIbLU35w&ZT zjdL;}&a;XiUE1@9qcuRlMS<&4R}r2Vr&tlHgpb#xY00bT<7)9bc*&Hi8Qw zR_sKnN(x7q+J&}fDIJZm!EZ1*=PFO*PFv_9a_&U(RW+zyArn>gxP|h{_N|+{{DFDD9#*M zMz;R91L#F7S2dt)BFw=D-M{=VYWxlTGtvn6thq_FiI)x0DdwaYEMK-Nm649HuX_U- z$~O=jEJ+5c+gSN*%y$!nGGnE{Tr$_9*nH5M4x^aWFT@n)%?V`^!G)e74oC!ert&wd zbrV5Am1~A*Sp&dTkTaOa)ab)@e{#a7XC zT*3R=z`*V68#`jd~tg)cphz%bm1gWvHi`NR| z3QW(G$R5Gi-3tlV%NAu^dVcYR`0h?bTPVB7Rl>_HjR@t7P zmdhwLXnRSDiRk#`C$mV_ETU`1OY@X*+g8CuELO`K`A`!@iV%oKd+K_bK;!OWEycC1 zPm*q|4e5R$23(JaP1=!qN7m9uIHLzAm*F+RoM#2_L>~ji1N4MrVOK-8ew(blugOCL1#ZF&X2Cv@z%Z#oQ_DCz`nqzSkZhBl#pNwgcZ`*-

$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 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 *a>9xS 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�IzdrI);q3_ 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⁢ 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

^$YcTagag4Ne<0;0a@)lrwt1WKGmfkL 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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/ra8d1-vision-board/.settings/ilg.gnumcueclipse.managedbuild.cross.arm.prefs b/bsp/renesas/ra8d1-vision-board/.settings/ilg.gnumcueclipse.managedbuild.cross.arm.prefs new file mode 100644 index 0000000000..7dbfc8a7d9 --- /dev/null +++ b/bsp/renesas/ra8d1-vision-board/.settings/ilg.gnumcueclipse.managedbuild.cross.arm.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +toolchain.path.1287942917=${toolchain_install_path}/ARM/GNU_Tools_for_ARM_Embedded_Processors/10.2.1/bin diff --git a/bsp/renesas/ra8d1-vision-board/.settings/language.settings.xml b/bsp/renesas/ra8d1-vision-board/.settings/language.settings.xml new file mode 100644 index 0000000000..80bfdb7708 --- /dev/null +++ b/bsp/renesas/ra8d1-vision-board/.settings/language.settings.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/bsp/renesas/ra8d1-vision-board/.settings/local_temp_storage.prefs b/bsp/renesas/ra8d1-vision-board/.settings/local_temp_storage.prefs new file mode 100644 index 0000000000..7ae2633740 --- /dev/null +++ b/bsp/renesas/ra8d1-vision-board/.settings/local_temp_storage.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +temp.toolchain.exec.path=D\:\\software\\RT-ThreadStudio\\repo\\Extract\\ToolChain_Support_Packages\\ARM\\GNU_Tools_for_ARM_Embedded_Processors\\10.2.1/bin diff --git a/bsp/renesas/ra8d1-vision-board/.settings/org.eclipse.core.runtime.prefs b/bsp/renesas/ra8d1-vision-board/.settings/org.eclipse.core.runtime.prefs new file mode 100644 index 0000000000..9f1acfcfba --- /dev/null +++ b/bsp/renesas/ra8d1-vision-board/.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/ra8d1-vision-board/.settings/projcfg.ini b/bsp/renesas/ra8d1-vision-board/.settings/projcfg.ini new file mode 100644 index 0000000000..f4a65af6d5 --- /dev/null +++ b/bsp/renesas/ra8d1-vision-board/.settings/projcfg.ini @@ -0,0 +1,20 @@ +#RT-Thread Studio Project Configuration +#Wed Feb 07 13:55:22 CST 2024 +project_type=rt-thread +chip_name=R7FA8D1BH +project_base_rtt_bsp=true +os_branch=full +example_name= +os_version=5.1.0 +selected_rtt_version=5.1.0 +cfg_version=v3.0 +board_base_nano_proj=false +is_use_scons_build=true +output_project_path=C\:\\Users\\rb\\Desktop\\sdk-bsp-ra8d1-vision-board-studio\\projects +hardware_adapter=DAP-LINK +project_name=ra8d1-vision-board +is_base_example_project=false +board_name=Vision-board +device_vendor=Renesas +bsp_path= +bsp_version= diff --git a/bsp/renesas/ra8d1-vision-board/.settings/ra8d1-vision-board.DAPLink.Debug.rttlaunch b/bsp/renesas/ra8d1-vision-board/.settings/ra8d1-vision-board.DAPLink.Debug.rttlaunch new file mode 100644 index 0000000000..72f161b8a0 --- /dev/null +++ b/bsp/renesas/ra8d1-vision-board/.settings/ra8d1-vision-board.DAPLink.Debug.rttlaunch @@ -0,0 +1,64 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/bsp/renesas/ra8d1-vision-board/.settings/standalone.prefs b/bsp/renesas/ra8d1-vision-board/.settings/standalone.prefs new file mode 100644 index 0000000000..a06b65f448 --- /dev/null +++ b/bsp/renesas/ra8d1-vision-board/.settings/standalone.prefs @@ -0,0 +1,21 @@ +#Fri Dec 29 16:24:19 CST 2023 +com.renesas.cdt.ddsc.packs.componentfiles/Renesas\#\#BSP\#\#Board\#\#ra8d1_ek\#\#\#\#5.1.0/all=3509892698,ra/board/ra8d1_ek/board_leds.h|3819758545,ra/board/ra8d1_ek/board_sdram.c|2603656871,ra/board/ra8d1_ek/board_leds.c|3640013112,ra/board/ra8d1_ek/board_sdram.h|105041966,ra/board/ra8d1_ek/board_init.h|95488157,ra/board/ra8d1_ek/board.h|1628416776,ra/board/ra8d1_ek/board_ethernet_phy.h|777474786,ra/board/ra8d1_ek/board_init.c +com.renesas.cdt.ddsc.content/com.renesas.cdt.ddsc.content.defaultlinkerscript=script/fsp.scat +com.renesas.cdt.ddsc.packs.componentfiles/Renesas\#\#HAL\ Drivers\#\#all\#\#r_ioport\#\#\#\#5.1.0/all=3058606325,ra/fsp/inc/instances/r_ioport.h|1896254027,ra/fsp/inc/api/r_ioport_api.h|3002446768,ra/fsp/src/r_ioport/r_ioport.c +com.renesas.cdt.ddsc.contentgen.options/options/suppresswarningspaths=ra/arm +com.renesas.cdt.ddsc.packs.componentfiles/Renesas\#\#BSP\#\#ra8d1\#\#device\#\#R7FA8D1BHECBD\#\#5.1.0/all= +com.renesas.cdt.ddsc.packs.componentfiles/Renesas\#\#HAL\ Drivers\#\#all\#\#r_ioport\#\#\#\#5.1.0/libraries= +com.renesas.cdt.ddsc.packs.componentfiles/Renesas\#\#BSP\#\#ra8d1\#\#device\#\#\#\#5.1.0/libraries= +com.renesas.cdt.ddsc.settingseditor/com.renesas.cdt.ddsc.settingseditor.active_page=DeviceAndToolSelection +com.renesas.cdt.ddsc.packs.componentfiles/Renesas\#\#BSP\#\#ra8d1\#\#device\#\#\#\#5.1.0/all=3387474234,ra/fsp/src/bsp/cmsis/Device/RENESAS/Include/R7FA8D1BH.h +com.renesas.cdt.ddsc.packs.componentfiles/Renesas\#\#BSP\#\#ra8d1\#\#fsp\#\#\#\#5.1.0/libraries= +com.renesas.cdt.ddsc.packs.componentfiles/Renesas\#\#HAL\ Drivers\#\#all\#\#r_sci_b_uart\#\#\#\#5.1.0/libraries= +com.renesas.cdt.ddsc.packs.componentfiles/Renesas\#\#BSP\#\#ra8d1\#\#fsp\#\#\#\#5.1.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|543620856,ra/fsp/src/bsp/cmsis/Device/RENESAS/Source/startup.c|1171232788,ra/fsp/src/bsp/cmsis/Device/RENESAS/Source/system.c|296810838,ra/fsp/src/bsp/mcu/all/bsp_guard.c|1632728582,ra/fsp/src/bsp/mcu/all/bsp_common.h|2702335218,ra/fsp/src/bsp/mcu/all/bsp_group_irq.c|3171976222,ra/fsp/src/bsp/mcu/all/bsp_security.c|429234293,ra/fsp/src/bsp/mcu/all/bsp_common.c|2365965045,ra/fsp/src/bsp/mcu/all/bsp_sbrk.c|1835725510,ra/fsp/src/bsp/mcu/all/bsp_io.c|271204625,ra/fsp/src/bsp/mcu/all/bsp_mcu_api.h|3610800851,ra/fsp/src/bsp/mcu/all/bsp_guard.h|3569788004,ra/fsp/src/bsp/mcu/all/bsp_io.h|3085135894,ra/fsp/src/bsp/mcu/all/bsp_group_irq.h|1246740431,ra/fsp/src/bsp/mcu/all/bsp_delay.h|248082807,ra/fsp/src/bsp/mcu/all/bsp_compiler_support.h|1884526901,ra/fsp/src/bsp/mcu/all/bsp_register_protection.h|2942105346,ra/fsp/src/bsp/mcu/all/bsp_irq.c|1331691689,ra/fsp/src/bsp/mcu/all/bsp_rom_registers.c|4116718951,ra/fsp/src/bsp/mcu/all/bsp_clocks.c|1668386995,ra/fsp/src/bsp/mcu/all/bsp_security.h|2551036977,ra/fsp/src/bsp/mcu/all/bsp_module_stop.h|3324174567,ra/fsp/src/bsp/mcu/all/bsp_exceptions.h|3881030941,ra/fsp/src/bsp/mcu/all/bsp_clocks.h|1437525339,ra/fsp/src/bsp/mcu/all/bsp_register_protection.c|4092753007,ra/fsp/src/bsp/mcu/all/bsp_delay.c|2550773705,ra/fsp/src/bsp/mcu/all/bsp_tfu.h|690210506,ra/fsp/src/bsp/mcu/all/bsp_irq.h|2190391198,ra/fsp/src/bsp/mcu/ra8d1/bsp_mcu_info.h|944400528,ra/fsp/src/bsp/mcu/ra8d1/bsp_feature.h|3051997639,ra/fsp/src/bsp/mcu/ra8d1/bsp_elc.h|4150320773,ra/fsp/src/bsp/mcu/ra8d1/bsp_override.h +com.renesas.cdt.ddsc.packs.componentfiles/Arm\#\#CMSIS\#\#CMSIS5\#\#CoreM\#\#\#\#5.9.0+renesas.0.fsp.5.1.0/all=1441545198,ra/arm/CMSIS_5/LICENSE.txt|1577199483,ra/arm/CMSIS_5/CMSIS/Core/Include/cmsis_iccarm.h|304461792,ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm3.h|3007265674,ra/arm/CMSIS_5/CMSIS/Core/Include/core_armv8mbl.h|4290386133,ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm0plus.h|2327633156,ra/arm/CMSIS_5/CMSIS/Core/Include/core_sc000.h|2635219934,ra/arm/CMSIS_5/CMSIS/Core/Include/tz_context.h|2851112248,ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm1.h|1044777225,ra/arm/CMSIS_5/CMSIS/Core/Include/cmsis_armcc.h|302860276,ra/arm/CMSIS_5/CMSIS/Core/Include/cachel1_armv7.h|4147548732,ra/arm/CMSIS_5/CMSIS/Core/Include/core_armv81mml.h|1745843273,ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm0.h|3898569239,ra/arm/CMSIS_5/CMSIS/Core/Include/cmsis_armclang.h|1290634672,ra/arm/CMSIS_5/CMSIS/Core/Include/core_armv8mml.h|1494441116,ra/arm/CMSIS_5/CMSIS/Core/Include/mpu_armv7.h|1438162915,ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm35p.h|2701379970,ra/arm/CMSIS_5/CMSIS/Core/Include/mpu_armv8.h|1017116116,ra/arm/CMSIS_5/CMSIS/Core/Include/cmsis_compiler.h|1564341101,ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm7.h|1480183821,ra/arm/CMSIS_5/CMSIS/Core/Include/cmsis_version.h|1924015782,ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm33.h|3163610011,ra/arm/CMSIS_5/CMSIS/Core/Include/pmu_armv8.h|1608305587,ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm85.h|4084823319,ra/arm/CMSIS_5/CMSIS/Core/Include/pac_armv81.h|2675617387,ra/arm/CMSIS_5/CMSIS/Core/Include/core_starmc1.h|364344841,ra/arm/CMSIS_5/CMSIS/Core/Include/core_sc300.h|3911746910,ra/arm/CMSIS_5/CMSIS/Core/Include/cmsis_armclang_ltm.h|1372010515,ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm23.h|3358993753,ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm4.h|3778515955,ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm55.h|965562395,ra/arm/CMSIS_5/CMSIS/Core/Include/cmsis_gcc.h +com.renesas.cdt.ddsc.packs.componentfiles/Renesas\#\#HAL\ Drivers\#\#all\#\#r_sci_b_uart\#\#\#\#5.1.0/all=419014891,ra/fsp/inc/instances/r_sci_b_uart.h|3115705082,ra/fsp/inc/api/r_transfer_api.h|1476071459,ra/fsp/inc/api/r_uart_api.h|3063216256,ra/fsp/src/r_sci_b_uart/r_sci_b_uart.c +com.renesas.cdt.ddsc.packs.componentfiles/Renesas\#\#Common\#\#all\#\#fsp_common\#\#\#\#5.1.0/libraries= +com.renesas.cdt.ddsc.packs.componentfiles/Renesas\#\#BSP\#\#ra8d1\#\#device\#\#R7FA8D1BHECBD\#\#5.1.0/libraries= +com.renesas.cdt.ddsc.packs.componentfiles/Renesas\#\#Common\#\#all\#\#fsp_common\#\#\#\#5.1.0/all=3217525171,ra/fsp/inc/fsp_version.h|1896254027,ra/fsp/inc/api/r_ioport_api.h|2560512765,ra/fsp/inc/api/bsp_api.h|1037141086,ra/fsp/inc/api/fsp_common_api.h|4290340792,ra/fsp/src/bsp/cmsis/Device/RENESAS/Include/system.h|3088407548,ra/fsp/src/bsp/cmsis/Device/RENESAS/Include/renesas.h +com.renesas.cdt.ddsc.packs.componentfiles/Renesas\#\#BSP\#\#Board\#\#ra8d1_ek\#\#\#\#5.1.0/libraries= +com.renesas.cdt.ddsc.threads.configurator/collapse/module.driver.uart_on_sci_b_uart.1514241209=false +com.renesas.cdt.ddsc.packs.componentfiles/Arm\#\#CMSIS\#\#CMSIS5\#\#CoreM\#\#\#\#5.9.0+renesas.0.fsp.5.1.0/libraries= diff --git a/bsp/renesas/ra8d1-vision-board/Kconfig b/bsp/renesas/ra8d1-vision-board/Kconfig new file mode 100644 index 0000000000..006f89db58 --- /dev/null +++ b/bsp/renesas/ra8d1-vision-board/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/ra8d1-vision-board/README.md b/bsp/renesas/ra8d1-vision-board/README.md new file mode 100644 index 0000000000..ebf3e34af3 --- /dev/null +++ b/bsp/renesas/ra8d1-vision-board/README.md @@ -0,0 +1,185 @@ +# Vision Board 开发板 BSP 说明 + +## 简介 + +Vision-Board 开发板是 RT-Thread 推出基于瑞萨 Cortex-M85 架构 RA8D1 芯片,为工程师们提供了一个灵活、全面的开发平台,助力开发者在机器视觉领域获得更深层次的体验。 + +![](docs/picture/logo.png) + +## 开发板介绍 + +该开发板常用 **板载资源** 如下: + +![](docs/picture/hw.png) + +## 外设支持 + +本 BSP 目前对外设的支持情况如下: + +| **片上外设** | **支持情况** | **备注** | +| :----------: | :----------: | :-----------------------: | +| UART | 支持 | UART9 为默认日志输出端口 | +| GPIO | 支持 | | +| USB | 支持 | TinyUSB | +| Camera | 支持 | ov2640、ov7725、ov7670... | +| SDHC | 支持 | 1bit、4bit | +| ADC | 支持 | | +| DAC | 支持 | | +| SPI | 支持 | | +| PWM | 支持 | | +| RTC | 支持 | | +| FLASH | 支持 | | +| WDT | 支持 | | +| IIC | 支持 | | +| Wi-Fi | 支持 | RW007 | + +* 注意:仓库刚拉下来是最小系统,若需添加/使能其他外设需参考:[外设驱动使用教程 (rt-thread.org)](https://www.rt-thread.org/document/site/#/rt-thread-version/rt-thread-standard/tutorial/make-bsp/renesas-ra/RA系列BSP外设驱动使用教程) + +## 模板工程说明 + +![](docs/picture/1.png) + +![](docs/picture/2.png) + +如上图所示,RGB-LED 属于共阳 LED, **阴极** 分别与单片机的引脚相连,其中蓝色 LED 对应 P102 引脚。单片机引脚输出低电平即可点亮 LED,输出高电平则会熄灭 LED。 + +## 软件说明 + +闪灯的源代码位于 `ra8d1-vision-board/src/hal_entry.c` 中。首先定义了一个宏 `LED_PIN` ,代表闪灯的 LED 引脚编号,然后与 `BSP_IO_PORT_01_PIN_02`(**P102 **)对应: + +``` +#define LED_PIN BSP_IO_PORT_01_PIN_02 /* Onboard LED pins */ +``` + +在 main 函数中,将该引脚配置为输出模式,并在下面的 while 循环中,周期性(500毫秒)开关 LED。 + +``` +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); + } +} +``` + +## 使用说明 + +使用说明分为如下两个章节: + +- 快速上手 + + 本章节是为刚接触 RT-Thread 的新手准备的使用说明,遵循简单的步骤即可将 RT-Thread 操作系统运行在该开发板上,看到实验效果 。 + +- 进阶使用 + + 本章节是为需要在 RT-Thread 操作系统上使用更多开发板资源的开发者准备的。通过使用 ENV 工具对 BSP 进行配置,可以开启更多板载资源,实现更多高级功能。 + +### 支持的编译平台 + +* armclang(AC6 V6.19) +* LLVM(V16/17)[ARM-software/LLVM-embedded-toolchain-for-Arm (github.com)](https://github.com/ARM-software/LLVM-embedded-toolchain-for-Arm/releases/tag/release-17.0.1) + +## FSP版本说明 + +本BSP使用的是FSP5.1.0版本,进行外设相关开发需要下载并安装。 + +* 下载链接:[rasc-5.1.0](https://github.com/renesas/fsp/releases/download/v5.1.0/setup_fsp_v5_1_0_rasc_v2023-10.exe) + +* 注意:BSP默认是最小系统,若需添加/使能其他外设需参考:[外设驱动使用教程 (rt-thread.org)](https://www.rt-thread.org/document/site/#/rt-thread-version/rt-thread-standard/tutorial/make-bsp/renesas-ra/RA系列BSP外设驱动使用教程) + +### 快速上手 + +#### 1、使用 MDK 编译: + +本 BSP 目前提供 MDK5 工程。下面以 MDK5 开发环境为例,介绍如何将系统运行起来。 + +**编译下载** + +- 编译:双击 project.uvprojx 文件,打开 MDK5 工程,编译程序。 +- 下载:点击 MDK 的 Debug 按钮进行下载调试 + +#### 2、使用 LLVM 编译 + +使用 env 工具打开当前 bsp,设定要使用的工具链和对应的路径。 + +```shell +set RTT_CC=llvm-arm +set RTT_EXEC_PATH=D:\Progrem\LLVMEmbeddedToolchainForArm-17.0.1-Windows-x86_64\bin +``` + +然后运行 scons 命令,执行编译 + +```shell +scons +``` + +**查看运行结果** + +下载程序成功之后,系统会自动运行并打印系统信息。 + +连接开发板对应串口到 PC , 在终端工具里打开相应的串口(115200-8-1-N),复位设备后,可以看到 RT-Thread 的输出信息。输入 help 命令可查看系统中支持的命令。 + +```bash +[D/main] sdram init success, mapped at 0x68000000, size is 33554432 bytes, data width is 16 + + \ | / +- RT - Thread Operating System + / | \ 5.1.0 build Mar 5 2024 13:57:23 + 2006 - 2024 Copyright by RT-Thread team + +Hello RT-Thread! +msh > +msh > +``` + +### 进阶使用 + +**资料及文档** + +- [开发板官网主页](https://www.renesas.cn/cn/zh/products/microcontrollers-microprocessors/ra-cortex-m-mcus/ek-ra8d1-evaluation-kit-ra8d1-mcu-group#overview) +- [开发板用户手册](https://www.renesas.cn/cn/zh/document/mat/ek-ra8d1-v1-users-manual?r=25452351) +- [瑞萨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` 命令重新生成工程。 + +**FSP配置** + +* 如何使用 FSP:[RA系列使用 FSP 配置外设驱动](https://www.rt-thread.org/document/site/#/rt-thread-version/rt-thread-standard/tutorial/make-bsp/renesas-ra/RA系列使用FSP配置外设驱动?id=ra系列使用-fsp-配置外设驱动) + +目前仓库 bsp 默认使能最小体量配置,用户可通过如下步骤使能 env 外设配置: + +1. 在 bsp 目录下打开 env 工具,使用 `scons --target=mdk5`命令生成 MDK 工程。 +2. 打开 bsp 目录下的`project.uvprojx`文件,选择上方导航栏的 `Software Components`配置,打开后找到`Flex Software`下的`RA Configuration`旁的配置按钮,该操作会自动查找当前电脑环境下安装的 fsp 版本,选择指定版本后进入 fsp。 + ![](../docs/figures/mdk_rasc.png) +3. 在进入 fsp 后我们可以发现,已经存在了一些已经配置完成的外设,此时我们点击`Generate Project Content`按钮即可生成所需驱动文件。 + ![](../docs/figures/fsp_configure.png) +4. 接下来回到 env,使能所需的外设配置后保存退出即可。 + +## 联系人信息 + +在使用过程中若您有任何的想法和建议,建议您通过以下方式来联系到我们 [RT-Thread 社区论坛](https://club.rt-thread.org/) + +## SDK 仓库 + +这是 Vision Board 的 SDK 仓库地址:[sdk-bsp-ra8d1-vision-board](https://github.com/RT-Thread-Studio/sdk-bsp-ra8d1-vision-board),该仓库包括了外设驱动以及丰富的示例工程,如果像体验官网/社区提供的开源示例请转移到该仓库进行开发。RT-Thread 主仓库只维护最新的驱动相关代码。 + +## 贡献代码 + +如果您对 Vision Board 感兴趣,并且有一些好玩的项目愿意与大家分享的话欢迎给我们贡献代码,您可以参考 [如何向 RT-Thread 代码贡献](https://www.rt-thread.org/document/site/#/rt-thread-version/rt-thread-standard/development-guide/github/github)。 diff --git a/bsp/renesas/ra8d1-vision-board/SConscript b/bsp/renesas/ra8d1-vision-board/SConscript new file mode 100644 index 0000000000..ba761a6dc6 --- /dev/null +++ b/bsp/renesas/ra8d1-vision-board/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/ra8d1-vision-board/SConstruct b/bsp/renesas/ra8d1-vision-board/SConstruct new file mode 100644 index 0000000000..86e5c0cae1 --- /dev/null +++ b/bsp/renesas/ra8d1-vision-board/SConstruct @@ -0,0 +1,67 @@ +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 + +def startup_check(): + import subprocess + startup_check_path = os.getcwd() + "/../tools/startup_check.py" + + if os.path.exists(startup_check_path): + try: + subprocess.call(["python", startup_check_path]) + except: + subprocess.call(["python3", startup_check_path]) + +RegisterPreBuildingAction(startup_check) + +# 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/ra8d1-vision-board/board/Kconfig b/bsp/renesas/ra8d1-vision-board/board/Kconfig new file mode 100644 index 0000000000..122be10b52 --- /dev/null +++ b/bsp/renesas/ra8d1-vision-board/board/Kconfig @@ -0,0 +1,617 @@ +menu "Hardware Drivers Config" + + config SOC_R7FA8D1AH + bool + select SOC_SERIES_R7FA8M85 + select RT_USING_COMPONENTS_INIT + select RT_USING_USER_MAIN + default y + + menu "On-chip Peripheral Drivers" + + source "../libraries/HAL_Drivers/Kconfig" + + menuconfig BSP_USING_ADC + bool "Enable ADC" + default n + select RT_USING_ADC + if BSP_USING_ADC + config BSP_USING_ADC0 + bool "Enable ADC0" + default n + endif + menuconfig BSP_USING_DAC + bool "Enable DAC" + default n + select RT_USING_DAC + if BSP_USING_DAC + config BSP_USING_DAC0 + bool "Enable DAC0" + default n + endif + + 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_UART2 + bool "Enable UART2" + default n + if BSP_USING_UART2 + config BSP_UART2_RX_USING_DMA + bool "Enable UART2 RX DMA" + depends on BSP_USING_UART2 && RT_SERIAL_USING_DMA + default n + + config BSP_UART2_TX_USING_DMA + bool "Enable UART2 TX DMA" + depends on BSP_USING_UART2 && RT_SERIAL_USING_DMA + default n + + config BSP_UART2_RX_BUFSIZE + int "Set UART2 RX buffer size" + range 64 65535 + depends on RT_USING_SERIAL_V2 + default 256 + + config BSP_UART2_TX_BUFSIZE + int "Set UART2 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 + 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_I2C0 + bool "Enable Hardware I2C0 BUS" + default n + endif + if BSP_USING_HW_I2C + config BSP_USING_HW_I2C1 + bool "Enable Hardware I2C1 BUS" + default n + endif + if !BSP_USING_HW_I2C + menuconfig BSP_USING_I2C1 + bool "Enable I2C1 BUS (software simulation)" + default y + if BSP_USING_I2C1 + config BSP_I2C1_SCL_PIN + hex "i2c1 scl pin number" + range 0x0000 0x0B0F + default 0x0B03 + config BSP_I2C1_SDA_PIN + hex "I2C1 sda pin number" + range 0x0000 0x0B0F + default 0x050E + endif + endif + endif + + menuconfig BSP_USING_FS + bool "Enable filesystem" + select RT_USING_DFS + default n + if BSP_USING_FS + config BSP_USING_ONCHIP_FS + bool "Enable ONCHIP filesystem" + select RT_USING_FAL + select RT_USING_DFS_ELMFAT + select RT_USING_MTD_NOR + select BSP_USING_ONCHIP_FLASH + default n + config BSP_USING_SDCARD_FS + bool "Enable SDCARD filesystem" + select BSP_USING_SDHI + select RT_USING_DFS_ELMFAT + default n + endif + + menuconfig BSP_USING_SDHI + bool "Enable SDHI" + default n + select RT_USING_SDIO + if BSP_USING_SDHI + config BSP_USING_SDHI1 + bool "Enable SDHI1" + default n + config BSP_USING_SDHI2 + bool "Enable SDHI2" + default n + config SDHI_USING_1_BIT + bool "Use 1-bit Mode(4-bit when disable)" + default y + endif + + menuconfig BSP_USING_PWM + bool "Enable PWM" + default n + select RT_USING_PWM + if BSP_USING_PWM + config BSP_USING_PWM6 + bool "Enable GPT6 (16-Bits) output PWM" + default n + config BSP_USING_PWM12 + bool "Enable GPT12 (16-Bits) output PWM" + default n + endif + + menuconfig BSP_USING_CAN + bool "Enable CAN" + default n + select RT_USING_CAN + if BSP_USING_CAN + config BSP_USING_CAN0 + bool "Enable CAN0" + default n + endif + + menuconfig BSP_USING_LCD + bool "Enable LCD" + default n + select BSP_USING_GPIO + select BSP_USING_PWM + select BSP_USING_PWM6 + if BSP_USING_LCD + config BSP_USING_RGB565_LCD + bool "Enable RGB565 LCD" + default n + config BSP_USING_MIPI_LCD + bool "Enable MIPI LCD" + default n + endif + + config BSP_USING_G2D + bool "Enable G2D" + default n + + menuconfig BSP_USING_SDRAM + bool "Enable SDRAM" + if BSP_USING_SDRAM + config BSP_USING_SDRAM_SIZE + hex "(HEX)SDRAM SIZE" + default 0x2000000 + endif + + config BSP_USING_ETH + bool "Enable Ethernet" + select RT_USING_SAL + select RT_USING_LWIP + select RT_USING_NETDEV + default n + + menuconfig BSP_USING_LVGL + bool "Enable LVGL for LCD" + select PKG_USING_LVGL + default n + if BSP_USING_LVGL + config BSP_USING_LCD_RGB + bool "Enable LVGL for LCD_RGB565" + select BSP_USING_LCD + default n + endif + + menuconfig BSP_USING_RW007 + bool "Enable RW007" + default n + select PKG_USING_RW007 + select BSP_USING_SCI + select BSP_USING_SCI2 + select BSP_USING_SCI2_SPI + select RT_USING_MEMPOOL + select RW007_NOT_USE_EXAMPLE_DRIVERS + + if BSP_USING_RW007 + config RA_RW007_SPI_BUS_NAME + string "RW007 BUS NAME" + default "scpi0" + + config RA_RW007_CS_PIN + hex "(HEX)CS pin index" + default 0x060C + + config RA_RW007_BOOT0_PIN + hex "(HEX)BOOT0 pin index (same as spi clk pin)" + default 0x060B + + config RA_RW007_BOOT1_PIN + hex "(HEX)BOOT1 pin index (same as spi cs pin)" + default 0x060C + + config RA_RW007_INT_BUSY_PIN + hex "(HEX)INT/BUSY pin index" + default 0x0006 + + config RA_RW007_RST_PIN + hex "(HEX)RESET pin index" + default 0x0A08 + endif + endmenu +endmenu diff --git a/bsp/renesas/ra8d1-vision-board/board/SConscript b/bsp/renesas/ra8d1-vision-board/board/SConscript new file mode 100644 index 0000000000..59c56a1442 --- /dev/null +++ b/bsp/renesas/ra8d1-vision-board/board/SConscript @@ -0,0 +1,21 @@ +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') + +CPPDEFINES = ['BSP_CFG_RTOS = 2'] + +objs = DefineGroup('Drivers', src, depend = [''], CPPPATH = CPPPATH, CPPDEFINES=CPPDEFINES) + +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/ra8d1-vision-board/board/board.h b/bsp/renesas/ra8d1-vision-board/board/board.h new file mode 100644 index 0000000000..03f8afbe3a --- /dev/null +++ b/bsp/renesas/ra8d1-vision-board/board/board.h @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2006-2024, 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/ra8d1-vision-board/board/ports/SConscript b/bsp/renesas/ra8d1-vision-board/board/ports/SConscript new file mode 100644 index 0000000000..e8ac9ae59e --- /dev/null +++ b/bsp/renesas/ra8d1-vision-board/board/ports/SConscript @@ -0,0 +1,16 @@ +import os +from building import * + +objs = [] +src = Glob('*.c') +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/ra8d1-vision-board/board/ports/drv_sdram.c b/bsp/renesas/ra8d1-vision-board/board/ports/drv_sdram.c new file mode 100644 index 0000000000..c1167d7bca --- /dev/null +++ b/bsp/renesas/ra8d1-vision-board/board/ports/drv_sdram.c @@ -0,0 +1,262 @@ +/*********************************************************************************************************************** + * 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 "r_ioport.h" +#include "bsp_cfg.h" +#include "bsp_pin_cfg.h" + +#include + +#define DRV_DEBUG +#define LOG_TAG "drv_sdram" +#include + +/* + * Set ACTIVE-to-PRECHARGE command (tRAS) timing + * e.g. tRAS = 42ns -> 6cycles are needed at SDCLK 120MHz + * tRAS = 37ns -> 5cycles are needed at SDCLK 120MHz + */ +#define BSP_PRV_SDRAM_TRAS (6U) + +/* + * Set ACTIVE-to-READ or WRITE delay tRCD (tRCD) timing + * e.g. tRCD = 18ns -> 3cycles are needed at SDCLK 120MHz + * tRCD = 15ns -> 2cycles are needed at SDCLK 120MHz + */ +#define BSP_PRV_SDRAM_TRCD (3U) + +/* + * Set PRECHARGE command period (tRP) timing + * e.g. tRP = 18ns -> 3cycles are needed at SDCLK 120MHz + * tRP = 15ns -> 2cycles are needed at SDCLK 120MHz + */ +#define BSP_PRV_SDRAM_TRP (3U) + +/* + * Set WRITE recovery time (tWR) timing + * e.g. tWR = 1CLK + 6ns -> 2cycles are needed at SDCLK 120MHz + * tWR = 1CLK + 7ns -> 2cycles are needed at SDCLK 120MHz + */ +#define BSP_PRV_SDRAM_TWR (2U) + +/* + * Set CAS (READ) latency (CL) timing + * e.g. CL = 18ns -> 3cycles are needed at SDCLK 120MHz + * e.g. CL = 15ns -> 2cycles are needed at SDCLK 120MHz + */ +#define BSP_PRV_SDRAM_CL (3U) + +/* + * Set AUTO REFRESH period (tRFC) timing + * e.g. tRFC = 60nS -> 8cycles are needed at SDCLK 120MHz + * tRFC = 66nS -> 8cycles are needed at SDCLK 120MHz + */ +#define BSP_PRV_SDRAM_TRFC (8U) + +/* + * Set Average Refresh period + * e.g. tREF = 64ms/8192rows -> 7.8125us/each row. 937cycles are needed at SDCLK 120MHz + */ +#define BSP_PRV_SDRAM_REF_CMD_INTERVAL (937U) + +/* + * Set Auto-Refresh issue times in initialization sequence needed for SDRAM device + * Typical SDR SDRAM device needs twice of Auto-Refresh command issue + */ +#define BSP_PRV_SDRAM_SDIR_REF_TIMES (2U) + +/* + * Set RAW address offset + * Available settings are + * 8 : 8-bit + * 9 : 9-bit + * 10 : 10-bit + * 11 : 11-bit + */ +#define BSP_PRV_SDRAM_SDADR_ROW_ADDR_OFFSET (9U) + +/* + * Select endian mode for SDRAM address space + * 0 : Endian of SDRAM address space is the same as the endian of operating mode + * 1 : Endian of SDRAM address space is not the endian of operating mode + */ +#define BSP_PRV_SDRAM_ENDIAN_MODE (0U) + +/* + * Select access mode + * Typically Continuous access should be enabled to get better SDRAM bandwidth + * 0: Continuous access is disabled + * 1: Continuous access is enabled + */ +#define BSP_PRV_SDRAM_CONTINUOUS_ACCESSMODE (1U) + +/* + * Select bus width + * 0: 16-bit + * 1: 32-bit + * 2: 8-bit + */ +#define BSP_PRV_SDRAM_BUS_WIDTH (0U) + +#if ((BSP_PRV_SDRAM_SDADR_ROW_ADDR_OFFSET != 8U) && (BSP_PRV_SDRAM_SDADR_ROW_ADDR_OFFSET != 9U) \ + && (BSP_PRV_SDRAM_SDADR_ROW_ADDR_OFFSET != 10U) && (BSP_PRV_SDRAM_SDADR_ROW_ADDR_OFFSET > 11U)) +#error "BSP_PRV_SDRAM_SDADR_ROW_ADDR_OFFSET must be either of 8,9,10 or 11" +#endif + +#if ((BSP_PRV_SDRAM_BUS_WIDTH != 0) && (BSP_PRV_SDRAM_BUS_WIDTH != 1U) && (BSP_PRV_SDRAM_BUS_WIDTH != 2U)) + #error "BSP_PRV_SDRAM_BUS_WIDTH must be either of 0(16-bit) or 1(32-bit) or 2(8-bit)" +#endif + +#if ((BSP_PRV_SDRAM_ENDIAN_MODE != 0) && (BSP_PRV_SDRAM_ENDIAN_MODE != 1)) + #error \ + "BSP_PRV_SDRAM_ENDIAN_MODE must be either of 0(same endian as operating mode) or 2(another endian against operating mode)" +#endif + +#if ((BSP_PRV_SDRAM_CONTINUOUS_ACCESSMODE != 0) && (BSP_PRV_SDRAM_CONTINUOUS_ACCESSMODE != 1)) + #error \ + "BSP_PRV_SDRAM_CONTINUOUS_ACCESSMODE must be either of 0(continuous access is disabled) or 1(continuous access is enabled)" +#endif + +#define BSP_PRV_SDRAM_MR_WB_SINGLE_LOC_ACC (1U) /* MR.M9 : Single Location Access */ +#define BSP_PRV_SDRAM_MR_OP_MODE (0U) /* MR.M8:M7 : Standard Operation */ +#define BSP_PRV_SDRAM_MR_BT_SEQUENCTIAL (0U) /* MR.M3 Burst Type : Sequential */ +#define BSP_PRV_SDRAM_MR_BURST_LENGTH (0U) /* MR.M2:M0 Burst Length: 0(1 burst) */ + +/*********************************************************************************************************************** + * Typedef definitions + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Exported global variables (to be accessed by other files) + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Private global variables and functions + **********************************************************************************************************************/ + +void drv_sdram_init(void) +{ + /** Setting for SDRAM initialization sequence */ +#if (BSP_PRV_SDRAM_TRP < 3) + R_BUS->SDRAM.SDIR_b.PRC = 3U; +#else + R_BUS->SDRAM.SDIR_b.PRC = BSP_PRV_SDRAM_TRP - 3U; +#endif + + while (R_BUS->SDRAM.SDSR) + { + /* According to h/w maual, need to confirm that all the status bits in SDSR are 0 before SDIR modification. */ + } + + R_BUS->SDRAM.SDIR_b.ARFC = BSP_PRV_SDRAM_SDIR_REF_TIMES; + + while (R_BUS->SDRAM.SDSR) + { + /* According to h/w maual, need to confirm that all the status bits in SDSR are 0 before SDIR modification. */ + } + +#if (BSP_PRV_SDRAM_TRFC < 3) + R_BUS->SDRAM.SDIR_b.ARFI = 0U; +#else + R_BUS->SDRAM.SDIR_b.ARFI = BSP_PRV_SDRAM_TRFC - 3U; +#endif + + while (R_BUS->SDRAM.SDSR) + { + /* According to h/w maual, need to confirm that all the status bits in SDSR are 0 before SDICR modification. */ + } + + /** Start SDRAM initialization sequence. + * Following operation is automatically done when set SDICR.INIRQ bit. + * Perform a PRECHARGE ALL command and wait at least tRP time. + * Issue an AUTO REFRESH command and wait at least tRFC time. + * Issue an AUTO REFRESH command and wait at least tRFC time. + */ + R_BUS->SDRAM.SDICR_b.INIRQ = 1U; + while (R_BUS->SDRAM.SDSR_b.INIST) + { + /* Wait the end of initialization sequence. */ + } + + /** Setting for SDRAM controller */ + R_BUS->SDRAM.SDCCR_b.BSIZE = BSP_PRV_SDRAM_BUS_WIDTH; /* set SDRAM bus width */ + R_BUS->SDRAM.SDAMOD_b.BE = BSP_PRV_SDRAM_CONTINUOUS_ACCESSMODE; /* enable continuous access */ + R_BUS->SDRAM.SDCMOD_b.EMODE = BSP_PRV_SDRAM_ENDIAN_MODE; /* set endian mode for SDRAM address space */ + + while (R_BUS->SDRAM.SDSR) + { + /* According to h/w maual, need to confirm that all the status bits in SDSR are 0 before SDMOD modification. */ + } + + /** Using LMR command, program the mode register */ + R_BUS->SDRAM.SDMOD = ((((uint16_t)(BSP_PRV_SDRAM_MR_WB_SINGLE_LOC_ACC << 9) | + (uint16_t)(BSP_PRV_SDRAM_MR_OP_MODE << 7)) | + (uint16_t)(BSP_PRV_SDRAM_CL << 4)) | + (uint16_t)(BSP_PRV_SDRAM_MR_BT_SEQUENCTIAL << 3)) | + (uint16_t)(BSP_PRV_SDRAM_MR_BURST_LENGTH << 0); + + /** wait at least tMRD time */ + while (R_BUS->SDRAM.SDSR_b.MRSST) + { + /* Wait until Mode Register setting done. */ + } + + /** Set timing parameters for SDRAM */ + R_BUS->SDRAM.SDTR_b.RAS = BSP_PRV_SDRAM_TRAS - 1U; /* set ACTIVE-to-PRECHARGE command cycles*/ + R_BUS->SDRAM.SDTR_b.RCD = BSP_PRV_SDRAM_TRCD - 1U; /* set ACTIVE to READ/WRITE delay cycles */ + R_BUS->SDRAM.SDTR_b.RP = BSP_PRV_SDRAM_TRP - 1U; /* set PRECHARGE command period cycles */ + R_BUS->SDRAM.SDTR_b.WR = BSP_PRV_SDRAM_TWR - 1U; /* set write recovery cycles */ + R_BUS->SDRAM.SDTR_b.CL = BSP_PRV_SDRAM_CL; /* set SDRAM column latency cycles */ + + /** Set row address offset for target SDRAM */ + R_BUS->SDRAM.SDADR_b.MXC = BSP_PRV_SDRAM_SDADR_ROW_ADDR_OFFSET - 8U; + + R_BUS->SDRAM.SDRFCR_b.REFW = (uint16_t)(BSP_PRV_SDRAM_TRFC - 1U); /* set Auto-Refresh issuing cycle */ + R_BUS->SDRAM.SDRFCR_b.RFC = BSP_PRV_SDRAM_REF_CMD_INTERVAL - 1U; /* set Auto-Refresh period */ + + /** Start Auto-refresh */ + R_BUS->SDRAM.SDRFEN_b.RFEN = 1U; + + /** Enable SDRAM access */ + R_BUS->SDRAM.SDCCR_b.EXENB = 1U; +} + +#ifdef BSP_USING_SDRAM +#ifdef RT_USING_MEMHEAP_AS_HEAP + struct rt_memheap system_heap; +#endif + +static int SDRAM_Init(void) +{ + drv_sdram_init(); + + LOG_D("sdram init success, mapped at 0x%X, size is %d bytes, data width is %d", 0x68000000, BSP_USING_SDRAM_SIZE, 16); +#ifdef RT_USING_MEMHEAP_AS_HEAP + /* If RT_USING_MEMHEAP_AS_HEAP is enabled, SDRAM is initialized to the heap */ + rt_memheap_init(&system_heap, "sdram", (void *)0x68000000, BSP_USING_SDRAM_SIZE); +#endif + return RT_EOK; +} +INIT_BOARD_EXPORT(SDRAM_Init); +#endif diff --git a/bsp/renesas/ra8d1-vision-board/board/ports/fal_cfg.h b/bsp/renesas/ra8d1-vision-board/board/ports/fal_cfg.h new file mode 100644 index 0000000000..67cc7ed493 --- /dev/null +++ b/bsp/renesas/ra8d1-vision-board/board/ports/fal_cfg.h @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2006-2024, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2022-07-20 Sherman the first version + */ +#ifndef _FAL_CFG_H_ +#define _FAL_CFG_H_ + +#include "hal_data.h" + +extern const struct fal_flash_dev _onchip_flash_hp0; +extern const struct fal_flash_dev _onchip_flash_hp1; +extern const struct fal_flash_dev _onchip_flash_hp3; + +/* flash device table */ +#define FAL_FLASH_DEV_TABLE \ +{ \ + &_onchip_flash_hp0, \ + &_onchip_flash_hp1, \ + &_onchip_flash_hp3, \ +} +/* ====================== Partition Configuration ========================== */ +#ifdef FAL_PART_HAS_TABLE_CFG +/** partition table, The chip flash partition is defined in "\ra\fsp\src\bsp\mcu\ra6m4\bsp_feature.h". + * More details can be found in the RA6M4 Group User Manual: Hardware section 47 Flash memory.*/ +#define FAL_PART_TABLE \ +{ \ + {FAL_PART_MAGIC_WROD, "boot", "onchip_flash_hp0", 0, BSP_FEATURE_FLASH_HP_CF_REGION0_SIZE, 0}, \ + {FAL_PART_MAGIC_WROD, "app", "onchip_flash_hp1", 0, (BSP_ROM_SIZE_BYTES - BSP_FEATURE_FLASH_HP_CF_REGION0_SIZE), 0}, \ + {FAL_PART_MAGIC_WROD, "disk", "onchip_flash_hp3", 0, (BSP_DATA_FLASH_SIZE_BYTES), 0}, \ +} +#endif /* FAL_PART_HAS_TABLE_CFG */ +#endif /* _FAL_CFG_H_ */ + diff --git a/bsp/renesas/ra8d1-vision-board/board/ports/gpio_cfg.h b/bsp/renesas/ra8d1-vision-board/board/ports/gpio_cfg.h new file mode 100644 index 0000000000..07a197fb0f --- /dev/null +++ b/bsp/renesas/ra8d1-vision-board/board/ports/gpio_cfg.h @@ -0,0 +1,82 @@ +/* + * Copyright (c) 2006-2024, 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/ra8d1-vision-board/board/ports/lcd_port.h b/bsp/renesas/ra8d1-vision-board/board/ports/lcd_port.h new file mode 100644 index 0000000000..94c716e958 --- /dev/null +++ b/bsp/renesas/ra8d1-vision-board/board/ports/lcd_port.h @@ -0,0 +1,36 @@ +/* + * Copyright (c) 2006-2024, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2018-07-28 liu2guang the first version for STM32F469NI-Discovery. + */ + +#ifndef __DRV_LCD_H_ +#define __DRV_LCD_H_ + +#include +#include + +typedef enum +{ + ROTATION_ZERO = 0, + ROTATION_090 = 90, + ROTATION_180 = 180, + ROTATION_270 = 270, +} bsp_rotation; + +#define LCD_WIDTH DISPLAY_HSIZE_INPUT0 +#define LCD_HEIGHT DISPLAY_VSIZE_INPUT0 +#define LCD_BITS_PER_PIXEL DISPLAY_BITS_PER_PIXEL_INPUT1 +#define LCD_PIXEL_FORMAT RTGRAPHIC_PIXEL_FORMAT_RGB565 +#define LCD_BUF_SIZE (LCD_WIDTH * LCD_HEIGHT * LCD_BITS_PER_PIXEL / 8) + +#define LCD_XSTRIDE_PHYS (((DISPLAY_BUFFER_STRIDE_PIXELS_INPUT0 * LCD_BITS_PER_PIXEL + 0x1FF) & 0xFFFFFE00) / LCD_BITS_PER_PIXEL) +#define LCD_NUM_FRAMEBUFFERS (2) + +#define LCD_BL_PIN BSP_IO_PORT_04_PIN_04 + +#endif diff --git a/bsp/renesas/ra8d1-vision-board/board/ports/mipi_lcd/SConscript b/bsp/renesas/ra8d1-vision-board/board/ports/mipi_lcd/SConscript new file mode 100644 index 0000000000..9334530c3e --- /dev/null +++ b/bsp/renesas/ra8d1-vision-board/board/ports/mipi_lcd/SConscript @@ -0,0 +1,13 @@ +import os +from building import * + +src = [] +objs = [] +cwd = GetCurrentDir() +CPPPATH = [cwd] + +src = Glob('*.c') + +objs = DefineGroup('Drivers', src, depend = ['BSP_USING_MIPI_LCD'], CPPPATH = CPPPATH) + +Return('objs') diff --git a/bsp/renesas/ra8d1-vision-board/board/ports/mipi_lcd/mipi_config.c b/bsp/renesas/ra8d1-vision-board/board/ports/mipi_lcd/mipi_config.c new file mode 100644 index 0000000000..f9607f81bc --- /dev/null +++ b/bsp/renesas/ra8d1-vision-board/board/ports/mipi_lcd/mipi_config.c @@ -0,0 +1,154 @@ +#include + +#if (defined(BSP_USING_LCD)) || (defined(SOC_SERIES_R7FA8M85)) +#include +#include "hal_data.h" + +#define DRV_DEBUG +#define LOG_TAG "mipi_cfg" +#include + +#define MIPI_DSI_DISPLAY_CONFIG_DATA_DELAY_FLAG ((mipi_dsi_cmd_id_t) 0xFE) +#define MIPI_DSI_DISPLAY_CONFIG_DATA_END_OF_TABLE ((mipi_dsi_cmd_id_t) 0xFD) + +typedef struct +{ + unsigned char size; + unsigned char buffer[20]; + mipi_dsi_cmd_id_t cmd_id; + mipi_dsi_cmd_flag_t flags; +} lcd_table_setting_t; + +volatile static bool g_message_sent = false; +volatile static mipi_dsi_phy_status_t g_phy_status; + +const lcd_table_setting_t g_lcd_init_focuslcd[] = +{ + {6, {0xFF, 0x77, 0x01, 0x00, 0x00, 0x13}, MIPI_DSI_CMD_ID_DCS_LONG_WRITE, MIPI_DSI_CMD_FLAG_LOW_POWER}, + {2, {0xEF, 0x08}, MIPI_DSI_CMD_ID_DCS_SHORT_WRITE_1_PARAM, MIPI_DSI_CMD_FLAG_LOW_POWER}, + {6, {0xFF, 0x77, 0x01, 0x00, 0x00, 0x10}, MIPI_DSI_CMD_ID_DCS_LONG_WRITE, MIPI_DSI_CMD_FLAG_LOW_POWER}, + + {3, {0xC0, 0x2C, 0x00}, MIPI_DSI_CMD_ID_DCS_LONG_WRITE, MIPI_DSI_CMD_FLAG_LOW_POWER}, // SCNL = (0x2c + 1) * 8 = 360 + // Porch Control + {3, {0xC1, 0x0D, 0x02}, MIPI_DSI_CMD_ID_DCS_LONG_WRITE, MIPI_DSI_CMD_FLAG_LOW_POWER}, // VFB=0x08 VBF=0x02 + // Inversion selection & Frame Rate Control + {3, {0xC2, 0x31, 0x05}, MIPI_DSI_CMD_ID_DCS_LONG_WRITE, MIPI_DSI_CMD_FLAG_LOW_POWER}, // PCLK= 512 + (0x05 * 16) = 592 + + {2, {0xCC, 0x10}, MIPI_DSI_CMD_ID_DCS_SHORT_WRITE_1_PARAM, MIPI_DSI_CMD_FLAG_LOW_POWER}, // Positive Voltage Gamma Control + {17, {0xB0, 0x0A, 0x14, 0x1B, 0x0D, 0x10, 0x05, 0x07, 0x08, 0x06, 0x22, 0x03, 0x11, 0x10, 0xAD, 0x31, 0x1B}, MIPI_DSI_CMD_ID_DCS_LONG_WRITE, MIPI_DSI_CMD_FLAG_LOW_POWER}, // Negative Voltage Gamma Control + {17, {0xB1, 0x0A, 0x14, 0x1B, 0x0D, 0x10, 0x05, 0x07, 0x08, 0x06, 0x22, 0x03, 0x11, 0x10, 0xAD, 0x31, 0x1B}, MIPI_DSI_CMD_ID_DCS_LONG_WRITE, MIPI_DSI_CMD_FLAG_LOW_POWER}, + {6, {0xFF, 0x77, 0x01, 0x00, 0x00, 0x11}, MIPI_DSI_CMD_ID_DCS_LONG_WRITE, MIPI_DSI_CMD_FLAG_LOW_POWER}, + + {2, {0xB0, 0x50}, MIPI_DSI_CMD_ID_DCS_SHORT_WRITE_1_PARAM, MIPI_DSI_CMD_FLAG_LOW_POWER}, + {2, {0xB1, 0x5E}, MIPI_DSI_CMD_ID_DCS_SHORT_WRITE_1_PARAM, MIPI_DSI_CMD_FLAG_LOW_POWER}, + {2, {0xB2, 0x87}, MIPI_DSI_CMD_ID_DCS_SHORT_WRITE_1_PARAM, MIPI_DSI_CMD_FLAG_LOW_POWER}, + {2, {0xB3, 0x80}, MIPI_DSI_CMD_ID_DCS_SHORT_WRITE_1_PARAM, MIPI_DSI_CMD_FLAG_LOW_POWER}, + {2, {0xB5, 0x47}, MIPI_DSI_CMD_ID_DCS_SHORT_WRITE_1_PARAM, MIPI_DSI_CMD_FLAG_LOW_POWER}, + {2, {0xB7, 0x85}, MIPI_DSI_CMD_ID_DCS_SHORT_WRITE_1_PARAM, MIPI_DSI_CMD_FLAG_LOW_POWER}, + {2, {0xB8, 0x21}, MIPI_DSI_CMD_ID_DCS_SHORT_WRITE_1_PARAM, MIPI_DSI_CMD_FLAG_LOW_POWER}, + + {2, {0xC1, 0x78}, MIPI_DSI_CMD_ID_DCS_SHORT_WRITE_1_PARAM, MIPI_DSI_CMD_FLAG_LOW_POWER}, + {2, {0xC2, 0x78}, MIPI_DSI_CMD_ID_DCS_SHORT_WRITE_1_PARAM, MIPI_DSI_CMD_FLAG_LOW_POWER}, + + {2, {0xD0, 0x88}, MIPI_DSI_CMD_ID_DCS_SHORT_WRITE_1_PARAM, MIPI_DSI_CMD_FLAG_LOW_POWER}, + {2, {0xE0, 0x00}, MIPI_DSI_CMD_ID_DCS_SHORT_WRITE_1_PARAM, MIPI_DSI_CMD_FLAG_LOW_POWER}, + {2, {0x1B, 0x02}, MIPI_DSI_CMD_ID_DCS_SHORT_WRITE_1_PARAM, MIPI_DSI_CMD_FLAG_LOW_POWER}, + {12, {0xE1, 0x08, 0xA0, 0x00, 0x00, 0x07, 0xA0, 0x00, 0x00, 0x00, 0x44, 0x44}, MIPI_DSI_CMD_ID_DCS_LONG_WRITE, MIPI_DSI_CMD_FLAG_LOW_POWER}, + {13, {0xE2, 0x11, 0x11, 0x44, 0x44, 0x75, 0xA0, 0x00, 0x00, 0x74, 0xA0, 0x00, 0x00}, MIPI_DSI_CMD_ID_DCS_LONG_WRITE, MIPI_DSI_CMD_FLAG_LOW_POWER}, + {5, {0xE3, 0x00, 0x00, 0x11, 0x11}, MIPI_DSI_CMD_ID_DCS_LONG_WRITE, MIPI_DSI_CMD_FLAG_LOW_POWER}, + {3, {0xE4, 0x44, 0x44}, MIPI_DSI_CMD_ID_DCS_LONG_WRITE, MIPI_DSI_CMD_FLAG_LOW_POWER}, + {17, {0xE5, 0x0A, 0x71, 0xD8, 0xA0, 0x0C, 0x73, 0xD8, 0xA0, 0x0E, 0x75, 0xD8, 0xA0, 0x10, 0x77, 0xD8, 0xA0}, MIPI_DSI_CMD_ID_DCS_LONG_WRITE, MIPI_DSI_CMD_FLAG_LOW_POWER}, + {5, {0xE6, 0x00, 0x00, 0x11, 0x11}, MIPI_DSI_CMD_ID_DCS_LONG_WRITE, MIPI_DSI_CMD_FLAG_LOW_POWER}, + {3, {0xE7, 0x44, 0x44}, MIPI_DSI_CMD_ID_DCS_LONG_WRITE, MIPI_DSI_CMD_FLAG_LOW_POWER}, + {17, {0xE8, 0x09, 0x70, 0xD8, 0xA0, 0x0B, 0x72, 0xD8, 0xA0, 0x0D, 0x74, 0xD8, 0xA0, 0x0F, 0x76, 0xD8, 0xA0}, MIPI_DSI_CMD_ID_DCS_LONG_WRITE, MIPI_DSI_CMD_FLAG_LOW_POWER}, + {8, {0xEB, 0x02, 0x00, 0xE4, 0xE4, 0x88, 0x00, 0x40}, MIPI_DSI_CMD_ID_DCS_LONG_WRITE, MIPI_DSI_CMD_FLAG_LOW_POWER}, + {3, {0xEC, 0x3C, 0x00}, MIPI_DSI_CMD_ID_DCS_LONG_WRITE, MIPI_DSI_CMD_FLAG_LOW_POWER}, + {17, {0xED, 0xAB, 0x89, 0x76, 0x54, 0x02, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x20, 0x45, 0x67, 0x98, 0xBA}, MIPI_DSI_CMD_ID_DCS_LONG_WRITE, MIPI_DSI_CMD_FLAG_LOW_POWER}, + {7, {0xEF, 0x08, 0x08, 0x08, 0x45, 0x3F, 0x54}, MIPI_DSI_CMD_ID_DCS_LONG_WRITE, MIPI_DSI_CMD_FLAG_LOW_POWER}, + {6, {0xFF, 0x77, 0x01, 0x00, 0x00, 0x13}, MIPI_DSI_CMD_ID_DCS_LONG_WRITE, MIPI_DSI_CMD_FLAG_LOW_POWER}, + + {3, {0xE8, 0x00, 0x0E}, MIPI_DSI_CMD_ID_DCS_LONG_WRITE, MIPI_DSI_CMD_FLAG_LOW_POWER}, + {3, {0xE8, 0x00, 0x0C}, MIPI_DSI_CMD_ID_DCS_LONG_WRITE, MIPI_DSI_CMD_FLAG_LOW_POWER}, + {3, {0xE8, 0x00, 0x00}, MIPI_DSI_CMD_ID_DCS_LONG_WRITE, MIPI_DSI_CMD_FLAG_LOW_POWER}, + + {6, {0xFF, 0x77, 0x01, 0x00, 0x00, 0x00}, MIPI_DSI_CMD_ID_DCS_LONG_WRITE, MIPI_DSI_CMD_FLAG_LOW_POWER}, + {2, {0x3A, 0x55}, MIPI_DSI_CMD_ID_DCS_SHORT_WRITE_1_PARAM, MIPI_DSI_CMD_FLAG_LOW_POWER}, + {2, {0x36, 0x48}, MIPI_DSI_CMD_ID_DCS_SHORT_WRITE_1_PARAM, MIPI_DSI_CMD_FLAG_LOW_POWER}, + + {2, {0x11, 0x00}, MIPI_DSI_CMD_ID_DCS_SHORT_WRITE_0_PARAM, MIPI_DSI_CMD_FLAG_LOW_POWER}, + {120, {0}, MIPI_DSI_DISPLAY_CONFIG_DATA_DELAY_FLAG, (mipi_dsi_cmd_flag_t)0}, + + {5, {0}, MIPI_DSI_DISPLAY_CONFIG_DATA_DELAY_FLAG, (mipi_dsi_cmd_flag_t)0}, + {2, {0x29, 0x00}, MIPI_DSI_CMD_ID_DCS_SHORT_WRITE_0_PARAM, MIPI_DSI_CMD_FLAG_LOW_POWER}, + {2, {0x21, 0x00}, MIPI_DSI_CMD_ID_DCS_SHORT_WRITE_0_PARAM, MIPI_DSI_CMD_FLAG_LOW_POWER}, //invt on + {2, {0x35, 0x00}, MIPI_DSI_CMD_ID_DCS_SHORT_WRITE_1_PARAM, MIPI_DSI_CMD_FLAG_LOW_POWER}, + + {0x00, {0}, MIPI_DSI_DISPLAY_CONFIG_DATA_END_OF_TABLE, (mipi_dsi_cmd_flag_t)0}, +}; + +void mipi_dsi0_callback(mipi_dsi_callback_args_t *p_args) +{ + switch (p_args->event) + { + case MIPI_DSI_EVENT_SEQUENCE_0: + { + if (MIPI_DSI_SEQUENCE_STATUS_DESCRIPTORS_FINISHED == p_args->tx_status) + { + g_message_sent = true; + } + break; + } + case MIPI_DSI_EVENT_PHY: + { + g_phy_status |= p_args->phy_status; + break; + } + default: + { + break; + } + } +} + +static void mipi_dsi_push_table(const lcd_table_setting_t *table) +{ + fsp_err_t err = FSP_SUCCESS; + const lcd_table_setting_t *p_entry = table; + + while (MIPI_DSI_DISPLAY_CONFIG_DATA_END_OF_TABLE != p_entry->cmd_id) + { + mipi_dsi_cmd_t msg = + { + .channel = 0, + .cmd_id = p_entry->cmd_id, + .flags = p_entry->flags, + .tx_len = p_entry->size, + .p_tx_buffer = p_entry->buffer, + }; + + if (MIPI_DSI_DISPLAY_CONFIG_DATA_DELAY_FLAG == msg.cmd_id) + { + R_BSP_SoftwareDelay(table->size, BSP_DELAY_UNITS_MILLISECONDS); + } + else + { + g_message_sent = false; + /* Send a command to the peripheral device */ + err = R_MIPI_DSI_Command(&g_mipi_dsi0_ctrl, &msg); + if (err != FSP_SUCCESS) + { + LOG_E("R_MIPI_DSI_Command error\n"); + } + /* Wait */ + while (!g_message_sent); + } + p_entry++; + } +} + +void ra8_mipi_lcd_init(void) +{ + mipi_dsi_push_table(g_lcd_init_focuslcd); +} + +#endif diff --git a/bsp/renesas/ra8d1-vision-board/board/ports/mnt.c b/bsp/renesas/ra8d1-vision-board/board/ports/mnt.c new file mode 100644 index 0000000000..e68ef15901 --- /dev/null +++ b/bsp/renesas/ra8d1-vision-board/board/ports/mnt.c @@ -0,0 +1,165 @@ +#include +#include "hal_data.h" + +#ifdef BSP_USING_FS + +#include + +#define DBG_TAG "app.filesystem" +#define DBG_LVL DBG_INFO +#include + +#ifdef BSP_USING_ONCHIP_FS +#include "fal.h" +#define FS_PARTITION_NAME "disk" + +static void sd_mount(void) +{ + struct rt_device *flash_dev = fal_blk_device_create(FS_PARTITION_NAME); + + if (flash_dev == NULL) + { + rt_kprintf("Can't create a block device on '%s' partition.\n", FS_PARTITION_NAME); + } + else + { + rt_kprintf("Create a block device on the %s partition of flash successful.\n", FS_PARTITION_NAME); + } + + if(rt_device_find(FS_PARTITION_NAME) != RT_NULL) + { + dfs_mkfs("elm", FS_PARTITION_NAME); + if (dfs_mount(FS_PARTITION_NAME, "/", "elm", 0, 0) == RT_EOK) + { + rt_kprintf("onchip elm filesystem mount to '/'\n"); + } + else + { + rt_kprintf("onchip elm filesystem mount to '/' failed!\n"); + } + } + else + { + rt_kprintf("find filesystem portion failed\r\n"); + } +} + +#elif defined(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_10_PIN_05; + rt_hw_sci_spi_device_attach("scpi2", "scpi20", cs_pin); + msd_init("sd0", "scpi20"); + 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/ra8d1-vision-board/board/ra8_it.c b/bsp/renesas/ra8d1-vision-board/board/ra8_it.c new file mode 100644 index 0000000000..0972065400 --- /dev/null +++ b/bsp/renesas/ra8d1-vision-board/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/ra8d1-vision-board/buildinfo.gpdsc b/bsp/renesas/ra8d1-vision-board/buildinfo.gpdsc new file mode 100644 index 0000000000..0cdfb6f424 --- /dev/null +++ b/bsp/renesas/ra8d1-vision-board/buildinfo.gpdsc @@ -0,0 +1,164 @@ + + + Renesas + Project Content + Project content managed by the Renesas Smart Configurator + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/bsp/renesas/ra8d1-vision-board/configuration.xml b/bsp/renesas/ra8d1-vision-board/configuration.xml new file mode 100644 index 0000000000..72e8a73a19 --- /dev/null +++ b/bsp/renesas/ra8d1-vision-board/configuration.xml @@ -0,0 +1,945 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + RA8D1-EK Board Support Files + Renesas.RA_board_ra8d1_ek.5.1.0.pack + + + Board Support Package Common Files + Renesas.RA.5.1.0.pack + + + I/O Port + Renesas.RA.5.1.0.pack + + + SCI UART + Renesas.RA.5.1.0.pack + + + Arm CMSIS Version 5 - Core (M) + Arm.CMSIS5.5.9.0+renesas.0.fsp.5.1.0.pack + + + Board support package for R7FA8D1BHECBD + Renesas.RA_mcu_ra8d1.5.1.0.pack + + + Board support package for RA8D1 + Renesas.RA_mcu_ra8d1.5.1.0.pack + + + Board support package for RA8D1 - FSP Data + Renesas.RA_mcu_ra8d1.5.1.0.pack + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/bsp/renesas/ra8d1-vision-board/docs/picture/1.png b/bsp/renesas/ra8d1-vision-board/docs/picture/1.png new file mode 100644 index 0000000000000000000000000000000000000000..bb1f04ae55e79bb22fc985f6b747722d87ca59cf GIT binary patch literal 17676 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 literal 0 HcmV?d00001 diff --git a/bsp/renesas/ra8d1-vision-board/docs/picture/2.png b/bsp/renesas/ra8d1-vision-board/docs/picture/2.png new file mode 100644 index 0000000000000000000000000000000000000000..5653106dbf04e5d0a827e3d20a5ed3e4de71fb3a GIT binary patch literal 11855 zcmd^F2|QHm-?xRV5wcg9GM1Pbdu3lTh9*=>mWdhLFdAdYk~Jk;G-QdShDcHh*-}bO zB%>@5vV_VK%98S)Vce_bzVH8YZ}-0c_x}!aobx-+d7g8=-`{>jAPJHK4Sp0DtJc%#C#E3ZIIO($R@{5e%#d?tT~-ESe4k(_7gC!3=#D!Mp=VEP~^)XQzJGt|gX-eaGisj@Fp-pmgM1H`}x50pE4Wemtb6{Mp_ z{e>z*fG@~E9i#&R=_*qPF3;=kXM{(2I-BAg(O6)BquggJqKR&{!&T-@;<}2WNjA@%6Wp=D5d_%9qK=}mx;VTe8n1`L z;_!gj5sg84V}aYz^&;SLZs=7x2nsV)rv3nDFgOnajb?!3mE*PJ45=Tg+y#qWm3!bk zfP0`#x=I7}9#$#)9RwOKK4?4vP1C_;(W;W7aqegW{y2a$?W~d-jWL>nLX>G!`2J2e zL`7+3CFeC%LlgmJr0OGzreaRN%?(ItGyps9e#^xEoMeb1O+D7oLR9^F;p#LR6(?I+UXc~TNfL5lVu@+}2&4c_km{;}U zckQRG{%-{{;F=v>0E1rT@9$Oo@AyzvU19kj;e&?$8nvgH;lC9he}mdXSKY=x0y7QN zH89gi|Br_m`VVTe%8yPQ`CEAS(@3ugfK)%O41=u%#&7-ma=fJa@t^wbg=&aXh;VvV}~6uGsTAvLo!gz8hPkmbyBHE=G=S2Ia!g0oUsK&a#X zAjtk5g#66c|6PQr{pf@c20$XeoTL6}Q~1B)gkUsS|2LeF+KHxegX*iQ0M*T}i80^P`?Fm2Z!@ePV~mNxp}%Ta{~G*%7-PPL zn^q@$&&jWFY2P9LkH#4FA7cz)55J&rTdT-FNAg?0_wN*Az9-}#j4{j2KLCEkH9?=+ z8r0PTsjGktltF5SAl<*1eEp=Y^i37K8sWe1H65h2Yp5-ZwRZ5Y_Lu;VrLz11u1Db= zRucx*U*o`j=rTcR?YOm7AT5l1lO)p$xWCf;fGYl21sWlZ_x`o`@t?`l_bD~xXFRE_ zAouHe`qAAj8 zjEI04hyw+N7;RC|ecWA4}zr9}@^YxFU zqvJhetgmC~XFFyS;A#0nXem(#RGFR4CrXlby&6FYORy3=UCEoF%aTejdKysxf6Uhv zQ`?cI%PU>7PGfY>%|}n``5c)rAz&-xz&n+2aqUy|;8bvY*dB?f%Jaiz857v*rp^lA z+3Kh20kdzqgCF20)Q1BWt9xgIhR3VY>FH3}v2x9xRIN`I9vxy19L@=b{vqAW{;%&q;@8^h7@g=ZGo=z&XwZd9$gsT-X%C!kB zM$$<&pJqRFBp0_8W4Y7#8RK47X%a}YQ;`s#y5e|>z?!SF;?Xr07 zJ2)KP_jKn(%yj>C>(Z=}5`hwIXMaO2R4n=8MefT+@sS{t0tZ`MUO0 z?dOSmoA1PKU*~<JL9Fu~Lm8~ro3%B?T zr}Vzu1W6;qk7{0TIM_8{$f<>RK?p;M$166A90cnAsez}NyV-NiGNuYd)=NrEHqO-6 zKqa}RHW%7iS~9(ByB;oS6jw9YaL!>dw!B}|mb)1d1&kdCrEja7XUH zb^zkJ4^!d!ngQEYA|IzlCX+jq13tZv3gd;*EqrO+s};*ELQj!Z+#Q}M!6kMZ*Q+TA z!yt5Xt~?)CPE3s5bYDX0-c30jj3CsJm0bfd#QOYIg>UWLhk?tW^+{W6BRQkP1l?;H zYp#8@CFp0IiH^QhUEM>x+XRQekeXj+TA#JG2^`D>rFRwfWa>n*SIzZDdyYKYI?|fU z&Bw=ABj(%9!-#NrXua(#N9ZT7#QjzsgY41mZiwoGKospU2w1!Q@WxvkK zk<<4hNRQq$r3*z*yNJ5S=XItuNnb4zy)?7i`>kaw-bDYvBnRAb>h5r6c%e;&uA7^z zBN~0b<+9PGfZ6e9-Q66!13oz}_1tt|fiaj@KsdASf9V(z)G?0PXJgZp!u!qy+vvAF zTfD0j=akibFIWqarWA$VQ2n}?4RLMSRy*}H7|f3CE`y+6?d_xweHV};C7Inies@?r znLH;P%{JsXDk5a459@n`!XS)8YC~$nDdH3QFyzsUsL(T<;$N*JJfLpy85eL&oGm0Oy&p6 zvvw9(kZ>36;nA1mYvj%z8zLup+UVKr-|#*mHB~4Rc_3u3GxNt9ry0iUy(cp+!I{aC zRh&t$75$c=N6uV2n?Rqmk<3Q7lw-vQesV58tiX+M6kX)ka$~FSo*jIpT8Xl?Q66q&MiIL43HHgi zIQq5|g0hF2y67A(o<9Fc>oHxV8KdIPU@+g#_C_bVo`rSV%^q~B9t?6{WVK&h%&@Lu zmmaH+;=O)>8#yHzvOkzHrC3_R0XpB}(|cSRpRo^@D=c#j{2}@tyX>`&;+-G`;+}P+ zt{}K9GH&6-(JhyX=co4$(HG=1jC5XROi>H=;SNb;3(;yc5v4m|Hj`K#i$Ac)WZ#1g zxtuF;|0E0d5piPF;O5nH0!3XUYrSni=UMa!6L~=;oGzHcQ?GQ z_{v%ICY;seM2qOLWTB0n-kAq;l-}NFarnUP0AmPEw4%f#lcf}bq?7bWRaYj z7P5{LhiObA8gh3M26LJvVj}3|{XqgnbDa%a6T!!9B&C;pnftoFNc2e|r|6RrC&~*y z9+8q0s)moY@ty5s;*(Prvt#J==<_--QYhHvM(o#gjxU40O|xL|{!8a#lyei5 z=lF&nh2}A!CFbXM!*8W;s>^(+kF{RR_^`o{QWJ0?`g z{w9&j*0YU~S0i0(sp$o-FZz~3-$K+oNXLZir3l?J<95<%f;I?KAtu_`DM`>mw z{kf@C_4U`cpD&>gnJ9(e?(`fDd4Dfkiy-zqiGEWkVp_c=cE+N5Z&bnYk-n`iSa38r zBZN2Bgll5w4TbLA(;i#2`_&~|)s9`*gX}L4RJ1L)D|n8FmH04`NhQ-5ccF~l-R&i! zIBa9p$YBtof!#2^Q&VLQ;zzno{Ia8Lq?Vg%RCq@dZ+1tmbDYB}7s9S1 z$z3enT&zlR2U&@AbOTy;T0UZhV$}kuPH(%~Dz9-gHZ3)2lza!SW2{i-ip55#lAoX! zBR&*Hln6^jgPUC8_%ujRdT8RH;fA?&M9gUV-q$`lQK0p<=?6wXFMNDgklbC4mPMrP zG8Q(;)G0qQoR87S+@ctBrGXi?U!urC5-jkOAh)Oz(3@ZP9JdnS;w{_~)V zy#&pd-N@NkPMaIqwxcaU(*ZYRUd^u8&=!K@XsFhkH^NB4_4%?PQR2BdcD{H{W_%UxCzG>KrYTasx)frM^;KGO*)s9w~cUt=i5oGsZHBSy$86baQ0kiEs#y z)@h^emL&!RmNiG?`^`93H~| z;seGIIW>IIkGHR>mys~RLys}>8ia}CDw!u69q9;|?D<4>%9ti7Gh4+jjYPlneQXvQ^dOC}3(jxK z9ES@oj3j}NBZY^uYAW$}C9|a6CPUk;Hiz&)14o&JD_aEhaX+aELS!@R>k&%ubI*d)~6S zz1uJV#I9RW{@Qz&1sO~5OSP;tsoyl()o2{p^d=J2l~MP8bVkKBJ2GOh=&0_s=_~2h zRgIKVHY6n->KSxsf_KW@w86L6V<(O$YtRkO5O&Nd#EB>IMSc!nLiv8k(Du#24DZ^n zJ19uh==sc!i6E!Uvd1f$OZzJhZ_hIokj}f(cPK7}KV7^VQvW2L(A_bI^w%P6p#-&h zFp^KTn-2_Fs_xGk?3IjgORhvpT+ejWI6hi^bG|P=T~)FR)GLCi-aEhF&9eH#J7zn?<)_bm=^g74G0r$1@^1A$xH7ikD#wxDrwjb-hmwm zr^F=%2F5az;xo?eQEDQN4li$t1*3pya)}z)F19KGn`U5hw|P=U)Z+fASO%fRI(LHb zfp5E$69f9Jt>NTz7LnEs?kWacr|6+jtnG!!^CxRJ94@=E#V@`i4x>=d`sN9%#td7* ziAzZ75CutT!RRawK$KOL!%;+&Jwv2M9^Wa0Ct=7lUUpYLw;@tBGacgfoO2MHPdzeu zd7mgFehP^KbHe!#B$r2;^_n-yI!!%2SG|81S7`I_`;Kb8x6Q9_cExa2OaOILie`{T zW4bCg=IMootlI&z9)ilQe2u9vmi%kiP^~$pif(NMYANzZ$~NSfrq|UC4-Xf+72mqm z2b7k`0|%JBy}gT0eDNRYy{GlL5hH1Gc`4(+?5kG{(LTO796W_w#OpZ z?Bx9PFf8O!HwM~&w>5Wfah7!n_Rx$56HLr7!-g(#OhICIOS3=HIoMnps7odU=lS0pj)=T8aeJUsPS^XrIYeSieFtD9@k z6JoJbGiEgJ?p^gbp6l8Txq*0Q^;kL+GvyOLBfC(DsCU~KKnjvc+bw&fWPNuLL5|Gx zuT-l->>oUg!tV3GwXbcjTqz9Q(co?foeE`S$)2k@%p(-eRqWqrCBkcMZ(0|>iGy7K zg!M?bp?6|+yr}vESJ!F`VBDG?r@^mKHLr)n5a4Sq_uu5)xs$YexXSCX+5Rm3A#5*3 z3VAE*&^>V#Y)8!*U(L5;ilFA?MXU8$ge!KpYO)REa8DJlZZo^UDlaczFn>958;|sE z=sliNypFM4XGe!%aZzJA#mzM8&c;yU4cV#?iWP1?F9-3^k?D4S|Iwm+ASfd?aTx0j zhEb#imyR+tjCS#yOL?(}SU5kferVRTd>ej4Z;*qloV>hgM}xJRrSs+58;^4Bi9A}Z zK0Lia1D^!Pr0nxcM2b{G^L3&kp^PBNI_2GfRw=*A9c;DBo-uveH#@USiHV}!(B8Ia zD@AT@e^Te=!U<1L=pTiuj&`+%y=AFjCi(BPxqdYnY!fx&d6t=^7d}6M=Y%iKKQxzU zA|`K}>Rguw4tld;xZgR4;89GB2h0t>NsUh%wlcJd_;ospq@M9(-QDHj?(XjH9^4&*TR8Z^J!o*k!QCZzaMvKgT_5+}|5a^mO^x(U zcTe~9^fw!;rXq`iNQejl0f8bfC#3-a0SWpn$H2pWz6Ujbk3m3?L&!^sYx(A$b@};{ zEcul`ExJFv?V6kk!edg)C1W-#{@^hL6VsVk3~j6kH{@EKc|IRoamYV-rl|P)+vM9j zq>P=EVhP3`P^ZusssJt)CI0O)rjWyL~cxq)|Gai11Zc z7q6?UOAo4%Fw>$*xm|$L}A$A9S=jcAc5{&yn! zx>dl>wogjcOxh#=>BgwNm|kW1Iit_w={O-){1Jmq6#xAK67p{rj^-2AeAlqSTC{pw zhi@udP$T(-BWv?A8{Md1vnHrFxUpEDMimn6-A;xnM%z#|Y?AEc8|xdPyS)E3=W7agr{v~rU+}Oc zYp9rVh|;3 zc6x4?fc?{Sz|fO9sz~s+_eucP#2OW}WzCu2UlD%;2fMZ^4&G3CSTrT~L$&0x=!dx( z^p5dHj!*_zG-TK3JN{y_)&eky&>&3LYsQCMkwI`5^k-ja@8^3lbn%aSp~203_^xC> zRFTc-*%|TQ-G+ZrP5<4714<*^P~UIHyo3%79Qh{tMobGsc3&Mvh{C3V*4uu@Kb*@M z&$3U%?-9QqiQGPWr=*`E_8^si&7Foi7*fzrm}Uoe3WtfV?~7>uYyQ$VgVd_J3BrK?)B;BlDGj0k8+c~ zKC!C=KPZQR;vTwfG=AROpR9)GuIi0w2)zhMvc6JHdv1)scOiiPRO7S!A~x9K<-aUW z9N`o^?&4Q&a|zSjGLaH$4Ik~8Ynar`73{w$co7m6$~o{HuZgZApu|44;9DM)d^o3W zQu{6|>YkAq5=zCcAY=6FNjE33q=$VO+B3XkIUQr$zt(Ta&oYq|gb#BYWQ1GMhff^&VNT3DwJX z#l(D{5LOYs8s;N=xd=$25{K%w4)M&Za5yXUnouSd{u6H^qM2&)n_Y0A~x#d z5<*zaS9#c=P#}y^oWTjvBkYNxThainE3q-c>96^fz%iUv~bjsN`(HfKrh zyEvKmnodfKODUCS!(MCS+)OAh-_vVOF3hhe;|0f+3AhKYq}9tieW8j?{7SI1KtTIn zWfR8&Kg6t0vwnvvx5dr69Gk%*-zv~=R)u619Ui;LA9PmSS;M7$nA8+{DOvL4&Y^i; z{+PIZe93J6$8vs(nu=_qQulZKa*-F~;&0KxF@{~m9>8hgi^$>ZI96_;aKf*q*c|8Y z=twFYFDDS;(M?ih?FEY^#0P-G3z= z?VZeB;!n;$`pLti4`aJOf(;B)e^u0;-SjFfI=M>a!=5<}L_Wwq-k2TQ;9bJ9N!h_eb=!}Y-8iL@U|a0Z zk3O#(wc|-LKUp9z-^%o`o?gsW&{t;n-6od}cJ*wl#@uMRyxjCBv=Gsut_vrA>rBckz6jFlTK`MYrUgRvn%}M)d@xIXnqFCK8%b%_Pq-*9r7TX+u0ndM=9Yj z)8%7pA~2bJL1F_>|Hp}LF^CE6qNbc7_}z<{^oh_EpSYg|bQxvgx%tM{0p@C;vW85} z^|McU*R@%JxV^>z20oxmiZy_v?H-(jI$Peq630Vu#ob^jq2`;pZYJniB_^6F zBhAhTl}@soJnb&A-G5LU3xeldlUX|JTyBh*?0ny{=)Q9P`ar)vLr8^v zi>dd)4|u+t>>9=_}!Q~T#!NdhLBD**P`BTm;Vx3I)wS_Tf+J(;X3+=L}Rkq9nZi{X2BSsvP1Vp9tPgaKK3{tKz<#{j)of}k%s zVF^R7q~IN^(1T6N$i#!|^x{6O00^n!4Ki0MWmpaLgD#pqBrQYqLE8o=Vb`e!8OK@X zVPvI=E-p1Fp=3HFp04|nQqnv<1s)^L#hhF#>bvRZpN)$L%LuS}|e?=Vr6jPE)A z6>IG%-JTI;4}sr|dDj&NxIr6^ArQ%ObLiukw-puOC{R#%cSiTXys3X^aLR2N_9Uii7pd9Wa+iK^Y3X)B8#_tUGueH=lkLU%!@!@I(fJvJBY?-jHqlA4`g z#uLBvEfH)!Fl;t?2#U^9ncW%&@(0A#sY=|yj8s!?dg7tIZK3`SdHb@fnxOg7^A6jx z)s-V?pt&H!Qzf&og9e@pSYvj)qh5fwi^vp4B7M|$w$ZU~Q`@O<7CD(}AM zRr2?lzl=`2Vp`)=>Uw0PGyPzpqkEWP`Gc<7%qEgS*OUoo9HvP(dc23sz5E^Z_v}WN ztPAsO$gcM7dV(ic`IVm#k!KfPxo=s42kYB6Jgl`=8k_@CC9SEH#Pzsedl>JJKpkg0 zRrK-SY>)d}b9K$zuhSt@WEYCFMnaQPTc@wH9(5Sn*7u%{dlr)I{w#_gnjr%}+QZvL z1HY@@T4nk@X{&TT8$Z+fU@6e7oVUJo3Sk{g%DyLw`nN{ckT75uNd8T2xjZ|{r+H4K zT6kma>2rE<-k$<oWDE8$m@ENBTAV&Y*Ysqa^V9h^_qyK*1s>jn zj!7<##7UIchj;fOwjTE&Z_5Z(x_dzXa&0bsLzfD+2BJeg%KxsePT{&lczT4Pm+UiH zDvaD1X0>b$Tzq7x)@zFn4(=R1c8w&u7SsG5i#Ax9GB_CjDGsS2m4aIdrZ|izjQ3*; zjL&_4&d5pvC%uP{JPzgaADRRt@S+I~9FG}GooKCs>Ku?f7Qei{lf81ReIHOF3j%$- zE};3%(lwmkcO17tIeeD@&YOO4lp``sntph^o0-O~?oNE~yyyDJ!=y1=8pa-^VL(A+ zd+zt~V`xtxImVB*$lq~!CD|*^%ij86{O}5hIybo`?g z7}(C}BU7AR#3D5Vcy6F`1n;3DGLJv|3ljFT3Ws2kIzFqW?wXj#gpLMlLa~<@TOrK$K7Bvk zyt^V(iS39UenN^p`gfo|!eHvzYBufPEx8d3NKNFfE7siCR0fp@@%;R(|N}YCyxnyzn+Y&x&uMB0D zCsTtmkXtH~_dl$3IQ|quG6{LCR{FDV-Z!$vsYCis2yY9Lh>58yR5L``wi`7vr zY`e9b@6qymy2vXh=XX}IqcUslO8TnsrE>EXsEKilG}z++^9WvA&RgC{wil!{)dGvJ z)QZ8Ka*DR!!KJ5Fr$3&`h>kb3r+Hvf-jNNv=b{Dp`}7XlSrP&M_7UA*tgjpVKg|?r z%_rKP9uJ=2izC8=aY@V+Y#9OnD>B`OXMU==nyoGUB&=P}g^Y8zpnSE^Xz~}TPIeJx zQ%mR{Q#svBZqp;RfGt{;MwU^6erwOhT@G_!E?z^B11q{gj;2W;HR7XyNc{ z$JjcspBB94XtA*a{^6RCs`tkl-@dN*SbqF7UJu^HSH$3xwVAUDEX)F}VmDVp_`>}1 zo=G|@$>{gu&OE(~w%c%{+r(3*eL-dK_|S33^7xKC-EXukAG&9A%PRGtA zFq*YMJfBYL)Cx}UHl$5+EY>+UUy~xcUf@^3p35xf`jIW*e6|66U#4FCF&+Ujv#L!u zlO!_iu#Dj0itmHP%_1e-@pR4R_rCzsbuS4*B9{w2*7 zxTR?$Bq>aXyaQh6+fTwfV=Uko9R$f#dP4R<5u5@S$a%hrQ3iZMe4D>#sgqjgE^I4$ zZ9U&QJ&pf4uB@pDAwN1?f_-N8M5Roal8hlv8&5x=%Gk$OG}#BI{M!Y0pTNA{( zySx$TGr7P+O#u{%7@#gu;m+FTBW&}fHJ;l*oZpfxWRC=*LLaAX) zQzF9&Exge#%upYU>J$AUv2}h-)>9(NRZQfoDs;bCt-s%Bt69M z9=YJToJ8pQ@4)(>m-{TqB^WTI$D2~FCclU`-UC?L-X5A(Sd2;V;$uu(--`SvX@4cI z#SX(H*&1?tyj7&%TSdO>K^9@TR^><6!yEL&>*{o)C`_gHLDLwJ=Gz$pR?Y7w^yJyj z-@iPgD$!j2+P&dyN3|DaN>|u?PmV=i<48bXH2<18_JmBg{ha+l5kS7IplJMUbCAAH z^aYR_`7dJ4rA!2a@(wKT4T;SyQOq(Os8qIZU)IH`Md~6GM9B};WN!yWq(T&s#yR@P{^d>CHJY1a!2dmMHM(=3b44|F_<>;i=V@k;+S!gqt1 za|-)Qx}`?`2tNM+L(O*xu%mC=e>m@~VER@jCBJ~16)P$3R9s4>bX0Y{vTr~-e5yLz zsA=(oPvL{9&ci@HIbK>l$UH?^K1{?boT#kDCbG>?c!#=A@B6A83b(R2VFwcNh2U^( z;crmbw^7gxF+ArdPkOZb?$!CucmX_kfRz8=TKOGkw1dK_9H_{4gBzI1? zMEbR4nT*lAu@IhFDb^w{VKqG0$=zsq$73^0jv`Vl*fIL{;*-9rpx?t?K4ChpkZ%9E z$lLzQ#4mBtg;&{-U|kE}hsRx1sg5XLkcoW~KK#jZl^n}_8dXQBLS&OsFuwKv5o z?RT#A`D0G*txQ%f-)PnnkYnzaJYh{>1y>hdL$YyE^>k5s6Q5{*fgO$c#t;8rNl0Ln z$2U|l_(WdiHI>-D6*ra6zxgeL@@0ty=Jk3u1JOGy@#v&mjDk!Dnkv#6CE3b8fTBTM z=a9#8f{zmq;`i6`r;-sZ$I^_|`+&!`k3Dneld3Mc#XtVni`8sC4sXVy6Uw4j6R*SX ze1^{5Naj|)PpTp#sj4`Bjtm>V#OK@pIP?R>&=N>Y3q7p9?DF21 z+Q~aQmT9$i$1Z?~)NO$?>m(McF4;3Q+?8xazIZ+#IR%I7TcQ(8Ay@XnM-z4)*en2eqal5&d`t=C^espD}lrg8k8p{mO?MX;5q4v$rUTq3NN^ z$20PD*ZocBbCK+$&x__Sy1G;!hk&?i@@8U4p9GB9&w?emM zer8)Woe#rY&E`02@G=6eH+H?qXQd-L;67$0725S-#T_RA; zf_6RHhdZW!KSLj}siW{(mXilWg9*mj^Ur)=wCf4%`I8q;hZ7SwdsZRlkN2p6wi`T> zLG+kmB6}w!%xkAW=V;7R>gJm-fw!6+NrL`%4!6|?*~6zMFYhnOl)RW5*+2Lz3VpE# z!Ryl`Xr;+mUnU`G@1#-;S1{4gA*oHFRhI(VULwy$LRD40rH$CYTi?09DG5tVJ2LGCCd?CEA|;#b45URxvoE>y)GAKdjLu{IoI;bIF5eTxUP zosY`kgy?^1)5_ha{H>)S{l2r+mM9oJ+bi%z=gq`mHC&3P+L;=j*1PdT6H&&Jj+-6c z*fl`s-~5cYa=#+qy5vRP#b*-S*ffh;FPe8l>}XM1LwKz+mLVdY@WkKw5FD*NCsyeU zcXgh#oPvs_WhHlJu|<_`Iozw=js?xy9%NZ7jK1}IBT-1=nb{%IPm*2WGh(W({iE-P z*vKp6IMKC!|Bg-R{>9^)I7yKn@5UH9Mi}&7$MVCNsa1L2fZQ6g*R(q0)1_?ovWG0* z+G%*}hAi6qu<@_+55Hg)QVWY(XcJaXZw;RuDTgVFc41`)*W=Cy*VC7;^#kXAc>f3* zpX^nZTF6gMk7GLOlD6s__5Zo{+nk z_sVN%VCPZ}SPKdiA^ZLN_v71=zZ}w^xvozhmxwPz#Utjil$*e z>7A?m=2)YvcZ|f=Uf@#zu4C5ea3`KN8-|HX6OkCEZW?QjO10#Hmo)C6NkH{fc}O55wVy_3d@+g5z=3=ke$9gZoIp#ewK+ zzlnz9?ef8&2HKtnR@0C$)}VJ*mbPiupzEcl1JxjZWf@~6T3Xu2e_QWPu&}V3-UUD) zDrwNIdV5DlU6HlJ(HLF9{`C9V^rl-67|ipZ7O>NrH%j#?U%vkd!~3o3$8E}s(Df+Q z>!Hj0Ar7fN+%y06UENiJY{9lQbG-i=tJ_vxP;SmC7FYM)QHW4xR@Tl#@Wlh4+wS1n z`TY9&q^;%oMkbu&}Z{%pE;vQA=aci#KWTW-pC08q)ilXi#8|RnS zXfE{AuAFnjul7KrE#aX%YHY---Y;nNmLtHH4LZ`qR5|L}B5mENPjRrEw(0Fg5jii5 zIj|&DKO=zGCu=(}g>nt59TT+no0)&^H=pKk%bPDz=`u!Y{}+QzD0+q+`yYHyirRf_UU6|$Ky{69m-%No!0IytyxH{ZH~ zRsS^n7i2DT7a#l|$XjKE^0iWnvS8W;O!8kc2P4pT`(vpYx%!6x1B8tbsygq~Eufoa6$*C8JT*>9Kj%(#Za^K>2(x zx4rc9Gdux`9GTNcKgZ3qd2$;XiVmpV{{LNohAPV^b{h+eu+Nd&7Z(Bz`+Bt_2!#!P;K+KV-eqo!@A#!B;5X%Z)y3lKAtHfF~a5)6b7@<6xNI06+V{jks0({8`!^ z?6E0o{9jgUa~)D}Kx30`CkqfJb$IdyZj|ROr56*1y>9hRITA%;ZPggaun3W1^yAIO zH1lr6N)s~kD4rXGZp75`5+LhNQk;V6@TI2v7F8t3>_c+KpQLP6MjrBD&IV`^}YPQ_O_@JbdstuD-EMzB;c{7 zWwfVzOu@|ckqK19LZoPooxul(e5fF6)~%B9#q`PzS7J71xOrH^Rxd4BYJCY%Z^<`Xl7fU5%7}2+LBD^5t(yGQ z@-m=OA8o(dbVYF7r%EFuVGfUuK1IsK#Z`SwEdk$Yg4Wfwh5#)Yb3^(I(IwUb@d+v# zjm*N%E<&QHx29!NiHlHw{%I-BdPT_=m*2}KEp*3CNpV}b-Al*sMWK;4XuD!6dtGXk^c>Uz(e{ zy_lliR}L?W{BZG594YFRY}1XQ=6|s(huW{4^US}^dF9zD9d5m!u@DmS90koDG|I5( z7HTnK#7oPUrc8ujNvHwR^(PP5JoC!RU|+lMn0VK~Sq0M;T9~G}rNgi-oICK4DN=mc zl*FhQ$d60^)^)?o)9{a9Fd~Qa0iRk{qU1JS0H2kCSrS}GCag*t9HV3Xa#p1KB-G82 zE-TP46`+OG3e@Z>^aE@!^VpEXE%YVfiPVp0FVC!Jk7v4+}4&jG6`DqVvFIV)n^eKr| zEaHEMe!)#1cd z?cVv;I}s_*Go+78^;1ww4|6c%dhipEP+$V9e`?107BQ-u3wD|DF=?c)2VY9R5s6E~wxlW)S zK#BUVv>wfFvmpbvi|yJyNd(oBj<{ZNH4@i61!j^u4#JL@z7Kw0v)@hiP@qX+4o^Rr z%_)?M82j_;#XVbr?kFxaWStZv?cR;in=qb)Stjn21cvfb0|05B3q#`DoFN7g#}Kf_LCg3*-D+`<$&YI@xG zTtOdH*9v)Bgy^u-ud)=PvMd3h^K*zDR|o{S5e#G$5P`65F(an!G|Nngdv<;eX@nCc z1^pD-ygJri**ScpcU0<8l%Jbbc2v}}vIoGH7Fi|XWW7UBim|LX2bFG0|NG>!RXl1| z?r$ZV(6%RjZQq^N zMpM2QGeW;YhV_xleY#S&2uT3$(4KmOQ_ji?|7)=5m{lN&!rzn83>a17%yJhay8Sx} zMcvJ@Hd=ji2;EhuJO3`O7O(~Yn{jiUBIkEweSM7eif-WZ`YvET^$R@!JrN-=xaA7u znnVlKHS9b(W)y-G z{SpYuSW?!y*VsTkynw|xfP6(<*wSf{(c&oHb;JNg5_Q}VW~ngl;2qe^MY zLj8I?47PsXFD2sjAE9P!F@T9>aG@R`uceM!-dEV9Qv_|3TO<)|ZIMOTCzd29H8g_~ z1xHJt!KHBwA7_DuV8FGo`iPxpr&i8F!^v*nkd#Lw$StiTBFkVX>0N{{vD%3+52MT` z;^O8%N2%#r58&f<;N)>&XRqVrEwD8=54E63)O92I@ekk1hE5HKsBSu%dW`E&b)qmB z9luPxO{+|ezV$|dQF{~Q=s2LfjSlQ}dC@%)qxsqZh}Y1UY(p(h??cF2QpF=6Xqi#O z+-Z&LjKaC7lh;{}GjjJs`Tog9kcff78oM&q8u-%R3RdNTQ<%G%mMHEC&~}EOmuEhA zOuiEX$Efm|#7|)(AZ1{4XBm0quUGo)uWRiCur}ql!j1c``kRtCy6l+?6|>1@Ckmr+(Gj6bAL+)#f=zZ17#r(l!4&o}CxKWT)3 zi->QNtRdfr_ubrpqaVzxjTo*FbnXA?^04D++@GL;dr8wr?4CZI;@a9jP<*W;nsO~J z%nZGyuicFpmLL;P#MQAWlVg6O@|k7hwwsejxIW;an$%^;Q7ds_%Bb&i%jg1g@*={E z2yXN6rBiUS*X96|N6EPy%?xl&M$m?I#3}WcY@EC!NnDbOo|^2fJF0 zdJ_g&8kG^|_)`5Cog%zQI!q3FAms+N!P>Muzyx1ENr;=ZzenoCg1Lx`hj0BL8tMUp z9O-K#+>p-bAxW4>z*7R_#LCa~k35BwJT@olHQMxBJJQhfqr7n3QolObO*oTI6;8%ThX|%P6a6ENrHT`Jg_j;H%qp9>EcR!_x!HYZ0 zgowo;qX800EO=S+2@a7SG_vk=Ek}I{ba=B&*iY?$dr#|PhZS??HaG)7^|M;|8!8JBJ5@1LJlsUG3fSjsS1vo^opR*otU;^PGE6?niLPT*$i z6zl1*FEadfC)R}pDyHiqf5i}6|b0k>?_ z>5=jS*(bI$<;Cuc1vof3q9|_ic)5hS(_>8dR1Or)kV60Q!PiOI`;$)ZLKQr(I4#jK zA=h@=y9HQbrci1V!V=h{7;O0+`9N1WmXIeAgYx1WiR5JRzonJaY86u17ZG5p(A<1w z`0f=k;44#<)FMyUzwo1u1?25o$|lQ4Kdv$8Zm#7U`r5p&g^cvOeineVG2;fn+F7n{ zrZ7$J!N%sl1z%@aBd8QiakBBrQt$%N3#%XlL&+PV`WehKZ4Uf%nLy%8Ii)Ib)bfAZ zf#&$1uQG>=0A;$Kt?DTs= zf+g<)R=mvRQ)h-tY?BodUw{A4RmUyda*=~VJUoW!f&mT%J{6kN8Qhq{1OiS3dgn%GH6G_huE zbwp%*1LysZ`nIE1`oG8v*5Syz{Vns@wxIZ{OJBb`KEjA!*z2RrR z@S27vcb!n;SSHyJ5!6Zz+NnT3ZOy_(=^1O!R&+Usp8#om5hG(>R zMSWFN7!;+FQ3uvQB6%IqQR>;c2NCaC*9~HV`+&c`!B;K7nReT<3sVRIPrG?Z4o|yv zNfvE;QOPRpE~7?52Jyz+4_W2;20(f#pt&@vt}qMR^NTT`R53$@wb=@6ySaq{F4$=& zlNM}G39Y;HcM(n>6dMu#*tvNyh1seu!IAZOrf?edBhfpLtcp{hChkMjb1pGX)@5Fk zSh_pNcVNl*N&Qo=n6E?dTiC%nu)vuvzw*2A}pu`-*<1JDn41AH+*F$3&oBGE5G z1>0h9o3T0lJMcaJvJ8r}*Utn;+GpvNy;x_{B8f-qDWk->c+hr2W%6KiM+fT5sykAz zP~cyZGa6(?1H-BtUD63)P16iRz(YWB$p3ehl}TUQL_R=&V6c zxUV2UGfztrXKsH!C&+Z25$R;G42ng^be011XM!TlGe2FRbrv)ful~Nu3d? ze9EP-(BoV8T~5%2s|mFRJuVya7j=CZn>H2g`($c+eauv91Z`~uSSV^tgiqNS=$BNd z>l+yjvej01BT&>c6Pcgz$&lXi6AL2^L#6O1M)aa%c$TJ5-3z>ms1EUj+P7O*5YUDX zl;jfS>~~C)?ce8&pB-;BidcKW=z#$&|SMg)dCqXk-b6-q#9t& z3Ktn!al4Rm0x>wTx1?IND~)>0i%~J5fog^;PpsEyYIowm{W}m?Y){yGz5O=V)Xt^& zVX&)7|v)SUH^_QG;+>vT{rvZ*kp4> zN`C4vvn$o|c=NxKaj=wGQ;l6SGjGWqbBb+JmNW%l(rI^>hU)Z&Bd54h%p$Xx zY%2@n3@FhTV+}U8!~Zdi&hh-NY5EzyECQSz87s{Ns}Yhf^6b zDD4u~;2f3_nRdGA$I0o)!b<>{4~H8q8+4BY9U8^?;3xha$bk~9$Ca3UXPjc~W@NlP zshf~3w5wwFT6;cIN}+7Zj+!G2p18P3x%ddK{zZ8kKIetB8@>lT+Qjkbs8Krt9obg7 zdBTv_Fj&eyR1hBW*%ekHS)c=z;W-60d2KFctO;)_Q1dQJ`>_mDqcuf6pT8&2a)dJt zB{jFUslp!cRp6-@0Tgai!H4sNG?1?1xYmyi%26UW<817YK*x@w!NtY>G&d<;PlZy< zQVn~*x$LT{?QdoFcG*$Z1`!gFWUbr#7sN-!@Fg zl{f@d#eJV)=9cxH?_T=qHZaEy-VZ}QCsJXM@>aU~nzBr%|5}d^I50RVR31$y4rRVZ z-zepvNz!g!T*c_K-kI}sMjY}qRCifv`p)OXtP4IF{Np+Tgb-#nsZhEe#5iwvNcWQj z*2_!j3c!^%_N_}Gq@jn3eY29Xwhj1pc>Bz?ANq|#z;|&FgOY$kof@0| zgE}_-A|>Zi4vl@;uH7POGr)eb-+N{pw=_jc{{bCg zm5au+GX)mBBSQ;>7$J%O&vw(%{)-I-AW2uS#P3!+I%t9JLN9Hph;-#^p=@oTfBwZB z-wYqhe1cEU%6)|1o`31Elt|ytml~!sC5+7y9~5Dqg%1j~Hq@nwWabwbsK4@cDpp5( z>Qt8JY+z0Ts5uezB&l~X#w`WKC{GOHD*neCJHRK4!=q4yivZ#2DA7^c@aBj6PH>w&WaJUFJ zF9Gj^p*6rZGcFw!J)QJhDK#r=JC?3{Sor09_b}(7Hekj0yPg^?Zs+TM=y7#lY!eND zK|$cWl*&5!d-b$C%l5bdX=2>;k=Ig$2XWjGWwI+gKmEw$%0$rKi+ib+-_%w1rFI{~S z#LQZ)_q1ZtJX3tCw|_8QQwrBf8HsQWGs@DABsv_9>!pq|HnZ_}5TjPI0i_Rwk!%In-D(4Sh@M1rz?6IA5NjHl!U*N%w9x;d#H?&sJE?aDg**%iDgtLw#gQRbP zyHiATR`0tVSCp)FJpik#x-e&rO_{aqfJbci>rnzg8c>$tghXkMmZBx2f#@s56I>v_ z>`JH7-rkX5K6>8fl=@NE#hU=!6GG!IIIrD&AlX=s38H{M$81(hqfr1`j5Saxg435{ zu@qHkmr|FrayZ8l`P)R#6M|^>22&@y#+vt*<(+foyd6gxt^N^7yM1|pp%z1jXkgt) zaK6me#-&1N_iVR3QU(zqg;%oJ(}wb#HahXGbtj=uINd#(ev8QcQ`_Z)5mo z@d;mP(ElYkvx)Dn5HRf++q*L3$zsczgog4*KuH}N9NdQ<+HIbA14Q~QE#7*@9UoUZ zOwE==0+7bsy*o(ahr%qhanr_M6)|a~)B{z~dhcemltV6)thgF8$LHHMFyiH`G32u* zlsU!BeL-rn9uEg+>apPoWq;hdwr{$NkQiR&EJxFqy3 zWHnI{W-F6pG|uQ$?ldxA3;@R*hY#Gj`gEAa4{aWQBRZj9Pqo4>|iio34sK>ywSU-8rgtvUXWT&#X~-8FrKo8qH1v_mz)ooxFZGuJquV}0;V=NWDh2$K zOFN_-jWN_=RVS(~*_2yJr}Fb+DcDl8TrJzo>|FlYH+T=MLePcw9wFp}*@wNw&6C;; zt^4nBvbnD=Js<2}zZUD&;94~NsSEjGPk7)?@bixXIl36?_~%)ZJ#}nGtp_MkG`PR8 z5N4>5cDoLGV%tCH{fbkeL>nVbg_LY}A(KWO6)lU~cqS_&LywJ!bY3@sMOdSAN)y>Q zTA=rbYoTo@KzqUxv#G+uZ;C@BnHrr2Mm?22!#YZ)oS&C%Do~X`SU_p`2+j2)=pk95 zJZX^Q$uVxA?(OrB-_GQ^uPa$u>G=5o_GH{+q84%_^+}D;@xop(n4D$g`jAhZrbzacWYZLWA3;3Tk){_055d&jNgSN9Y^z$;ttYbW_0X3 zC^dF>FmA{%Hd)odUAOSiNf`6YI_SCO#?@CJ!z)zdDXBoe8HaY1PP)a!{nXdE^@1Oh zG^YAtTAUV(CL=a}Hi$n1tjRWnAa$yztLyW{4}I0hw=RnQYuW_nuF+_1S?KTcUNU%$ z1iDH&>WbB zS7`ZPi;RO$%e;hBWa*sJD<+ruk|=<{gVFH{p)rKw@C)<1LJXPlPfzye-c6v z*sjerP+2mCT$riQo>0XDqlY0^mZ_pjNkel>f|_vP$5;B25U!uKnyb6xqzG|JG{v8Qop0w%P4;~ech>sh)Rmr4hA z$k8uTRcvwH)6VWoh41QcR5~I%1SHAFlUN(D_nhyF`xl<5iBO)Z4z>T@*&Kq8N(OGH zS&oyI(!|raXgPHHYbhab;P-6r@qbs2|NpxHY!v05yvw^x4kNUTn16Ty8C73BPI3InqTgc?R7{0r83aecQ(w>9gP5FKkb0K- zZuc`y0_=Q~8j6t8CRDJ8gfm7f3n@w}dCT;u<)zcK=s^UzlN{Ws13%;+15I`t=o?&P z99e#!DaBnoA|`N*Ugy4?7IAxp7{?+stw_-d4?GU?9cW~ILZH8G{%k1l5TQngTgaQv zw5&K$r^;JgEi+D3cG!)`$Py3`h$kOJ61^S7zus6!{=c5iGAfRy3DhJ&LU4zm2@oK# zxcf_h;J&yoZi~AG4-grkfI0{O>zhmXAVudTJ=AGVEJ zr7ehTL-!LkSS%7&(+5y~z6Fnkl-QvCv}S#K7VnlDp!EDrk$r*((j1popdgr-o6f>n zF8h^BJg=G^E}?nZ?GrC2`@3agpRLVWMJFE5JY^`D87a$3M_EH-7R!%8voxZFOeh#x zs(%235M4m7$vVB{>xynDH~H=+DpAcxzME+bYi!I>m0xvqz3cRsHdGoeY0-=HJG{~Z=_+pZ!TY`ABw1yBI=(cMDx=Q{h@wTzpCzjlfMlOM4Bj^& zhYRs6+VKJ*svxQV9MS0TosQhwl%x6}fO8oa4dhUC_V6A}lZiQj5JSprXIgOdQ7vr3Luyta$2c z3RmQN6>ENA8r`Vcy6}SOpxSA2SqX9K6c}x%(s?6v=4-iujc(Pv~Vxt4ieOnIBE|Y_o}qMZ@`M?-jXn zOAPUex<0gI+qq+mjrr5bPFT6?+B0tGg6r_5;!-l=Qe?;8jo@pl|7g|~i!Af#ZP8ga zx=0zb5N0Jo1vnW(jx>c^Us3!B6y7wV@Sebt{XEDl%MWIlE@}xANfvS)A%zkNdHssZ z%8k*APe_*N4HGgPo0f=++Ovb`jInEylZQ`-zFRb~N*O6h#SQTa7_TuMTYp?nITb`w ziceGzHDDPs!%rRw-8X38LS3bumzsFbIrV2z(o}*4aI4oWr|Ak6msOaGu6kwbN4e{u znrbLFHviyq*>4+}^Kfk#ie?BAI3iwL3i@4np~gDF9DC>RpU+(V)5*?~Rv7W&&jp)0 z+$gs9g|8e1Q3UyVt)S>?tjt=JmZD4wY03&M3jJw4k8W?ot8k;k-k>}(y43;R@dZei zje&PfnUQbHGVK3wGUGu+6jOd%o4XMWfOcwFk}qL#GXcPd$Rj!5%d>swM!k z_v#fj_9_=qEx=T9aELoNu&JxhjZ^Tl|7(ruv!z59#;2lS4Goi;1 zHU`?M$wtBdJ9IpxMUu&pfq_3WrB(j@W#y=tjw9Omho+3QkHkpd77r5>6KaC;Whlbw z{^0>$Qe06d)9}ipq7I39FpgIGk1h%_aQg^xN85`QxQdW z>J&BT7CE~vX(vg_`|-Grcq0t9>ND5v?k6!rCI>M#b}XeuLbD(UGQRC3?%6@@Ij+}x zZh0^lq6S8;lZZvGB?i@xnBcp(fgWms5@hdH7MJ`EILf}NILYSKD2>}!shdV4hT)_91 z{m$3FTuKN3;(TI!yrPcrRRh`_81%E?eI$)V&D-!Elg2LKX})Z1n8Z*BIFB$T#l^+x z>2i>jiO#u(F4*xN93Ea(_*ii9rrFo+aQ^STNddQ#+5p!4sg6v;@Ol`jtg;Tqn&Z58 zD^Oj7+6rY@5==|3%Qa}%-u%7rg2qJbYBm}FljVgJHl>)f6iCum;;P%zy}onlwX#a$ z*Xry#e-mGNp%G`oCsx9dbm1jsy6wXDU9xjYiCSL6cm_T_i_@GrPS# zbEU<@=;~=oUBvYUyV?h?Ns}$l5_EI4AORH3i4}X|kB|&HvI|UJ6O??utI__^-Q5`2 zIleI9on$hVJ%vMq|y{OW23r0_#k!=F8MnOJC;kO|- z3-b&ys$ZNBq8IwSQUNE1xit$b6|%yo)Y}*%<@B~%g`3mEV=}~(b~IE$Y!s|jVDZcGrjEPi;5~pAsKdj8$h~(*eZl3pFFMF)DX)zM3622uP+x%~i z13T-0cC)4?yDdV6zq{8gvh4x;yqhgEx7?J#y%0bW2Rokjbd;!tWR}@L-@;$EYY349 z3@oxa-3B3X(Jbp)a_px<;olkrTy%K7Kcewk3i2`)B$oj zKjs_T<96?D$ZVKpEiLa#9mEuiLDh9Ns54@So^Jm!qx>p>h|E2>0rF1FcmE!IzHwrT&cKVgYY=I2uZ1Q8GZ#u zLfzkMJ*TJa1Ox=NwY8w)p;^1^Q6Yv`)==xM82b#2Em~Sy#2NK7hkI$NkKc^!^gi94Jj1?O_zu#PyXblr9@4F}1vAr3K!AD9-oR5U<|dB%kDIs;e(_$G zQ$j*Qp-@d5HBeGGMr?g<0KSV6lxRjH&W`(Eyjhs^XW2roQl^fQL9@c}kK+ZE6mtq@ zADG=ezLc1unkPi%(5SEy^LwANTp#&`H?)jb!LO3{#nz(xAbsSrfJ;I_QRBl31NQWq zkA=oW-+E7%n}Nv)B@z7ydT}ZRJ-2g>SB%FEhv3^Dy9gxQSgpz5uKU)k>o=$Sv1=oT z4>3;LW+&B+edvAo1_Kj-gO_}X{BEz}80p(LW!TB!N3ce|iyv2m!&=~sg#~XiFg+g$ zrOcQ5HANrKd|r@Jr9lKTm(cS$4H(9=8JW^{w}*(q-me)JTuuqAbE;tFaV+FN9R(-> z$MrR}s3H@ys>aG-rN1kQW*0ZZvo)QL$wU7iKr+k8<@Cca%)JN9(W?otglHeluQNwC zrs>c4x$7J50G1jYBJ9fjLBOp7M{x#<-jD(s0hU&73Hp>(hz$R?StelXMw@HeOBCt} z`YcQ(txZZTrAoMYMmi)3G4XYU3dd=;<&;O##HEpCr^p*{Kf^5Z>iW4hKWdP#{FPwNfTJ;%=9hl_omcR=I^ zN5WMcoz$Xtq^yM(k#{i1FFWrjF3)}w#I8FVI)7}NG1$(Sp%=Z`SDw<|H{nd&&|ABE zuP3DEd8y@o_S)#4+h@GU_a+}?w0uname};<+b@Ky)XyRwR>R6(OgO?6?oCu(Lz9o-)=Lw%bC_{hHEeL{Vo4g`_Pn>O1XQW} zr@%fPRzKw2Z%PFV^P1rUe)&07z`h&b`*Py6c2rw8o3~&*dZ1!48CVEL*U$T@%Q-B? z?Ohz72h?5b=Qi3DGVKh_1z(?8g{XAO(c5lbvmF1{)Bp|ArcZDrG0}WnBs!-SbIIhp zp){R~QA8oRd(gzBs8<>3z)z-~@P6T}2cW@G0U z?t*c_WzC%>CH$#;JV~VQ?b8LpIVV4`WL5FZqZe{UpP+G%h3Jj79}%oGK@i!AZ5c~v zyM3$O#D*3?su6nF9c$M@_9;ns28%C#&w=&xwdtfx1xw#CThLekvLd#Kq`w~^BGjSV ztHV7vShE3=gjjW9>C~k8hmtr~bwpP5LR^3uJoKr;?DG`pTi$=Fk|;Hy%EF#FAKtJk z4b7$I;^Hg_`0om{wRwHTvd7}f(^hi7fx$bSkZhO{uH5ua{1n{15-9pg)SGXf?SE#(|ggd=9{fry@fU(K4prIB!;^x#JAAV!v(uGx_iNm~8McIWEc!o?qQ-;1;kIUk>g$PtIr4bwiG zP&dkxjlF$C_qDdrUu#kCw9)R`mZvOe@T<-)g)Hv-2`!>HBTH0=3(*!ieUHz`czF$* zKeksFMpgQew?mfvsfWUo38i7_b;9x>j<*0BDbOhE{Oa0EFRjPs-cJo{LL!_V3tj(7{&HM zbVzYf5a5o9M!F&WR{q)$BR}ijEvNRUt4i9BWI?kr+CM)KwqEi%o=~POOiw8YlhLR@ zNlU_?H#-n>mH20CpV>*b4~?D$p$$};h(tC~xu>(&9M-@NbFQNR3lkc0$dq(f#9p(| znpae1CahpXKN3h=xNm1`Y-@>uB>LiKf`w?a>{jAd)yX%Rk6AgnavtS&c9+v)lM^_x z9&AU4G3Au$f8WwkpsQrGF7jN7s}K_DBvpEGIW8*Ll{M5nr+4pfysWnQke1O!H&JEV zmfT-*^9IkLoAR>;e0z$!gjQ3~Mg#jYNoI%Thg3A!CcZwedxgB))8M5B-d<5%8=OLM zR)y#)%)#^L&}iy~L@gf}(x9uNk?1QrF*t~ZG-MXPu)w@x)E5tYQnaJQa@ys*ybedk zR(6rT*)kfO?G{b=-tQuNx3_;#xgTBNW50G1Fkp-v-TqAoO+G}9RaR7t8?%_=c9ZRR zP)jkoKuKXKJ`yp2Ja>ZbTA?4H)}liN1wH8pFG^i-p4L@Ak4$XFV{d6bURqFDpqeo?uoj*;qq(de|RYDg~-c!$|670C(XqrIALyJr1 zYKMt~m$tU@`Ec;CUIV)1Nb|8pDPQe}+y@Hm*E2ISm)DsLLVA*#;B%?Cs4bo9JI;-- z;XVxvMd{d_%VHAkDl|fRoj0Nygari!q}0?MyFR>W(ZKg3r8oYwM3pu1EotjlLHM7m zhs&b}1&gq!Cx9wnck4&iiZTe^KD$kZ1l+^1gf?IOu)IsPa`ZRnT{iEAX_Y+h* z`wsa(90Aj z;QUGiX*u9V^9k{c;6&>BLXtJm7c9hAb8`AN^J(Ew`02E*mnJG|RE>y8XWC)Ax+I&C zjJGs(UJkI?ryikz}Pk_oWY$BAIHGUtB6c%r7_u=S_@316F+B%>4l%% zm}q|XwD*pz^e;$?@y5x?gVg*~WlJ+vmG-QY&#Hk zwZ=T0EFv-o9?xO}MjP6%%5B@V)YXAnXm^UbdL$%D<wDdWqOn95kEL6m{SpE_^~v zGS(<|Z_qX}!U<<}@mc}i22wrLD!ZMxsVb|@ zpwLN>0xhWXe%FnkGD^#}q=aUOGp9_ASi?+5sw(9>A(qZm)zT=xeHE+4&Y6KpiK!Cg z1-V5{#PqUn+SoT5TbaoIXifH+9o6qwOj@DyFdKkE2H}LvK>6TTH9xvdS6MG#dC(J5z_bCFI z;U2hO`%a6R?8RZ%AvR~@YMFLz8a~GFtSN6lC`#DJ4}0GF#V#!_4*T7#3~)^d_sq}F zci#f}tX_NB;blv?9#wBQJaSe+R845NX7ouZcDf9fij+RfS~??UJu*MX?}Vb2lo}X%$H=i7 znYq%0_CX370z!Hie9j(PYk9#_jjRzX?YCw^QnLoi)n)NxL_;LQ^X2{)&QjA0_&h^M zsdjM)yFletN`?d$c6M%Yd$*8OyFf7gL~{um*8C^!KHR zB@=p)1cr={Dtd2e5@yVc$|F@MIX3Fi=24^1_Cfm!nFqsY)j9i-JFgPum7CM-@?s<1 zF(d}eUMX**y{;ydk15qRq;6sn2T>W*@%0)V`6YE7p(5zTgnqP~nXO>PC{!1>{YBPE z5%Tz(S5OcZ7l*g%eaOO@ia9$wD}29~>$}5jq%+-QMTSNkSW?1txb(QkD^(@EN)>#@cR)N`934{TPaM9Vd#A3sXysg-?tAyHFea;@LA(Ec z9AlfpMB%L5uG|T)?UOBkm5 zzALP&`QzsE$w?L}DOG-_b3(;vEN;GX#ds55lFfa~tZmmT<@u>|3HM{9WP<4rMVJ3M z;2en%Z*(7JO><55mPnC<$oMLZg*+ZtjV90T@H-e1zd*5tMLx~N8Wucvp#?IX(!4-6 zYfGD2Y#+@!F0wE+KyzS~I*IKVSn#E|^LP#uYhn20>dr=T{rv4Y?WL5lsGjBKt*8=E z*d#Re`D1KZRLw#_9AC!+K4!Q;FYWS!5uxy!7wUvq7Q>UY(MG+2UXzc(kNNVQLOmD2 zlswX3lTu3Gr^Snn&m4l?OnwBE4aC-Rq#JT`rEgdbs>#pAE9?=spdXnqoSrjONNF@Z z^j>C#yT$s5xc24zvLV~}PA!EhUIk>vSlR!s(zOTo=GuMNu;Ud zhyH*qQPL$4*~OW8x=qpO2XeB-mf&IETNi2Ip)kW7zyImiwbLXgIzuC0B!?~7(GfV+ z+kJ;EQGh=%&GWJ;=LE52aJsh;NEu|3OE)!U2`x@=dQHp6=Hs}`*0@3|O2O0w%w_Smgx1{N>QY5R_5PlEp&8D{}V<=w(AeS>9MGpnw;zesyN6= zNFaNxxRC&%N17KV&}eg3l%)+vTr`xblreq-)=$~E0ISh3qR36w2Z0%PhYXqNYWr}c zDgYo49(tG~Kjk;9XbusP=#u?7=N&b#q3RXJY8rNqj80vWUrZI1#UV87INePyDomgJ z5)-)wYz9eaJGXxh-LGo1@823aAR*!U|NBRPEj?lwjiF`Y{5;Oz_{XY;#ak*IH9mu! zdgK16w`jQE{@@#~eb&nj&l8h&&&%R+AWFshVAUERWKS*v-gas1GyIt;z~zxJL)+dz zZnQo*;j>rb8*>qXi+ufYoKooPKpQrvzdJX5L|<-5i0tMp7Fg>;v0>&Xa%!f3tDw7+ zF+9fOqL-nRG;P$;!Yn>g`)gAF&(P_=b8cR$+8wo7NGyJZ6F}w5}q8sp-K5}S@Y4HHpHxw$qqv-%ZlEQ>U;fhFl2I#X8Nv=W$y(Y}4kN2^Qay`hd54WU&5(d2g#HDC9mFe&|_<_v{9 zJ6ip*1M%-Zl33U>6X-;Inu_sni6p?*oCK5nS2_CQGd>&VB;|iAVDSqRoJD8!P(`I++6ZEqD%~9RJ?tQ-)r#g5+H?bw_W( zm7?#_>M@1zssyxt@H)B~vM=ZqBLb)fpX8ClJFT0u8?jp)KQRx7t;2xx79_qOiWLkp z2N>&s*Vk!RUkpdAF@d1ahu`~vBI|B@fZux)6No15Hi$mR#$+DtuE!-Ht_fnD5tlmH zR3bwT{@1EX>7w#;umr?d{D;&8>Dli@M6y%-zSZICmJgoWfj<0GD z3=V)#4Xousnln6<)+UUoZ!yq6*^KYhB??|3(=kiBuiRmDXA`E@Mp^o+49sgYPpSNv z2sm#j`lbb`L+_=HQnoT+<#vsd($Ju%XGlp;&&$pZ+~2qE9~iKG!2i3Bzxg1oNm zfD!C(1kD-Y&wI?S&{E5hbe_#q zsnf7`dtcN?yjyV?n2CvqFMX`-%S`5CqVqTfuH7>99itu*vyT|8m1A>GUdQb|+xfr^ib^8582lyQ@wcoK&-5axRwlOa8PM%g_SkVc-G@Xu>vVqlI^M5b z-NX^I2G4FQPIWx(XK5jqnyGDaBgQK1k!2_Ch19P*H=%|1XoHBC|H@ae$1X_-6Au6k zY{LSF2~bOhRu(@Vl$~uP760ZH@I;$;3?44u3<_iBz4&0c&M5vw@*HfeAj0-N^4e zj;9>r%d%U!v#_88lyjkq4Tlte?Xv?AB^9P*T$DfnTGu9q>6Z6ya+C!D##_+ZNg3z>ABfY2pU?f`Br|t|a%`QDr+Yj)66$;{U5^scL!I7>a-R$t!byMMfe& zGkdL({HXg1J{M-;1@R!jO5_9L7z-RN2A=ljzc0~x3WwP}!)kgGFd>_5TCip9W7R)y zDSH`Io4+%I(>bLFZ42KDd1YRN;(Id{p`sDUH5OZsTtFt?D0z+6eth2<%(lru*s#$V zI%d+fKOX;9V4^P@i3HW}Y?U=-RUJQAzDyfDztg(JaxKKXciv3(vw%Y&anncamV>w} z$S_W#4QlqcuD@=C7YaVME*bvq8hP@3cs_{yJuTzIo>3;b6x}u)#~;p->9f)|BX%42 zmstMCV4eXWy#)IKb!Bw>+ac~-dE3Zgv(^2~<4^(vhu)|b{Lbp)S)a_KN#7N^mj}Qy zqM|WFWJ!`rL*mSMYS)mE75WE_-R|$I_62u*60T@MqmwQrkg4_~QKyx^W6^a`HNC zynrclT(VWdZXBKo0`4bX%Bd6mk&G`9-sA9Th7>RPzNUBj_84&G=YO35nrLk8q!d2w z3-{WL{acu5!DK_pU3(1oS!?P%e4Vx4$Msi*~Cf1Wpp1Yc_ zZI58{^{$Bd^GS!qejhKz($H{T-!9+$iz20>ulVEq`4E?MC;WXaCTr218e)lWIkcoR zl|XEBJHiPRGCzMS3vywttnVl8?n-O0^ac^<=bBaoRl4WDY!ancE4Buz9_0MPY)>Ej z_%pCyy<&?W*}?q~mzil;QouJsNb47VwP)Vit0Zu3*hZ^u z)vj0Dt^Z|U`AU@RM~q>SMjf!#c66&vI<_=K_#LQgXE`9Cry8t@SIBDIZ35f;RVQW>J{n2yDbCQVil3Jer04Botqja z)4eHEw3r#|DRKMWy3BHYS>s*ySFW+OVqiChp4Vf!5yO`1?)l*&^f;eTdl{Hz#lvLf z%tVNbGy%~R?i#{9Ffg0r-#6@YfM-(*Wd+{F*S?%y$dr^{fi}o#SAnk@v~}h=$sMi2 zC__g9v7pDWVyy1o{>^Qe%LY!D;-_&5!x&{BA+PBznb2TtD!g zP}V`?_$~b^7xpBP89d?S31p@Hy$%<)TfUq)$)#CcX!OhD*-OcFIikENW*3S7MF>i! z+Z)j{pSg|`ezL!GK;A_fv6G=v!1tCc{l|J-KIYOt;?9{59#8``KEpT3$zA7MC&UC& z`@3#lEVS+|(SQC}fE8y}jLEdiHBq`g`S>tLmi@{$d1+T)=f&IRVEevm>*Vkh=$#(9@~X-=>;G#<`}2w`FL|i{j_HD37b;2YL=w z_xh_Q7d@T6(2+VvBTL`9H{RtaZPdb^#;^;A52Ko|D-P^kSBW-Zd-~ZNt^BPTcI~-w zf6$XvZOjvOri$2+0j?{t-|lAp@D`;-$oNJV!xX7Z4V)4Pw65@Qz#!sczhzg~(TRA6 z*0{naK0b&qL!W>Vkq2OMAsSKt&Q_`E=*XIz@90Ls%%E;}SejWH04MejySm-6n9c3> ze;aqwXj(4yKM>0rH!}3)-Ga_AaW3{aMB7(7MK4?*>SYu2mK2E5;*H<9<_>#H&<5j- zXV|iIqC0O7#?=vb0WcZy=kE%hW~0X;316q-v#H! z|NjExml812e+@()G-THN8JvQm!0vg9()N0S9rMSFs+Zy=f_&4B#lbct^A1I)PGO(C zgKF4fOv@|js@pP8msO!wS*fby?UPaQWj!4_$ulN|R{t16ZK6xZtx^#28&Z?K$&uE( z3?oN+GI5xmQwm7sS}h|iwJ~)aHc)>Fxv*gexVoqX3wdM6mqC!IAG2$c(w1p zfrLE6rNGiS#XHsL75w*e4I$nI?d8d_cySp+6?@bZ`r6-B`KYB)g04x}~Or9j321TZx>>KdmV8KO_*V0lVZp-# zqJ8#t98AbDw&{icTldbi`aV*oPwrW{{4-;)EWhxm*N9fd)Xo1QKh1uw4}j1P{TGO@ zR8~()bojHVytF_N`l5gDP}$`yBx7CT_&3xlUsPv$#R|FYl0v9|56l4j{${RwY&GP~ z8v+7_E2HgE^0xGdw$WQu9OR^rteHYV4AYSxSl-_;q#P)7`F4w6Rj}0B9p|-+vNur2 y0rk&2#)7vi-{~4ib7HoWWAOZ6S@H$(9LuMZnP>UY0QhMklB|@HWW^`rp#K9Y25?XS literal 0 HcmV?d00001 diff --git a/bsp/renesas/ra8d1-vision-board/docs/picture/download.png b/bsp/renesas/ra8d1-vision-board/docs/picture/download.png new file mode 100644 index 0000000000000000000000000000000000000000..5ce9dc03ffa6092b41dce62212036f61addae4a2 GIT binary patch literal 18100 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 Z{txjTECRTgI;{Wz002ovPDHLkV1iBjwD$l2 literal 0 HcmV?d00001 diff --git a/bsp/renesas/ra8d1-vision-board/docs/picture/fsp_configure.png b/bsp/renesas/ra8d1-vision-board/docs/picture/fsp_configure.png new file mode 100644 index 0000000000000000000000000000000000000000..45d2b7a8960aec6303c745cd1098729a1a7ba4de GIT binary patch literal 46405 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 literal 0 HcmV?d00001 diff --git a/bsp/renesas/ra8d1-vision-board/docs/picture/hw.png b/bsp/renesas/ra8d1-vision-board/docs/picture/hw.png new file mode 100644 index 0000000000000000000000000000000000000000..9f847c08d2cfb05f90837401f2e29bb865f97eee GIT binary patch literal 75328 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 b9mz*h`#|53tJ>N7;7?UqODXS)x!?Z)j>RKe literal 0 HcmV?d00001 diff --git a/bsp/renesas/ra8d1-vision-board/docs/picture/logo.png b/bsp/renesas/ra8d1-vision-board/docs/picture/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..68280d2cca24ee71c0459e503cdf6783f65267d5 GIT binary patch literal 246090 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

v}`-XJ9Bf#tEH<|z|)!SB#0x4`3!F>&gV0k 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

4SlPf*{J)tTYu{49NsvY*Wh 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

  • m^9=1C=7}2 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⁡lb0=N5Uc{FIO|G^=6$_5nNGalPv}KYgjk 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

    nTRL@e6h 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

    ### 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 + 14 + + + + + + + + + + + BIN\CMSIS_AGDI_V8M.DLL + + + + 0 + CMSIS_AGDI_V8M + -X"Any" -UAny -O206 -S9 -C0 -P00000000 -N00("ARM CoreSight SW-DP") -D00(6BA02477) -L00(0) -TO65554 -TC10000000 -TT10000000 -TP20 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO11 -FD22000000 -FC2000 -FN3 -FF0RA8D1_2M.FLM -FS02000000 -FL01F8000 -FP0($$Device:R7FA8D1BH$Flash\RA8D1_2M.FLM) -FF1RA8D1_DATA_C2M.FLM -FS127000000 -FL13000 -FP1($$Device:R7FA8D1BH$Flash\RA8D1_DATA_C2M.FLM) -FF2RA8D1_CCONF.FLM -FS2300A100 -FL2200 -FP2($$Device:R7FA8D1BH$Flash\RA8D1_CCONF.FLM) + + + 0 + JL2CM3 + -U -O14 -S2 -ZTIFSpeedSel5000 -A0 -C0 -JU1 -JI127.0.0.1 -JP0 -RST0 -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -TB1 -TFE0 -FO15 -FD22000000 -FC2000 -FN3 -FF0RA8D1_2M.FLM -FS02000000 -FL01F8000 -FP0($$Device:R7FA8D1BH$Flash\RA8D1_2M.FLM) -FF1RA8D1_DATA_C2M.FLM -FS127000000 -FL13000 -FP1($$Device:R7FA8D1BH$Flash\RA8D1_DATA_C2M.FLM) -FF2RA8D1_CCONF.FLM -FS2300A100 -FL2200 -FP2($$Device:R7FA8D1BH$Flash\RA8D1_CCONF.FLM) + + + 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 + + + + + DeviceDrivers + 0 + 0 + 0 + 0 + + 2 + 9 + 1 + 0 + 0 + 0 + ..\..\..\components\drivers\core\device.c + device.c + 0 + 0 + + + 2 + 10 + 1 + 0 + 0 + 0 + ..\..\..\components\drivers\ipc\completion.c + completion.c + 0 + 0 + + + 2 + 11 + 1 + 0 + 0 + 0 + ..\..\..\components\drivers\ipc\dataqueue.c + dataqueue.c + 0 + 0 + + + 2 + 12 + 1 + 0 + 0 + 0 + ..\..\..\components\drivers\ipc\pipe.c + pipe.c + 0 + 0 + + + 2 + 13 + 1 + 0 + 0 + 0 + ..\..\..\components\drivers\ipc\ringblk_buf.c + ringblk_buf.c + 0 + 0 + + + 2 + 14 + 1 + 0 + 0 + 0 + ..\..\..\components\drivers\ipc\ringbuffer.c + ringbuffer.c + 0 + 0 + + + 2 + 15 + 1 + 0 + 0 + 0 + ..\..\..\components\drivers\ipc\waitqueue.c + waitqueue.c + 0 + 0 + + + 2 + 16 + 1 + 0 + 0 + 0 + ..\..\..\components\drivers\ipc\workqueue.c + workqueue.c + 0 + 0 + + + 2 + 17 + 1 + 0 + 0 + 0 + ..\..\..\components\drivers\pin\pin.c + pin.c + 0 + 0 + + + 2 + 18 + 1 + 0 + 0 + 0 + ..\..\..\components\drivers\serial\serial_v2.c + serial_v2.c + 0 + 0 + + + + + Drivers + 0 + 0 + 0 + 0 + + 3 + 19 + 1 + 0 + 0 + 0 + board\ports\drv_sdram.c + drv_sdram.c + 0 + 0 + + + 3 + 20 + 1 + 0 + 0 + 0 + board\ports\mnt.c + mnt.c + 0 + 0 + + + 3 + 21 + 1 + 0 + 0 + 0 + board\ra8_it.c + ra8_it.c + 0 + 0 + + + 3 + 22 + 1 + 0 + 0 + 0 + ..\libraries\HAL_Drivers\drv_common.c + drv_common.c + 0 + 0 + + + 3 + 23 + 1 + 0 + 0 + 0 + ..\libraries\HAL_Drivers\drv_gpio.c + drv_gpio.c + 0 + 0 + + + 3 + 24 + 1 + 0 + 0 + 0 + ..\libraries\HAL_Drivers\drv_usart_v2.c + drv_usart_v2.c + 0 + 0 + + + + + Finsh + 0 + 0 + 0 + 0 + + 4 + 25 + 1 + 0 + 0 + 0 + ..\..\..\components\finsh\shell.c + shell.c + 0 + 0 + + + 4 + 26 + 1 + 0 + 0 + 0 + ..\..\..\components\finsh\msh.c + msh.c + 0 + 0 + + + 4 + 27 + 1 + 0 + 0 + 0 + ..\..\..\components\finsh\msh_parse.c + msh_parse.c + 0 + 0 + + + 4 + 28 + 1 + 0 + 0 + 0 + ..\..\..\components\finsh\cmd.c + cmd.c + 0 + 0 + + + + + Kernel + 0 + 0 + 0 + 0 + + 5 + 29 + 1 + 0 + 0 + 0 + ..\..\..\src\clock.c + clock.c + 0 + 0 + + + 5 + 30 + 1 + 0 + 0 + 0 + ..\..\..\src\components.c + components.c + 0 + 0 + + + 5 + 31 + 1 + 0 + 0 + 0 + ..\..\..\src\idle.c + idle.c + 0 + 0 + + + 5 + 32 + 1 + 0 + 0 + 0 + ..\..\..\src\ipc.c + ipc.c + 0 + 0 + + + 5 + 33 + 1 + 0 + 0 + 0 + ..\..\..\src\irq.c + irq.c + 0 + 0 + + + 5 + 34 + 1 + 0 + 0 + 0 + ..\..\..\src\kservice.c + kservice.c + 0 + 0 + + + 5 + 35 + 1 + 0 + 0 + 0 + ..\..\..\src\memheap.c + memheap.c + 0 + 0 + + + 5 + 36 + 1 + 0 + 0 + 0 + ..\..\..\src\mempool.c + mempool.c + 0 + 0 + + + 5 + 37 + 1 + 0 + 0 + 0 + ..\..\..\src\object.c + object.c + 0 + 0 + + + 5 + 38 + 1 + 0 + 0 + 0 + ..\..\..\src\scheduler_comm.c + scheduler_comm.c + 0 + 0 + + + 5 + 39 + 1 + 0 + 0 + 0 + ..\..\..\src\scheduler_up.c + scheduler_up.c + 0 + 0 + + + 5 + 40 + 1 + 0 + 0 + 0 + ..\..\..\src\thread.c + thread.c + 0 + 0 + + + 5 + 41 + 1 + 0 + 0 + 0 + ..\..\..\src\timer.c + timer.c + 0 + 0 + + + + + libcpu + 0 + 0 + 0 + 0 + + 6 + 42 + 1 + 0 + 0 + 0 + ..\..\..\libcpu\arm\common\atomic_arm.c + atomic_arm.c + 0 + 0 + + + 6 + 43 + 1 + 0 + 0 + 0 + ..\..\..\libcpu\arm\common\div0.c + div0.c + 0 + 0 + + + 6 + 44 + 1 + 0 + 0 + 0 + ..\..\..\libcpu\arm\common\showmem.c + showmem.c + 0 + 0 + + + 6 + 45 + 2 + 0 + 0 + 0 + ..\..\..\libcpu\arm\cortex-m85\context_gcc.S + context_gcc.S + 0 + 0 + + + 6 + 46 + 1 + 0 + 0 + 0 + ..\..\..\libcpu\arm\cortex-m85\cpuport.c + cpuport.c + 0 + 0 + + + + + :Renesas RA Smart Configurator:Common Sources + 0 + 0 + 0 + 0 + + 7 + 47 + 1 + 0 + 0 + 0 + .\src\hal_entry.c + hal_entry.c + 0 + 0 + + + + + ::Flex Software + 0 + 0 + 0 + 1 + + + diff --git a/bsp/renesas/ra8d1-vision-board/project.uvprojx b/bsp/renesas/ra8d1-vision-board/project.uvprojx new file mode 100644 index 0000000000..b3f418a2bf --- /dev/null +++ b/bsp/renesas/ra8d1-vision-board/project.uvprojx @@ -0,0 +1,2058 @@ + + + + 2.1 + +
    ### uVision Project, (C) Keil Software
    + + + + Target 1 + 0x4 + ARM-ADS + 6190000::V6.19::ARMCLANG + 1 + + + R7FA8D1BH + Renesas + Renesas.RA8_DFP.0.0.2 + https://www2.renesas.eu/Keil_MDK_Packs/ + IRAM(0x22000000,0xE0000) IRAM2(0x0,0x10000) IROM(0x02000000,0x001F8000) XRAM(0x20000000,0x10000) CPUTYPE("Cortex-M85") FPU3(DFPU) DSP TZ MVE(FP) PACBTI CLOCK(12000000) ELITTLE + + + UL2V8M(-S0 -C0 -P0 -FD22000000 -FC2000 -FN3 -FF0RA8D1_2M -FS02000000 -FL01F8000 -FF1RA8D1_DATA_C2M -FS127000000 -FL13000 -FF2RA8D1_CCONF -FS2300A100 -FL2200 -FP0($$Device:R7FA8D1BH$Flash\RA8D1_2M.FLM) -FP1($$Device:R7FA8D1BH$Flash\RA8D1_DATA_C2M.FLM) -FP2($$Device:R7FA8D1BH$Flash\RA8D1_CCONF.FLM)) + 0 + + + + + + + + + + + $$Device:R7FA8D1BH$SVD\R7FA8D1BH.svd + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\Objects\ + rtthread + 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 -MVE -PACBTI + TCM.DLL + -pCM85 + + + + 1 + 0 + 0 + 0 + 16 + + + + + 1 + 0 + 0 + 0 + 1 + 4102 + + 1 + BIN\UL2V8M.DLL + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M85" + + 0 + 0 + 0 + 1 + 1 + 1 + 0 + 3 + 2 + 0 + 0 + 1 + 0 + 8 + 0 + 0 + 0 + 0 + 3 + 4 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x22000000 + 0xe0000 + + + 1 + 0x2000000 + 0x1f8000 + + + 1 + 0x20000000 + 0x10000 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x2000000 + 0x1f8000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x10000 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x22000000 + 0xe0000 + + + 0 + 0x0 + 0x10000 + + + + + + 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 + __STDC_LIMIT_MACROS, RT_USING_ARMLIBC, RT_USING_LIBC, __CLK_TCK=RT_TICK_PER_SECOND, __RTTHREAD__, BSP_CFG_RTOS = 2 + + ..\..\..\include;..\..\..\components\finsh;..\..\..\components\libc\compilers\common\extension\fcntl\octal;..\..\..\components\libc\posix\io\epoll;..\..\..\components\libc\posix\io\eventfd;.;..\libraries\HAL_Drivers\config;..\..\..\libcpu\arm\cortex-m85;..\..\..\components\drivers\include;..\..\..\components\drivers\include;..\..\..\components\drivers\include;..\..\..\libcpu\arm\common;board;..\libraries\HAL_Drivers;..\..\..\components\libc\posix\ipc;..\..\..\components\libc\compilers\common\extension;..\..\..\components\drivers\include;..\..\..\components\libc\compilers\common\include;..\..\..\components\libc\posix\io\poll;board\ports + + + + 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 + + + + + DeviceDrivers + + + device.c + 1 + ..\..\..\components\drivers\core\device.c + + + 2 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + + + __RT_IPC_SOURCE__ + + + + + + + + + completion.c + 1 + ..\..\..\components\drivers\ipc\completion.c + + + 2 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + + + __RT_IPC_SOURCE__ + + + + + + + + + dataqueue.c + 1 + ..\..\..\components\drivers\ipc\dataqueue.c + + + 2 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + + + __RT_IPC_SOURCE__ + + + + + + + + + pipe.c + 1 + ..\..\..\components\drivers\ipc\pipe.c + + + 2 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + + + __RT_IPC_SOURCE__ + + + + + + + + + ringblk_buf.c + 1 + ..\..\..\components\drivers\ipc\ringblk_buf.c + + + 2 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + + + __RT_IPC_SOURCE__ + + + + + + + + + ringbuffer.c + 1 + ..\..\..\components\drivers\ipc\ringbuffer.c + + + 2 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + + + __RT_IPC_SOURCE__ + + + + + + + + + waitqueue.c + 1 + ..\..\..\components\drivers\ipc\waitqueue.c + + + 2 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + + + __RT_IPC_SOURCE__ + + + + + + + + + workqueue.c + 1 + ..\..\..\components\drivers\ipc\workqueue.c + + + 2 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + + + __RT_IPC_SOURCE__ + + + + + + + + + pin.c + 1 + ..\..\..\components\drivers\pin\pin.c + + + 2 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + + + __RT_IPC_SOURCE__ + + + + + + + + + serial_v2.c + 1 + ..\..\..\components\drivers\serial\serial_v2.c + + + 2 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + + + __RT_IPC_SOURCE__ + + + + + + + + + + + Drivers + + + drv_sdram.c + 1 + board\ports\drv_sdram.c + + + mnt.c + 1 + board\ports\mnt.c + + + 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 + + + 2 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + + -Wstack-usage=4096 + + + + + + + + + + msh.c + 1 + ..\..\..\components\finsh\msh.c + + + 2 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + + -Wstack-usage=4096 + + + + + + + + + + msh_parse.c + 1 + ..\..\..\components\finsh\msh_parse.c + + + 2 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + + -Wstack-usage=4096 + + + + + + + + + + cmd.c + 1 + ..\..\..\components\finsh\cmd.c + + + 2 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + + -Wstack-usage=4096 + + + + + + + + + + + + Kernel + + + clock.c + 1 + ..\..\..\src\clock.c + + + 2 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + + + __RT_KERNEL_SOURCE__ + + + + + + + + + components.c + 1 + ..\..\..\src\components.c + + + 2 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + + + __RT_KERNEL_SOURCE__ + + + + + + + + + idle.c + 1 + ..\..\..\src\idle.c + + + 2 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + + + __RT_KERNEL_SOURCE__ + + + + + + + + + ipc.c + 1 + ..\..\..\src\ipc.c + + + 2 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + + + __RT_KERNEL_SOURCE__ + + + + + + + + + irq.c + 1 + ..\..\..\src\irq.c + + + 2 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + + + __RT_KERNEL_SOURCE__ + + + + + + + + + kservice.c + 1 + ..\..\..\src\kservice.c + + + 2 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + + + __RT_KERNEL_SOURCE__ + + + + + + + + + memheap.c + 1 + ..\..\..\src\memheap.c + + + 2 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + + + __RT_KERNEL_SOURCE__ + + + + + + + + + mempool.c + 1 + ..\..\..\src\mempool.c + + + 2 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + + + __RT_KERNEL_SOURCE__ + + + + + + + + + object.c + 1 + ..\..\..\src\object.c + + + 2 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + + + __RT_KERNEL_SOURCE__ + + + + + + + + + scheduler_comm.c + 1 + ..\..\..\src\scheduler_comm.c + + + 2 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + + + __RT_KERNEL_SOURCE__ + + + + + + + + + scheduler_up.c + 1 + ..\..\..\src\scheduler_up.c + + + 2 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + + + __RT_KERNEL_SOURCE__ + + + + + + + + + thread.c + 1 + ..\..\..\src\thread.c + + + 2 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + + + __RT_KERNEL_SOURCE__ + + + + + + + + + timer.c + 1 + ..\..\..\src\timer.c + + + 2 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + + + __RT_KERNEL_SOURCE__ + + + + + + + + + + + libcpu + + + 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_gcc.S + 2 + ..\..\..\libcpu\arm\cortex-m85\context_gcc.S + + + cpuport.c + 1 + ..\..\..\libcpu\arm\cortex-m85\cpuport.c + + + + + :Renesas RA Smart Configurator:Common Sources + + + hal_entry.c + 1 + .\src\hal_entry.c + + + + + ::Flex Software + + + + + + + + + + + + + + + + + + + + + + + + + +
    diff --git a/bsp/renesas/ra8d1-vision-board/ra/SConscript b/bsp/renesas/ra8d1-vision-board/ra/SConscript new file mode 100644 index 0000000000..52e96ac900 --- /dev/null +++ b/bsp/renesas/ra8d1-vision-board/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/ra8d1-vision-board/ra/arm/CMSIS_5/CMSIS/Core/Include/cachel1_armv7.h b/bsp/renesas/ra8d1-vision-board/ra/arm/CMSIS_5/CMSIS/Core/Include/cachel1_armv7.h new file mode 100644 index 0000000000..abebc95f94 --- /dev/null +++ b/bsp/renesas/ra8d1-vision-board/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/ra8d1-vision-board/ra/arm/CMSIS_5/CMSIS/Core/Include/cmsis_armcc.h b/bsp/renesas/ra8d1-vision-board/ra/arm/CMSIS_5/CMSIS/Core/Include/cmsis_armcc.h new file mode 100644 index 0000000000..a955d47139 --- /dev/null +++ b/bsp/renesas/ra8d1-vision-board/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/ra8d1-vision-board/ra/arm/CMSIS_5/CMSIS/Core/Include/cmsis_armclang.h b/bsp/renesas/ra8d1-vision-board/ra/arm/CMSIS_5/CMSIS/Core/Include/cmsis_armclang.h new file mode 100644 index 0000000000..6911417747 --- /dev/null +++ b/bsp/renesas/ra8d1-vision-board/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/ra8d1-vision-board/ra/arm/CMSIS_5/CMSIS/Core/Include/cmsis_armclang_ltm.h b/bsp/renesas/ra8d1-vision-board/ra/arm/CMSIS_5/CMSIS/Core/Include/cmsis_armclang_ltm.h new file mode 100644 index 0000000000..1e255d5907 --- /dev/null +++ b/bsp/renesas/ra8d1-vision-board/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/ra8d1-vision-board/ra/arm/CMSIS_5/CMSIS/Core/Include/cmsis_compiler.h b/bsp/renesas/ra8d1-vision-board/ra/arm/CMSIS_5/CMSIS/Core/Include/cmsis_compiler.h new file mode 100644 index 0000000000..adbf296f15 --- /dev/null +++ b/bsp/renesas/ra8d1-vision-board/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/ra8d1-vision-board/ra/arm/CMSIS_5/CMSIS/Core/Include/cmsis_gcc.h b/bsp/renesas/ra8d1-vision-board/ra/arm/CMSIS_5/CMSIS/Core/Include/cmsis_gcc.h new file mode 100644 index 0000000000..67bda4ef3c --- /dev/null +++ b/bsp/renesas/ra8d1-vision-board/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/ra8d1-vision-board/ra/arm/CMSIS_5/CMSIS/Core/Include/cmsis_iccarm.h b/bsp/renesas/ra8d1-vision-board/ra/arm/CMSIS_5/CMSIS/Core/Include/cmsis_iccarm.h new file mode 100644 index 0000000000..65b824b009 --- /dev/null +++ b/bsp/renesas/ra8d1-vision-board/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/ra8d1-vision-board/ra/arm/CMSIS_5/CMSIS/Core/Include/cmsis_version.h b/bsp/renesas/ra8d1-vision-board/ra/arm/CMSIS_5/CMSIS/Core/Include/cmsis_version.h new file mode 100644 index 0000000000..8b4765f186 --- /dev/null +++ b/bsp/renesas/ra8d1-vision-board/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/ra8d1-vision-board/ra/arm/CMSIS_5/CMSIS/Core/Include/core_armv81mml.h b/bsp/renesas/ra8d1-vision-board/ra/arm/CMSIS_5/CMSIS/Core/Include/core_armv81mml.h new file mode 100644 index 0000000000..94128a1a70 --- /dev/null +++ b/bsp/renesas/ra8d1-vision-board/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/ra8d1-vision-board/ra/arm/CMSIS_5/CMSIS/Core/Include/core_armv8mbl.h b/bsp/renesas/ra8d1-vision-board/ra/arm/CMSIS_5/CMSIS/Core/Include/core_armv8mbl.h new file mode 100644 index 0000000000..e9c9b5bf59 --- /dev/null +++ b/bsp/renesas/ra8d1-vision-board/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/ra8d1-vision-board/ra/arm/CMSIS_5/CMSIS/Core/Include/core_armv8mml.h b/bsp/renesas/ra8d1-vision-board/ra/arm/CMSIS_5/CMSIS/Core/Include/core_armv8mml.h new file mode 100644 index 0000000000..c119fbf242 --- /dev/null +++ b/bsp/renesas/ra8d1-vision-board/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/ra8d1-vision-board/ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm0.h b/bsp/renesas/ra8d1-vision-board/ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm0.h new file mode 100644 index 0000000000..0a0ba223e1 --- /dev/null +++ b/bsp/renesas/ra8d1-vision-board/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/ra8d1-vision-board/ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm0plus.h b/bsp/renesas/ra8d1-vision-board/ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm0plus.h new file mode 100644 index 0000000000..879a384124 --- /dev/null +++ b/bsp/renesas/ra8d1-vision-board/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/ra8d1-vision-board/ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm1.h b/bsp/renesas/ra8d1-vision-board/ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm1.h new file mode 100644 index 0000000000..83b8fc6a0d --- /dev/null +++ b/bsp/renesas/ra8d1-vision-board/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/ra8d1-vision-board/ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm23.h b/bsp/renesas/ra8d1-vision-board/ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm23.h new file mode 100644 index 0000000000..f2cf49fb16 --- /dev/null +++ b/bsp/renesas/ra8d1-vision-board/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/ra8d1-vision-board/ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm3.h b/bsp/renesas/ra8d1-vision-board/ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm3.h new file mode 100644 index 0000000000..74fb87e5c5 --- /dev/null +++ b/bsp/renesas/ra8d1-vision-board/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/ra8d1-vision-board/ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm33.h b/bsp/renesas/ra8d1-vision-board/ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm33.h new file mode 100644 index 0000000000..18a2e6fb03 --- /dev/null +++ b/bsp/renesas/ra8d1-vision-board/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/ra8d1-vision-board/ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm35p.h b/bsp/renesas/ra8d1-vision-board/ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm35p.h new file mode 100644 index 0000000000..3843d9542c --- /dev/null +++ b/bsp/renesas/ra8d1-vision-board/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/ra8d1-vision-board/ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm4.h b/bsp/renesas/ra8d1-vision-board/ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm4.h new file mode 100644 index 0000000000..e21cd14925 --- /dev/null +++ b/bsp/renesas/ra8d1-vision-board/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/ra8d1-vision-board/ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm55.h b/bsp/renesas/ra8d1-vision-board/ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm55.h new file mode 100644 index 0000000000..faa30ce36a --- /dev/null +++ b/bsp/renesas/ra8d1-vision-board/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/ra8d1-vision-board/ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm7.h b/bsp/renesas/ra8d1-vision-board/ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm7.h new file mode 100644 index 0000000000..010506e9fa --- /dev/null +++ b/bsp/renesas/ra8d1-vision-board/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/ra8d1-vision-board/ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm85.h b/bsp/renesas/ra8d1-vision-board/ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm85.h new file mode 100644 index 0000000000..6046311189 --- /dev/null +++ b/bsp/renesas/ra8d1-vision-board/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/ra8d1-vision-board/ra/arm/CMSIS_5/CMSIS/Core/Include/core_sc000.h b/bsp/renesas/ra8d1-vision-board/ra/arm/CMSIS_5/CMSIS/Core/Include/core_sc000.h new file mode 100644 index 0000000000..e252068ce6 --- /dev/null +++ b/bsp/renesas/ra8d1-vision-board/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/ra8d1-vision-board/ra/arm/CMSIS_5/CMSIS/Core/Include/core_sc300.h b/bsp/renesas/ra8d1-vision-board/ra/arm/CMSIS_5/CMSIS/Core/Include/core_sc300.h new file mode 100644 index 0000000000..d66621031e --- /dev/null +++ b/bsp/renesas/ra8d1-vision-board/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/ra8d1-vision-board/ra/arm/CMSIS_5/CMSIS/Core/Include/core_starmc1.h b/bsp/renesas/ra8d1-vision-board/ra/arm/CMSIS_5/CMSIS/Core/Include/core_starmc1.h new file mode 100644 index 0000000000..ebc0f77eb7 --- /dev/null +++ b/bsp/renesas/ra8d1-vision-board/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/ra8d1-vision-board/ra/arm/CMSIS_5/CMSIS/Core/Include/mpu_armv7.h b/bsp/renesas/ra8d1-vision-board/ra/arm/CMSIS_5/CMSIS/Core/Include/mpu_armv7.h new file mode 100644 index 0000000000..9909f83990 --- /dev/null +++ b/bsp/renesas/ra8d1-vision-board/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/ra8d1-vision-board/ra/arm/CMSIS_5/CMSIS/Core/Include/mpu_armv8.h b/bsp/renesas/ra8d1-vision-board/ra/arm/CMSIS_5/CMSIS/Core/Include/mpu_armv8.h new file mode 100644 index 0000000000..19855b9667 --- /dev/null +++ b/bsp/renesas/ra8d1-vision-board/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/ra8d1-vision-board/ra/arm/CMSIS_5/CMSIS/Core/Include/pac_armv81.h b/bsp/renesas/ra8d1-vision-board/ra/arm/CMSIS_5/CMSIS/Core/Include/pac_armv81.h new file mode 100644 index 0000000000..854b60a204 --- /dev/null +++ b/bsp/renesas/ra8d1-vision-board/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/ra8d1-vision-board/ra/arm/CMSIS_5/CMSIS/Core/Include/pmu_armv8.h b/bsp/renesas/ra8d1-vision-board/ra/arm/CMSIS_5/CMSIS/Core/Include/pmu_armv8.h new file mode 100644 index 0000000000..aa53bb47c1 --- /dev/null +++ b/bsp/renesas/ra8d1-vision-board/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/ra8d1-vision-board/ra/arm/CMSIS_5/CMSIS/Core/Include/tz_context.h b/bsp/renesas/ra8d1-vision-board/ra/arm/CMSIS_5/CMSIS/Core/Include/tz_context.h new file mode 100644 index 0000000000..facc2c9a47 --- /dev/null +++ b/bsp/renesas/ra8d1-vision-board/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/ra8d1-vision-board/ra/arm/CMSIS_5/LICENSE.txt b/bsp/renesas/ra8d1-vision-board/ra/arm/CMSIS_5/LICENSE.txt new file mode 100644 index 0000000000..8dada3edaf --- /dev/null +++ b/bsp/renesas/ra8d1-vision-board/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/ra8d1-vision-board/ra/board/ra8d1_ek/board.h b/bsp/renesas/ra8d1-vision-board/ra/board/ra8d1_ek/board.h new file mode 100644 index 0000000000..0cb9c5299b --- /dev/null +++ b/bsp/renesas/ra8d1-vision-board/ra/board/ra8d1_ek/board.h @@ -0,0 +1,63 @@ +/*********************************************************************************************************************** + * 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_RA8D1_EK for the RA8D1-EK board + * @brief BSP for the RA8D1-EK Board + * + * The RA8D1_EK is a development kit for the Renesas R7FA8D1BHECBD microcontroller in a BGA224 package. + * + * @{ + **********************************************************************************************************************/ + +#ifndef BOARD_H +#define BOARD_H + +/*********************************************************************************************************************** + * Includes , "Project Includes" + **********************************************************************************************************************/ + +/* BSP Board Specific Includes. */ +#include "board_init.h" +#include "board_sdram.h" +#include "board_leds.h" +#include "board_ethernet_phy.h" + +/*********************************************************************************************************************** + * Macro definitions + **********************************************************************************************************************/ +#define BOARD_RA8D1_EK + +/*********************************************************************************************************************** + * Typedef definitions + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Exported global variables + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Exported global functions (to be accessed by other files) + **********************************************************************************************************************/ + +/** @} (end defgroup BOARD_RA8D1_EK) */ + +#endif diff --git a/bsp/renesas/ra8d1-vision-board/ra/board/ra8d1_ek/board_ethernet_phy.h b/bsp/renesas/ra8d1-vision-board/ra/board/ra8d1_ek/board_ethernet_phy.h new file mode 100644 index 0000000000..878191bce8 --- /dev/null +++ b/bsp/renesas/ra8d1-vision-board/ra/board/ra8d1_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_RA8D1_EK + * @defgroup BOARD_RA8D1_EK_ETHERNET_PHY Board Ethernet Phy + * @brief Ethernet Phy information for this board. + * + * This is code specific to the RA8D1_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_RA8D1_EK_ETHERNET_PHY) */ diff --git a/bsp/renesas/ra8d1-vision-board/ra/board/ra8d1_ek/board_init.c b/bsp/renesas/ra8d1-vision-board/ra/board/ra8d1_ek/board_init.c new file mode 100644 index 0000000000..0db3823208 --- /dev/null +++ b/bsp/renesas/ra8d1-vision-board/ra/board/ra8d1_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_RA8D1_EK + * + * @{ + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Includes , "Project Includes" + **********************************************************************************************************************/ +#include "bsp_api.h" + +#if defined(BOARD_RA8D1_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_RA8D1_EK) */ diff --git a/bsp/renesas/ra8d1-vision-board/ra/board/ra8d1_ek/board_init.h b/bsp/renesas/ra8d1-vision-board/ra/board/ra8d1_ek/board_init.h new file mode 100644 index 0000000000..0c452a9a01 --- /dev/null +++ b/bsp/renesas/ra8d1-vision-board/ra/board/ra8d1_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_RA8D1_EK + * @brief Board specific code for the RA8D1-EK Board + * + * This include file is specific to the RA8D1-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_RA8D1_EK) */ diff --git a/bsp/renesas/ra8d1-vision-board/ra/board/ra8d1_ek/board_leds.c b/bsp/renesas/ra8d1-vision-board/ra/board/ra8d1_ek/board_leds.c new file mode 100644 index 0000000000..747ac3c7a0 --- /dev/null +++ b/bsp/renesas/ra8d1-vision-board/ra/board/ra8d1_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_RA8D1_EK_LEDS + * + * @{ + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Includes + **********************************************************************************************************************/ +#include "bsp_api.h" +#if defined(BOARD_RA8D1_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_RA8D1_EK_LEDS) */ diff --git a/bsp/renesas/ra8d1-vision-board/ra/board/ra8d1_ek/board_leds.h b/bsp/renesas/ra8d1-vision-board/ra/board/ra8d1_ek/board_leds.h new file mode 100644 index 0000000000..603e6fec46 --- /dev/null +++ b/bsp/renesas/ra8d1-vision-board/ra/board/ra8d1_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_RA8D1_EK + * @defgroup BOARD_RA8D1_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_RA8D1_EK_LEDS) */ diff --git a/bsp/renesas/ra8d1-vision-board/ra/board/ra8d1_ek/board_sdram.c b/bsp/renesas/ra8d1-vision-board/ra/board/ra8d1_ek/board_sdram.c new file mode 100644 index 0000000000..25418c6c89 --- /dev/null +++ b/bsp/renesas/ra8d1-vision-board/ra/board/ra8d1_ek/board_sdram.c @@ -0,0 +1,246 @@ +/*********************************************************************************************************************** + * 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 "r_ioport.h" +#include "bsp_cfg.h" +#include "bsp_pin_cfg.h" + +#include "board_sdram.h" + +/*********************************************************************************************************************** + * Macro definitions + **********************************************************************************************************************/ + +/* SDRAM size, in bytes */ +#define SDRAM_SIZE (64 * 1024 * 1024) + +/* + * Set ACTIVE-to-PRECHARGE command (tRAS) timing + * e.g. tRAS = 42ns -> 6cycles are needed at SDCLK 120MHz + * tRAS = 37ns -> 5cycles are needed at SDCLK 120MHz + */ +#define BSP_PRV_SDRAM_TRAS (6U) + +/* + * Set ACTIVE-to-READ or WRITE delay tRCD (tRCD) timing + * e.g. tRCD = 18ns -> 3cycles are needed at SDCLK 120MHz + * tRCD = 15ns -> 2cycles are needed at SDCLK 120MHz + */ +#define BSP_PRV_SDRAM_TRCD (3U) + +/* + * Set PRECHARGE command period (tRP) timing + * e.g. tRP = 18ns -> 3cycles are needed at SDCLK 120MHz + * tRP = 15ns -> 2cycles are needed at SDCLK 120MHz + */ +#define BSP_PRV_SDRAM_TRP (3U) + +/* + * Set WRITE recovery time (tWR) timing + * e.g. tWR = 1CLK + 6ns -> 2cycles are needed at SDCLK 120MHz + * tWR = 1CLK + 7ns -> 2cycles are needed at SDCLK 120MHz + */ +#define BSP_PRV_SDRAM_TWR (2U) + +/* + * Set CAS (READ) latency (CL) timing + * e.g. CL = 18ns -> 3cycles are needed at SDCLK 120MHz + * e.g. CL = 15ns -> 2cycles are needed at SDCLK 120MHz + */ +#define BSP_PRV_SDRAM_CL (3U) + +/* + * Set AUTO REFRESH period (tRFC) timing + * e.g. tRFC = 60nS -> 8cycles are needed at SDCLK 120MHz + * tRFC = 66nS -> 8cycles are needed at SDCLK 120MHz + */ +#define BSP_PRV_SDRAM_TRFC (8U) + +/* + * Set Average Refresh period + * e.g. tREF = 64ms/8192rows -> 7.8125us/each row. 937cycles are needed at SDCLK 120MHz + */ +#define BSP_PRV_SDRAM_REF_CMD_INTERVAL (937U) + +/* + * Set Auto-Refresh issue times in initialization sequence needed for SDRAM device + * Typical SDR SDRAM device needs twice of Auto-Refresh command issue + */ +#define BSP_PRV_SDRAM_SDIR_REF_TIMES (2U) + +/* + * Set RAW address offset + * Available settings are + * 8 : 8-bit + * 9 : 9-bit + * 10 : 10-bit + * 11 : 11-bit + */ +#define BSP_PRV_SDRAM_SDADR_ROW_ADDR_OFFSET (9U) + +/* + * Select endian mode for SDRAM address space + * 0 : Endian of SDRAM address space is the same as the endian of operating mode + * 1 : Endian of SDRAM address space is not the endian of operating mode + */ +#define BSP_PRV_SDRAM_ENDIAN_MODE (0U) + +/* + * Select access mode + * Typically Continuous access should be enabled to get better SDRAM bandwidth + * 0: Continuous access is disabled + * 1: Continuous access is enabled + */ +#define BSP_PRV_SDRAM_CONTINUOUS_ACCESSMODE (1U) + +/* + * Select bus width + * 0: 16-bit + * 1: 32-bit + * 2: 8-bit + */ +#define BSP_PRV_SDRAM_BUS_WIDTH (0U) + +#if ((BSP_PRV_SDRAM_SDADR_ROW_ADDR_OFFSET != 8U) && (BSP_PRV_SDRAM_SDADR_ROW_ADDR_OFFSET != 9U) \ + && (BSP_PRV_SDRAM_SDADR_ROW_ADDR_OFFSET != 10U) && (BSP_PRV_SDRAM_SDADR_ROW_ADDR_OFFSET > 11U)) + #error "BSP_PRV_SDRAM_SDADR_ROW_ADDR_OFFSET must be either of 8,9,10 or 11" +#endif + +#if ((BSP_PRV_SDRAM_BUS_WIDTH != 0) && (BSP_PRV_SDRAM_BUS_WIDTH != 1U) && (BSP_PRV_SDRAM_BUS_WIDTH != 2U)) + #error "BSP_PRV_SDRAM_BUS_WIDTH must be either of 0(16-bit) or 1(32-bit) or 2(8-bit)" +#endif + +#if ((BSP_PRV_SDRAM_ENDIAN_MODE != 0) && (BSP_PRV_SDRAM_ENDIAN_MODE != 1)) + #error \ + "BSP_PRV_SDRAM_ENDIAN_MODE must be either of 0(same endian as operating mode) or 2(another endian against operating mode)" +#endif + +#if ((BSP_PRV_SDRAM_CONTINUOUS_ACCESSMODE != 0) && (BSP_PRV_SDRAM_CONTINUOUS_ACCESSMODE != 1)) + #error \ + "BSP_PRV_SDRAM_CONTINUOUS_ACCESSMODE must be either of 0(continuous access is disabled) or 1(continuous access is enabled)" +#endif + +#define BSP_PRV_SDRAM_MR_WB_SINGLE_LOC_ACC (1U) /* MR.M9 : Single Location Access */ +#define BSP_PRV_SDRAM_MR_OP_MODE (0U) /* MR.M8:M7 : Standard Operation */ +#define BSP_PRV_SDRAM_MR_BT_SEQUENCTIAL (0U) /* MR.M3 Burst Type : Sequential */ +#define BSP_PRV_SDRAM_MR_BURST_LENGTH (0U) /* MR.M2:M0 Burst Length: 0(1 burst) */ + +/*********************************************************************************************************************** + * Typedef definitions + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Exported global variables (to be accessed by other files) + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Private global variables and functions + **********************************************************************************************************************/ + +void bsp_sdram_init (void) +{ + /** Setting for SDRAM initialization sequence */ +#if (BSP_PRV_SDRAM_TRP < 3) + R_BUS->SDRAM.SDIR_b.PRC = 3U; +#else + R_BUS->SDRAM.SDIR_b.PRC = BSP_PRV_SDRAM_TRP - 3U; +#endif + + while (R_BUS->SDRAM.SDSR) + { + /* According to h/w maual, need to confirm that all the status bits in SDSR are 0 before SDIR modification. */ + } + + R_BUS->SDRAM.SDIR_b.ARFC = BSP_PRV_SDRAM_SDIR_REF_TIMES; + + while (R_BUS->SDRAM.SDSR) + { + /* According to h/w maual, need to confirm that all the status bits in SDSR are 0 before SDIR modification. */ + } + +#if (BSP_PRV_SDRAM_TRFC < 3) + R_BUS->SDRAM.SDIR_b.ARFI = 0U; +#else + R_BUS->SDRAM.SDIR_b.ARFI = BSP_PRV_SDRAM_TRFC - 3U; +#endif + + while (R_BUS->SDRAM.SDSR) + { + /* According to h/w maual, need to confirm that all the status bits in SDSR are 0 before SDICR modification. */ + } + + /** Start SDRAM initialization sequence. + * Following operation is automatically done when set SDICR.INIRQ bit. + * Perform a PRECHARGE ALL command and wait at least tRP time. + * Issue an AUTO REFRESH command and wait at least tRFC time. + * Issue an AUTO REFRESH command and wait at least tRFC time. + */ + R_BUS->SDRAM.SDICR_b.INIRQ = 1U; + while (R_BUS->SDRAM.SDSR_b.INIST) + { + /* Wait the end of initialization sequence. */ + } + + /** Setting for SDRAM controller */ + R_BUS->SDRAM.SDCCR_b.BSIZE = BSP_PRV_SDRAM_BUS_WIDTH; /* set SDRAM bus width */ + R_BUS->SDRAM.SDAMOD_b.BE = BSP_PRV_SDRAM_CONTINUOUS_ACCESSMODE; /* enable continuous access */ + R_BUS->SDRAM.SDCMOD_b.EMODE = BSP_PRV_SDRAM_ENDIAN_MODE; /* set endian mode for SDRAM address space */ + + while (R_BUS->SDRAM.SDSR) + { + /* According to h/w maual, need to confirm that all the status bits in SDSR are 0 before SDMOD modification. */ + } + + /** Using LMR command, program the mode register */ + R_BUS->SDRAM.SDMOD = ((((uint16_t) (BSP_PRV_SDRAM_MR_WB_SINGLE_LOC_ACC << 9) | + (uint16_t) (BSP_PRV_SDRAM_MR_OP_MODE << 7)) | + (uint16_t) (BSP_PRV_SDRAM_CL << 4)) | + (uint16_t) (BSP_PRV_SDRAM_MR_BT_SEQUENCTIAL << 3)) | + (uint16_t) (BSP_PRV_SDRAM_MR_BURST_LENGTH << 0); + + /** wait at least tMRD time */ + while (R_BUS->SDRAM.SDSR_b.MRSST) + { + /* Wait until Mode Register setting done. */ + } + + /** Set timing parameters for SDRAM */ + R_BUS->SDRAM.SDTR_b.RAS = BSP_PRV_SDRAM_TRAS - 1U; /* set ACTIVE-to-PRECHARGE command cycles*/ + R_BUS->SDRAM.SDTR_b.RCD = BSP_PRV_SDRAM_TRCD - 1U; /* set ACTIVE to READ/WRITE delay cycles */ + R_BUS->SDRAM.SDTR_b.RP = BSP_PRV_SDRAM_TRP - 1U; /* set PRECHARGE command period cycles */ + R_BUS->SDRAM.SDTR_b.WR = BSP_PRV_SDRAM_TWR - 1U; /* set write recovery cycles */ + R_BUS->SDRAM.SDTR_b.CL = BSP_PRV_SDRAM_CL; /* set SDRAM column latency cycles */ + + /** Set row address offset for target SDRAM */ + R_BUS->SDRAM.SDADR_b.MXC = BSP_PRV_SDRAM_SDADR_ROW_ADDR_OFFSET - 8U; + + R_BUS->SDRAM.SDRFCR_b.REFW = (uint16_t) (BSP_PRV_SDRAM_TRFC - 1U); /* set Auto-Refresh issuing cycle */ + R_BUS->SDRAM.SDRFCR_b.RFC = BSP_PRV_SDRAM_REF_CMD_INTERVAL - 1U; /* set Auto-Refresh period */ + + /** Start Auto-refresh */ + R_BUS->SDRAM.SDRFEN_b.RFEN = 1U; + + /** Enable SDRAM access */ + R_BUS->SDRAM.SDCCR_b.EXENB = 1U; +} diff --git a/bsp/renesas/ra8d1-vision-board/ra/board/ra8d1_ek/board_sdram.h b/bsp/renesas/ra8d1-vision-board/ra/board/ra8d1_ek/board_sdram.h new file mode 100644 index 0000000000..5b7ad3fc41 --- /dev/null +++ b/bsp/renesas/ra8d1-vision-board/ra/board/ra8d1_ek/board_sdram.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 BOARD_SDRAM_H +#define BOARD_SDRAM_H + +/*********************************************************************************************************************** + * Includes , "Project Includes" + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Macro definitions + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Typedef definitions + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Exported global variables (to be accessed by other files) + **********************************************************************************************************************/ + +void bsp_sdram_init(void); + +/*********************************************************************************************************************** + * Private global variables and functions + **********************************************************************************************************************/ + +#endif diff --git a/bsp/renesas/ra8d1-vision-board/ra/fsp/inc/api/bsp_api.h b/bsp/renesas/ra8d1-vision-board/ra/fsp/inc/api/bsp_api.h new file mode 100644 index 0000000000..1b3472a354 --- /dev/null +++ b/bsp/renesas/ra8d1-vision-board/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/ra8d1-vision-board/ra/fsp/inc/api/fsp_common_api.h b/bsp/renesas/ra8d1-vision-board/ra/fsp/inc/api/fsp_common_api.h new file mode 100644 index 0000000000..0ab2ece3be --- /dev/null +++ b/bsp/renesas/ra8d1-vision-board/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/ra8d1-vision-board/ra/fsp/inc/api/r_ioport_api.h b/bsp/renesas/ra8d1-vision-board/ra/fsp/inc/api/r_ioport_api.h new file mode 100644 index 0000000000..ad9106e9e2 --- /dev/null +++ b/bsp/renesas/ra8d1-vision-board/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/ra8d1-vision-board/ra/fsp/inc/api/r_transfer_api.h b/bsp/renesas/ra8d1-vision-board/ra/fsp/inc/api/r_transfer_api.h new file mode 100644 index 0000000000..020d0a3d67 --- /dev/null +++ b/bsp/renesas/ra8d1-vision-board/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/ra8d1-vision-board/ra/fsp/inc/api/r_uart_api.h b/bsp/renesas/ra8d1-vision-board/ra/fsp/inc/api/r_uart_api.h new file mode 100644 index 0000000000..818d99f7ff --- /dev/null +++ b/bsp/renesas/ra8d1-vision-board/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/ra8d1-vision-board/ra/fsp/inc/fsp_features.h b/bsp/renesas/ra8d1-vision-board/ra/fsp/inc/fsp_features.h new file mode 100644 index 0000000000..0d1a6d27da --- /dev/null +++ b/bsp/renesas/ra8d1-vision-board/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/ra8d1-vision-board/ra/fsp/inc/fsp_version.h b/bsp/renesas/ra8d1-vision-board/ra/fsp/inc/fsp_version.h new file mode 100644 index 0000000000..bc8a16a80d --- /dev/null +++ b/bsp/renesas/ra8d1-vision-board/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 (1U) + +/** 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.1.0") + +/** Unique FSP version ID. */ + #define FSP_VERSION_BUILD_STRING ("Built with Renesas Advanced Flexible Software Package version 5.1.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/ra8d1-vision-board/ra/fsp/inc/instances/r_ioport.h b/bsp/renesas/ra8d1-vision-board/ra/fsp/inc/instances/r_ioport.h new file mode 100644 index 0000000000..99fa57daab --- /dev/null +++ b/bsp/renesas/ra8d1-vision-board/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/ra8d1-vision-board/ra/fsp/inc/instances/r_sci_b_uart.h b/bsp/renesas/ra8d1-vision-board/ra/fsp/inc/instances/r_sci_b_uart.h new file mode 100644 index 0000000000..11529a4314 --- /dev/null +++ b/bsp/renesas/ra8d1-vision-board/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/ra8d1-vision-board/ra/fsp/src/bsp/cmsis/Device/RENESAS/Include/R7FA8D1BH.h b/bsp/renesas/ra8d1-vision-board/ra/fsp/src/bsp/cmsis/Device/RENESAS/Include/R7FA8D1BH.h new file mode 100644 index 0000000000..252cb6862a --- /dev/null +++ b/bsp/renesas/ra8d1-vision-board/ra/fsp/src/bsp/cmsis/Device/RENESAS/Include/R7FA8D1BH.h @@ -0,0 +1,43948 @@ +/* + * 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/R7FA8D1BH.h + * @brief CMSIS HeaderFile + * @version 1.2 + */ + +/** @addtogroup Renesas + * @{ + */ + +/** @addtogroup R7FA8D1BH + * @{ + */ + +#ifndef R7FA8D1BH_H + #define R7FA8D1BH_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" /*!< R7FA8D1BH 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_GLCDC_BG [BG] (Background Registers) + */ +typedef struct +{ + union + { + __IOM uint32_t EN; /*!< (@ 0x00000000) Background Plane Setting Operation Control Register */ + + struct + { + __IOM uint32_t EN : 1; /*!< [0..0] Background plane generation module operation enable */ + uint32_t : 7; + __IOM uint32_t VEN : 1; /*!< [8..8] Control of LCDC internal register value reflection to + * internal operations */ + uint32_t : 7; + __IOM uint32_t SWRST : 1; /*!< [16..16] Entire module SW reset control */ + uint32_t : 15; + } EN_b; + }; + + union + { + __IOM uint32_t PERI; /*!< (@ 0x00000004) Background Plane Setting Free-Running Period + * Register */ + + struct + { + __IOM uint32_t FH : 11; /*!< [10..0] Background plane horizontal synchronization signal period + * on the basis of pixel clock (PXCLK). */ + uint32_t : 5; + __IOM uint32_t FV : 11; /*!< [26..16] Background plane vertical synchronization signal period + * on the basis of line. */ + uint32_t : 5; + } PERI_b; + }; + + union + { + __IOM uint32_t SYNC; /*!< (@ 0x00000008) Background Plane Setting Synchronization Position + * Register */ + + struct + { + __IOM uint32_t HP : 4; /*!< [3..0] Background plane horizontal synchronization signal assertion + * position on the basis of pixel clock (PXCLK). */ + uint32_t : 12; + __IOM uint32_t VP : 4; /*!< [19..16] Background plane vertical synchronization signal assertion + * position on the basis of line. */ + uint32_t : 12; + } SYNC_b; + }; + + union + { + __IOM uint32_t VSIZE; /*!< (@ 0x0000000C) Background Plane Setting Full Image Vertical + * Size Register */ + + struct + { + __IOM uint32_t VW : 11; /*!< [10..0] Background plane vertical valid pixel width on the basis + * of line */ + uint32_t : 5; + __IOM uint32_t VP : 11; /*!< [26..16] Background plane vertical valid pixel start position + * on the basis of line */ + uint32_t : 5; + } VSIZE_b; + }; + + union + { + __IOM uint32_t HSIZE; /*!< (@ 0x00000010) Background Plane Setting Full Image Horizontal + * Size Register */ + + struct + { + __IOM uint32_t HW : 11; /*!< [10..0] Background plane horizontall valid pixel width on the + * basis of pixel clock (PXCLK) Note: When serial RGB is selected + * as the output format for the output control block, add + * two to the horizontal enable signal width and set the resulting + * value to this field. */ + uint32_t : 5; + __IOM uint32_t HP : 11; /*!< [26..16] Background plane horizontal valid pixel start position + * on the basis of pixel clock (PXCLK). */ + uint32_t : 5; + } HSIZE_b; + }; + + union + { + __IOM uint32_t BGC; /*!< (@ 0x00000014) Background Plane Setting Background Color Register */ + + struct + { + __IOM uint32_t B : 8; /*!< [7..0] B value for background plane valid pixel area Unsigned; + * 8-bit integer */ + __IOM uint32_t G : 8; /*!< [15..8] G value for background plane valid pixel area Unsigned; + * 8-bit integer */ + __IOM uint32_t R : 8; /*!< [23..16] R value for background plane valid pixel area. Unsigned; + * 8-bit integer. */ + uint32_t : 8; + } BGC_b; + }; + + union + { + __IM uint32_t MON; /*!< (@ 0x00000018) Background Plane Setting Status Monitor Register */ + + struct + { + __IM uint32_t EN : 1; /*!< [0..0] Background plane generation module operation state monitor. */ + uint32_t : 7; + __IM uint32_t VEN : 1; /*!< [8..8] Entire module internal operation reflection control signal + * monitor. The signal state for controlling reflection of + * the register values to the internal operations upon assertion + * of the vertical synchronization signal. */ + uint32_t : 7; + __IM uint32_t SWRST : 1; /*!< [16..16] Entire module SW reset state monitor. */ + uint32_t : 15; + } MON_b; + }; +} R_GLCDC_BG_Type; /*!< Size = 28 (0x1c) */ + +/** + * @brief R_GLCDC_GR [GR] (Layer Registers) + */ +typedef struct +{ + union + { + __IOM uint32_t VEN; /*!< (@ 0x00000000) Graphics Register Update Control Register */ + + struct + { + __IOM uint32_t PVEN : 1; /*!< [0..0] Control of graphics n module register value reflection + * to internal operations. Reflection of the register values + * to the internal operation at the assertion of the vertical + * synchronization signal (VS). */ + uint32_t : 31; + } VEN_b; + }; + + union + { + __IOM uint32_t FLMRD; /*!< (@ 0x00000004) Graphics Frame Buffer Read Control Register */ + + struct + { + __IOM uint32_t RENB : 1; /*!< [0..0] Graphics data (frame buffer data) read enable. */ + uint32_t : 31; + } FLMRD_b; + }; + + union + { + __IM uint32_t FLM1; /*!< (@ 0x00000008) Graphics Frame Buffer Control Register 1 */ + + struct + { + __IM uint32_t BSTMD : 2; /*!< [1..0] Burst transfer control for graphics data (frame buffer + * data) access */ + uint32_t : 30; + } FLM1_b; + }; + + union + { + __IOM uint32_t FLM2; /*!< (@ 0x0000000C) Graphics Frame Buffer Control Register 2 */ + + struct + { + __IOM uint32_t BASE : 32; /*!< [31..0] Base address for accessing graphics data (frame buffer + * data) Set the head address in the frame buffer where graphics + * data is to be stored. GRn_FLM2.BASE[5:0] should be fixed + * to 0 during 64-byte burst transfer. */ + } FLM2_b; + }; + + union + { + __IOM uint32_t FLM3; /*!< (@ 0x00000010) Graphics Frame Buffer Control Register 3 */ + + struct + { + uint32_t : 16; + __IOM uint32_t LNOFF : 16; /*!< [31..16] Macro line offset address for accessing graphics data + * (frame buffer data) Signed; 16-bit integer */ + } FLM3_b; + }; + __IM uint32_t RESERVED; + + union + { + __IOM uint32_t FLM5; /*!< (@ 0x00000018) Graphics Frame Buffer Control Register 5 */ + + struct + { + __IOM uint32_t DATANUM : 16; /*!< [15..0] Number of data transfer times per line for accessing + * graphics data (frame buffer data), where one transfer is + * defined as 16-beat burst access (64-byte boundary) */ + __IOM uint32_t LNNUM : 11; /*!< [26..16] Number of lines per frame for accessing graphics data + * (frame buffer data). */ + uint32_t : 5; + } FLM5_b; + }; + + union + { + __IOM uint32_t FLM6; /*!< (@ 0x0000001C) Graphics Frame Buffer Control Register 6 */ + + struct + { + uint32_t : 28; + __IOM uint32_t FORMAT : 3; /*!< [30..28] Data format for accessing graphics data (frame buffer + * data). */ + uint32_t : 1; + } FLM6_b; + }; + + union + { + __IOM uint32_t AB1; /*!< (@ 0x00000020) Graphics Alpha Blending Control Register 1 */ + + struct + { + __IOM uint32_t DISPSEL : 2; /*!< [1..0] Graphics display plane control. */ + uint32_t : 2; + __IOM uint32_t GRCDISPON : 1; /*!< [4..4] Graphics image area border display control. */ + uint32_t : 3; + __IOM uint32_t ARCDISPON : 1; /*!< [8..8] Image area border display control for rectangular area + * alpha blending. */ + uint32_t : 3; + __IOM uint32_t ARCON : 1; /*!< [12..12] Rectangular area alpha blending control. */ + uint32_t : 19; + } AB1_b; + }; + + union + { + __IOM uint32_t AB2; /*!< (@ 0x00000024) Graphics Alpha Blending Control Register 2 */ + + struct + { + __IOM uint32_t GRCVW : 11; /*!< [10..0] Vertical width of graphics image area. */ + uint32_t : 5; + __IOM uint32_t GRCVS : 11; /*!< [26..16] Vertical start position of graphics image area. */ + uint32_t : 5; + } AB2_b; + }; + + union + { + __IOM uint32_t AB3; /*!< (@ 0x00000028) Graphics Alpha Blending Control Register 3 */ + + struct + { + __IOM uint32_t GRCHW : 11; /*!< [10..0] Horizontal width of graphics image area. */ + uint32_t : 5; + __IOM uint32_t GRCHS : 11; /*!< [26..16] Horizontal start position of graphics image area. */ + uint32_t : 5; + } AB3_b; + }; + + union + { + __IOM uint32_t AB4; /*!< (@ 0x0000002C) Graphics Alpha Blending Control Register 4 */ + + struct + { + __IOM uint32_t ARCVW : 11; /*!< [10..0] Vertical width of rectangular area alpha blending image + * area. */ + uint32_t : 5; + __IOM uint32_t ARCVS : 11; /*!< [26..16] Vertical start position of rectangular area alpha blending + * image area */ + uint32_t : 5; + } AB4_b; + }; + + union + { + __IOM uint32_t AB5; /*!< (@ 0x00000030) Graphics Alpha Blending Control Register 5 */ + + struct + { + __IOM uint32_t ARCHW : 11; /*!< [10..0] Horizontal width of rectangular area alpha blending + * image area. */ + uint32_t : 5; + __IOM uint32_t ARCHS : 11; /*!< [26..16] Horizontal start position of rectangular area alpha + * blending image area. */ + uint32_t : 5; + } AB5_b; + }; + + union + { + __IOM uint32_t AB6; /*!< (@ 0x00000034) Graphics Alpha Blending Control Register 6 */ + + struct + { + __IOM uint32_t ARCRATE : 8; /*!< [7..0] Frame rate for alpha blending in rectangular area. */ + uint32_t : 8; + __IOM uint32_t ARCCOEF : 9; /*!< [24..16] Alpha coefficient for alpha blending in rectangular + * area (-255 to 255). [8]: Sign (0: addition, 1: subtraction) + * [7:0]: Variation (absolute value) */ + uint32_t : 7; + } AB6_b; + }; + + union + { + __IOM uint32_t AB7; /*!< (@ 0x00000038) Graphics Alpha Blending Control Register 7 */ + + struct + { + __IOM uint32_t CKON : 1; /*!< [0..0] RGB-index chroma-key processing control. */ + uint32_t : 15; + __IOM uint32_t ARCDEF : 8; /*!< [23..16] Initial alpha value for alpha blending in rectangular + * area. */ + uint32_t : 8; + } AB7_b; + }; + + union + { + __IOM uint32_t AB8; /*!< (@ 0x0000003C) Graphics Alpha Blending Control Register 8 */ + + struct + { + __IOM uint32_t CKKR : 8; /*!< [7..0] R signal for RGB-index chroma-key processing Unsigned; + * 8 bits. */ + __IOM uint32_t CKKB : 8; /*!< [15..8] B signal for RGB-index chroma-key processing Unsigned; + * 8 bits. */ + __IOM uint32_t CKKG : 8; /*!< [23..16] G signal for RGB-index chroma-key processing Unsigned; + * 8 bits. */ + uint32_t : 8; + } AB8_b; + }; + + union + { + __IOM uint32_t AB9; /*!< (@ 0x00000040) Graphics Alpha Blending Control Register 9 */ + + struct + { + __IOM uint32_t CKR : 8; /*!< [7..0] R value after RGB-index chroma-key processing replacement + * Unsigned; 8 bits. */ + __IOM uint32_t CKB : 8; /*!< [15..8] B value after RGB-index chroma-key processing replacement + * Unsigned; 8 bits. */ + __IOM uint32_t CKG : 8; /*!< [23..16] G value after RGB-index chroma-key processing replacement + * Unsigned; 8 bits. */ + __IOM uint32_t CKA : 8; /*!< [31..24] A value after RGB-index chroma-key processing replacement. */ + } AB9_b; + }; + __IM uint32_t RESERVED1[2]; + + union + { + __IOM uint32_t BASE; /*!< (@ 0x0000004C) Graphics Background Color Control Register */ + + struct + { + __IOM uint32_t R : 8; /*!< [7..0] Background color R value Unsigned; 8 bits */ + __IOM uint32_t B : 8; /*!< [15..8] Background color B value Unsigned; 8 bits */ + __IOM uint32_t G : 8; /*!< [23..16] Background color G value Unsigned; 8 bits */ + uint32_t : 8; + } BASE_b; + }; + + union + { + __IOM uint32_t CLUTINT; /*!< (@ 0x00000050) Graphics CLUT Table Interrupt Control Register */ + + struct + { + __IOM uint32_t LINE : 11; /*!< [10..0] Number of detection lines */ + uint32_t : 5; + __IOM uint32_t SEL : 1; /*!< [16..16] CLUT table control */ + uint32_t : 15; + } CLUTINT_b; + }; + + union + { + __IM uint32_t MON; /*!< (@ 0x00000054) Graphics Status Monitor Register */ + + struct + { + __IM uint32_t ARCST : 1; /*!< [0..0] Status monitor for alpha blending in rectangular area */ + uint32_t : 15; + __IM uint32_t UNDFLST : 1; /*!< [16..16] Status monitor for underflow */ + uint32_t : 15; + } MON_b; + }; + __IM uint32_t RESERVED2[42]; +} R_GLCDC_GR_Type; /*!< Size = 256 (0x100) */ + +/** + * @brief R_GLCDC_GAM [GAM] (Gamma Settings) + */ +typedef struct +{ + union + { + __IOM uint32_t LATCH; /*!< (@ 0x00000000) Gamma Register Update Control Register */ + + struct + { + __IOM uint32_t VEN : 1; /*!< [0..0] Control of gamma correction x module register value reflection + * to internal operations. The register values to be reflected + * to the internal operations at the assertion of the vertical + * synchronization signal (VS). */ + uint32_t : 31; + } LATCH_b; + }; + + union + { + __IOM uint32_t GAM_SW; /*!< (@ 0x00000004) Gamma Correction Block Function Switch Register */ + + struct + { + __IOM uint32_t GAMON : 1; /*!< [0..0] Gamma correction on/off control */ + uint32_t : 31; + } GAM_SW_b; + }; + + union + { + __IOM uint32_t LUT[8]; /*!< (@ 0x00000008) Gamma Correction Block Table Setting Register */ + + struct + { + __IOM uint32_t _HIGH : 11; /*!< [10..0] Gain value of area 0. Unsigned 11-bit fixed point. */ + uint32_t : 5; + __IOM uint32_t _LOW : 11; /*!< [26..16] Gain value of area 0. Unsigned 11-bit fixed point. */ + uint32_t : 5; + } LUT_b[8]; + }; + + union + { + __IOM uint32_t AREA[5]; /*!< (@ 0x00000028) Gamma Correction Block Area Setting Register */ + + struct + { + __IOM uint32_t _HIGH : 10; /*!< [9..0] Start threshold of area 1 Unsigned 10-bit integer */ + __IOM uint32_t _MID : 10; /*!< [19..10] Start threshold of area 1 Unsigned 10-bit integer */ + __IOM uint32_t _LOW : 10; /*!< [29..20] Start threshold of area 1 Unsigned 10-bit integer */ + uint32_t : 2; + } AREA_b[5]; + }; + __IM uint32_t RESERVED; +} R_GLCDC_GAM_Type; /*!< Size = 64 (0x40) */ + +/** + * @brief R_GLCDC_OUT [OUT] (Output Control Registers) + */ +typedef struct +{ + union + { + __IOM uint32_t VLATCH; /*!< (@ 0x00000000) Output Control Block Register Update Control + * Register */ + + struct + { + __IOM uint32_t VEN : 1; /*!< [0..0] Control of output control module register value reflection + * to internal operations. The register values to be reflected + * to the internal operations at the assertion of the vertical + * synchronization signal (VS). */ + uint32_t : 31; + } VLATCH_b; + }; + + union + { + __IOM uint32_t SET; /*!< (@ 0x00000004) Output Control Block Output Interface Register */ + + struct + { + __IOM uint32_t PHASE : 2; /*!< [1..0] Data delay in serial RGB format (based on OUTCLK) */ + uint32_t : 2; + __IOM uint32_t DIRSEL : 1; /*!< [4..4] Invalid data position control in serial RGB format */ + uint32_t : 3; + __IOM uint32_t FRQSEL : 2; /*!< [9..8] Clock frequency division control */ + uint32_t : 2; + __IOM uint32_t FORMAT : 2; /*!< [13..12] Output format select */ + uint32_t : 10; + __IOM uint32_t SWAPON : 1; /*!< [24..24] Pixel order control */ + uint32_t : 3; + __IOM uint32_t ENDIANON : 1; /*!< [28..28] Bit endian change control */ + uint32_t : 3; + } SET_b; + }; + + union + { + __IOM uint32_t BRIGHT1; /*!< (@ 0x00000008) Output Control Block Brightness Correction Register + * 1 */ + + struct + { + __IOM uint32_t BRTG : 10; /*!< [9..0] Brightness (DC) adjustment of G signal Unsigned; 10 bits; + +512 with offset; integer */ + uint32_t : 22; + } BRIGHT1_b; + }; + + union + { + __IOM uint32_t BRIGHT2; /*!< (@ 0x0000000C) Output Control Block Brightness Correction Register + * 2 */ + + struct + { + __IOM uint32_t BRTR : 10; /*!< [9..0] Brightness (DC) adjustment of R signal Unsigned; 10 bits; + +512 with offset; integer */ + uint32_t : 6; + __IOM uint32_t BRTB : 10; /*!< [25..16] Brightness (DC) adjustment of B signal Unsigned; 10 + * bits; +512 with offset; integer */ + uint32_t : 6; + } BRIGHT2_b; + }; + + union + { + __IOM uint32_t CONTRAST; /*!< (@ 0x00000010) Output Control Block Contrast Correction Register */ + + struct + { + __IOM uint32_t CONTR : 8; /*!< [7..0] Contrast (GAIN) adjustment of R signal Unsigned; 8 bits + * fixed point */ + __IOM uint32_t CONTB : 8; /*!< [15..8] Contrast (GAIN) adjustment of B signal Unsigned; 8 bits + * fixed point */ + __IOM uint32_t CONTG : 8; /*!< [23..16] Contrast (GAIN) adjustment of G signal Unsigned; 8 + * bits fixed point. */ + uint32_t : 8; + } CONTRAST_b; + }; + + union + { + __IOM uint32_t PDTHA; /*!< (@ 0x00000014) Output Control Block Panel Dither Correction + * Register */ + + struct + { + __IOM uint32_t PD : 2; /*!< [1..0] Pattern value (D) of 2 x 2 pattern dither Unsigned 2-bit + * integer */ + uint32_t : 2; + __IOM uint32_t PC : 2; /*!< [5..4] Pattern value (C) of 2 x 2 pattern dither Unsigned 2-bit + * integer */ + uint32_t : 2; + __IOM uint32_t PB : 2; /*!< [9..8] Pattern value (B) of 2 x 2 pattern dither Unsigned 2-bit + * integer */ + uint32_t : 2; + __IOM uint32_t PA : 2; /*!< [13..12] Pattern value (A) of 2 x 2 pattern dither Unsigned + * 2-bit integer */ + uint32_t : 2; + __IOM uint32_t FORM : 2; /*!< [17..16] Output format select */ + uint32_t : 2; + __IOM uint32_t SEL : 2; /*!< [21..20] Operation mode */ + uint32_t : 10; + } PDTHA_b; + }; + __IM uint32_t RESERVED[3]; + + union + { + __IOM uint32_t CLKPHASE; /*!< (@ 0x00000024) Output Control Block Output Phase Control Register */ + + struct + { + uint32_t : 3; + __IOM uint32_t TCON3EDGE : 1; /*!< [3..3] LCD_TCON3 Output Phase Control */ + __IOM uint32_t TCON2EDGE : 1; /*!< [4..4] LCD_TCON2 Output Phase Control */ + __IOM uint32_t TCON1EDGE : 1; /*!< [5..5] LCD_TCON1 Output Phase Control */ + __IOM uint32_t TCON0EDGE : 1; /*!< [6..6] LCD_TCON0 Output Phase Control */ + uint32_t : 1; + __IOM uint32_t LCDEDGE : 1; /*!< [8..8] LCD_DATA Output Phase Control */ + uint32_t : 3; + __IOM uint32_t FRONTGAM : 1; /*!< [12..12] Correction control */ + uint32_t : 19; + } CLKPHASE_b; + }; +} R_GLCDC_OUT_Type; /*!< Size = 40 (0x28) */ + +/** + * @brief R_GLCDC_TCON [TCON] (Timing Control Registers) + */ +typedef struct +{ + __IM uint32_t RESERVED; + + union + { + __IOM uint32_t TIM; /*!< (@ 0x00000004) TCON Reference Timing Setting Register */ + + struct + { + __IOM uint32_t OFFSET : 11; /*!< [10..0] Horizontal synchronization signal generation reference + * timing Sets the offset from the assertion of the internal + * horizontal synchronization signal in terms of pixels. */ + uint32_t : 5; + __IOM uint32_t HALF : 11; /*!< [26..16] Vertical synchronization signal generation change timing + * Sets the delay from the assertion of the internal horizontal + * synchronization signal in terms of pixels. */ + uint32_t : 5; + } TIM_b; + }; + + union + { + __IOM uint32_t STVA1; /*!< (@ 0x00000008) TCON Vertical Timing Setting Register A1 */ + + struct + { + __IOM uint32_t VW : 11; /*!< [10..0] STVx1 second change timing Sets the signal assertion + * width. */ + uint32_t : 5; + __IOM uint32_t VS : 11; /*!< [26..16] STVx1 first change timing */ + uint32_t : 5; + } STVA1_b; + }; + + union + { + __IOM uint32_t STVA2; /*!< (@ 0x0000000C) TCON Vertical Timing Setting Register A2 */ + + struct + { + __IOM uint32_t SEL : 3; /*!< [2..0] Output signal select control for VSOUT (controlled by + * TCON_STVA2 register)/VEOUT (controlled by the TCON_STVB2 + * register) pin */ + uint32_t : 1; + __IOM uint32_t INV : 1; /*!< [4..4] STVx signal polarity inversion control */ + uint32_t : 27; + } STVA2_b; + }; + + union + { + __IOM uint32_t STVB1; /*!< (@ 0x00000010) TCON Vertical Timing Setting Register B1 */ + + struct + { + __IOM uint32_t VW : 11; /*!< [10..0] STVx1 second change timing Sets the signal assertion + * width. */ + uint32_t : 5; + __IOM uint32_t VS : 11; /*!< [26..16] STVx1 first change timing */ + uint32_t : 5; + } STVB1_b; + }; + + union + { + __IOM uint32_t STVB2; /*!< (@ 0x00000014) TCON Vertical Timing Setting Register B2 */ + + struct + { + __IOM uint32_t SEL : 3; /*!< [2..0] Output signal select control for VSOUT (controlled by + * TCON_STVA2 register)/VEOUT (controlled by the TCON_STVB2 + * register) pin */ + uint32_t : 1; + __IOM uint32_t INV : 1; /*!< [4..4] STVx signal polarity inversion control */ + uint32_t : 27; + } STVB2_b; + }; + + union + { + __IOM uint32_t STHA1; /*!< (@ 0x00000018) TCON Horizontal Timing Setting Register STHA1 */ + + struct + { + __IOM uint32_t HW : 11; /*!< [10..0] STHx1 second change timing. Sets the signal assertion + * width. */ + uint32_t : 5; + __IOM uint32_t HS : 11; /*!< [26..16] STHx1 first change timing */ + uint32_t : 5; + } STHA1_b; + }; + + union + { + __IOM uint32_t STHA2; /*!< (@ 0x0000001C) TCON Horizontal Timing Setting Register STHA2 */ + + struct + { + __IOM uint32_t SEL : 3; /*!< [2..0] Output signal select control for LCD_TCON2 (controlled + * by TCON_STHA2 register)/LCD_TCON3 (controlled by the TCON_STHB2 + * register) pin. */ + uint32_t : 1; + __IOM uint32_t INV : 1; /*!< [4..4] STVx signal polarity inversion control. */ + uint32_t : 3; + __IOM uint32_t HSSEL : 1; /*!< [8..8] STHx signal generation reference timing control. */ + uint32_t : 23; + } STHA2_b; + }; + + union + { + __IOM uint32_t STHB1; /*!< (@ 0x00000020) TCON Horizontal Timing Setting Register STHB1 */ + + struct + { + __IOM uint32_t HW : 11; /*!< [10..0] STHx1 second change timing. Sets the signal assertion + * width. */ + uint32_t : 5; + __IOM uint32_t HS : 11; /*!< [26..16] STHx1 first change timing */ + uint32_t : 5; + } STHB1_b; + }; + + union + { + __IOM uint32_t STHB2; /*!< (@ 0x00000024) TCON Horizontal Timing Setting Register STHB2 */ + + struct + { + __IOM uint32_t SEL : 3; /*!< [2..0] Output signal select control for LCD_TCON2 (controlled + * by TCON_STHA2 register)/LCD_TCON3 (controlled by the TCON_STHB2 + * register) pin. */ + uint32_t : 1; + __IOM uint32_t INV : 1; /*!< [4..4] STVx signal polarity inversion control. */ + uint32_t : 3; + __IOM uint32_t HSSEL : 1; /*!< [8..8] STHx signal generation reference timing control. */ + uint32_t : 23; + } STHB2_b; + }; + + union + { + __IOM uint32_t DE; /*!< (@ 0x00000028) TCON Data Enable Polarity Setting Register */ + + struct + { + __IOM uint32_t INV : 1; /*!< [0..0] DE signal polarity inversion control. */ + uint32_t : 31; + } DE_b; + }; +} R_GLCDC_TCON_Type; /*!< Size = 44 (0x2c) */ + +/** + * @brief R_GLCDC_SYSCNT [SYSCNT] (GLCDC System Control Registers) + */ +typedef struct +{ + union + { + __IOM uint32_t DTCTEN; /*!< (@ 0x00000000) System control block State Detection Control + * Register */ + + struct + { + __IOM uint32_t VPOSDTC : 1; /*!< [0..0] Specified line detection control */ + __IOM uint32_t L1UNDFDTC : 1; /*!< [1..1] Graphics 1 underflow detection control */ + __IOM uint32_t L2UNDFDTC : 1; /*!< [2..2] Graphics 2 underflow detection control */ + uint32_t : 29; + } DTCTEN_b; + }; + + union + { + __IOM uint32_t INTEN; /*!< (@ 0x00000004) System control block Interrupt Request Enable + * Control Register */ + + struct + { + __IOM uint32_t VPOSINTEN : 1; /*!< [0..0] Interrupt request signal GLCDC_VPOS enable control. */ + __IOM uint32_t L1UNDFINTEN : 1; /*!< [1..1] Interrupt request signal GLCDC_L1UNDF enable control. */ + __IOM uint32_t L2UNDFINTEN : 1; /*!< [2..2] Interrupt request signal GLCDC_L2UNDF enable control. */ + uint32_t : 29; + } INTEN_b; + }; + + union + { + __IOM uint32_t STCLR; /*!< (@ 0x00000008) System control block Status Clear Register */ + + struct + { + __IOM uint32_t VPOSCLR : 1; /*!< [0..0] Graphics 2 specified line detection flag clear field */ + __IOM uint32_t L1UNDFCLR : 1; /*!< [1..1] Graphics 1 underflow detection flag clear field */ + __IOM uint32_t L2UNDFCLR : 1; /*!< [2..2] Graphics 2 underflow detection flag clear field */ + uint32_t : 29; + } STCLR_b; + }; + + union + { + __IM uint32_t STMON; /*!< (@ 0x0000000C) System control block Status Monitor Register */ + + struct + { + __IM uint32_t VPOS : 1; /*!< [0..0] Graphics 2 specified line detection flag */ + __IM uint32_t L1UNDF : 1; /*!< [1..1] Graphics 1 underflow detection flag */ + __IM uint32_t L2UNDF : 1; /*!< [2..2] Graphics 2 underflow detection flag */ + uint32_t : 29; + } STMON_b; + }; + + union + { + __IOM uint32_t PANEL_CLK; /*!< (@ 0x00000010) System control block Version and Panel Clock + * Control Register */ + + struct + { + __IOM uint32_t DCDR : 6; /*!< [5..0] Clock division ratio setting control Refer toTable 2.7.1 + * for details about setting value. Note: Settings that are + * not listed in table 2.7.1 are prohibited. */ + __IOM uint32_t CLKEN : 1; /*!< [6..6] Panel clock output enable control Note: Before changing + * the PIXSEL,CLKSEL or DCDR bit, this bit must be set to + * 0. */ + uint32_t : 1; + __IOM uint32_t CLKSEL : 1; /*!< [8..8] Panel clock supply source select */ + uint32_t : 3; + __IOM uint32_t PIXSEL : 1; /*!< [12..12] Pixel clock select control. Must be set to the same + * value as OUT_SET.FRQSEL[1]. */ + uint32_t : 3; + __IM uint32_t VER : 16; /*!< [31..16] Version information Version information of the GLCDC */ + } PANEL_CLK_b; + }; +} R_GLCDC_SYSCNT_Type; /*!< Size = 20 (0x14) */ + +/** + * @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_DRW ================ */ +/* =========================================================================================================================== */ + +/** + * @brief 2D Drawing Engine (R_DRW) + */ + +typedef struct /*!< (@ 0x40344000) R_DRW Structure */ +{ + union + { + union + { + __OM uint32_t CONTROL; /*!< (@ 0x00000000) Geometry Control Register */ + + struct + { + __OM uint32_t LIM1ENABLE : 1; /*!< [0..0] Enable limiter 1 */ + __OM uint32_t LIM2ENABLE : 1; /*!< [1..1] Enable limiter 2 */ + __OM uint32_t LIM3ENABLE : 1; /*!< [2..2] Enable limiter 3 */ + __OM uint32_t LIM4ENABLE : 1; /*!< [3..3] Enable limiter 4 */ + __OM uint32_t LIM5ENABLE : 1; /*!< [4..4] Enable limiter 5 */ + __OM uint32_t LIM6ENABLE : 1; /*!< [5..5] Enable limiter 6 */ + __OM uint32_t QUAD1ENABLE : 1; /*!< [6..6] Enable quadratic coupling of limiters 1 and 2 */ + __OM uint32_t QUAD2ENABLE : 1; /*!< [7..7] Enable quadratic coupling of limiters 3 and 4 */ + __OM uint32_t QUAD3ENABLE : 1; /*!< [8..8] Enable quadratic coupling of limiters 5 and 6 */ + __OM uint32_t LIM1THRESHOLD : 1; /*!< [9..9] Enable limiter 1 threshold mode */ + __OM uint32_t LIM2THRESHOLD : 1; /*!< [10..10] Enable limiter 2 threshold mode */ + __OM uint32_t LIM3THRESHOLD : 1; /*!< [11..11] Enable limiter 3 threshold mode */ + __OM uint32_t LIM4THRESHOLD : 1; /*!< [12..12] Enable limiter 4 threshold mode */ + __OM uint32_t LIM5THRESHOLD : 1; /*!< [13..13] Enable limiter 5 threshold mode */ + __OM uint32_t LIM6THRESHOLD : 1; /*!< [14..14] Enable limiter 6 threshold mode */ + __OM uint32_t BAND1ENABLE : 1; /*!< [15..15] Enable band postprocess for limiter 1 (see L1BAND) */ + __OM uint32_t BAND2ENABLE : 1; /*!< [16..16] Enable band postprocess for limiter 1 (see L1BAND) */ + __OM uint32_t UNION12 : 1; /*!< [17..17] Combine limter 1 & 2 as union (output is called A) */ + __OM uint32_t UNION34 : 1; /*!< [18..18] Combine limter 3 & 4 as union (output is called B) */ + __OM uint32_t UNION56 : 1; /*!< [19..19] Combine limter 5 & 6 as union (output is called D) */ + __OM uint32_t UNIONAB : 1; /*!< [20..20] Combine outputs A & B as union (output is called C) */ + __OM uint32_t UNIONCD : 1; /*!< [21..21] Combine outputs C & D as union (output is final) */ + __OM uint32_t SPANABORT : 1; /*!< [22..22] Shape is horizontally convex, only a single span per + * scanline */ + __OM uint32_t SPANSTORE : 1; /*!< [23..23] Nextline span start is always equal or left to current-line + * span start */ + uint32_t : 8; + } CONTROL_b; + }; + + union + { + __IM uint32_t STATUS; /*!< (@ 0x00000000) Status Control Register */ + + struct + { + __IM uint32_t BUSYENUM : 1; /*!< [0..0] Enumeration unit status */ + __IM uint32_t BUSYWRITE : 1; /*!< [1..1] Framebuffer writeback status */ + __IM uint32_t CACHEDIRTY : 1; /*!< [2..2] Framebuffer cache status */ + __IM uint32_t DLISTACTIVE : 1; /*!< [3..3] Display list reader status */ + __IM uint32_t ENUMIRQ : 1; /*!< [4..4] enumeration finished interrupt triggered */ + __IM uint32_t DLISTIRQ : 1; /*!< [5..5] display list finished interrupt triggered */ + __IM uint32_t BUSIRQ : 1; /*!< [6..6] bus error interrupt triggered */ + uint32_t : 1; + __IM uint32_t BUSERRMFB : 1; /*!< [8..8] framebuffer bus error interrupt triggered */ + __IM uint32_t BUSERRMTXMRL : 1; /*!< [9..9] texture bus error interrupt triggered */ + __IM uint32_t BUSERRMDL : 1; /*!< [10..10] display list bus error interrupt triggered */ + uint32_t : 21; + } STATUS_b; + }; + }; + + union + { + union + { + __OM uint32_t CONTROL2; /*!< (@ 0x00000004) Surface Control Register */ + + struct + { + __OM uint32_t PATTERNENABLE : 1; /*!< [0..0] Pixel source is a pattern color (blend of COLOR1 and + * COLOR2 depending on PATTERN and pattern index) */ + __OM uint32_t TEXTUREENABLE : 1; /*!< [1..1] Pixel source is read from texture and used as an alpha + * to blend between COLOR1 and COLOR2 */ + __OM uint32_t PATTERNSOURCEL5 : 1; /*!< [2..2] Limiter 5 is used as pattern index instead of the default + * U limiter.Limiter 5 can be combined with limiter 6 to form + * a quadratic limiter which can be used to make quadratic + * pattern functions to draw radial patterns. */ + __OM uint32_t USEACB : 1; /*!< [3..3] Alpha blend mode */ + __OM uint32_t READFORMAT32 : 2; /*!< [5..4] Bit 4 and 3 of the texture buffer format.See READFORMAT + * above for description */ + __OM uint32_t BSFA : 1; /*!< [6..6] Blend source factor for alpha channel in alpha channel + * blending mode (USEACB = 1) */ + __OM uint32_t BDFA : 1; /*!< [7..7] Blend destinetion factor for alpha channel in alpha channel + * blending mode (USEACB = 1) */ + __OM uint32_t WRITEFORMAT2 : 1; /*!< [8..8] Bit 3 of framebuffer pixel formatSee WRITEFORMAT above + * description. */ + __OM uint32_t BSF : 1; /*!< [9..9] Blend source factorsrc factor is alpha (factor is 1 per + * default) */ + __OM uint32_t BDF : 1; /*!< [10..10] Blend destination factordst factor is alpha (factor + * is 1 per default) */ + __OM uint32_t BSI : 1; /*!< [11..11] Blend source factor is invertedsrc factor will be inverted + * (meaning 1-a or 1-1 depending on BSF) */ + __OM uint32_t BDI : 1; /*!< [12..12] Blend destination factor is inverteddst factor will + * be inverted (meaning 1-a or 1-1 depending on BDF) */ + __OM uint32_t BC2 : 1; /*!< [13..13] Blend color 2 instead of framebuffer pixel */ + __OM uint32_t TEXTURECLAMPX : 1; /*!< [14..14] Calculating U limiter outside use textureThe bit describes + * what happens if the U limiter (x direction in texture space) + * calculates a U value outside of the used texture */ + __OM uint32_t TEXTURECLAMPY : 1; /*!< [15..15] Calculating V limiter outside use textureThe bit describes + * what happens if the V limiter (y direction in texture space) + * calculates a V value outside of the used texture */ + __OM uint32_t TEXTUREFILTERX : 1; /*!< [16..16] Linear filtering on texture U axis */ + __OM uint32_t TEXTUREFILTERY : 1; /*!< [17..17] Linear filtering on texture V axis */ + __OM uint32_t READFORMAT10 : 2; /*!< [19..18] Pixel format of the texture buffer{READFORMAT32,READFORMAT10}0000: + * 8 bpp a(8)0001: 16 bpp RGB(565)0010: 32 bpp aRGB(8888)0011: + * 16 bpp aRGB(4444)0100: 16 bpp aRGB(1555)0101: 8 bpp aCLUT(44) + * 4 bit alpha and 4 bit indexed color1001: 8 bpp CLUT(8)/I(8), + * 8 bit indexed color/luminance1010: 4 bpp CLUT(4)/I(4), + * 4 bit indexed color/luminance1011: 2 bpp CLUT(2)/I(2), + * 2 bit indexed color/luminance 1100: 1 bpp CLUT(1)/I(1), + * 1 bit indexed color/luminance */ + __OM uint32_t WRITEFORMAT10 : 2; /*!< [21..20] Pixel format of the framebuffer */ + __OM uint32_t WRITEALPHA : 2; /*!< [23..22] Writeback alpha source for framebufferSet the 'alpha + * source' for the framebuffer(USEACB = 0)Blend alpha in color + * 2 instead of framebuffer alpha((USEACB = 1))In not alpha + * channel blending mode (USEACB = 0):Set the 'alpha source' + * for the framebuffer.In alpha channel blending mode (USEACB + * = 1):Blend alpha in color 2 instead of framebuffer alpha00B: + * BC2A = 1: use alpha from framebuffer as destination (DST_A)else: + * BC2A = 0: use alpha in color 2 as destination (DST_A) */ + __OM uint32_t RLEENABLE : 1; /*!< [24..24] RLE enable */ + __OM uint32_t CLUTENABLE : 1; /*!< [25..25] CLUT enable */ + __OM uint32_t COLKEYENABLE : 1; /*!< [26..26] color keying enable */ + __OM uint32_t CLUTFORMAT : 1; /*!< [27..27] Format of the CLUT */ + __OM uint32_t BSIA : 1; /*!< [28..28] Blend source factor inverted in alpha channel (USEACB + * = 1) */ + __OM uint32_t BDIA : 1; /*!< [29..29] Blend destination factor inverted in alpha channel + * (USEACB = 1) */ + __OM uint32_t RLEPIXELWIDTH : 2; /*!< [31..30] Texel width for RLE unit */ + } CONTROL2_b; + }; + + union + { + __IM uint32_t HWREVISION; /*!< (@ 0x00000004) Hardware Version and Feature Set ID Register */ + + struct + { + __IM uint32_t REV : 12; /*!< [11..0] Revision number */ + uint32_t : 5; + __IM uint32_t DLR : 1; /*!< [17..17] Display list reader feature */ + __IM uint32_t FBCACHE : 1; /*!< [18..18] Framebuffer cache feature */ + __IM uint32_t TXCACHE : 1; /*!< [19..19] Texture cache feature */ + __IM uint32_t PERFCOUNT : 1; /*!< [20..20] Two performance counter feature */ + __IM uint32_t TEXCLU : 1; /*!< [21..21] Texture CLUT with 16 or 256 entries feature */ + uint32_t : 1; + __IM uint32_t RLEUNIT : 1; /*!< [23..23] RLE unit feature */ + __IM uint32_t TEXCLUT256 : 1; /*!< [24..24] Texture CLUT feature */ + __IM uint32_t COLORKEY : 1; /*!< [25..25] Colorkey feature */ + uint32_t : 1; + __IM uint32_t ACBLEND : 1; /*!< [27..27] Alpha channel blending feature */ + uint32_t : 4; + } HWREVISION_b; + }; + }; + __IM uint32_t RESERVED[2]; + + union + { + __OM uint32_t L1START; /*!< (@ 0x00000010) Limiter 1 Start Value Register */ + + struct + { + __OM uint32_t LSTART : 32; /*!< [31..0] Start value of the n'th limiter(n=1-6) */ + } L1START_b; + }; + + union + { + __OM uint32_t L2START; /*!< (@ 0x00000014) Limiter 2 Start Value Register */ + + struct + { + __OM uint32_t LSTART : 32; /*!< [31..0] Start value of the n'th limiter(n=1-6) */ + } L2START_b; + }; + + union + { + __OM uint32_t L3START; /*!< (@ 0x00000018) Limiter 3 Start Value Register */ + + struct + { + __OM uint32_t LSTART : 32; /*!< [31..0] Start value of the n'th limiter(n=1-6) */ + } L3START_b; + }; + + union + { + __OM uint32_t L4START; /*!< (@ 0x0000001C) Limiter 4 Start Value Register */ + + struct + { + __OM uint32_t LSTART : 32; /*!< [31..0] Start value of the n'th limiter(n=1-6) */ + } L4START_b; + }; + + union + { + __OM uint32_t L5START; /*!< (@ 0x00000020) Limiter 5 Start Value Register */ + + struct + { + __OM uint32_t LSTART : 32; /*!< [31..0] Start value of the n'th limiter(n=1-6) */ + } L5START_b; + }; + + union + { + __OM uint32_t L6START; /*!< (@ 0x00000024) Limiter 6 Start Value Register */ + + struct + { + __OM uint32_t LSTART : 32; /*!< [31..0] Start value of the n'th limiter(n=1-6) */ + } L6START_b; + }; + + union + { + __OM uint32_t L1XADD; /*!< (@ 0x00000028) Limiter 1 X-Axis Increment Register */ + + struct + { + __OM uint32_t LXADD : 32; /*!< [31..0] X-axis increment */ + } L1XADD_b; + }; + + union + { + __OM uint32_t L2XADD; /*!< (@ 0x0000002C) Limiter 2 X-Axis Increment Register */ + + struct + { + __OM uint32_t LXADD : 32; /*!< [31..0] X-axis increment */ + } L2XADD_b; + }; + + union + { + __OM uint32_t L3XADD; /*!< (@ 0x00000030) Limiter 3 X-Axis Increment Register */ + + struct + { + __OM uint32_t LXADD : 32; /*!< [31..0] X-axis increment */ + } L3XADD_b; + }; + + union + { + __OM uint32_t L4XADD; /*!< (@ 0x00000034) Limiter 4 X-Axis Increment Register */ + + struct + { + __OM uint32_t LXADD : 32; /*!< [31..0] X-axis increment */ + } L4XADD_b; + }; + + union + { + __OM uint32_t L5XADD; /*!< (@ 0x00000038) Limiter 5 X-Axis Increment Register */ + + struct + { + __OM uint32_t LXADD : 32; /*!< [31..0] X-axis increment */ + } L5XADD_b; + }; + + union + { + __OM uint32_t L6XADD; /*!< (@ 0x0000003C) Limiter 6 X-Axis Increment Register */ + + struct + { + __OM uint32_t LXADD : 32; /*!< [31..0] X-axis increment */ + } L6XADD_b; + }; + + union + { + __OM uint32_t L1YADD; /*!< (@ 0x00000040) Limiter 1 Y-Axis Increment Register */ + + struct + { + __OM uint32_t LYADD : 32; /*!< [31..0] Y-axis increment */ + } L1YADD_b; + }; + + union + { + __OM uint32_t L2YADD; /*!< (@ 0x00000044) Limiter 2 Y-Axis Increment Register */ + + struct + { + __OM uint32_t LYADD : 32; /*!< [31..0] Y-axis increment */ + } L2YADD_b; + }; + + union + { + __OM uint32_t L3YADD; /*!< (@ 0x00000048) Limiter 3 Y-Axis Increment Register */ + + struct + { + __OM uint32_t LYADD : 32; /*!< [31..0] Y-axis increment */ + } L3YADD_b; + }; + + union + { + __OM uint32_t L4YADD; /*!< (@ 0x0000004C) Limiter 4 Y-Axis Increment Register */ + + struct + { + __OM uint32_t LYADD : 32; /*!< [31..0] Y-axis increment */ + } L4YADD_b; + }; + + union + { + __OM uint32_t L5YADD; /*!< (@ 0x00000050) Limiter 5 Y-Axis Increment Register */ + + struct + { + __OM uint32_t LYADD : 32; /*!< [31..0] Y-axis increment */ + } L5YADD_b; + }; + + union + { + __OM uint32_t L6YADD; /*!< (@ 0x00000054) Limiter 6 Y-Axis Increment Register */ + + struct + { + __OM uint32_t LYADD : 32; /*!< [31..0] Y-axis increment */ + } L6YADD_b; + }; + + union + { + __OM uint32_t L1BAND; /*!< (@ 0x00000058) Limiter 1 Band Width Parameter Register */ + + struct + { + __OM uint32_t LBAND : 32; /*!< [31..0] Limiter m band width parameter */ + } L1BAND_b; + }; + + union + { + __OM uint32_t L2BAND; /*!< (@ 0x0000005C) Limiter 2 Band Width Parameter Register */ + + struct + { + __OM uint32_t LBAND : 32; /*!< [31..0] Limiter m band width parameter */ + } L2BAND_b; + }; + __IM uint32_t RESERVED1; + + union + { + __OM uint32_t COLOR1; /*!< (@ 0x00000064) Base Color Register */ + + struct + { + __OM uint32_t COLOR1B : 8; /*!< [7..0] Blue channel of color 1 */ + __OM uint32_t COLOR1G : 8; /*!< [15..8] Green channel of color 1 */ + __OM uint32_t COLOR1R : 8; /*!< [23..16] Red channel of color 1 */ + __OM uint32_t COLOR1A : 8; /*!< [31..24] Alpha channel of color 1(0x00: transparent. . . 0xFF: + * opaque) */ + } COLOR1_b; + }; + + union + { + __OM uint32_t COLOR2; /*!< (@ 0x00000068) Secondary Color Register */ + + struct + { + __OM uint32_t COLOR2B : 8; /*!< [7..0] Blue channel of color 2 */ + __OM uint32_t COLOR2G : 8; /*!< [15..8] Green channel of color 2 */ + __OM uint32_t COLOR2R : 8; /*!< [23..16] Red channel of color 2 */ + __OM uint32_t COLOR2A : 8; /*!< [31..24] Alpha channel of color 2(0x00: transparent. . . 0xFF: + * opaque) */ + } COLOR2_b; + }; + __IM uint32_t RESERVED2[2]; + + union + { + __OM uint32_t PATTERN; /*!< (@ 0x00000074) Pattern Register */ + + struct + { + __OM uint32_t PATTERN : 8; /*!< [7..0] Bitmap of the pattern */ + uint32_t : 24; + } PATTERN_b; + }; + + union + { + __OM uint32_t SIZE; /*!< (@ 0x00000078) Bounding Box Dimension Register */ + + struct + { + __OM uint32_t SIZEX : 16; /*!< [15..0] Width of the bounding box in pixelsvalid range: 0 to + * 1024 */ + __OM uint32_t SIZEY : 16; /*!< [31..16] Height of the bounding box in pixelsvalid range: 0 + * to 1024 */ + } SIZE_b; + }; + + union + { + __OM uint32_t PITCH; /*!< (@ 0x0000007C) Framebuffer Pitch And Spanstore Delay Register */ + + struct + { + __OM uint32_t PITCH : 16; /*!< [15..0] pitch of the framebuffer. A negative width can be used + * to render bottom-up instead of top-down */ + __OM uint32_t SSD : 16; /*!< [31..16] Spanstore delay */ + } PITCH_b; + }; + + union + { + __OM uint32_t ORIGIN; /*!< (@ 0x00000080) Framebuffer Base Address Register */ + + struct + { + __OM uint32_t ORIGIN : 32; /*!< [31..0] Address of the first pixel in framebuffer */ + } ORIGIN_b; + }; + __IM uint32_t RESERVED3[3]; + + union + { + __OM uint32_t LUSTART; /*!< (@ 0x00000090) U Limiter Start Value Register */ + + struct + { + __OM uint32_t LUSTART : 32; /*!< [31..0] U limiter start value */ + } LUSTART_b; + }; + + union + { + __OM uint32_t LUXADD; /*!< (@ 0x00000094) U Limiter X-Axis Increment Register */ + + struct + { + __OM uint32_t LUXADD : 32; /*!< [31..0] U limiter x-axis increment */ + } LUXADD_b; + }; + + union + { + __OM uint32_t LUYADD; /*!< (@ 0x00000098) U Limiter Y-Axis Increment Register */ + + struct + { + __OM uint32_t LUYADD : 32; /*!< [31..0] U limiter y-axis increment */ + } LUYADD_b; + }; + + union + { + __OM uint32_t LVSTARTI; /*!< (@ 0x0000009C) V Limiter Start Value Integer Part Register */ + + struct + { + __OM uint32_t LVSTARTI : 32; /*!< [31..0] V limiter start value integer part */ + } LVSTARTI_b; + }; + + union + { + __OM uint32_t LVSTARTF; /*!< (@ 0x000000A0) V Limiter Start Value Fractional Part Register */ + + struct + { + __OM uint32_t LVSTARTF : 16; /*!< [15..0] V limiter start value fractional part */ + uint32_t : 16; + } LVSTARTF_b; + }; + + union + { + __OM uint32_t LVXADDI; /*!< (@ 0x000000A4) V Limiter X-Axis Increment Integer Part Register */ + + struct + { + __OM uint32_t LVXADDI : 32; /*!< [31..0] V limiter x-axis increment integer part */ + } LVXADDI_b; + }; + + union + { + __OM uint32_t LVYADDI; /*!< (@ 0x000000A8) V Limiter Y-Axis Increment Integer Part Register */ + + struct + { + __OM uint32_t LVYADDI : 32; /*!< [31..0] V limiter y-axis increment integer part */ + } LVYADDI_b; + }; + + union + { + __OM uint32_t LVYXADDF; /*!< (@ 0x000000AC) V Limiter Increment Fractional Parts Register */ + + struct + { + __OM uint32_t LVXADDF : 16; /*!< [15..0] V xlimiter increment fractional part */ + __OM uint32_t LVYADDF : 16; /*!< [31..16] V y limiter increment fractional part */ + } LVYXADDF_b; + }; + __IM uint32_t RESERVED4; + + union + { + __OM uint32_t TEXPITCH; /*!< (@ 0x000000B4) Texels Per Texture Line Register */ + + struct + { + __OM uint32_t TEXPITCH : 32; /*!< [31..0] Texels per texture linevalid range: 0 to 2048 */ + } TEXPITCH_b; + }; + + union + { + __OM uint32_t TEXMASK; /*!< (@ 0x000000B8) Texture Size or Texture Address Mask Register */ + + struct + { + __OM uint32_t TEXUMASK : 11; /*!< [10..0] U maskSet TEXUMASK[10:0] = texture_width -1In texture + * wrapping mode (CONTROL2.TEXTURECLAMPX = 0): texture_width + * must be a power of 2.In texture clamping mode (CONTROL2.TEXTURECLAMPX + * = 1):all widths up to 2048 are allowed. */ + __OM uint32_t TEXVMASK : 21; /*!< [31..11] V maskSet TEXVMASK[20:0] = TEXPITCH * (texture_height + * - 1).In texture wrapping mode (CONTROL2.TEXTURECLAMPY = + * 0): texture_height must be a power of 2In texture clamping + * mode (CONTROL2.TEXTURECLAMPY = 1):all heights up to 1024 + * are allowed. */ + } TEXMASK_b; + }; + + union + { + __OM uint32_t TEXORIGIN; /*!< (@ 0x000000BC) Texture Base Address Register */ + + struct + { + __OM uint32_t TEXORIGIN : 32; /*!< [31..0] Texture base address */ + } TEXORIGIN_b; + }; + + union + { + __OM uint32_t IRQCTL; /*!< (@ 0x000000C0) Interrupt Control Register */ + + struct + { + __OM uint32_t ENUMIRQEN : 1; /*!< [0..0] ENUMIRQ interrupt mask enable */ + __OM uint32_t DLISTIRQEN : 1; /*!< [1..1] DLISTIRQ interrupt mask enable */ + __OM uint32_t ENUMIRQCLR : 1; /*!< [2..2] Clear enumeration interrupt ENUMIRQ */ + __OM uint32_t DLISTIRQCLR : 1; /*!< [3..3] Clear display list interrupt DLISTIRQ */ + __OM uint32_t BUSIRQEN : 1; /*!< [4..4] BUSIRQ interrupt mask enable */ + __OM uint32_t BUSIRQCLR : 1; /*!< [5..5] Clear bus error interrupt BUSIRQ */ + uint32_t : 26; + } IRQCTL_b; + }; + + union + { + __OM uint32_t CACHECTL; /*!< (@ 0x000000C4) Cache Control Register */ + + struct + { + __OM uint32_t CENABLEFX : 1; /*!< [0..0] Framebuffer cache enable */ + __OM uint32_t CFLUSHFX : 1; /*!< [1..1] Flush framebuffer cache */ + __OM uint32_t CENABLETX : 1; /*!< [2..2] Texture cache enable */ + __OM uint32_t CFLUSHTX : 1; /*!< [3..3] Flush texture cache */ + uint32_t : 28; + } CACHECTL_b; + }; + + union + { + __OM uint32_t DLISTSTART; /*!< (@ 0x000000C8) Display List Start Address Register */ + + struct + { + __OM uint32_t DLISTSTART : 32; /*!< [31..0] Display list start address */ + } DLISTSTART_b; + }; + + union + { + __IOM uint32_t PERFCOUNT1; /*!< (@ 0x000000CC) Performance Counter 1 */ + + struct + { + __IOM uint32_t PERFCOUNT : 32; /*!< [31..0] Counter value.The counter is reset by writing PERFCOUNT + * = 0000 0000H. */ + } PERFCOUNT1_b; + }; + + union + { + __IOM uint32_t PERFCOUNT2; /*!< (@ 0x000000D0) Performance Counter 2 */ + + struct + { + __IOM uint32_t PERFCOUNT : 32; /*!< [31..0] Counter value.The counter is reset by writing PERFCOUNT + * = 0000 0000H. */ + } PERFCOUNT2_b; + }; + + union + { + __OM uint32_t PERFTRIGGER; /*!< (@ 0x000000D4) Performance Counters Control Register */ + + struct + { + __OM uint32_t PERFTRIGGER1 : 16; /*!< [15..0] Selects the internal event that will increment PERFCOUNT1 + * register. */ + __OM uint32_t PERFTRIGGER2 : 16; /*!< [31..16] Selects the internal event that will increment PERFCOUNT2 + * register */ + } PERFTRIGGER_b; + }; + __IM uint32_t RESERVED5; + + union + { + __OM uint32_t TEXCLADDR; /*!< (@ 0x000000DC) CLUT Start Address Register */ + + struct + { + __OM uint32_t CLADDR : 8; /*!< [7..0] Texture CLUT start address for indexed texture format */ + uint32_t : 24; + } TEXCLADDR_b; + }; + + union + { + __OM uint32_t TEXCLDATA; /*!< (@ 0x000000E0) CLUT Data Register */ + + struct + { + __OM uint32_t CLDATA : 32; /*!< [31..0] Texture CLUT data for Indexed texture format */ + } TEXCLDATA_b; + }; + + union + { + __OM uint32_t TEXCLOFFSET; /*!< (@ 0x000000E4) CLUT Offset Register */ + + struct + { + __OM uint32_t CLOFFSET : 8; /*!< [7..0] Texture CLUT offset for Indexed texture format. CLOFFSET[7:0] + * is or'ed with the original index */ + uint32_t : 24; + } TEXCLOFFSET_b; + }; + + union + { + __OM uint32_t COLKEY; /*!< (@ 0x000000E8) Color Key Register */ + + struct + { + __OM uint32_t COLKEYB : 8; /*!< [7..0] Blue channel of color key */ + __OM uint32_t COLKEYG : 8; /*!< [15..8] Green channel of color key */ + __OM uint32_t COLKEYR : 8; /*!< [23..16] Red channel of color key */ + uint32_t : 8; + } COLKEY_b; + }; +} R_DRW_Type; /*!< Size = 236 (0xec) */ + +/* =========================================================================================================================== */ +/* ================ 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_GLCDC ================ */ +/* =========================================================================================================================== */ + +/** + * @brief Graphics LCD Controller (R_GLCDC) + */ + +typedef struct /*!< (@ 0x40342000) R_GLCDC Structure */ +{ + union + { + __IOM uint32_t GR1_CLUT0[256]; /*!< (@ 0x00000000) Color Palette 0 Plane for Graphics 1 Plane */ + + struct + { + __IOM uint32_t B : 8; /*!< [7..0] B Value of Color Palette n Plane for Graphics m Plane */ + __IOM uint32_t G : 8; /*!< [15..8] G Value of Color Palette n Plane for Graphics m Plane */ + __IOM uint32_t R : 8; /*!< [23..16] R Value of Color Palette n Plane for Graphics m Plane */ + __IOM uint32_t A : 8; /*!< [31..24] Alpha Blending Value of Color Palette n Plane for Graphics + * m Plane */ + } GR1_CLUT0_b[256]; + }; + + union + { + __IOM uint32_t GR1_CLUT1[256]; /*!< (@ 0x00000400) Color Palette 1 Plane for Graphics 1 Plane */ + + struct + { + __IOM uint32_t B : 8; /*!< [7..0] B Value of Color Palette n Plane for Graphics m Plane */ + __IOM uint32_t G : 8; /*!< [15..8] G Value of Color Palette n Plane for Graphics m Plane */ + __IOM uint32_t R : 8; /*!< [23..16] R Value of Color Palette n Plane for Graphics m Plane */ + __IOM uint32_t A : 8; /*!< [31..24] Alpha Blending Value of Color Palette n Plane for Graphics + * m Plane */ + } GR1_CLUT1_b[256]; + }; + + union + { + __IOM uint32_t GR2_CLUT0[256]; /*!< (@ 0x00000800) Color Palette 0 Plane for Graphics 2 Plane */ + + struct + { + __IOM uint32_t B : 8; /*!< [7..0] B Value of Color Palette n Plane for Graphics m Plane */ + __IOM uint32_t G : 8; /*!< [15..8] G Value of Color Palette n Plane for Graphics m Plane */ + __IOM uint32_t R : 8; /*!< [23..16] R Value of Color Palette n Plane for Graphics m Plane */ + __IOM uint32_t A : 8; /*!< [31..24] Alpha Blending Value of Color Palette n Plane for Graphics + * m Plane */ + } GR2_CLUT0_b[256]; + }; + + union + { + __IOM uint32_t GR2_CLUT1[256]; /*!< (@ 0x00000C00) Color Palette 1 Plane for Graphics 2 Plane */ + + struct + { + __IOM uint32_t B : 8; /*!< [7..0] B Value of Color Palette n Plane for Graphics m Plane */ + __IOM uint32_t G : 8; /*!< [15..8] G Value of Color Palette n Plane for Graphics m Plane */ + __IOM uint32_t R : 8; /*!< [23..16] R Value of Color Palette n Plane for Graphics m Plane */ + __IOM uint32_t A : 8; /*!< [31..24] Alpha Blending Value of Color Palette n Plane for Graphics + * m Plane */ + } GR2_CLUT1_b[256]; + }; + __IOM R_GLCDC_BG_Type BG; /*!< (@ 0x00001000) Background Registers */ + __IM uint32_t RESERVED[57]; + __IOM R_GLCDC_GR_Type GR[2]; /*!< (@ 0x00001100) Layer Registers */ + __IOM R_GLCDC_GAM_Type GAM[3]; /*!< (@ 0x00001300) Gamma Settings */ + __IOM R_GLCDC_OUT_Type OUT; /*!< (@ 0x000013C0) Output Control Registers */ + __IM uint32_t RESERVED1[6]; + __IOM R_GLCDC_TCON_Type TCON; /*!< (@ 0x00001400) Timing Control Registers */ + __IM uint32_t RESERVED2[5]; + __IOM R_GLCDC_SYSCNT_Type SYSCNT; /*!< (@ 0x00001440) GLCDC System Control Registers */ +} R_GLCDC_Type; /*!< Size = 5204 (0x1454) */ + +/* =========================================================================================================================== */ +/* ================ 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_DPHYCNT ================ */ +/* =========================================================================================================================== */ + +/** + * @brief D-PHY Controller Top (R_DPHYCNT) + */ + +typedef struct /*!< (@ 0x40346C00) R_DPHYCNT Structure */ +{ + union + { + __IOM uint32_t DPHYREFCR; /*!< (@ 0x00000000) D-PHY Reference Clock Setting Register */ + + struct + { + __IOM uint32_t RFREQ : 8; /*!< [7..0] Reference Clock Frequency Setting */ + uint32_t : 24; + } DPHYREFCR_b; + }; + + union + { + __IOM uint32_t DPHYPLFCR; /*!< (@ 0x00000004) D-PHY PLL Frequency Control Register */ + + struct + { + __IOM uint32_t IDIV : 2; /*!< [1..0] D-PHY PLL Input Frequency Division Ratio Select */ + uint32_t : 6; + __IOM uint32_t NFMUL : 2; /*!< [9..8] D-PHY PLL Frequency Multiplication Factor Select (Fractional + * Part) */ + uint32_t : 6; + __IOM uint32_t NMUL : 8; /*!< [23..16] D-PHY PLL Frequency Multiplication Factor Select (Integer + * Part) */ + uint32_t : 8; + } DPHYPLFCR_b; + }; + + union + { + __IOM uint32_t DPHYPLOCR; /*!< (@ 0x00000008) D-PHY PLL Operation Control Register */ + + struct + { + __IOM uint32_t PLLSTP : 1; /*!< [0..0] D-PHY PLL Operation Control */ + uint32_t : 31; + } DPHYPLOCR_b; + }; + + union + { + __IOM uint32_t DPHYESCCR; /*!< (@ 0x0000000C) D-PHY Escape Mode Clock Control Register */ + + struct + { + __IOM uint32_t ESCDIV : 5; /*!< [4..0] Escape Mode Transfer Clock Division Ratio */ + uint32_t : 27; + } DPHYESCCR_b; + }; + + union + { + __IOM uint32_t DPHYPWRCR; /*!< (@ 0x00000010) D-PHY Power Supplying Control Register */ + + struct + { + __IOM uint32_t PWRSEN : 1; /*!< [0..0] D-PHY Power Supplying Control */ + uint32_t : 31; + } DPHYPWRCR_b; + }; + __IM uint32_t RESERVED[2]; + + union + { + __IM uint32_t DPHYSFR; /*!< (@ 0x0000001C) D-PHY Status Flag Register */ + + struct + { + __IM uint32_t PWRSF : 1; /*!< [0..0] D-PHY LDO Power-on Status Flag */ + uint32_t : 7; + __IM uint32_t PLLSF : 1; /*!< [8..8] D-PHY PLL Oscillation Stabilization Flag */ + uint32_t : 23; + } DPHYSFR_b; + }; + + union + { + __IOM uint32_t DPHYOCR; /*!< (@ 0x00000020) D-PHY Operation Control Register */ + + struct + { + __IOM uint32_t DPHYEN : 1; /*!< [0..0] D-PHY Operation Control */ + uint32_t : 31; + } DPHYOCR_b; + }; + + union + { + __IOM uint32_t DPHYTIM1; /*!< (@ 0x00000024) D-PHY Timing Control Register 1 */ + + struct + { + __IOM uint32_t TINIT : 19; /*!< [18..0] D-PHY T_INIT Parameter Setting */ + uint32_t : 13; + } DPHYTIM1_b; + }; + + union + { + __IOM uint32_t DPHYTIM2; /*!< (@ 0x00000028) D-PHY Timing Control Register 2 */ + + struct + { + __IOM uint32_t TCLKPREP : 8; /*!< [7..0] D-PHY T_CLK_PREPARE Parameter Setting */ + uint32_t : 24; + } DPHYTIM2_b; + }; + + union + { + __IOM uint32_t DPHYTIM3; /*!< (@ 0x0000002C) D-PHY Timing Control Register 3 */ + + struct + { + __IOM uint32_t THSPREP : 8; /*!< [7..0] D-PHY T_THS_PREPARE Parameter Setting */ + uint32_t : 24; + } DPHYTIM3_b; + }; + + union + { + __IOM uint32_t DPHYTIM4; /*!< (@ 0x00000030) D-PHY Timing Control Register 4 */ + + struct + { + __IOM uint32_t TCLKZERO : 8; /*!< [7..0] D-PHY T_CLK_ZERO Parameter Setting */ + __IOM uint32_t TCLKPRE : 8; /*!< [15..8] D-PHY T_TCLK_PRE Parameter Setting */ + __IOM uint32_t TCLKPOST : 8; /*!< [23..16] D-PHY T_TCLK_POST Parameter Setting */ + __IOM uint32_t TCLKTRL : 8; /*!< [31..24] D-PHY T_TCLK_TRAIL Parameter Setting */ + } DPHYTIM4_b; + }; + + union + { + __IOM uint32_t DPHYTIM5; /*!< (@ 0x00000034) D-PHY Timing Control Register 5 */ + + struct + { + __IOM uint32_t THSZERO : 8; /*!< [7..0] D-PHY T_THS_ZERO Parameter Setting */ + __IOM uint32_t THSTRL : 8; /*!< [15..8] D-PHY T_THS_TRAIL Parameter Setting */ + __IOM uint32_t THSEXIT : 8; /*!< [23..16] D-PHY T_THS_EXIT Parameter Setting */ + uint32_t : 8; + } DPHYTIM5_b; + }; + + union + { + __IOM uint32_t DPHYTIM6; /*!< (@ 0x00000038) D-PHY Timing Control Register 6 */ + + struct + { + __IOM uint32_t TLPX : 8; /*!< [7..0] D-PHY T_TLPX Parameter Setting */ + uint32_t : 24; + } DPHYTIM6_b; + }; +} R_DPHYCNT_Type; /*!< Size = 60 (0x3c) */ + +/* =========================================================================================================================== */ +/* ================ R_DSILINK ================ */ +/* =========================================================================================================================== */ + +/** + * @brief DSI Link (R_DSILINK) + */ + +typedef struct /*!< (@ 0x40346000) R_DSILINK Structure */ +{ + union + { + __IM uint32_t ISR; /*!< (@ 0x00000000) Interrupt Status Register */ + + struct + { + __IM uint32_t SQ0 : 1; /*!< [0..0] Sequence Channel-0 Interrupt Flag */ + uint32_t : 3; + __IM uint32_t SQ1 : 1; /*!< [4..4] Sequence Channel-1 Interrupt Flag */ + uint32_t : 3; + __IM uint32_t VM : 1; /*!< [8..8] Video Mode Interrupt Flag */ + uint32_t : 3; + __IM uint32_t RCV : 1; /*!< [12..12] Receive Interrupt Flag */ + uint32_t : 3; + __IM uint32_t FERR : 1; /*!< [16..16] Fatal Error Interrupt Flag */ + uint32_t : 3; + __IM uint32_t PPI : 1; /*!< [20..20] PPI Interrupt Flag */ + uint32_t : 11; + } ISR_b; + }; + __IM uint32_t RESERVED[3]; + + union + { + __IM uint32_t LINKSR; /*!< (@ 0x00000010) Link Status Register */ + + struct + { + __IM uint32_t SQ0RUN : 1; /*!< [0..0] Sequence Channel-0 Running Flag */ + uint32_t : 3; + __IM uint32_t SQ1RUN : 1; /*!< [4..4] Sequence Channel-1 Running Flag */ + uint32_t : 3; + __IM uint32_t VRUN : 1; /*!< [8..8] Video Mode Operation Running Flag */ + uint32_t : 3; + __IM uint32_t HSBUSY : 1; /*!< [12..12] HS Operation Busy Flag */ + __IM uint32_t LPBUSY : 1; /*!< [13..13] LP Operation Busy Flag */ + uint32_t : 18; + } LINKSR_b; + }; + __IM uint32_t RESERVED1[59]; + + union + { + __IOM uint32_t TXSETR; /*!< (@ 0x00000100) Transmit Set Register */ + + struct + { + __IOM uint32_t NUMLANE : 2; /*!< [1..0] Number of Lane */ + uint32_t : 6; + __IOM uint32_t CLEN : 1; /*!< [8..8] Clock Lane Enable */ + __IOM uint32_t DLEN : 1; /*!< [9..9] Data Lane Enable */ + uint32_t : 22; + } TXSETR_b; + }; + + union + { + __IOM uint32_t HSCLKSETR; /*!< (@ 0x00000104) HS Clock Set Register */ + + struct + { + __IOM uint32_t HSCLST : 1; /*!< [0..0] HS Clock Start */ + __IOM uint32_t HSCLMD : 1; /*!< [1..1] HS Clock Running Mode */ + uint32_t : 30; + } HSCLKSETR_b; + }; + + union + { + __IOM uint32_t ULPSSETR; /*!< (@ 0x00000108) ULPS Set Register */ + + struct + { + __IOM uint32_t WKUP : 8; /*!< [7..0] ULPS Wakeup Period */ + uint32_t : 24; + } ULPSSETR_b; + }; + + union + { + __OM uint32_t ULPSCR; /*!< (@ 0x0000010C) ULPS Control Register */ + + struct + { + uint32_t : 24; + __OM uint32_t CLENT : 1; /*!< [24..24] CL ULPS Enter */ + __OM uint32_t CLEXIT : 1; /*!< [25..25] CL ULPS Exit */ + uint32_t : 2; + __OM uint32_t DLENT : 1; /*!< [28..28] DL ULPS Enter */ + __OM uint32_t DLEXIT : 1; /*!< [29..29] DL ULPS Exit */ + uint32_t : 2; + } ULPSCR_b; + }; + + union + { + __IOM uint32_t RSTCR; /*!< (@ 0x00000110) Reset Control Register */ + + struct + { + __IOM uint32_t SWRST : 1; /*!< [0..0] Software Reset */ + uint32_t : 15; + __IOM uint32_t FTXSTP : 1; /*!< [16..16] Force Tx Stop Mode */ + uint32_t : 15; + } RSTCR_b; + }; + + union + { + __IM uint32_t RSTSR; /*!< (@ 0x00000114) Reset Status Register */ + + struct + { + __IM uint32_t RSTHS : 1; /*!< [0..0] HS Software Reset Status */ + __IM uint32_t RSTLP : 1; /*!< [1..1] LP Software Reset Status */ + __IM uint32_t RSTAPB : 1; /*!< [2..2] APB Software Reset Status */ + __IM uint32_t RSTAXI : 1; /*!< [3..3] AXI Software Reset Status */ + __IM uint32_t RSTV : 1; /*!< [4..4] Video Software Reset Status */ + uint32_t : 3; + __IM uint32_t DL0STP : 1; /*!< [8..8] Data Lane-0 Stop Status */ + __IM uint32_t DL1STP : 1; /*!< [9..9] Data Lane-1 Stop Status */ + uint32_t : 5; + __IM uint32_t DL0DIR : 1; /*!< [15..15] Data Lane-0 Direction */ + uint32_t : 16; + } RSTSR_b; + }; + __IM uint32_t RESERVED2[2]; + + union + { + __IOM uint32_t DSISETR; /*!< (@ 0x00000120) DSI Set Register */ + + struct + { + __IOM uint32_t MRPSZ : 16; /*!< [15..0] Maximum Return Packet Size */ + __IOM uint32_t ECCEN : 1; /*!< [16..16] ECC Check Enable */ + uint32_t : 3; + __IOM uint32_t VC0CRCEN : 1; /*!< [20..20] VC-0 CRC Check Enable */ + __IOM uint32_t VC1CRCEN : 1; /*!< [21..21] VC-1 CRC Check Enable */ + __IOM uint32_t VC2CRCEN : 1; /*!< [22..22] VC-2 CRC Check Enable */ + __IOM uint32_t VC3CRCEN : 1; /*!< [23..23] VC-3 CRC Check Enable */ + uint32_t : 5; + __IOM uint32_t SCREN : 1; /*!< [29..29] Data Scramble Enable */ + __IOM uint32_t EXTEMD : 1; /*!< [30..30] External Tearing Effect Detection Sense Select */ + __IOM uint32_t EOTPEN : 1; /*!< [31..31] HS Transfer EoTp Enable */ + } DSISETR_b; + }; + __IM uint32_t RESERVED3[15]; + + union + { + __IOM uint32_t TXPPD0R; /*!< (@ 0x00000160) Transmit Packet Payload Data 0 Register */ + + struct + { + __IOM uint32_t DATA0 : 8; /*!< [7..0] Payload Data 0 */ + __IOM uint32_t DATA1 : 8; /*!< [15..8] Payload Data 1 */ + __IOM uint32_t DATA2 : 8; /*!< [23..16] Payload Data 2 */ + __IOM uint32_t DATA3 : 8; /*!< [31..24] Payload Data 3 */ + } TXPPD0R_b; + }; + + union + { + __IOM uint32_t TXPPD1R; /*!< (@ 0x00000164) Transmit Packet Payload Data 1 Register */ + + struct + { + __IOM uint32_t DATA4 : 8; /*!< [7..0] Payload Data 4 */ + __IOM uint32_t DATA5 : 8; /*!< [15..8] Payload Data 5 */ + __IOM uint32_t DATA6 : 8; /*!< [23..16] Payload Data 6 */ + __IOM uint32_t DATA7 : 8; /*!< [31..24] Payload Data 7 */ + } TXPPD1R_b; + }; + + union + { + __IOM uint32_t TXPPD2R; /*!< (@ 0x00000168) Transmit Packet Payload Data 2 Register */ + + struct + { + __IOM uint32_t DATA8 : 8; /*!< [7..0] Payload Data 8 */ + __IOM uint32_t DATA9 : 8; /*!< [15..8] Payload Data 9 */ + __IOM uint32_t DATA10 : 8; /*!< [23..16] Payload Data 10 */ + __IOM uint32_t DATA11 : 8; /*!< [31..24] Payload Data 11 */ + } TXPPD2R_b; + }; + + union + { + __IOM uint32_t TXPPD3R; /*!< (@ 0x0000016C) Transmit Packet Payload Data 3 Register */ + + struct + { + __IOM uint32_t DATA12 : 8; /*!< [7..0] Payload Data 12 */ + __IOM uint32_t DATA13 : 8; /*!< [15..8] Payload Data 13 */ + __IOM uint32_t DATA14 : 8; /*!< [23..16] Payload Data 14 */ + __IOM uint32_t DATA15 : 8; /*!< [31..24] Payload Data 15 */ + } TXPPD3R_b; + }; + __IM uint32_t RESERVED4[36]; + + union + { + __IM uint32_t RXSR; /*!< (@ 0x00000200) Receive Status Register */ + + struct + { + __IM uint32_t BTAREND : 1; /*!< [0..0] BTA Request End Interrupt Flag */ + __IM uint32_t LRXHTO : 1; /*!< [1..1] LP-RX Host Processor Timeout Interrupt Flag */ + __IM uint32_t TATO : 1; /*!< [2..2] Turnaround Acknowledge Timeout Interrupt Flag */ + uint32_t : 5; + __IM uint32_t RXRESP : 1; /*!< [8..8] Response Packet Receive Interrupt Flag */ + uint32_t : 1; + __IM uint32_t RXEOTP : 1; /*!< [10..10] EoTp Receive Interrupt Flag */ + uint32_t : 2; + __IM uint32_t RXTE : 1; /*!< [13..13] Tearing Effect Trigger Receive Interrupt Flag */ + __IM uint32_t RXACK : 1; /*!< [14..14] ACK Trigger Receive Interrupt Flag */ + __IM uint32_t EXTEDET : 1; /*!< [15..15] External Tearing Effect Detect Interrupt Flag */ + __IM uint32_t MLFERR : 1; /*!< [16..16] Malform Error Interrupt Flag */ + __IM uint32_t ECCERRM : 1; /*!< [17..17] Multi Bit ECC Error Interrupt Flag */ + __IM uint32_t UNEXERR : 1; /*!< [18..18] Unexpected Packet Error Interrupt Flag */ + uint32_t : 1; + __IM uint32_t WCERR : 1; /*!< [20..20] Word Count Error Interrupt Flag */ + __IM uint32_t CRCERR : 1; /*!< [21..21] CRC Error Interrupt Flag */ + __IM uint32_t IBERR : 1; /*!< [22..22] Internal Bus Error Interrupt Flag */ + __IM uint32_t RXOVFERR : 1; /*!< [23..23] Receive Buffer Overflow Error Interrupt Flag */ + __IM uint32_t PRTOERR : 1; /*!< [24..24] Peripheral Response Timeout Error Interrupt Flag */ + __IM uint32_t NORESERR : 1; /*!< [25..25] No Response Error Interrupt Flag */ + __IM uint32_t RSIZEERR : 1; /*!< [26..26] Return Packet Size Error Interrupt Flag */ + uint32_t : 1; + __IM uint32_t ECCERRS : 1; /*!< [28..28] Single Bit ECC Error Interrupt Flag */ + uint32_t : 1; + __IM uint32_t RXAKE : 1; /*!< [30..30] Acknowledge and Error Report Receive Interrupt Flag */ + uint32_t : 1; + } RXSR_b; + }; + + union + { + __IOM uint32_t RXSCR; /*!< (@ 0x00000204) Receive Status Clear Register */ + + struct + { + __IOM uint32_t BTAREND : 1; /*!< [0..0] BTA Request End Interrupt Flag Clear */ + __IOM uint32_t LRXHTO : 1; /*!< [1..1] LP-RX Host Processor Timeout Interrupt Flag Clear */ + __IOM uint32_t TATO : 1; /*!< [2..2] Turnaround Acknowledge Timeout Interrupt Flag Clear */ + uint32_t : 5; + __IOM uint32_t RXRESP : 1; /*!< [8..8] Response Packet Receive Interrupt Flag Clear */ + uint32_t : 1; + __IOM uint32_t RXEOTP : 1; /*!< [10..10] EoTp Receive Interrupt Flag Clear */ + uint32_t : 2; + __IOM uint32_t RXTE : 1; /*!< [13..13] Tearing Effect Trigger Receive Interrupt Flag Clear */ + __IOM uint32_t RXACK : 1; /*!< [14..14] ACK Trigger Receive Interrupt Flag Clear */ + __IOM uint32_t EXTEDET : 1; /*!< [15..15] External Tearing Effect Detect Interrupt Flag Clear */ + __IOM uint32_t MLFERR : 1; /*!< [16..16] Malform Error Interrupt Flag Clear */ + __IOM uint32_t ECCERRM : 1; /*!< [17..17] Multi Bit ECC Error Interrupt Flag Clear */ + __IOM uint32_t UNEXERR : 1; /*!< [18..18] Unexpected Packet Error Interrupt Flag Clear */ + uint32_t : 1; + __IOM uint32_t WCERR : 1; /*!< [20..20] Word Count Error Interrupt Flag Clear */ + __IOM uint32_t CRCERR : 1; /*!< [21..21] CRC Error Interrupt Flag Clear */ + __IOM uint32_t IBERR : 1; /*!< [22..22] Internal Bus Error Interrupt Flag Clear */ + __IOM uint32_t RXOVFERR : 1; /*!< [23..23] Receive Buffer Overflow Error Interrupt Flag Clear */ + __IOM uint32_t PRTOERR : 1; /*!< [24..24] Peripheral Response Timeout Error Interrupt Flag Clear */ + __IOM uint32_t NORESERR : 1; /*!< [25..25] No Response Error Interrupt Flag Clear */ + __IOM uint32_t RSIZEERR : 1; /*!< [26..26] Return Packet Size Error Interrupt Flag Clear */ + uint32_t : 1; + __IOM uint32_t ECCERRS : 1; /*!< [28..28] Single Bit ECC Error Interrupt Flag Clear */ + uint32_t : 1; + __IOM uint32_t RXAKE : 1; /*!< [30..30] Acknowledge and Error Report Receive Interrupt Flag + * Clear */ + uint32_t : 1; + } RXSCR_b; + }; + + union + { + __IOM uint32_t RXIER; /*!< (@ 0x00000208) Receive Interrupt Enable Register */ + + struct + { + __IOM uint32_t BTAREND : 1; /*!< [0..0] BTA Request End Interrupt Enable */ + __IOM uint32_t LRXHTO : 1; /*!< [1..1] LP-RX Host Processor Timeout Interrupt Enable */ + __IOM uint32_t TATO : 1; /*!< [2..2] Turnaround Acknowledge Timeout Interrupt Enable */ + uint32_t : 5; + __IOM uint32_t RXRESP : 1; /*!< [8..8] Response Packet Receive Interrupt Enable */ + uint32_t : 1; + __IOM uint32_t RXEOTP : 1; /*!< [10..10] EoTp Receive Interrupt Enable */ + uint32_t : 2; + __IOM uint32_t RXTE : 1; /*!< [13..13] Tearing Effect Trigger Receive Interrupt Enable */ + __IOM uint32_t RXACK : 1; /*!< [14..14] ACK Trigger Receive Interrupt Enable */ + __IOM uint32_t EXTEDET : 1; /*!< [15..15] External Tearing Effect Detect Interrupt Enable */ + __IOM uint32_t MLFERR : 1; /*!< [16..16] Malform Error Interrupt Enable */ + __IOM uint32_t ECCERRM : 1; /*!< [17..17] Multi Bit ECC Error Interrupt Enable */ + __IOM uint32_t UNEXERR : 1; /*!< [18..18] Unexpected Packet Error Interrupt Enable */ + uint32_t : 1; + __IOM uint32_t WCERR : 1; /*!< [20..20] Word Count Error Interrupt Enable */ + __IOM uint32_t CRCERR : 1; /*!< [21..21] CRC Error Interrupt Enable */ + __IOM uint32_t IBERR : 1; /*!< [22..22] Internal Bus Error Interrupt Enable */ + __IOM uint32_t RXOVFERR : 1; /*!< [23..23] Receive Buffer Overflow Error Interrupt Enable */ + __IOM uint32_t PRTOERR : 1; /*!< [24..24] Peripheral Response Timeout Error Interrupt Enable */ + __IOM uint32_t NORESERR : 1; /*!< [25..25] No Response Error Interrupt Enable */ + __IOM uint32_t RSIZEERR : 1; /*!< [26..26] Return Packet Size Error Interrupt Enable */ + uint32_t : 1; + __IOM uint32_t ECCERRS : 1; /*!< [28..28] Single Bit ECC Error Interrupt Enable */ + uint32_t : 1; + __IOM uint32_t RXAKE : 1; /*!< [30..30] Acknowledge and Error Report Receive Interrupt Enable */ + uint32_t : 1; + } RXIER_b; + }; + __IM uint32_t RESERVED5; + + union + { + __IOM uint32_t PRESPTOBTASETR; /*!< (@ 0x00000210) Peripheral Response Timeout BTA Set Register */ + + struct + { + __IOM uint32_t PRTBTA : 32; /*!< [31..0] Peripheral Response Timeout Count */ + } PRESPTOBTASETR_b; + }; + + union + { + __IOM uint32_t PRESPTOLPSETR; /*!< (@ 0x00000214) Peripheral Response Timeout LP Set Register */ + + struct + { + __IOM uint32_t LPWTO : 16; /*!< [15..0] LPDT WRITE Request Timeout */ + __IOM uint32_t LPRTO : 16; /*!< [31..16] LPDT READ Request Timeout */ + } PRESPTOLPSETR_b; + }; + + union + { + __IOM uint32_t PRESPTOHSSETR; /*!< (@ 0x00000218) Peripheral Response Timeout HS Set Register */ + + struct + { + __IOM uint32_t HSWTO : 16; /*!< [15..0] HS WRITE Request Timeout */ + __IOM uint32_t HSRTO : 16; /*!< [31..16] HS READ Request Timeout */ + } PRESPTOHSSETR_b; + }; + __IM uint32_t RESERVED6; + + union + { + __IM uint32_t AKEPLATIR; /*!< (@ 0x00000220) Acknowledge and Error Report Packet Parameter + * Latest Info Register */ + + struct + { + __IM uint32_t EREP : 16; /*!< [15..0] Error Report */ + __IM uint32_t VC : 4; /*!< [19..16] Virtual Channel ID */ + uint32_t : 12; + } AKEPLATIR_b; + }; + + union + { + __IM uint32_t AKEPACMSR; /*!< (@ 0x00000224) Acknowledge and Error Report Packet Parameter + * Accumulate Status Register */ + + struct + { + __IM uint32_t AEREP : 16; /*!< [15..0] Accumulated Error Report */ + __IM uint32_t AVC : 4; /*!< [19..16] Virtual Channel ID */ + uint32_t : 12; + } AKEPACMSR_b; + }; + + union + { + __IOM uint32_t AKEPSCR; /*!< (@ 0x00000228) Acknowledge and Error Report Packet Parameter + * Status Clear Register */ + + struct + { + __IOM uint32_t AEREP : 16; /*!< [15..0] Accumulated Error Report Clear */ + __IM uint32_t AVC : 4; /*!< [19..16] Virtual Channel ID */ + uint32_t : 12; + } AKEPSCR_b; + }; + __IM uint32_t RESERVED7; + + union + { + __IM uint32_t RXRSSR; /*!< (@ 0x00000230) Receive Result Saved Status Register */ + + struct + { + __IM uint32_t SLT0VLD : 1; /*!< [0..0] Slot-0 Valid Flag */ + __IM uint32_t SLT1VLD : 1; /*!< [1..1] Slot-1 Valid Flag */ + __IM uint32_t SLT2VLD : 1; /*!< [2..2] Slot-2 Valid Flag */ + __IM uint32_t SLT3VLD : 1; /*!< [3..3] Slot-3 Valid Flag */ + uint32_t : 28; + } RXRSSR_b; + }; + + union + { + __IOM uint32_t RXRSSCR; /*!< (@ 0x00000234) Receive Result Saved Status Clear Register */ + + struct + { + __IOM uint32_t SLT0VLD : 1; /*!< [0..0] Slot-0 Valid Flag Clear */ + __IOM uint32_t SLT1VLD : 1; /*!< [1..1] Slot-1 Valid Flag Clear */ + __IOM uint32_t SLT2VLD : 1; /*!< [2..2] Slot-2 Valid Flag Clear */ + __IOM uint32_t SLT3VLD : 1; /*!< [3..3] Slot-3 Valid Flag Clear */ + uint32_t : 28; + } RXRSSCR_b; + }; + + union + { + __IM uint32_t RXRINFOOWSR; /*!< (@ 0x00000238) Receive Result Info Overwrite Status Register */ + + struct + { + __IM uint32_t SL0OW : 1; /*!< [0..0] Slot-0 Information Overwrite Flag */ + __IM uint32_t SL1OW : 1; /*!< [1..1] Slot-1 Information Overwrite Flag */ + __IM uint32_t SL2OW : 1; /*!< [2..2] Slot-2 Information Overwrite Flag */ + __IM uint32_t SL3OW : 1; /*!< [3..3] Slot-3 Information Overwrite Flag */ + uint32_t : 28; + } RXRINFOOWSR_b; + }; + + union + { + __IOM uint32_t RXRINFOOWSCR; /*!< (@ 0x0000023C) Receive Result Info Overwrite Status Clear Register */ + + struct + { + __IOM uint32_t SL0OW : 1; /*!< [0..0] Slot-0 Information Overwrite Flag Clear */ + __IOM uint32_t SL1OW : 1; /*!< [1..1] Slot-1 Information Overwrite Flag Clear */ + __IOM uint32_t SL2OW : 1; /*!< [2..2] Slot-2 Information Overwrite Flag Clear */ + __IOM uint32_t SL3OW : 1; /*!< [3..3] Slot-3 Information Overwrite Flag Clear */ + uint32_t : 28; + } RXRINFOOWSCR_b; + }; + + union + { + union + { + __IM uint32_t RXRSS0R; /*!< (@ 0x00000240) Receive Result Save Slot-0 Register */ + + struct + { + __IM uint32_t DATA0 : 8; /*!< [7..0] Data 0 */ + __IM uint32_t DATA1 : 8; /*!< [15..8] Data 1 */ + __IM uint32_t DT : 6; /*!< [21..16] Data Type */ + __IM uint32_t VC : 2; /*!< [23..22] Virtual Channel */ + __IM uint32_t FMT : 1; /*!< [24..24] Packet Format */ + __IM uint32_t RXSUC : 1; /*!< [25..25] Receive Success */ + __IM uint32_t RXFERR : 1; /*!< [26..26] Fatal Error */ + __IM uint32_t RXFAIL : 1; /*!< [27..27] Receive Fail */ + __IM uint32_t RXPFAIL : 1; /*!< [28..28] Receive Packet Data Fail */ + __IM uint32_t RXCERR : 1; /*!< [29..29] Receive Correctable Error */ + __IM uint32_t RXAKE : 1; /*!< [30..30] Receive Acknowledge and Error Report Packet */ + __IM uint32_t INFOOW : 1; /*!< [31..31] Information Overwrite */ + } RXRSS0R_b; + }; + + struct + { + union + { + union + { + __IM uint16_t RXRSS0R_L; /*!< (@ 0x00000240) Receive Result Save Slot-0 Register */ + + struct + { + __IM uint16_t DATA0 : 8; /*!< [7..0] Data 0 */ + __IM uint16_t DATA1 : 8; /*!< [15..8] Data 1 */ + } RXRSS0R_L_b; + }; + + struct + { + union + { + __IM uint8_t RXRSS0R_LL; /*!< (@ 0x00000240) Receive Result Save Slot-0 Register */ + + struct + { + __IM uint8_t DATA0 : 8; /*!< [7..0] Data 0 */ + } RXRSS0R_LL_b; + }; + + union + { + __IM uint8_t RXRSS0R_LH; /*!< (@ 0x00000241) Receive Result Save Slot-0 Register */ + + struct + { + __IM uint8_t DATA1 : 8; /*!< [7..0] Data 1 */ + } RXRSS0R_LH_b; + }; + }; + }; + + union + { + union + { + __IM uint16_t RXRSS0R_H; /*!< (@ 0x00000242) Receive Result Save Slot-0 Register */ + + struct + { + __IM uint16_t DT : 6; /*!< [5..0] Data Type */ + __IM uint16_t VC : 2; /*!< [7..6] Virtual Channel */ + __IM uint16_t FMT : 1; /*!< [8..8] Packet Format */ + __IM uint16_t RXSUC : 1; /*!< [9..9] Receive Success */ + __IM uint16_t RXFERR : 1; /*!< [10..10] Fatal Error */ + __IM uint16_t RXFAIL : 1; /*!< [11..11] Receive Fail */ + __IM uint16_t RXPFAIL : 1; /*!< [12..12] Receive Packet Data Fail */ + __IM uint16_t RXCERR : 1; /*!< [13..13] Receive Correctable Error */ + __IM uint16_t RXAKE : 1; /*!< [14..14] Receive Acknowledge and Error Report Packet */ + __IM uint16_t INFOOW : 1; /*!< [15..15] Information Overwrite */ + } RXRSS0R_H_b; + }; + + struct + { + union + { + __IM uint8_t RXRSS0R_HL; /*!< (@ 0x00000242) Receive Result Save Slot-0 Register */ + + struct + { + __IM uint8_t DT : 6; /*!< [5..0] Data Type */ + __IM uint8_t VC : 2; /*!< [7..6] Virtual Channel */ + } RXRSS0R_HL_b; + }; + + union + { + __IM uint8_t RXRSS0R_HH; /*!< (@ 0x00000243) Receive Result Save Slot-0 Register */ + + struct + { + __IM uint8_t FMT : 1; /*!< [0..0] Packet Format */ + __IM uint8_t RXSUC : 1; /*!< [1..1] Receive Success */ + __IM uint8_t RXFERR : 1; /*!< [2..2] Fatal Error */ + __IM uint8_t RXFAIL : 1; /*!< [3..3] Receive Fail */ + __IM uint8_t RXPFAIL : 1; /*!< [4..4] Receive Packet Data Fail */ + __IM uint8_t RXCERR : 1; /*!< [5..5] Receive Correctable Error */ + __IM uint8_t RXAKE : 1; /*!< [6..6] Receive Acknowledge and Error Report Packet */ + __IM uint8_t INFOOW : 1; /*!< [7..7] Information Overwrite */ + } RXRSS0R_HH_b; + }; + }; + }; + }; + }; + + union + { + union + { + __IM uint32_t RXRSS1R; /*!< (@ 0x00000244) Receive Result Save Slot-1 Register */ + + struct + { + __IM uint32_t DATA0 : 8; /*!< [7..0] Data 0 */ + __IM uint32_t DATA1 : 8; /*!< [15..8] Data 1 */ + __IM uint32_t DT : 6; /*!< [21..16] Data Type */ + __IM uint32_t VC : 2; /*!< [23..22] Virtual Channel */ + __IM uint32_t FMT : 1; /*!< [24..24] Packet Format */ + __IM uint32_t RXSUC : 1; /*!< [25..25] Receive Success */ + __IM uint32_t RXFERR : 1; /*!< [26..26] Fatal Error */ + __IM uint32_t RXFAIL : 1; /*!< [27..27] Receive Fail */ + __IM uint32_t RXPFAIL : 1; /*!< [28..28] Receive Packet Data Fail */ + __IM uint32_t RXCERR : 1; /*!< [29..29] Receive Correctable Error */ + __IM uint32_t RXAKE : 1; /*!< [30..30] Receive Acknowledge and Error Report Packet */ + __IM uint32_t INFOOW : 1; /*!< [31..31] Information Overwrite */ + } RXRSS1R_b; + }; + + struct + { + union + { + union + { + __IM uint16_t RXRSS1R_L; /*!< (@ 0x00000244) Receive Result Save Slot-1 Register */ + + struct + { + __IM uint16_t DATA0 : 8; /*!< [7..0] Data 0 */ + __IM uint16_t DATA1 : 8; /*!< [15..8] Data 1 */ + } RXRSS1R_L_b; + }; + + struct + { + union + { + __IM uint8_t RXRSS1R_LL; /*!< (@ 0x00000244) Receive Result Save Slot-1 Register */ + + struct + { + __IM uint8_t DATA0 : 8; /*!< [7..0] Data 0 */ + } RXRSS1R_LL_b; + }; + + union + { + __IM uint8_t RXRSS1R_LH; /*!< (@ 0x00000245) Receive Result Save Slot-1 Register */ + + struct + { + __IM uint8_t DATA1 : 8; /*!< [7..0] Data 1 */ + } RXRSS1R_LH_b; + }; + }; + }; + + union + { + union + { + __IM uint16_t RXRSS1R_H; /*!< (@ 0x00000246) Receive Result Save Slot-1 Register */ + + struct + { + __IM uint16_t DT : 6; /*!< [5..0] Data Type */ + __IM uint16_t VC : 2; /*!< [7..6] Virtual Channel */ + __IM uint16_t FMT : 1; /*!< [8..8] Packet Format */ + __IM uint16_t RXSUC : 1; /*!< [9..9] Receive Success */ + __IM uint16_t RXFERR : 1; /*!< [10..10] Fatal Error */ + __IM uint16_t RXFAIL : 1; /*!< [11..11] Receive Fail */ + __IM uint16_t RXPFAIL : 1; /*!< [12..12] Receive Packet Data Fail */ + __IM uint16_t RXCERR : 1; /*!< [13..13] Receive Correctable Error */ + __IM uint16_t RXAKE : 1; /*!< [14..14] Receive Acknowledge and Error Report Packet */ + __IM uint16_t INFOOW : 1; /*!< [15..15] Information Overwrite */ + } RXRSS1R_H_b; + }; + + struct + { + union + { + __IM uint8_t RXRSS1R_HL; /*!< (@ 0x00000246) Receive Result Save Slot-1 Register */ + + struct + { + __IM uint8_t DT : 6; /*!< [5..0] Data Type */ + __IM uint8_t VC : 2; /*!< [7..6] Virtual Channel */ + } RXRSS1R_HL_b; + }; + + union + { + __IM uint8_t RXRSS1R_HH; /*!< (@ 0x00000247) Receive Result Save Slot-1 Register */ + + struct + { + __IM uint8_t FMT : 1; /*!< [0..0] Packet Format */ + __IM uint8_t RXSUC : 1; /*!< [1..1] Receive Success */ + __IM uint8_t RXFERR : 1; /*!< [2..2] Fatal Error */ + __IM uint8_t RXFAIL : 1; /*!< [3..3] Receive Fail */ + __IM uint8_t RXPFAIL : 1; /*!< [4..4] Receive Packet Data Fail */ + __IM uint8_t RXCERR : 1; /*!< [5..5] Receive Correctable Error */ + __IM uint8_t RXAKE : 1; /*!< [6..6] Receive Acknowledge and Error Report Packet */ + __IM uint8_t INFOOW : 1; /*!< [7..7] Information Overwrite */ + } RXRSS1R_HH_b; + }; + }; + }; + }; + }; + + union + { + union + { + __IM uint32_t RXRSS2R; /*!< (@ 0x00000248) Receive Result Save Slot-2 Register */ + + struct + { + __IM uint32_t DATA0 : 8; /*!< [7..0] Data 0 */ + __IM uint32_t DATA1 : 8; /*!< [15..8] Data 1 */ + __IM uint32_t DT : 6; /*!< [21..16] Data Type */ + __IM uint32_t VC : 2; /*!< [23..22] Virtual Channel */ + __IM uint32_t FMT : 1; /*!< [24..24] Packet Format */ + __IM uint32_t RXSUC : 1; /*!< [25..25] Receive Success */ + __IM uint32_t RXFERR : 1; /*!< [26..26] Fatal Error */ + __IM uint32_t RXFAIL : 1; /*!< [27..27] Receive Fail */ + __IM uint32_t RXPFAIL : 1; /*!< [28..28] Receive Packet Data Fail */ + __IM uint32_t RXCERR : 1; /*!< [29..29] Receive Correctable Error */ + __IM uint32_t RXAKE : 1; /*!< [30..30] Receive Acknowledge and Error Report Packet */ + __IM uint32_t INFOOW : 1; /*!< [31..31] Information Overwrite */ + } RXRSS2R_b; + }; + + struct + { + union + { + union + { + __IM uint16_t RXRSS2R_L; /*!< (@ 0x00000248) Receive Result Save Slot-2 Register */ + + struct + { + __IM uint16_t DATA0 : 8; /*!< [7..0] Data 0 */ + __IM uint16_t DATA1 : 8; /*!< [15..8] Data 1 */ + } RXRSS2R_L_b; + }; + + struct + { + union + { + __IM uint8_t RXRSS2R_LL; /*!< (@ 0x00000248) Receive Result Save Slot-2 Register */ + + struct + { + __IM uint8_t DATA0 : 8; /*!< [7..0] Data 0 */ + } RXRSS2R_LL_b; + }; + + union + { + __IM uint8_t RXRSS2R_LH; /*!< (@ 0x00000249) Receive Result Save Slot-2 Register */ + + struct + { + __IM uint8_t DATA1 : 8; /*!< [7..0] Data 1 */ + } RXRSS2R_LH_b; + }; + }; + }; + + union + { + union + { + __IM uint16_t RXRSS2R_H; /*!< (@ 0x0000024A) Receive Result Save Slot-2 Register */ + + struct + { + __IM uint16_t DT : 6; /*!< [5..0] Data Type */ + __IM uint16_t VC : 2; /*!< [7..6] Virtual Channel */ + __IM uint16_t FMT : 1; /*!< [8..8] Packet Format */ + __IM uint16_t RXSUC : 1; /*!< [9..9] Receive Success */ + __IM uint16_t RXFERR : 1; /*!< [10..10] Fatal Error */ + __IM uint16_t RXFAIL : 1; /*!< [11..11] Receive Fail */ + __IM uint16_t RXPFAIL : 1; /*!< [12..12] Receive Packet Data Fail */ + __IM uint16_t RXCERR : 1; /*!< [13..13] Receive Correctable Error */ + __IM uint16_t RXAKE : 1; /*!< [14..14] Receive Acknowledge and Error Report Packet */ + __IM uint16_t INFOOW : 1; /*!< [15..15] Information Overwrite */ + } RXRSS2R_H_b; + }; + + struct + { + union + { + __IM uint8_t RXRSS2R_HL; /*!< (@ 0x0000024A) Receive Result Save Slot-2 Register */ + + struct + { + __IM uint8_t DT : 6; /*!< [5..0] Data Type */ + __IM uint8_t VC : 2; /*!< [7..6] Virtual Channel */ + } RXRSS2R_HL_b; + }; + + union + { + __IM uint8_t RXRSS2R_HH; /*!< (@ 0x0000024B) Receive Result Save Slot-2 Register */ + + struct + { + __IM uint8_t FMT : 1; /*!< [0..0] Packet Format */ + __IM uint8_t RXSUC : 1; /*!< [1..1] Receive Success */ + __IM uint8_t RXFERR : 1; /*!< [2..2] Fatal Error */ + __IM uint8_t RXFAIL : 1; /*!< [3..3] Receive Fail */ + __IM uint8_t RXPFAIL : 1; /*!< [4..4] Receive Packet Data Fail */ + __IM uint8_t RXCERR : 1; /*!< [5..5] Receive Correctable Error */ + __IM uint8_t RXAKE : 1; /*!< [6..6] Receive Acknowledge and Error Report Packet */ + __IM uint8_t INFOOW : 1; /*!< [7..7] Information Overwrite */ + } RXRSS2R_HH_b; + }; + }; + }; + }; + }; + + union + { + union + { + __IM uint32_t RXRSS3R; /*!< (@ 0x0000024C) Receive Result Save Slot-3 Register */ + + struct + { + __IM uint32_t DATA0 : 8; /*!< [7..0] Data 0 */ + __IM uint32_t DATA1 : 8; /*!< [15..8] Data 1 */ + __IM uint32_t DT : 6; /*!< [21..16] Data Type */ + __IM uint32_t VC : 2; /*!< [23..22] Virtual Channel */ + __IM uint32_t FMT : 1; /*!< [24..24] Packet Format */ + __IM uint32_t RXSUC : 1; /*!< [25..25] Receive Success */ + __IM uint32_t RXFERR : 1; /*!< [26..26] Fatal Error */ + __IM uint32_t RXFAIL : 1; /*!< [27..27] Receive Fail */ + __IM uint32_t RXPFAIL : 1; /*!< [28..28] Receive Packet Data Fail */ + __IM uint32_t RXCERR : 1; /*!< [29..29] Receive Correctable Error */ + __IM uint32_t RXAKE : 1; /*!< [30..30] Receive Acknowledge and Error Report Packet */ + __IM uint32_t INFOOW : 1; /*!< [31..31] Information Overwrite */ + } RXRSS3R_b; + }; + + struct + { + union + { + union + { + __IM uint16_t RXRSS3R_L; /*!< (@ 0x0000024C) Receive Result Save Slot-3 Register */ + + struct + { + __IM uint16_t DATA0 : 8; /*!< [7..0] Data 0 */ + __IM uint16_t DATA1 : 8; /*!< [15..8] Data 1 */ + } RXRSS3R_L_b; + }; + + struct + { + union + { + __IM uint8_t RXRSS3R_LL; /*!< (@ 0x0000024C) Receive Result Save Slot-3 Register */ + + struct + { + __IM uint8_t DATA0 : 8; /*!< [7..0] Data 0 */ + } RXRSS3R_LL_b; + }; + + union + { + __IM uint8_t RXRSS3R_LH; /*!< (@ 0x0000024D) Receive Result Save Slot-3 Register */ + + struct + { + __IM uint8_t DATA1 : 8; /*!< [7..0] Data 1 */ + } RXRSS3R_LH_b; + }; + }; + }; + + union + { + union + { + __IM uint16_t RXRSS3R_H; /*!< (@ 0x0000024E) Receive Result Save Slot-3 Register */ + + struct + { + __IM uint16_t DT : 6; /*!< [5..0] Data Type */ + __IM uint16_t VC : 2; /*!< [7..6] Virtual Channel */ + __IM uint16_t FMT : 1; /*!< [8..8] Packet Format */ + __IM uint16_t RXSUC : 1; /*!< [9..9] Receive Success */ + __IM uint16_t RXFERR : 1; /*!< [10..10] Fatal Error */ + __IM uint16_t RXFAIL : 1; /*!< [11..11] Receive Fail */ + __IM uint16_t RXPFAIL : 1; /*!< [12..12] Receive Packet Data Fail */ + __IM uint16_t RXCERR : 1; /*!< [13..13] Receive Correctable Error */ + __IM uint16_t RXAKE : 1; /*!< [14..14] Receive Acknowledge and Error Report Packet */ + __IM uint16_t INFOOW : 1; /*!< [15..15] Information Overwrite */ + } RXRSS3R_H_b; + }; + + struct + { + union + { + __IM uint8_t RXRSS3R_HL; /*!< (@ 0x0000024E) Receive Result Save Slot-3 Register */ + + struct + { + __IM uint8_t DT : 6; /*!< [5..0] Data Type */ + __IM uint8_t VC : 2; /*!< [7..6] Virtual Channel */ + } RXRSS3R_HL_b; + }; + + union + { + __IM uint8_t RXRSS3R_HH; /*!< (@ 0x0000024F) Receive Result Save Slot-3 Register */ + + struct + { + __IM uint8_t FMT : 1; /*!< [0..0] Packet Format */ + __IM uint8_t RXSUC : 1; /*!< [1..1] Receive Success */ + __IM uint8_t RXFERR : 1; /*!< [2..2] Fatal Error */ + __IM uint8_t RXFAIL : 1; /*!< [3..3] Receive Fail */ + __IM uint8_t RXPFAIL : 1; /*!< [4..4] Receive Packet Data Fail */ + __IM uint8_t RXCERR : 1; /*!< [5..5] Receive Correctable Error */ + __IM uint8_t RXAKE : 1; /*!< [6..6] Receive Acknowledge and Error Report Packet */ + __IM uint8_t INFOOW : 1; /*!< [7..7] Information Overwrite */ + } RXRSS3R_HH_b; + }; + }; + }; + }; + }; + __IM uint32_t RESERVED8[28]; + + union + { + __IM uint32_t RXPPD0R; /*!< (@ 0x000002C0) Receive Packet Payload Data 0 Register */ + + struct + { + __IM uint32_t DATA0 : 8; /*!< [7..0] Payload Data 0 */ + __IM uint32_t DATA1 : 8; /*!< [15..8] Payload Data 1 */ + __IM uint32_t DATA2 : 8; /*!< [23..16] Payload Data 2 */ + __IM uint32_t DATA3 : 8; /*!< [31..24] Payload Data 3 */ + } RXPPD0R_b; + }; + + union + { + __IM uint32_t RXPPD1R; /*!< (@ 0x000002C4) Receive Packet Payload Data 1 Register */ + + struct + { + __IM uint32_t DATA4 : 8; /*!< [7..0] Payload Data 0 */ + __IM uint32_t DATA5 : 8; /*!< [15..8] Payload Data 1 */ + __IM uint32_t DATA6 : 8; /*!< [23..16] Payload Data 2 */ + __IM uint32_t DATA7 : 8; /*!< [31..24] Payload Data 3 */ + } RXPPD1R_b; + }; + + union + { + __IM uint32_t RXPPD2R; /*!< (@ 0x000002C8) Receive Packet Payload Data 2 Register */ + + struct + { + __IM uint32_t DATA8 : 8; /*!< [7..0] Payload Data 8 */ + __IM uint32_t DATA9 : 8; /*!< [15..8] Payload Data 9 */ + __IM uint32_t DATA10 : 8; /*!< [23..16] Payload Data 10 */ + __IM uint32_t DATA11 : 8; /*!< [31..24] Payload Data 11 */ + } RXPPD2R_b; + }; + + union + { + __IM uint32_t RXPPD3R; /*!< (@ 0x000002CC) Receive Packet Payload Data 3 Register */ + + struct + { + __IM uint32_t DATA12 : 8; /*!< [7..0] Payload Data 12 */ + __IM uint32_t DATA13 : 8; /*!< [15..8] Payload Data 13 */ + __IM uint32_t DATA14 : 8; /*!< [23..16] Payload Data 14 */ + __IM uint32_t DATA15 : 8; /*!< [31..24] Payload Data 15 */ + } RXPPD3R_b; + }; + __IM uint32_t RESERVED9[4]; + + union + { + __IOM uint32_t HSTXTOSETR; /*!< (@ 0x000002E0) HS TX Timeout Set Register */ + + struct + { + __IOM uint32_t HTXTO : 32; /*!< [31..0] HS TX Timeout Count */ + } HSTXTOSETR_b; + }; + + union + { + __IOM uint32_t LRXHTOSETR; /*!< (@ 0x000002E4) LRX-H Timeout Set Register */ + + struct + { + __IOM uint32_t LRXHTO : 32; /*!< [31..0] LP-RX Host Processor Timeout */ + } LRXHTOSETR_b; + }; + + union + { + __IOM uint32_t TATOSETR; /*!< (@ 0x000002E8) TA Timeout Set Register */ + + struct + { + __IOM uint32_t TATO : 32; /*!< [31..0] Turnaround Acknowledge Timeout */ + } TATOSETR_b; + }; + __IM uint32_t RESERVED10[5]; + + union + { + __IM uint32_t FERRSR; /*!< (@ 0x00000300) Fatal Error Status Register */ + + struct + { + __IM uint32_t HTXTO : 1; /*!< [0..0] HS TX Timeout Interrupt Flag */ + __IM uint32_t LRXHTO : 1; /*!< [1..1] LP-RX Host Processor Timeout Interrupt Flag */ + __IM uint32_t TATO : 1; /*!< [2..2] Turnaround Acknowledge Timeout Interrupt Flag */ + uint32_t : 13; + __IM uint32_t ESCENT : 1; /*!< [16..16] Escape mode Entry Error Interrupt Flag */ + __IM uint32_t SYNCESC : 1; /*!< [17..17] LPDT Sync Error Interrupt Flag */ + __IM uint32_t CTRL : 1; /*!< [18..18] Control Error Interrupt Flag */ + __IM uint32_t CLP0 : 1; /*!< [19..19] LP0 Contention Error Interrupt Flag */ + __IM uint32_t CLP1 : 1; /*!< [20..20] LP1 Contention Error Interrupt Flag */ + uint32_t : 6; + __IM uint32_t CLP0S : 1; /*!< [27..27] LP0 Contention Error Status */ + __IM uint32_t CLP1S : 1; /*!< [28..28] LP1 Contention Error Status */ + uint32_t : 3; + } FERRSR_b; + }; + + union + { + __IOM uint32_t FERRSCR; /*!< (@ 0x00000304) Fatal Error Status Clear Register */ + + struct + { + __IOM uint32_t HTXTO : 1; /*!< [0..0] HS TX Timeout Interrupt Flag Clear */ + __IOM uint32_t LRXHTO : 1; /*!< [1..1] LP-RX Host Processor Timeout Interrupt Flag Clear */ + __IOM uint32_t TATO : 1; /*!< [2..2] Turnaround Acknowledge Timeout Interrupt Flag Clear */ + uint32_t : 13; + __IOM uint32_t ESCENT : 1; /*!< [16..16] Escape mode Entry Error Interrupt Flag Clear */ + __IOM uint32_t SYNCESC : 1; /*!< [17..17] LPDT Sync Error Interrupt Flag Clear */ + __IOM uint32_t CTRL : 1; /*!< [18..18] Control Error Interrupt Flag Clear */ + __IOM uint32_t CLP0 : 1; /*!< [19..19] LP0 Contention Error Interrupt Flag Clear */ + __IOM uint32_t CLP1 : 1; /*!< [20..20] LP1 Contention Error Interrupt Flag Clear */ + uint32_t : 11; + } FERRSCR_b; + }; + + union + { + __IOM uint32_t FERRIER; /*!< (@ 0x00000308) Fatal Error Interrupt Enable Register */ + + struct + { + __IOM uint32_t HTXTO : 1; /*!< [0..0] HS TX Timeout Interrupt Enable */ + __IOM uint32_t LRXHTO : 1; /*!< [1..1] LP-RX Host Processor Timeout Interrupt Enable */ + __IOM uint32_t TATO : 1; /*!< [2..2] Turnaround Acknowledge Timeout Interrupt Enable */ + uint32_t : 13; + __IOM uint32_t ESCENT : 1; /*!< [16..16] Escape mode Entry Error Interrupt Enable */ + __IOM uint32_t SYNCESC : 1; /*!< [17..17] LPDT Sync Error Interrupt Enable */ + __IOM uint32_t CTRL : 1; /*!< [18..18] Control Error Interrupt Enable */ + __IOM uint32_t CLP0 : 1; /*!< [19..19] LP0 Contention Error Interrupt Enable */ + __IOM uint32_t CLP1 : 1; /*!< [20..20] LP1 Contention Error Interrupt Enable */ + uint32_t : 11; + } FERRIER_b; + }; + __IM uint32_t RESERVED11[2]; + + union + { + __IOM uint32_t CLSTPTSETR; /*!< (@ 0x00000314) Clock Lane Stop Time Set Register */ + + struct + { + uint32_t : 2; + __IOM uint32_t CLKSTPT : 10; /*!< [11..2] Clock Stop Time */ + uint32_t : 4; + __IOM uint32_t CLKBFHT : 8; /*!< [23..16] Clock Beforehand Time */ + __IOM uint32_t CLKKPT : 8; /*!< [31..24] Clock Keep Time */ + } CLSTPTSETR_b; + }; + + union + { + __IOM uint32_t LPTRNSTSETR; /*!< (@ 0x00000318) LP Transition Time Set Register */ + + struct + { + __IOM uint32_t GOLPBKT : 10; /*!< [9..0] Go LP and Back Time */ + uint32_t : 22; + } LPTRNSTSETR_b; + }; + __IM uint32_t RESERVED12; + + union + { + __IM uint32_t PLSR; /*!< (@ 0x00000320) Physical Lane Status Register */ + + struct + { + __IM uint32_t CLUAN : 1; /*!< [0..0] Clock Lane UlpsActiveNot Status */ + __IM uint32_t CLSTP : 1; /*!< [1..1] Clock Lane Stop Status */ + __IM uint32_t DL0RLE : 1; /*!< [2..2] Data Lane-0 RxLpdtEsc Status */ + __IM uint32_t DL0RUE : 1; /*!< [3..3] Data Lane-0 RxUlpsEsc Status */ + __IM uint32_t DL0UAN : 1; /*!< [4..4] Data Lane-0 UlpsActiveNot Status */ + __IM uint32_t DL1UAN : 1; /*!< [5..5] Data Lane-1 UlpsActiveNot Status */ + uint32_t : 2; + __IM uint32_t DL0STP : 1; /*!< [8..8] Data Lane-0 Stop Status */ + __IM uint32_t DL1STP : 1; /*!< [9..9] Data Lane-1 Stop Status */ + uint32_t : 2; + __IM uint32_t DL0RX2TX : 1; /*!< [12..12] Data Lane-0 RX to TX Transition Interrupt Flag */ + __IM uint32_t DL0TX2RX : 1; /*!< [13..13] Data Lane-0 TX to RX Transition Interrupt Flag */ + uint32_t : 1; + __IM uint32_t DL0DIR : 1; /*!< [15..15] Data Lane-0 Direction */ + uint32_t : 8; + __IM uint32_t CLULPENT : 1; /*!< [24..24] Clock Lane ULPS Enter Interrupt Flag */ + __IM uint32_t CLULPEXT : 1; /*!< [25..25] Clock Lane ULPS Exit Interrupt Flag */ + __IM uint32_t CLLP2HS : 1; /*!< [26..26] Clock Lane LP to HS Transition Interrupt Flag */ + __IM uint32_t CLHS2LP : 1; /*!< [27..27] Clock Lane HS to LP Transition Interrupt Flag */ + __IM uint32_t DLULPENT : 1; /*!< [28..28] Data Lane ULPS Enter Interrupt Flag */ + __IM uint32_t DLULPEXT : 1; /*!< [29..29] Data Lane ULPS Exit Interrupt Flag */ + uint32_t : 2; + } PLSR_b; + }; + + union + { + __IOM uint32_t PLSCR; /*!< (@ 0x00000324) Physical Lane Status Clear Register */ + + struct + { + uint32_t : 12; + __IOM uint32_t DL0RX2TX : 1; /*!< [12..12] Data Lane-0 RX to TX Transition Interrupt Flag Clear */ + __IOM uint32_t DL0TX2RX : 1; /*!< [13..13] Data Lane-0 TX to RX Transition Interrupt Flag Clear */ + uint32_t : 10; + __IOM uint32_t CLULPENT : 1; /*!< [24..24] Clock Lane ULPS Enter Interrupt Flag Clear */ + __IOM uint32_t CLULPEXT : 1; /*!< [25..25] Clock Lane ULPS Exit Interrupt Flag Clear */ + __IOM uint32_t CLLP2HS : 1; /*!< [26..26] Clock Lane LP to HS Transition Interrupt Flag Clear */ + __IOM uint32_t CLHS2LP : 1; /*!< [27..27] Clock Lane HS to LP Transition Interrupt Flag Clear */ + __IOM uint32_t DLULPENT : 1; /*!< [28..28] Data Lane ULPS Enter Interrupt Flag Clear */ + __IOM uint32_t DLULPEXT : 1; /*!< [29..29] Data Lane ULPS Exit Interrupt Flag Clear */ + uint32_t : 2; + } PLSCR_b; + }; + + union + { + __IOM uint32_t PLIER; /*!< (@ 0x00000328) Physical Lane Interrupt Enable Register */ + + struct + { + uint32_t : 12; + __IOM uint32_t DL0RX2TX : 1; /*!< [12..12] Data Lane-0 RX to TX Transition Interrupt Enable */ + __IOM uint32_t DL0TX2RX : 1; /*!< [13..13] Data Lane-0 TX to RX Transition Interrupt Enable */ + uint32_t : 10; + __IOM uint32_t CLULPENT : 1; /*!< [24..24] Clock Lane ULPS Enter Interrupt Enable */ + __IOM uint32_t CLULPEXT : 1; /*!< [25..25] Clock Lane ULPS Exit Interrupt Enable */ + __IOM uint32_t CLLP2HS : 1; /*!< [26..26] Clock Lane LP to HS Transition Interrupt Enable */ + __IOM uint32_t CLHS2LP : 1; /*!< [27..27] Clock Lane HS to LP Transition Interrupt Enable */ + __IOM uint32_t DLULPENT : 1; /*!< [28..28] Data Lane ULPS Enter Interrupt Enable */ + __IOM uint32_t DLULPEXT : 1; /*!< [29..29] Data Lane ULPS Exit Interrupt Enable */ + uint32_t : 2; + } PLIER_b; + }; + __IM uint32_t RESERVED13[53]; + + union + { + __IOM uint32_t VMSET0R; /*!< (@ 0x00000400) Video Mode Set 0 Register */ + + struct + { + __OM uint32_t VSTART : 1; /*!< [0..0] Video Mode Operation Start */ + __OM uint32_t VSTOP : 1; /*!< [1..1] Video Mode Operation Stop */ + uint32_t : 6; + __IOM uint32_t HSANOLP : 1; /*!< [8..8] HSA period No LP */ + __IOM uint32_t HBPNOLP : 1; /*!< [9..9] HBP period No LP */ + __IOM uint32_t HFPNOLP : 1; /*!< [10..10] HFP period No LP */ + uint32_t : 21; + } VMSET0R_b; + }; + + union + { + __IOM uint32_t VMSET1R; /*!< (@ 0x00000404) Video Mode Set 1 Register */ + + struct + { + uint32_t : 2; + __IOM uint32_t DLY : 12; /*!< [13..2] Delay Value */ + uint32_t : 18; + } VMSET1R_b; + }; + __IM uint32_t RESERVED14[2]; + + union + { + __IM uint32_t VMSR; /*!< (@ 0x00000410) Video Mode Status Register */ + + struct + { + __IM uint32_t START : 1; /*!< [0..0] Video Mode Operation Start Interrupt Flag */ + __IM uint32_t STOP : 1; /*!< [1..1] Video Mode Operation Stop Interrupt Flag */ + __IM uint32_t RUNNING : 1; /*!< [2..2] Video Mode Operation Running Status */ + __IM uint32_t VIRDY : 1; /*!< [3..3] Video Mode Operation Ready Interrupt Flag */ + uint32_t : 16; + __IM uint32_t TIMERR : 1; /*!< [20..20] Timing Error Interrupt Flag */ + uint32_t : 1; + __IM uint32_t VBUFUDF : 1; /*!< [22..22] Video Buffer Underflow Error Interrupt Flag */ + __IM uint32_t VBUFOVF : 1; /*!< [23..23] Video Buffer Overflow Error Interrupt Flag */ + uint32_t : 8; + } VMSR_b; + }; + + union + { + __IOM uint32_t VMSCR; /*!< (@ 0x00000414) Video Mode Status Clear Register */ + + struct + { + __IOM uint32_t START : 1; /*!< [0..0] Video Mode Operation Start Interrupt Flag Clear */ + __IOM uint32_t STOP : 1; /*!< [1..1] Video Mode Operation Stop Interrupt Flag Clear */ + uint32_t : 1; + __IOM uint32_t VIRDY : 1; /*!< [3..3] Video Mode Operation Ready Interrupt Flag Clear */ + uint32_t : 16; + __IOM uint32_t TIMERR : 1; /*!< [20..20] Timing Error Interrupt Flag Clear */ + uint32_t : 1; + __IOM uint32_t VBUFUDF : 1; /*!< [22..22] Video Buffer Underflow Error Interrupt Flag Clear */ + __IOM uint32_t VBUFOVF : 1; /*!< [23..23] Video Buffer Overflow Error Interrupt Flag Clear */ + uint32_t : 8; + } VMSCR_b; + }; + + union + { + __IOM uint32_t VMIER; /*!< (@ 0x00000418) Video Mode Interrupt Enable Register */ + + struct + { + __IOM uint32_t START : 1; /*!< [0..0] Video Mode Operation Start Interrupt Enable */ + __IOM uint32_t STOP : 1; /*!< [1..1] Video Mode Operation Stop Interrupt Enable */ + uint32_t : 1; + __IOM uint32_t VIRDY : 1; /*!< [3..3] Video Mode Operation Ready Interrupt Enable */ + uint32_t : 16; + __IOM uint32_t TIMERR : 1; /*!< [20..20] Timing Error Interrupt Enable */ + uint32_t : 1; + __IOM uint32_t VBUFUDF : 1; /*!< [22..22] Video Buffer Underflow Error Interrupt Enable */ + __IOM uint32_t VBUFOVF : 1; /*!< [23..23] Video Buffer Overflow Error Interrupt Enable */ + uint32_t : 8; + } VMIER_b; + }; + __IM uint32_t RESERVED15; + + union + { + __IOM uint32_t VMPPSETR; /*!< (@ 0x00000420) Video Mode Pixel Packet Set Register */ + + struct + { + uint32_t : 15; + __IOM uint32_t TXESYNC : 1; /*!< [15..15] Transmit End of Sync Pulse */ + __IOM uint32_t DT : 6; /*!< [21..16] Video Mode Data Type */ + __IOM uint32_t VC : 2; /*!< [23..22] Video Mode Virtual Channel */ + uint32_t : 8; + } VMPPSETR_b; + }; + __IM uint32_t RESERVED16; + + union + { + __IOM uint32_t VMVSSETR; /*!< (@ 0x00000428) Video Mode Vertical Size Set Register */ + + struct + { + __IOM uint32_t VSA : 12; /*!< [11..0] VSA Lines */ + uint32_t : 3; + __IOM uint32_t VSPOL : 1; /*!< [15..15] VSYNC Polarity */ + __IOM uint32_t VACT : 15; /*!< [30..16] Vertical Active Lines */ + uint32_t : 1; + } VMVSSETR_b; + }; + + union + { + __IOM uint32_t VMVPSETR; /*!< (@ 0x0000042C) Video Mode Vertical Porch Set Register */ + + struct + { + __IOM uint32_t VBP : 13; /*!< [12..0] VBP Lines */ + uint32_t : 3; + __IOM uint32_t VFP : 13; /*!< [28..16] VFP Lines */ + uint32_t : 3; + } VMVPSETR_b; + }; + + union + { + __IOM uint32_t VMHSSETR; /*!< (@ 0x00000430) Video Mode Horizontal Size Set Register */ + + struct + { + __IOM uint32_t HSA : 12; /*!< [11..0] HSA Pixels */ + uint32_t : 3; + __IOM uint32_t HSPOL : 1; /*!< [15..15] HSYNC Polarity */ + __IOM uint32_t HACT : 15; /*!< [30..16] HACT Pixels */ + uint32_t : 1; + } VMHSSETR_b; + }; + + union + { + __IOM uint32_t VMHPSETR; /*!< (@ 0x00000434) Video Mode Horizontal Porch Set Register */ + + struct + { + __IOM uint32_t HBP : 13; /*!< [12..0] HBP Pixels */ + uint32_t : 3; + __IOM uint32_t HFP : 13; /*!< [28..16] HFP Pixels */ + uint32_t : 3; + } VMHPSETR_b; + }; + __IM uint32_t RESERVED17[98]; + + union + { + __IOM uint32_t SQCH0SET0R; /*!< (@ 0x000005C0) Sequence Channel 0 Set 0 Register */ + + struct + { + __OM uint32_t START : 1; /*!< [0..0] Sequence Operation Start */ + uint32_t : 31; + } SQCH0SET0R_b; + }; + __IM uint32_t RESERVED18[3]; + + union + { + __IM uint32_t SQCH0SR; /*!< (@ 0x000005D0) Sequence Channel 0 Status Register */ + + struct + { + uint32_t : 2; + __IM uint32_t RUNNING : 1; /*!< [2..2] Sequence Operation Running Status */ + uint32_t : 1; + __IM uint32_t AACTFIN : 1; /*!< [4..4] All Actions Finish Interrupt Flag */ + uint32_t : 3; + __IM uint32_t ADESFIN : 1; /*!< [8..8] All-Descriptors Finish Interrupt Flag */ + uint32_t : 7; + __IM uint32_t DABORT : 1; /*!< [16..16] Descriptor Abort Interrupt Flag */ + uint32_t : 2; + __IM uint32_t SIZEERR : 1; /*!< [19..19] Packet Size Error Interrupt Flag */ + uint32_t : 4; + __IM uint32_t TXIBERR : 1; /*!< [24..24] Tx Internal Bus Error Interrupt Flag */ + uint32_t : 1; + __IM uint32_t RXFERR : 1; /*!< [26..26] Receive Fatal Error Interrupt Flag */ + __IM uint32_t RXFAIL : 1; /*!< [27..27] Receive Fail Interrupt Flag */ + __IM uint32_t RXPFAIL : 1; /*!< [28..28] Receive Packet Data Fail Interrupt Flag */ + __IM uint32_t RXCORERR : 1; /*!< [29..29] Receive Correctable Error Interrupt Flag */ + __IM uint32_t RXAKE : 1; /*!< [30..30] Receive Acknowledge and Error Report Packet Interrupt + * Flag */ + uint32_t : 1; + } SQCH0SR_b; + }; + + union + { + __IOM uint32_t SQCH0SCR; /*!< (@ 0x000005D4) Sequence Channel 0 Status Clear Register */ + + struct + { + uint32_t : 4; + __IOM uint32_t AACTFIN : 1; /*!< [4..4] All Actions Finish Interrupt Flag Clear */ + uint32_t : 3; + __IOM uint32_t ADESFIN : 1; /*!< [8..8] All-Descriptors Finish Interrupt Flag Clear */ + uint32_t : 7; + __IOM uint32_t DABORT : 1; /*!< [16..16] Descriptor Abort Interrupt Flag Clear */ + uint32_t : 2; + __IOM uint32_t SIZEERR : 1; /*!< [19..19] Packet Size Error Interrupt Flag Clear */ + uint32_t : 4; + __IOM uint32_t TXIBERR : 1; /*!< [24..24] Tx Internal Bus Error Interrupt Flag Clear */ + uint32_t : 1; + __IOM uint32_t RXFERR : 1; /*!< [26..26] Receive Fatal Error Interrupt Flag Clear */ + __IOM uint32_t RXFAIL : 1; /*!< [27..27] Receive Fail Interrupt Flag Clear */ + __IOM uint32_t RXPFAIL : 1; /*!< [28..28] Receive Packet Data Fail Interrupt Flag Clear */ + __IOM uint32_t RXCORERR : 1; /*!< [29..29] Receive Correctable Error Interrupt Flag Clear */ + __IOM uint32_t RXAKE : 1; /*!< [30..30] Receive Acknowledge and Error Report Packet Interrupt + * Flag Clear */ + uint32_t : 1; + } SQCH0SCR_b; + }; + + union + { + __IOM uint32_t SQCH0IER; /*!< (@ 0x000005D8) Sequence Channel 0 Interrupt Enable Register */ + + struct + { + uint32_t : 4; + __IOM uint32_t AACTFIN : 1; /*!< [4..4] All Actions Finish Interrupt Enable */ + uint32_t : 3; + __IOM uint32_t ADESFIN : 1; /*!< [8..8] All-Descriptors Finish Interrupt Enable */ + uint32_t : 7; + __IOM uint32_t DABORT : 1; /*!< [16..16] Descriptor Abort Interrupt Enable */ + uint32_t : 2; + __IOM uint32_t SIZEERR : 1; /*!< [19..19] Packet Size Error Interrupt Enable */ + uint32_t : 4; + __IOM uint32_t TXIBERR : 1; /*!< [24..24] Tx Internal Bus Error Interrupt Enable */ + uint32_t : 1; + __IOM uint32_t RXFERR : 1; /*!< [26..26] Receive Fatal Error Interrupt Enable */ + __IOM uint32_t RXFAIL : 1; /*!< [27..27] Receive Fail Interrupt Enable */ + __IOM uint32_t RXPFAIL : 1; /*!< [28..28] Receive Packet Data Fail Interrupt Enable */ + __IOM uint32_t RXCORERR : 1; /*!< [29..29] Receive Correctable Error Interrupt Enable */ + __IOM uint32_t RXAKE : 1; /*!< [30..30] Receive Acknowledge and Error Report Packet Interrupt + * Enable */ + uint32_t : 1; + } SQCH0IER_b; + }; + __IM uint32_t RESERVED19[9]; + + union + { + __IOM uint32_t SQCH1SET0R; /*!< (@ 0x00000600) Sequence Channel 1 Set 0 Register */ + + struct + { + __OM uint32_t START : 1; /*!< [0..0] Sequence Operation Start */ + uint32_t : 31; + } SQCH1SET0R_b; + }; + __IM uint32_t RESERVED20[3]; + + union + { + __IM uint32_t SQCH1SR; /*!< (@ 0x00000610) Sequence Channel 1 Status Register */ + + struct + { + uint32_t : 2; + __IM uint32_t RUNNING : 1; /*!< [2..2] Sequence Operation Running Status */ + uint32_t : 1; + __IM uint32_t AACTFIN : 1; /*!< [4..4] All Actions Finish Interrupt Flag */ + uint32_t : 3; + __IM uint32_t ADESFIN : 1; /*!< [8..8] All-Descriptors Finish Interrupt Flag */ + uint32_t : 7; + __IM uint32_t DABORT : 1; /*!< [16..16] Descriptor Abort Interrupt Flag */ + uint32_t : 2; + __IM uint32_t SIZEERR : 1; /*!< [19..19] Packet Size Error Interrupt Flag */ + uint32_t : 4; + __IM uint32_t TXIBERR : 1; /*!< [24..24] Tx Internal Bus Error Interrupt Flag */ + uint32_t : 1; + __IM uint32_t RXFERR : 1; /*!< [26..26] Receive Fatal Error Interrupt Flag */ + __IM uint32_t RXFAIL : 1; /*!< [27..27] Receive Fail Interrupt Flag */ + __IM uint32_t RXPFAIL : 1; /*!< [28..28] Receive Packet Data Fail Interrupt Flag */ + __IM uint32_t RXCORERR : 1; /*!< [29..29] Receive Correctable Error Interrupt Flag */ + __IM uint32_t RXAKE : 1; /*!< [30..30] Receive Acknowledge and Error Report Packet Interrupt + * Flag */ + uint32_t : 1; + } SQCH1SR_b; + }; + + union + { + __IOM uint32_t SQCH1SCR; /*!< (@ 0x00000614) Sequence Channel 1 Status Clear Register */ + + struct + { + uint32_t : 4; + __IOM uint32_t AACTFIN : 1; /*!< [4..4] All Actions Finish Interrupt Flag Clear */ + uint32_t : 3; + __IOM uint32_t ADESFIN : 1; /*!< [8..8] All-Descriptors Finish Interrupt Flag Clear */ + uint32_t : 7; + __IOM uint32_t DABORT : 1; /*!< [16..16] Descriptor Abort Interrupt Flag Clear */ + uint32_t : 2; + __IOM uint32_t SIZEERR : 1; /*!< [19..19] Packet Size Error Interrupt Flag Clear */ + uint32_t : 4; + __IOM uint32_t TXIBERR : 1; /*!< [24..24] Tx Internal Bus Error Interrupt Flag Clear */ + uint32_t : 1; + __IOM uint32_t RXFERR : 1; /*!< [26..26] Receive Fatal Error Interrupt Flag Clear */ + __IOM uint32_t RXFAIL : 1; /*!< [27..27] Receive Fail Interrupt Flag Clear */ + __IOM uint32_t RXPFAIL : 1; /*!< [28..28] Receive Packet Data Fail Interrupt Flag Clear */ + __IOM uint32_t RXCORERR : 1; /*!< [29..29] Receive Correctable Error Interrupt Flag Clear */ + __IOM uint32_t RXAKE : 1; /*!< [30..30] Receive Acknowledge and Error Report Packet Interrupt + * Flag Clear */ + uint32_t : 1; + } SQCH1SCR_b; + }; + + union + { + __IOM uint32_t SQCH1IER; /*!< (@ 0x00000618) Sequence Channel 1 Interrupt Enable Register */ + + struct + { + uint32_t : 4; + __IOM uint32_t AACTFIN : 1; /*!< [4..4] All Actions Finish Interrupt Enable */ + uint32_t : 3; + __IOM uint32_t ADESFIN : 1; /*!< [8..8] All-Descriptors Finish Interrupt Enable */ + uint32_t : 7; + __IOM uint32_t DABORT : 1; /*!< [16..16] Descriptor Abort Interrupt Enable */ + uint32_t : 2; + __IOM uint32_t SIZEERR : 1; /*!< [19..19] Packet Size Error Interrupt Enable */ + uint32_t : 4; + __IOM uint32_t TXIBERR : 1; /*!< [24..24] Tx Internal Bus Error Interrupt Enable */ + uint32_t : 1; + __IOM uint32_t RXFERR : 1; /*!< [26..26] Receive Fatal Error Interrupt Enable */ + __IOM uint32_t RXFAIL : 1; /*!< [27..27] Receive Fail Interrupt Enable */ + __IOM uint32_t RXPFAIL : 1; /*!< [28..28] Receive Packet Data Fail Interrupt Enable */ + __IOM uint32_t RXCORERR : 1; /*!< [29..29] Receive Correctable Error Interrupt Enable */ + __IOM uint32_t RXAKE : 1; /*!< [30..30] Receive Acknowledge and Error Report Packet Interrupt + * Enable */ + uint32_t : 1; + } SQCH1IER_b; + }; + __IM uint32_t RESERVED21[89]; + + union + { + union + { + __IOM uint32_t SQCH0DSC0AR; /*!< (@ 0x00000780) Sequence Channel 0 Descriptor-0 A Register */ + + struct + { + __IOM uint32_t DATA0 : 8; /*!< [7..0] Data 0 */ + __IOM uint32_t DATA1 : 8; /*!< [15..8] Data 1 */ + __IOM uint32_t DT : 6; /*!< [21..16] Data Type */ + __IOM uint32_t VC : 2; /*!< [23..22] Virtual Channel */ + __IOM uint32_t FMT : 1; /*!< [24..24] Format */ + __IOM uint32_t SPD : 1; /*!< [25..25] Speed */ + __IOM uint32_t BTA : 2; /*!< [27..26] Bus Turn Around */ + __IOM uint32_t NXACT : 2; /*!< [29..28] Next Action */ + uint32_t : 2; + } SQCH0DSC0AR_b; + }; + + struct + { + union + { + union + { + __IOM uint16_t SQCH0DSC0AR_L; /*!< (@ 0x00000780) Sequence Channel 0 Descriptor-0 A Register */ + + struct + { + __IOM uint16_t DATA0 : 8; /*!< [7..0] Data 0 */ + __IOM uint16_t DATA1 : 8; /*!< [15..8] Data 1 */ + } SQCH0DSC0AR_L_b; + }; + + struct + { + union + { + __IOM uint8_t SQCH0DSC0AR_LL; /*!< (@ 0x00000780) Sequence Channel 0 Descriptor-0 A Register */ + + struct + { + __IOM uint8_t DATA0 : 8; /*!< [7..0] Data 0 */ + } SQCH0DSC0AR_LL_b; + }; + + union + { + __IOM uint8_t SQCH0DSC0AR_LH; /*!< (@ 0x00000781) Sequence Channel 0 Descriptor-0 A Register */ + + struct + { + __IOM uint8_t DATA1 : 8; /*!< [7..0] Data 1 */ + } SQCH0DSC0AR_LH_b; + }; + }; + }; + + union + { + union + { + __IOM uint16_t SQCH0DSC0AR_H; /*!< (@ 0x00000782) Sequence Channel 0 Descriptor-0 A Register */ + + struct + { + __IOM uint16_t DT : 6; /*!< [5..0] Data Type */ + __IOM uint16_t VC : 2; /*!< [7..6] Virtual Channel */ + __IOM uint16_t FMT : 1; /*!< [8..8] Format */ + __IOM uint16_t SPD : 1; /*!< [9..9] Speed */ + __IOM uint16_t BTA : 2; /*!< [11..10] Bus Turn Around */ + __IOM uint16_t NXACT : 2; /*!< [13..12] Next Action */ + uint16_t : 2; + } SQCH0DSC0AR_H_b; + }; + + struct + { + union + { + __IOM uint8_t SQCH0DSC0AR_HL; /*!< (@ 0x00000782) Sequence Channel 0 Descriptor-0 A Register */ + + struct + { + __IOM uint8_t DT : 6; /*!< [5..0] Data Type */ + __IOM uint8_t VC : 2; /*!< [7..6] Virtual Channel */ + } SQCH0DSC0AR_HL_b; + }; + + union + { + __IOM uint8_t SQCH0DSC0AR_HH; /*!< (@ 0x00000783) Sequence Channel 0 Descriptor-0 A Register */ + + struct + { + __IOM uint8_t FMT : 1; /*!< [0..0] Format */ + __IOM uint8_t SPD : 1; /*!< [1..1] Speed */ + __IOM uint8_t BTA : 2; /*!< [3..2] Bus Turn Around */ + __IOM uint8_t NXACT : 2; /*!< [5..4] Next Action */ + uint8_t : 2; + } SQCH0DSC0AR_HH_b; + }; + }; + }; + }; + }; + + union + { + __IOM uint32_t SQCH0DSC0BR; /*!< (@ 0x00000784) Sequence Channel 0 Descriptor-0 B Register */ + + struct + { + uint32_t : 24; + __IOM uint32_t DTSEL : 2; /*!< [25..24] Data Select */ + uint32_t : 6; + } SQCH0DSC0BR_b; + }; + + union + { + union + { + __IOM uint32_t SQCH0DSC0CR; /*!< (@ 0x00000788) Sequence Channel 0 Descriptor-0 C Register */ + + struct + { + __IOM uint32_t FINACT : 1; /*!< [0..0] Finish Action */ + uint32_t : 21; + __IOM uint32_t AUXOP : 1; /*!< [22..22] Auxiliary Operation */ + uint32_t : 1; + __IOM uint32_t ACTCODE : 8; /*!< [31..24] Action Code */ + } SQCH0DSC0CR_b; + }; + + struct + { + union + { + union + { + __IOM uint16_t SQCH0DSC0CR_L; /*!< (@ 0x00000788) Sequence Channel 0 Descriptor-0 C Register */ + + struct + { + __IOM uint16_t FINACT : 1; /*!< [0..0] Finish Action */ + uint16_t : 15; + } SQCH0DSC0CR_L_b; + }; + + union + { + __IOM uint8_t SQCH0DSC0CR_LL; /*!< (@ 0x00000788) Sequence Channel 0 Descriptor-0 C Register */ + + struct + { + __IOM uint8_t FINACT : 1; /*!< [0..0] Finish Action */ + uint8_t : 7; + } SQCH0DSC0CR_LL_b; + }; + }; + + union + { + union + { + __IOM uint16_t SQCH0DSC0CR_H; /*!< (@ 0x0000078A) Sequence Channel 0 Descriptor-0 C Register */ + + struct + { + uint16_t : 6; + __IOM uint16_t AUXOP : 1; /*!< [6..6] Auxiliary Operation */ + uint16_t : 1; + __IOM uint16_t ACTCODE : 8; /*!< [15..8] Action Code */ + } SQCH0DSC0CR_H_b; + }; + + struct + { + union + { + __IOM uint8_t SQCH0DSC0CR_HL; /*!< (@ 0x0000078A) Sequence Channel 0 Descriptor-0 C Register */ + + struct + { + uint8_t : 6; + __IOM uint8_t AUXOP : 1; /*!< [6..6] Auxiliary Operation */ + uint8_t : 1; + } SQCH0DSC0CR_HL_b; + }; + + union + { + __IOM uint8_t SQCH0DSC0CR_HH; /*!< (@ 0x0000078B) Sequence Channel 0 Descriptor-0 C Register */ + + struct + { + __IOM uint8_t ACTCODE : 8; /*!< [7..0] Action Code */ + } SQCH0DSC0CR_HH_b; + }; + }; + }; + }; + }; + + union + { + union + { + __IOM uint32_t SQCH0DSC0DR; /*!< (@ 0x0000078C) Sequence Channel 0 Descriptor-0 D Register */ + + struct + { + __IOM uint32_t LADDR : 32; /*!< [31..0] Lower Address */ + } SQCH0DSC0DR_b; + }; + + struct + { + union + { + union + { + __IOM uint16_t SQCH0DSC0DR_L; /*!< (@ 0x0000078C) Sequence Channel 0 Descriptor-0 D Register */ + + struct + { + __IOM uint16_t LADDR : 16; /*!< [15..0] Lower Address */ + } SQCH0DSC0DR_L_b; + }; + + struct + { + union + { + __IOM uint8_t SQCH0DSC0DR_LL; /*!< (@ 0x0000078C) Sequence Channel 0 Descriptor-0 D Register */ + + struct + { + __IOM uint8_t LADDR : 8; /*!< [7..0] Lower Address */ + } SQCH0DSC0DR_LL_b; + }; + + union + { + __IOM uint8_t SQCH0DSC0DR_LH; /*!< (@ 0x0000078D) Sequence Channel 0 Descriptor-0 D Register */ + + struct + { + __IOM uint8_t LADDR : 8; /*!< [7..0] Lower Address */ + } SQCH0DSC0DR_LH_b; + }; + }; + }; + + union + { + union + { + __IOM uint16_t SQCH0DSC0DR_H; /*!< (@ 0x0000078E) Sequence Channel 0 Descriptor-0 D Register */ + + struct + { + __IOM uint16_t LADDR : 16; /*!< [15..0] Lower Address */ + } SQCH0DSC0DR_H_b; + }; + + struct + { + union + { + __IOM uint8_t SQCH0DSC0DR_HL; /*!< (@ 0x0000078E) Sequence Channel 0 Descriptor-0 D Register */ + + struct + { + __IOM uint8_t LADDR : 8; /*!< [7..0] Lower Address */ + } SQCH0DSC0DR_HL_b; + }; + + union + { + __IOM uint8_t SQCH0DSC0DR_HH; /*!< (@ 0x0000078F) Sequence Channel 0 Descriptor-0 D Register */ + + struct + { + __IOM uint8_t LADDR : 8; /*!< [7..0] Lower Address */ + } SQCH0DSC0DR_HH_b; + }; + }; + }; + }; + }; + + union + { + union + { + __IOM uint32_t SQCH0DSC1AR; /*!< (@ 0x00000790) Sequence Channel 0 Descriptor-1 A Register */ + + struct + { + __IOM uint32_t DATA0 : 8; /*!< [7..0] Data 0 */ + __IOM uint32_t DATA1 : 8; /*!< [15..8] Data 1 */ + __IOM uint32_t DT : 6; /*!< [21..16] Data Type */ + __IOM uint32_t VC : 2; /*!< [23..22] Virtual Channel */ + __IOM uint32_t FMT : 1; /*!< [24..24] Format */ + __IOM uint32_t SPD : 1; /*!< [25..25] Speed */ + __IOM uint32_t BTA : 2; /*!< [27..26] Bus Turn Around */ + __IOM uint32_t NXACT : 2; /*!< [29..28] Next Action */ + uint32_t : 2; + } SQCH0DSC1AR_b; + }; + + struct + { + union + { + union + { + __IOM uint16_t SQCH0DSC1AR_L; /*!< (@ 0x00000790) Sequence Channel 0 Descriptor-1 A Register */ + + struct + { + __IOM uint16_t DATA0 : 8; /*!< [7..0] Data 0 */ + __IOM uint16_t DATA1 : 8; /*!< [15..8] Data 1 */ + } SQCH0DSC1AR_L_b; + }; + + struct + { + union + { + __IOM uint8_t SQCH0DSC1AR_LL; /*!< (@ 0x00000790) Sequence Channel 0 Descriptor-1 A Register */ + + struct + { + __IOM uint8_t DATA0 : 8; /*!< [7..0] Data 0 */ + } SQCH0DSC1AR_LL_b; + }; + + union + { + __IOM uint8_t SQCH0DSC1AR_LH; /*!< (@ 0x00000791) Sequence Channel 0 Descriptor-1 A Register */ + + struct + { + __IOM uint8_t DATA1 : 8; /*!< [7..0] Data 1 */ + } SQCH0DSC1AR_LH_b; + }; + }; + }; + + union + { + union + { + __IOM uint16_t SQCH0DSC1AR_H; /*!< (@ 0x00000792) Sequence Channel 0 Descriptor-1 A Register */ + + struct + { + __IOM uint16_t DT : 6; /*!< [5..0] Data Type */ + __IOM uint16_t VC : 2; /*!< [7..6] Virtual Channel */ + __IOM uint16_t FMT : 1; /*!< [8..8] Format */ + __IOM uint16_t SPD : 1; /*!< [9..9] Speed */ + __IOM uint16_t BTA : 2; /*!< [11..10] Bus Turn Around */ + __IOM uint16_t NXACT : 2; /*!< [13..12] Next Action */ + uint16_t : 2; + } SQCH0DSC1AR_H_b; + }; + + struct + { + union + { + __IOM uint8_t SQCH0DSC1AR_HL; /*!< (@ 0x00000792) Sequence Channel 0 Descriptor-1 A Register */ + + struct + { + __IOM uint8_t DT : 6; /*!< [5..0] Data Type */ + __IOM uint8_t VC : 2; /*!< [7..6] Virtual Channel */ + } SQCH0DSC1AR_HL_b; + }; + + union + { + __IOM uint8_t SQCH0DSC1AR_HH; /*!< (@ 0x00000793) Sequence Channel 0 Descriptor-1 A Register */ + + struct + { + __IOM uint8_t FMT : 1; /*!< [0..0] Format */ + __IOM uint8_t SPD : 1; /*!< [1..1] Speed */ + __IOM uint8_t BTA : 2; /*!< [3..2] Bus Turn Around */ + __IOM uint8_t NXACT : 2; /*!< [5..4] Next Action */ + uint8_t : 2; + } SQCH0DSC1AR_HH_b; + }; + }; + }; + }; + }; + + union + { + __IOM uint32_t SQCH0DSC1BR; /*!< (@ 0x00000794) Sequence Channel 0 Descriptor-1 B Register */ + + struct + { + uint32_t : 24; + __IOM uint32_t DTSEL : 2; /*!< [25..24] Data Select */ + uint32_t : 6; + } SQCH0DSC1BR_b; + }; + + union + { + union + { + __IOM uint32_t SQCH0DSC1CR; /*!< (@ 0x00000798) Sequence Channel 0 Descriptor-1 C Register */ + + struct + { + __IOM uint32_t FINACT : 1; /*!< [0..0] Finish Action */ + uint32_t : 21; + __IOM uint32_t AUXOP : 1; /*!< [22..22] Auxiliary Operation */ + uint32_t : 1; + __IOM uint32_t ACTCODE : 8; /*!< [31..24] Action Code */ + } SQCH0DSC1CR_b; + }; + + struct + { + union + { + union + { + __IOM uint16_t SQCH0DSC1CR_L; /*!< (@ 0x00000798) Sequence Channel 0 Descriptor-1 C Register */ + + struct + { + __IOM uint16_t FINACT : 1; /*!< [0..0] Finish Action */ + uint16_t : 15; + } SQCH0DSC1CR_L_b; + }; + + union + { + __IOM uint8_t SQCH0DSC1CR_LL; /*!< (@ 0x00000798) Sequence Channel 0 Descriptor-1 C Register */ + + struct + { + __IOM uint8_t FINACT : 1; /*!< [0..0] Finish Action */ + uint8_t : 7; + } SQCH0DSC1CR_LL_b; + }; + }; + + union + { + union + { + __IOM uint16_t SQCH0DSC1CR_H; /*!< (@ 0x0000079A) Sequence Channel 0 Descriptor-1 C Register */ + + struct + { + uint16_t : 6; + __IOM uint16_t AUXOP : 1; /*!< [6..6] Auxiliary Operation */ + uint16_t : 1; + __IOM uint16_t ACTCODE : 8; /*!< [15..8] Action Code */ + } SQCH0DSC1CR_H_b; + }; + + struct + { + union + { + __IOM uint8_t SQCH0DSC1CR_HL; /*!< (@ 0x0000079A) Sequence Channel 0 Descriptor-1 C Register */ + + struct + { + uint8_t : 6; + __IOM uint8_t AUXOP : 1; /*!< [6..6] Auxiliary Operation */ + uint8_t : 1; + } SQCH0DSC1CR_HL_b; + }; + + union + { + __IOM uint8_t SQCH0DSC1CR_HH; /*!< (@ 0x0000079B) Sequence Channel 0 Descriptor-1 C Register */ + + struct + { + __IOM uint8_t ACTCODE : 8; /*!< [7..0] Action Code */ + } SQCH0DSC1CR_HH_b; + }; + }; + }; + }; + }; + + union + { + union + { + __IOM uint32_t SQCH0DSC1DR; /*!< (@ 0x0000079C) Sequence Channel 0 Descriptor-1 D Register */ + + struct + { + __IOM uint32_t LADDR : 32; /*!< [31..0] Lower Address */ + } SQCH0DSC1DR_b; + }; + + struct + { + union + { + union + { + __IOM uint16_t SQCH0DSC1DR_L; /*!< (@ 0x0000079C) Sequence Channel 0 Descriptor-1 D Register */ + + struct + { + __IOM uint16_t LADDR : 16; /*!< [15..0] Lower Address */ + } SQCH0DSC1DR_L_b; + }; + + struct + { + union + { + __IOM uint8_t SQCH0DSC1DR_LL; /*!< (@ 0x0000079C) Sequence Channel 0 Descriptor-1 D Register */ + + struct + { + __IOM uint8_t LADDR : 8; /*!< [7..0] Lower Address */ + } SQCH0DSC1DR_LL_b; + }; + + union + { + __IOM uint8_t SQCH0DSC1DR_LH; /*!< (@ 0x0000079D) Sequence Channel 0 Descriptor-1 D Register */ + + struct + { + __IOM uint8_t LADDR : 8; /*!< [7..0] Lower Address */ + } SQCH0DSC1DR_LH_b; + }; + }; + }; + + union + { + union + { + __IOM uint16_t SQCH0DSC1DR_H; /*!< (@ 0x0000079E) Sequence Channel 0 Descriptor-1 D Register */ + + struct + { + __IOM uint16_t LADDR : 16; /*!< [15..0] Lower Address */ + } SQCH0DSC1DR_H_b; + }; + + struct + { + union + { + __IOM uint8_t SQCH0DSC1DR_HL; /*!< (@ 0x0000079E) Sequence Channel 0 Descriptor-1 D Register */ + + struct + { + __IOM uint8_t LADDR : 8; /*!< [7..0] Lower Address */ + } SQCH0DSC1DR_HL_b; + }; + + union + { + __IOM uint8_t SQCH0DSC1DR_HH; /*!< (@ 0x0000079F) Sequence Channel 0 Descriptor-1 D Register */ + + struct + { + __IOM uint8_t LADDR : 8; /*!< [7..0] Lower Address */ + } SQCH0DSC1DR_HH_b; + }; + }; + }; + }; + }; + + union + { + union + { + __IOM uint32_t SQCH0DSC2AR; /*!< (@ 0x000007A0) Sequence Channel 0 Descriptor-2 A Register */ + + struct + { + __IOM uint32_t DATA0 : 8; /*!< [7..0] Data 0 */ + __IOM uint32_t DATA1 : 8; /*!< [15..8] Data 1 */ + __IOM uint32_t DT : 6; /*!< [21..16] Data Type */ + __IOM uint32_t VC : 2; /*!< [23..22] Virtual Channel */ + __IOM uint32_t FMT : 1; /*!< [24..24] Format */ + __IOM uint32_t SPD : 1; /*!< [25..25] Speed */ + __IOM uint32_t BTA : 2; /*!< [27..26] Bus Turn Around */ + __IOM uint32_t NXACT : 2; /*!< [29..28] Next Action */ + uint32_t : 2; + } SQCH0DSC2AR_b; + }; + + struct + { + union + { + union + { + __IOM uint16_t SQCH0DSC2AR_L; /*!< (@ 0x000007A0) Sequence Channel 0 Descriptor-2 A Register */ + + struct + { + __IOM uint16_t DATA0 : 8; /*!< [7..0] Data 0 */ + __IOM uint16_t DATA1 : 8; /*!< [15..8] Data 1 */ + } SQCH0DSC2AR_L_b; + }; + + struct + { + union + { + __IOM uint8_t SQCH0DSC2AR_LL; /*!< (@ 0x000007A0) Sequence Channel 0 Descriptor-2 A Register */ + + struct + { + __IOM uint8_t DATA0 : 8; /*!< [7..0] Data 0 */ + } SQCH0DSC2AR_LL_b; + }; + + union + { + __IOM uint8_t SQCH0DSC2AR_LH; /*!< (@ 0x000007A1) Sequence Channel 0 Descriptor-2 A Register */ + + struct + { + __IOM uint8_t DATA1 : 8; /*!< [7..0] Data 1 */ + } SQCH0DSC2AR_LH_b; + }; + }; + }; + + union + { + union + { + __IOM uint16_t SQCH0DSC2AR_H; /*!< (@ 0x000007A2) Sequence Channel 0 Descriptor-2 A Register */ + + struct + { + __IOM uint16_t DT : 6; /*!< [5..0] Data Type */ + __IOM uint16_t VC : 2; /*!< [7..6] Virtual Channel */ + __IOM uint16_t FMT : 1; /*!< [8..8] Format */ + __IOM uint16_t SPD : 1; /*!< [9..9] Speed */ + __IOM uint16_t BTA : 2; /*!< [11..10] Bus Turn Around */ + __IOM uint16_t NXACT : 2; /*!< [13..12] Next Action */ + uint16_t : 2; + } SQCH0DSC2AR_H_b; + }; + + struct + { + union + { + __IOM uint8_t SQCH0DSC2AR_HL; /*!< (@ 0x000007A2) Sequence Channel 0 Descriptor-2 A Register */ + + struct + { + __IOM uint8_t DT : 6; /*!< [5..0] Data Type */ + __IOM uint8_t VC : 2; /*!< [7..6] Virtual Channel */ + } SQCH0DSC2AR_HL_b; + }; + + union + { + __IOM uint8_t SQCH0DSC2AR_HH; /*!< (@ 0x000007A3) Sequence Channel 0 Descriptor-2 A Register */ + + struct + { + __IOM uint8_t FMT : 1; /*!< [0..0] Format */ + __IOM uint8_t SPD : 1; /*!< [1..1] Speed */ + __IOM uint8_t BTA : 2; /*!< [3..2] Bus Turn Around */ + __IOM uint8_t NXACT : 2; /*!< [5..4] Next Action */ + uint8_t : 2; + } SQCH0DSC2AR_HH_b; + }; + }; + }; + }; + }; + + union + { + __IOM uint32_t SQCH0DSC2BR; /*!< (@ 0x000007A4) Sequence Channel 0 Descriptor-2 B Register */ + + struct + { + uint32_t : 24; + __IOM uint32_t DTSEL : 2; /*!< [25..24] Data Select */ + uint32_t : 6; + } SQCH0DSC2BR_b; + }; + + union + { + union + { + __IOM uint32_t SQCH0DSC2CR; /*!< (@ 0x000007A8) Sequence Channel 0 Descriptor-2 C Register */ + + struct + { + __IOM uint32_t FINACT : 1; /*!< [0..0] Finish Action */ + uint32_t : 21; + __IOM uint32_t AUXOP : 1; /*!< [22..22] Auxiliary Operation */ + uint32_t : 1; + __IOM uint32_t ACTCODE : 8; /*!< [31..24] Action Code */ + } SQCH0DSC2CR_b; + }; + + struct + { + union + { + union + { + __IOM uint16_t SQCH0DSC2CR_L; /*!< (@ 0x000007A8) Sequence Channel 0 Descriptor-2 C Register */ + + struct + { + __IOM uint16_t FINACT : 1; /*!< [0..0] Finish Action */ + uint16_t : 15; + } SQCH0DSC2CR_L_b; + }; + + union + { + __IOM uint8_t SQCH0DSC2CR_LL; /*!< (@ 0x000007A8) Sequence Channel 0 Descriptor-2 C Register */ + + struct + { + __IOM uint8_t FINACT : 1; /*!< [0..0] Finish Action */ + uint8_t : 7; + } SQCH0DSC2CR_LL_b; + }; + }; + + union + { + union + { + __IOM uint16_t SQCH0DSC2CR_H; /*!< (@ 0x000007AA) Sequence Channel 0 Descriptor-2 C Register */ + + struct + { + uint16_t : 6; + __IOM uint16_t AUXOP : 1; /*!< [6..6] Auxiliary Operation */ + uint16_t : 1; + __IOM uint16_t ACTCODE : 8; /*!< [15..8] Action Code */ + } SQCH0DSC2CR_H_b; + }; + + struct + { + union + { + __IOM uint8_t SQCH0DSC2CR_HL; /*!< (@ 0x000007AA) Sequence Channel 0 Descriptor-2 C Register */ + + struct + { + uint8_t : 6; + __IOM uint8_t AUXOP : 1; /*!< [6..6] Auxiliary Operation */ + uint8_t : 1; + } SQCH0DSC2CR_HL_b; + }; + + union + { + __IOM uint8_t SQCH0DSC2CR_HH; /*!< (@ 0x000007AB) Sequence Channel 0 Descriptor-2 C Register */ + + struct + { + __IOM uint8_t ACTCODE : 8; /*!< [7..0] Action Code */ + } SQCH0DSC2CR_HH_b; + }; + }; + }; + }; + }; + + union + { + union + { + __IOM uint32_t SQCH0DSC2DR; /*!< (@ 0x000007AC) Sequence Channel 0 Descriptor-2 D Register */ + + struct + { + __IOM uint32_t LADDR : 32; /*!< [31..0] Lower Address */ + } SQCH0DSC2DR_b; + }; + + struct + { + union + { + union + { + __IOM uint16_t SQCH0DSC2DR_L; /*!< (@ 0x000007AC) Sequence Channel 0 Descriptor-2 D Register */ + + struct + { + __IOM uint16_t LADDR : 16; /*!< [15..0] Lower Address */ + } SQCH0DSC2DR_L_b; + }; + + struct + { + union + { + __IOM uint8_t SQCH0DSC2DR_LL; /*!< (@ 0x000007AC) Sequence Channel 0 Descriptor-2 D Register */ + + struct + { + __IOM uint8_t LADDR : 8; /*!< [7..0] Lower Address */ + } SQCH0DSC2DR_LL_b; + }; + + union + { + __IOM uint8_t SQCH0DSC2DR_LH; /*!< (@ 0x000007AD) Sequence Channel 0 Descriptor-2 D Register */ + + struct + { + __IOM uint8_t LADDR : 8; /*!< [7..0] Lower Address */ + } SQCH0DSC2DR_LH_b; + }; + }; + }; + + union + { + union + { + __IOM uint16_t SQCH0DSC2DR_H; /*!< (@ 0x000007AE) Sequence Channel 0 Descriptor-2 D Register */ + + struct + { + __IOM uint16_t LADDR : 16; /*!< [15..0] Lower Address */ + } SQCH0DSC2DR_H_b; + }; + + struct + { + union + { + __IOM uint8_t SQCH0DSC2DR_HL; /*!< (@ 0x000007AE) Sequence Channel 0 Descriptor-2 D Register */ + + struct + { + __IOM uint8_t LADDR : 8; /*!< [7..0] Lower Address */ + } SQCH0DSC2DR_HL_b; + }; + + union + { + __IOM uint8_t SQCH0DSC2DR_HH; /*!< (@ 0x000007AF) Sequence Channel 0 Descriptor-2 D Register */ + + struct + { + __IOM uint8_t LADDR : 8; /*!< [7..0] Lower Address */ + } SQCH0DSC2DR_HH_b; + }; + }; + }; + }; + }; + + union + { + union + { + __IOM uint32_t SQCH0DSC3AR; /*!< (@ 0x000007B0) Sequence Channel 0 Descriptor-3 A Register */ + + struct + { + __IOM uint32_t DATA0 : 8; /*!< [7..0] Data 0 */ + __IOM uint32_t DATA1 : 8; /*!< [15..8] Data 1 */ + __IOM uint32_t DT : 6; /*!< [21..16] Data Type */ + __IOM uint32_t VC : 2; /*!< [23..22] Virtual Channel */ + __IOM uint32_t FMT : 1; /*!< [24..24] Format */ + __IOM uint32_t SPD : 1; /*!< [25..25] Speed */ + __IOM uint32_t BTA : 2; /*!< [27..26] Bus Turn Around */ + __IOM uint32_t NXACT : 2; /*!< [29..28] Next Action */ + uint32_t : 2; + } SQCH0DSC3AR_b; + }; + + struct + { + union + { + union + { + __IOM uint16_t SQCH0DSC3AR_L; /*!< (@ 0x000007B0) Sequence Channel 0 Descriptor-3 A Register */ + + struct + { + __IOM uint16_t DATA0 : 8; /*!< [7..0] Data 0 */ + __IOM uint16_t DATA1 : 8; /*!< [15..8] Data 1 */ + } SQCH0DSC3AR_L_b; + }; + + struct + { + union + { + __IOM uint8_t SQCH0DSC3AR_LL; /*!< (@ 0x000007B0) Sequence Channel 0 Descriptor-3 A Register */ + + struct + { + __IOM uint8_t DATA0 : 8; /*!< [7..0] Data 0 */ + } SQCH0DSC3AR_LL_b; + }; + + union + { + __IOM uint8_t SQCH0DSC3AR_LH; /*!< (@ 0x000007B1) Sequence Channel 0 Descriptor-3 A Register */ + + struct + { + __IOM uint8_t DATA1 : 8; /*!< [7..0] Data 1 */ + } SQCH0DSC3AR_LH_b; + }; + }; + }; + + union + { + union + { + __IOM uint16_t SQCH0DSC3AR_H; /*!< (@ 0x000007B2) Sequence Channel 0 Descriptor-3 A Register */ + + struct + { + __IOM uint16_t DT : 6; /*!< [5..0] Data Type */ + __IOM uint16_t VC : 2; /*!< [7..6] Virtual Channel */ + __IOM uint16_t FMT : 1; /*!< [8..8] Format */ + __IOM uint16_t SPD : 1; /*!< [9..9] Speed */ + __IOM uint16_t BTA : 2; /*!< [11..10] Bus Turn Around */ + __IOM uint16_t NXACT : 2; /*!< [13..12] Next Action */ + uint16_t : 2; + } SQCH0DSC3AR_H_b; + }; + + struct + { + union + { + __IOM uint8_t SQCH0DSC3AR_HL; /*!< (@ 0x000007B2) Sequence Channel 0 Descriptor-3 A Register */ + + struct + { + __IOM uint8_t DT : 6; /*!< [5..0] Data Type */ + __IOM uint8_t VC : 2; /*!< [7..6] Virtual Channel */ + } SQCH0DSC3AR_HL_b; + }; + + union + { + __IOM uint8_t SQCH0DSC3AR_HH; /*!< (@ 0x000007B3) Sequence Channel 0 Descriptor-3 A Register */ + + struct + { + __IOM uint8_t FMT : 1; /*!< [0..0] Format */ + __IOM uint8_t SPD : 1; /*!< [1..1] Speed */ + __IOM uint8_t BTA : 2; /*!< [3..2] Bus Turn Around */ + __IOM uint8_t NXACT : 2; /*!< [5..4] Next Action */ + uint8_t : 2; + } SQCH0DSC3AR_HH_b; + }; + }; + }; + }; + }; + + union + { + __IOM uint32_t SQCH0DSC3BR; /*!< (@ 0x000007B4) Sequence Channel 0 Descriptor-3 B Register */ + + struct + { + uint32_t : 24; + __IOM uint32_t DTSEL : 2; /*!< [25..24] Data Select */ + uint32_t : 6; + } SQCH0DSC3BR_b; + }; + + union + { + union + { + __IOM uint32_t SQCH0DSC3CR; /*!< (@ 0x000007B8) Sequence Channel 0 Descriptor-3 C Register */ + + struct + { + __IOM uint32_t FINACT : 1; /*!< [0..0] Finish Action */ + uint32_t : 21; + __IOM uint32_t AUXOP : 1; /*!< [22..22] Auxiliary Operation */ + uint32_t : 1; + __IOM uint32_t ACTCODE : 8; /*!< [31..24] Action Code */ + } SQCH0DSC3CR_b; + }; + + struct + { + union + { + union + { + __IOM uint16_t SQCH0DSC3CR_L; /*!< (@ 0x000007B8) Sequence Channel 0 Descriptor-3 C Register */ + + struct + { + __IOM uint16_t FINACT : 1; /*!< [0..0] Finish Action */ + uint16_t : 15; + } SQCH0DSC3CR_L_b; + }; + + union + { + __IOM uint8_t SQCH0DSC3CR_LL; /*!< (@ 0x000007B8) Sequence Channel 0 Descriptor-3 C Register */ + + struct + { + __IOM uint8_t FINACT : 1; /*!< [0..0] Finish Action */ + uint8_t : 7; + } SQCH0DSC3CR_LL_b; + }; + }; + + union + { + union + { + __IOM uint16_t SQCH0DSC3CR_H; /*!< (@ 0x000007BA) Sequence Channel 0 Descriptor-3 C Register */ + + struct + { + uint16_t : 6; + __IOM uint16_t AUXOP : 1; /*!< [6..6] Auxiliary Operation */ + uint16_t : 1; + __IOM uint16_t ACTCODE : 8; /*!< [15..8] Action Code */ + } SQCH0DSC3CR_H_b; + }; + + struct + { + union + { + __IOM uint8_t SQCH0DSC3CR_HL; /*!< (@ 0x000007BA) Sequence Channel 0 Descriptor-3 C Register */ + + struct + { + uint8_t : 6; + __IOM uint8_t AUXOP : 1; /*!< [6..6] Auxiliary Operation */ + uint8_t : 1; + } SQCH0DSC3CR_HL_b; + }; + + union + { + __IOM uint8_t SQCH0DSC3CR_HH; /*!< (@ 0x000007BB) Sequence Channel 0 Descriptor-3 C Register */ + + struct + { + __IOM uint8_t ACTCODE : 8; /*!< [7..0] Action Code */ + } SQCH0DSC3CR_HH_b; + }; + }; + }; + }; + }; + + union + { + union + { + __IOM uint32_t SQCH0DSC3DR; /*!< (@ 0x000007BC) Sequence Channel 0 Descriptor-3 D Register */ + + struct + { + __IOM uint32_t LADDR : 32; /*!< [31..0] Lower Address */ + } SQCH0DSC3DR_b; + }; + + struct + { + union + { + union + { + __IOM uint16_t SQCH0DSC3DR_L; /*!< (@ 0x000007BC) Sequence Channel 0 Descriptor-3 D Register */ + + struct + { + __IOM uint16_t LADDR : 16; /*!< [15..0] Lower Address */ + } SQCH0DSC3DR_L_b; + }; + + struct + { + union + { + __IOM uint8_t SQCH0DSC3DR_LL; /*!< (@ 0x000007BC) Sequence Channel 0 Descriptor-3 D Register */ + + struct + { + __IOM uint8_t LADDR : 8; /*!< [7..0] Lower Address */ + } SQCH0DSC3DR_LL_b; + }; + + union + { + __IOM uint8_t SQCH0DSC3DR_LH; /*!< (@ 0x000007BD) Sequence Channel 0 Descriptor-3 D Register */ + + struct + { + __IOM uint8_t LADDR : 8; /*!< [7..0] Lower Address */ + } SQCH0DSC3DR_LH_b; + }; + }; + }; + + union + { + union + { + __IOM uint16_t SQCH0DSC3DR_H; /*!< (@ 0x000007BE) Sequence Channel 0 Descriptor-3 D Register */ + + struct + { + __IOM uint16_t LADDR : 16; /*!< [15..0] Lower Address */ + } SQCH0DSC3DR_H_b; + }; + + struct + { + union + { + __IOM uint8_t SQCH0DSC3DR_HL; /*!< (@ 0x000007BE) Sequence Channel 0 Descriptor-3 D Register */ + + struct + { + __IOM uint8_t LADDR : 8; /*!< [7..0] Lower Address */ + } SQCH0DSC3DR_HL_b; + }; + + union + { + __IOM uint8_t SQCH0DSC3DR_HH; /*!< (@ 0x000007BF) Sequence Channel 0 Descriptor-3 D Register */ + + struct + { + __IOM uint8_t LADDR : 8; /*!< [7..0] Lower Address */ + } SQCH0DSC3DR_HH_b; + }; + }; + }; + }; + }; + + union + { + union + { + __IOM uint32_t SQCH0DSC4AR; /*!< (@ 0x000007C0) Sequence Channel 0 Descriptor-4 A Register */ + + struct + { + __IOM uint32_t DATA0 : 8; /*!< [7..0] Data 0 */ + __IOM uint32_t DATA1 : 8; /*!< [15..8] Data 1 */ + __IOM uint32_t DT : 6; /*!< [21..16] Data Type */ + __IOM uint32_t VC : 2; /*!< [23..22] Virtual Channel */ + __IOM uint32_t FMT : 1; /*!< [24..24] Format */ + __IOM uint32_t SPD : 1; /*!< [25..25] Speed */ + __IOM uint32_t BTA : 2; /*!< [27..26] Bus Turn Around */ + __IOM uint32_t NXACT : 2; /*!< [29..28] Next Action */ + uint32_t : 2; + } SQCH0DSC4AR_b; + }; + + struct + { + union + { + union + { + __IOM uint16_t SQCH0DSC4AR_L; /*!< (@ 0x000007C0) Sequence Channel 0 Descriptor-4 A Register */ + + struct + { + __IOM uint16_t DATA0 : 8; /*!< [7..0] Data 0 */ + __IOM uint16_t DATA1 : 8; /*!< [15..8] Data 1 */ + } SQCH0DSC4AR_L_b; + }; + + struct + { + union + { + __IOM uint8_t SQCH0DSC4AR_LL; /*!< (@ 0x000007C0) Sequence Channel 0 Descriptor-4 A Register */ + + struct + { + __IOM uint8_t DATA0 : 8; /*!< [7..0] Data 0 */ + } SQCH0DSC4AR_LL_b; + }; + + union + { + __IOM uint8_t SQCH0DSC4AR_LH; /*!< (@ 0x000007C1) Sequence Channel 0 Descriptor-4 A Register */ + + struct + { + __IOM uint8_t DATA1 : 8; /*!< [7..0] Data 1 */ + } SQCH0DSC4AR_LH_b; + }; + }; + }; + + union + { + union + { + __IOM uint16_t SQCH0DSC4AR_H; /*!< (@ 0x000007C2) Sequence Channel 0 Descriptor-4 A Register */ + + struct + { + __IOM uint16_t DT : 6; /*!< [5..0] Data Type */ + __IOM uint16_t VC : 2; /*!< [7..6] Virtual Channel */ + __IOM uint16_t FMT : 1; /*!< [8..8] Format */ + __IOM uint16_t SPD : 1; /*!< [9..9] Speed */ + __IOM uint16_t BTA : 2; /*!< [11..10] Bus Turn Around */ + __IOM uint16_t NXACT : 2; /*!< [13..12] Next Action */ + uint16_t : 2; + } SQCH0DSC4AR_H_b; + }; + + struct + { + union + { + __IOM uint8_t SQCH0DSC4AR_HL; /*!< (@ 0x000007C2) Sequence Channel 0 Descriptor-4 A Register */ + + struct + { + __IOM uint8_t DT : 6; /*!< [5..0] Data Type */ + __IOM uint8_t VC : 2; /*!< [7..6] Virtual Channel */ + } SQCH0DSC4AR_HL_b; + }; + + union + { + __IOM uint8_t SQCH0DSC4AR_HH; /*!< (@ 0x000007C3) Sequence Channel 0 Descriptor-4 A Register */ + + struct + { + __IOM uint8_t FMT : 1; /*!< [0..0] Format */ + __IOM uint8_t SPD : 1; /*!< [1..1] Speed */ + __IOM uint8_t BTA : 2; /*!< [3..2] Bus Turn Around */ + __IOM uint8_t NXACT : 2; /*!< [5..4] Next Action */ + uint8_t : 2; + } SQCH0DSC4AR_HH_b; + }; + }; + }; + }; + }; + + union + { + __IOM uint32_t SQCH0DSC4BR; /*!< (@ 0x000007C4) Sequence Channel 0 Descriptor-4 B Register */ + + struct + { + uint32_t : 24; + __IOM uint32_t DTSEL : 2; /*!< [25..24] Data Select */ + uint32_t : 6; + } SQCH0DSC4BR_b; + }; + + union + { + union + { + __IOM uint32_t SQCH0DSC4CR; /*!< (@ 0x000007C8) Sequence Channel 0 Descriptor-4 C Register */ + + struct + { + __IOM uint32_t FINACT : 1; /*!< [0..0] Finish Action */ + uint32_t : 21; + __IOM uint32_t AUXOP : 1; /*!< [22..22] Auxiliary Operation */ + uint32_t : 1; + __IOM uint32_t ACTCODE : 8; /*!< [31..24] Action Code */ + } SQCH0DSC4CR_b; + }; + + struct + { + union + { + union + { + __IOM uint16_t SQCH0DSC4CR_L; /*!< (@ 0x000007C8) Sequence Channel 0 Descriptor-4 C Register */ + + struct + { + __IOM uint16_t FINACT : 1; /*!< [0..0] Finish Action */ + uint16_t : 15; + } SQCH0DSC4CR_L_b; + }; + + union + { + __IOM uint8_t SQCH0DSC4CR_LL; /*!< (@ 0x000007C8) Sequence Channel 0 Descriptor-4 C Register */ + + struct + { + __IOM uint8_t FINACT : 1; /*!< [0..0] Finish Action */ + uint8_t : 7; + } SQCH0DSC4CR_LL_b; + }; + }; + + union + { + union + { + __IOM uint16_t SQCH0DSC4CR_H; /*!< (@ 0x000007CA) Sequence Channel 0 Descriptor-4 C Register */ + + struct + { + uint16_t : 6; + __IOM uint16_t AUXOP : 1; /*!< [6..6] Auxiliary Operation */ + uint16_t : 1; + __IOM uint16_t ACTCODE : 8; /*!< [15..8] Action Code */ + } SQCH0DSC4CR_H_b; + }; + + struct + { + union + { + __IOM uint8_t SQCH0DSC4CR_HL; /*!< (@ 0x000007CA) Sequence Channel 0 Descriptor-4 C Register */ + + struct + { + uint8_t : 6; + __IOM uint8_t AUXOP : 1; /*!< [6..6] Auxiliary Operation */ + uint8_t : 1; + } SQCH0DSC4CR_HL_b; + }; + + union + { + __IOM uint8_t SQCH0DSC4CR_HH; /*!< (@ 0x000007CB) Sequence Channel 0 Descriptor-4 C Register */ + + struct + { + __IOM uint8_t ACTCODE : 8; /*!< [7..0] Action Code */ + } SQCH0DSC4CR_HH_b; + }; + }; + }; + }; + }; + + union + { + union + { + __IOM uint32_t SQCH0DSC4DR; /*!< (@ 0x000007CC) Sequence Channel 0 Descriptor-4 D Register */ + + struct + { + __IOM uint32_t LADDR : 32; /*!< [31..0] Lower Address */ + } SQCH0DSC4DR_b; + }; + + struct + { + union + { + union + { + __IOM uint16_t SQCH0DSC4DR_L; /*!< (@ 0x000007CC) Sequence Channel 0 Descriptor-4 D Register */ + + struct + { + __IOM uint16_t LADDR : 16; /*!< [15..0] Lower Address */ + } SQCH0DSC4DR_L_b; + }; + + struct + { + union + { + __IOM uint8_t SQCH0DSC4DR_LL; /*!< (@ 0x000007CC) Sequence Channel 0 Descriptor-4 D Register */ + + struct + { + __IOM uint8_t LADDR : 8; /*!< [7..0] Lower Address */ + } SQCH0DSC4DR_LL_b; + }; + + union + { + __IOM uint8_t SQCH0DSC4DR_LH; /*!< (@ 0x000007CD) Sequence Channel 0 Descriptor-4 D Register */ + + struct + { + __IOM uint8_t LADDR : 8; /*!< [7..0] Lower Address */ + } SQCH0DSC4DR_LH_b; + }; + }; + }; + + union + { + union + { + __IOM uint16_t SQCH0DSC4DR_H; /*!< (@ 0x000007CE) Sequence Channel 0 Descriptor-4 D Register */ + + struct + { + __IOM uint16_t LADDR : 16; /*!< [15..0] Lower Address */ + } SQCH0DSC4DR_H_b; + }; + + struct + { + union + { + __IOM uint8_t SQCH0DSC4DR_HL; /*!< (@ 0x000007CE) Sequence Channel 0 Descriptor-4 D Register */ + + struct + { + __IOM uint8_t LADDR : 8; /*!< [7..0] Lower Address */ + } SQCH0DSC4DR_HL_b; + }; + + union + { + __IOM uint8_t SQCH0DSC4DR_HH; /*!< (@ 0x000007CF) Sequence Channel 0 Descriptor-4 D Register */ + + struct + { + __IOM uint8_t LADDR : 8; /*!< [7..0] Lower Address */ + } SQCH0DSC4DR_HH_b; + }; + }; + }; + }; + }; + + union + { + union + { + __IOM uint32_t SQCH0DSC5AR; /*!< (@ 0x000007D0) Sequence Channel 0 Descriptor-5 A Register */ + + struct + { + __IOM uint32_t DATA0 : 8; /*!< [7..0] Data 0 */ + __IOM uint32_t DATA1 : 8; /*!< [15..8] Data 1 */ + __IOM uint32_t DT : 6; /*!< [21..16] Data Type */ + __IOM uint32_t VC : 2; /*!< [23..22] Virtual Channel */ + __IOM uint32_t FMT : 1; /*!< [24..24] Format */ + __IOM uint32_t SPD : 1; /*!< [25..25] Speed */ + __IOM uint32_t BTA : 2; /*!< [27..26] Bus Turn Around */ + __IOM uint32_t NXACT : 2; /*!< [29..28] Next Action */ + uint32_t : 2; + } SQCH0DSC5AR_b; + }; + + struct + { + union + { + union + { + __IOM uint16_t SQCH0DSC5AR_L; /*!< (@ 0x000007D0) Sequence Channel 0 Descriptor-5 A Register */ + + struct + { + __IOM uint16_t DATA0 : 8; /*!< [7..0] Data 0 */ + __IOM uint16_t DATA1 : 8; /*!< [15..8] Data 1 */ + } SQCH0DSC5AR_L_b; + }; + + struct + { + union + { + __IOM uint8_t SQCH0DSC5AR_LL; /*!< (@ 0x000007D0) Sequence Channel 0 Descriptor-5 A Register */ + + struct + { + __IOM uint8_t DATA0 : 8; /*!< [7..0] Data 0 */ + } SQCH0DSC5AR_LL_b; + }; + + union + { + __IOM uint8_t SQCH0DSC5AR_LH; /*!< (@ 0x000007D1) Sequence Channel 0 Descriptor-5 A Register */ + + struct + { + __IOM uint8_t DATA1 : 8; /*!< [7..0] Data 1 */ + } SQCH0DSC5AR_LH_b; + }; + }; + }; + + union + { + union + { + __IOM uint16_t SQCH0DSC5AR_H; /*!< (@ 0x000007D2) Sequence Channel 0 Descriptor-5 A Register */ + + struct + { + __IOM uint16_t DT : 6; /*!< [5..0] Data Type */ + __IOM uint16_t VC : 2; /*!< [7..6] Virtual Channel */ + __IOM uint16_t FMT : 1; /*!< [8..8] Format */ + __IOM uint16_t SPD : 1; /*!< [9..9] Speed */ + __IOM uint16_t BTA : 2; /*!< [11..10] Bus Turn Around */ + __IOM uint16_t NXACT : 2; /*!< [13..12] Next Action */ + uint16_t : 2; + } SQCH0DSC5AR_H_b; + }; + + struct + { + union + { + __IOM uint8_t SQCH0DSC5AR_HL; /*!< (@ 0x000007D2) Sequence Channel 0 Descriptor-5 A Register */ + + struct + { + __IOM uint8_t DT : 6; /*!< [5..0] Data Type */ + __IOM uint8_t VC : 2; /*!< [7..6] Virtual Channel */ + } SQCH0DSC5AR_HL_b; + }; + + union + { + __IOM uint8_t SQCH0DSC5AR_HH; /*!< (@ 0x000007D3) Sequence Channel 0 Descriptor-5 A Register */ + + struct + { + __IOM uint8_t FMT : 1; /*!< [0..0] Format */ + __IOM uint8_t SPD : 1; /*!< [1..1] Speed */ + __IOM uint8_t BTA : 2; /*!< [3..2] Bus Turn Around */ + __IOM uint8_t NXACT : 2; /*!< [5..4] Next Action */ + uint8_t : 2; + } SQCH0DSC5AR_HH_b; + }; + }; + }; + }; + }; + + union + { + __IOM uint32_t SQCH0DSC5BR; /*!< (@ 0x000007D4) Sequence Channel 0 Descriptor-5 B Register */ + + struct + { + uint32_t : 24; + __IOM uint32_t DTSEL : 2; /*!< [25..24] Data Select */ + uint32_t : 6; + } SQCH0DSC5BR_b; + }; + + union + { + union + { + __IOM uint32_t SQCH0DSC5CR; /*!< (@ 0x000007D8) Sequence Channel 0 Descriptor-5 C Register */ + + struct + { + __IOM uint32_t FINACT : 1; /*!< [0..0] Finish Action */ + uint32_t : 21; + __IOM uint32_t AUXOP : 1; /*!< [22..22] Auxiliary Operation */ + uint32_t : 1; + __IOM uint32_t ACTCODE : 8; /*!< [31..24] Action Code */ + } SQCH0DSC5CR_b; + }; + + struct + { + union + { + union + { + __IOM uint16_t SQCH0DSC5CR_L; /*!< (@ 0x000007D8) Sequence Channel 0 Descriptor-5 C Register */ + + struct + { + __IOM uint16_t FINACT : 1; /*!< [0..0] Finish Action */ + uint16_t : 15; + } SQCH0DSC5CR_L_b; + }; + + union + { + __IOM uint8_t SQCH0DSC5CR_LL; /*!< (@ 0x000007D8) Sequence Channel 0 Descriptor-5 C Register */ + + struct + { + __IOM uint8_t FINACT : 1; /*!< [0..0] Finish Action */ + uint8_t : 7; + } SQCH0DSC5CR_LL_b; + }; + }; + + union + { + union + { + __IOM uint16_t SQCH0DSC5CR_H; /*!< (@ 0x000007DA) Sequence Channel 0 Descriptor-5 C Register */ + + struct + { + uint16_t : 6; + __IOM uint16_t AUXOP : 1; /*!< [6..6] Auxiliary Operation */ + uint16_t : 1; + __IOM uint16_t ACTCODE : 8; /*!< [15..8] Action Code */ + } SQCH0DSC5CR_H_b; + }; + + struct + { + union + { + __IOM uint8_t SQCH0DSC5CR_HL; /*!< (@ 0x000007DA) Sequence Channel 0 Descriptor-5 C Register */ + + struct + { + uint8_t : 6; + __IOM uint8_t AUXOP : 1; /*!< [6..6] Auxiliary Operation */ + uint8_t : 1; + } SQCH0DSC5CR_HL_b; + }; + + union + { + __IOM uint8_t SQCH0DSC5CR_HH; /*!< (@ 0x000007DB) Sequence Channel 0 Descriptor-5 C Register */ + + struct + { + __IOM uint8_t ACTCODE : 8; /*!< [7..0] Action Code */ + } SQCH0DSC5CR_HH_b; + }; + }; + }; + }; + }; + + union + { + union + { + __IOM uint32_t SQCH0DSC5DR; /*!< (@ 0x000007DC) Sequence Channel 0 Descriptor-5 D Register */ + + struct + { + __IOM uint32_t LADDR : 32; /*!< [31..0] Lower Address */ + } SQCH0DSC5DR_b; + }; + + struct + { + union + { + union + { + __IOM uint16_t SQCH0DSC5DR_L; /*!< (@ 0x000007DC) Sequence Channel 0 Descriptor-5 D Register */ + + struct + { + __IOM uint16_t LADDR : 16; /*!< [15..0] Lower Address */ + } SQCH0DSC5DR_L_b; + }; + + struct + { + union + { + __IOM uint8_t SQCH0DSC5DR_LL; /*!< (@ 0x000007DC) Sequence Channel 0 Descriptor-5 D Register */ + + struct + { + __IOM uint8_t LADDR : 8; /*!< [7..0] Lower Address */ + } SQCH0DSC5DR_LL_b; + }; + + union + { + __IOM uint8_t SQCH0DSC5DR_LH; /*!< (@ 0x000007DD) Sequence Channel 0 Descriptor-5 D Register */ + + struct + { + __IOM uint8_t LADDR : 8; /*!< [7..0] Lower Address */ + } SQCH0DSC5DR_LH_b; + }; + }; + }; + + union + { + union + { + __IOM uint16_t SQCH0DSC5DR_H; /*!< (@ 0x000007DE) Sequence Channel 0 Descriptor-5 D Register */ + + struct + { + __IOM uint16_t LADDR : 16; /*!< [15..0] Lower Address */ + } SQCH0DSC5DR_H_b; + }; + + struct + { + union + { + __IOM uint8_t SQCH0DSC5DR_HL; /*!< (@ 0x000007DE) Sequence Channel 0 Descriptor-5 D Register */ + + struct + { + __IOM uint8_t LADDR : 8; /*!< [7..0] Lower Address */ + } SQCH0DSC5DR_HL_b; + }; + + union + { + __IOM uint8_t SQCH0DSC5DR_HH; /*!< (@ 0x000007DF) Sequence Channel 0 Descriptor-5 D Register */ + + struct + { + __IOM uint8_t LADDR : 8; /*!< [7..0] Lower Address */ + } SQCH0DSC5DR_HH_b; + }; + }; + }; + }; + }; + + union + { + union + { + __IOM uint32_t SQCH0DSC6AR; /*!< (@ 0x000007E0) Sequence Channel 0 Descriptor-6 A Register */ + + struct + { + __IOM uint32_t DATA0 : 8; /*!< [7..0] Data 0 */ + __IOM uint32_t DATA1 : 8; /*!< [15..8] Data 1 */ + __IOM uint32_t DT : 6; /*!< [21..16] Data Type */ + __IOM uint32_t VC : 2; /*!< [23..22] Virtual Channel */ + __IOM uint32_t FMT : 1; /*!< [24..24] Format */ + __IOM uint32_t SPD : 1; /*!< [25..25] Speed */ + __IOM uint32_t BTA : 2; /*!< [27..26] Bus Turn Around */ + __IOM uint32_t NXACT : 2; /*!< [29..28] Next Action */ + uint32_t : 2; + } SQCH0DSC6AR_b; + }; + + struct + { + union + { + union + { + __IOM uint16_t SQCH0DSC6AR_L; /*!< (@ 0x000007E0) Sequence Channel 0 Descriptor-6 A Register */ + + struct + { + __IOM uint16_t DATA0 : 8; /*!< [7..0] Data 0 */ + __IOM uint16_t DATA1 : 8; /*!< [15..8] Data 1 */ + } SQCH0DSC6AR_L_b; + }; + + struct + { + union + { + __IOM uint8_t SQCH0DSC6AR_LL; /*!< (@ 0x000007E0) Sequence Channel 0 Descriptor-6 A Register */ + + struct + { + __IOM uint8_t DATA0 : 8; /*!< [7..0] Data 0 */ + } SQCH0DSC6AR_LL_b; + }; + + union + { + __IOM uint8_t SQCH0DSC6AR_LH; /*!< (@ 0x000007E1) Sequence Channel 0 Descriptor-6 A Register */ + + struct + { + __IOM uint8_t DATA1 : 8; /*!< [7..0] Data 1 */ + } SQCH0DSC6AR_LH_b; + }; + }; + }; + + union + { + union + { + __IOM uint16_t SQCH0DSC6AR_H; /*!< (@ 0x000007E2) Sequence Channel 0 Descriptor-6 A Register */ + + struct + { + __IOM uint16_t DT : 6; /*!< [5..0] Data Type */ + __IOM uint16_t VC : 2; /*!< [7..6] Virtual Channel */ + __IOM uint16_t FMT : 1; /*!< [8..8] Format */ + __IOM uint16_t SPD : 1; /*!< [9..9] Speed */ + __IOM uint16_t BTA : 2; /*!< [11..10] Bus Turn Around */ + __IOM uint16_t NXACT : 2; /*!< [13..12] Next Action */ + uint16_t : 2; + } SQCH0DSC6AR_H_b; + }; + + struct + { + union + { + __IOM uint8_t SQCH0DSC6AR_HL; /*!< (@ 0x000007E2) Sequence Channel 0 Descriptor-6 A Register */ + + struct + { + __IOM uint8_t DT : 6; /*!< [5..0] Data Type */ + __IOM uint8_t VC : 2; /*!< [7..6] Virtual Channel */ + } SQCH0DSC6AR_HL_b; + }; + + union + { + __IOM uint8_t SQCH0DSC6AR_HH; /*!< (@ 0x000007E3) Sequence Channel 0 Descriptor-6 A Register */ + + struct + { + __IOM uint8_t FMT : 1; /*!< [0..0] Format */ + __IOM uint8_t SPD : 1; /*!< [1..1] Speed */ + __IOM uint8_t BTA : 2; /*!< [3..2] Bus Turn Around */ + __IOM uint8_t NXACT : 2; /*!< [5..4] Next Action */ + uint8_t : 2; + } SQCH0DSC6AR_HH_b; + }; + }; + }; + }; + }; + + union + { + __IOM uint32_t SQCH0DSC6BR; /*!< (@ 0x000007E4) Sequence Channel 0 Descriptor-6 B Register */ + + struct + { + uint32_t : 24; + __IOM uint32_t DTSEL : 2; /*!< [25..24] Data Select */ + uint32_t : 6; + } SQCH0DSC6BR_b; + }; + + union + { + union + { + __IOM uint32_t SQCH0DSC6CR; /*!< (@ 0x000007E8) Sequence Channel 0 Descriptor-6 C Register */ + + struct + { + __IOM uint32_t FINACT : 1; /*!< [0..0] Finish Action */ + uint32_t : 21; + __IOM uint32_t AUXOP : 1; /*!< [22..22] Auxiliary Operation */ + uint32_t : 1; + __IOM uint32_t ACTCODE : 8; /*!< [31..24] Action Code */ + } SQCH0DSC6CR_b; + }; + + struct + { + union + { + union + { + __IOM uint16_t SQCH0DSC6CR_L; /*!< (@ 0x000007E8) Sequence Channel 0 Descriptor-6 C Register */ + + struct + { + __IOM uint16_t FINACT : 1; /*!< [0..0] Finish Action */ + uint16_t : 15; + } SQCH0DSC6CR_L_b; + }; + + union + { + __IOM uint8_t SQCH0DSC6CR_LL; /*!< (@ 0x000007E8) Sequence Channel 0 Descriptor-6 C Register */ + + struct + { + __IOM uint8_t FINACT : 1; /*!< [0..0] Finish Action */ + uint8_t : 7; + } SQCH0DSC6CR_LL_b; + }; + }; + + union + { + union + { + __IOM uint16_t SQCH0DSC6CR_H; /*!< (@ 0x000007EA) Sequence Channel 0 Descriptor-6 C Register */ + + struct + { + uint16_t : 6; + __IOM uint16_t AUXOP : 1; /*!< [6..6] Auxiliary Operation */ + uint16_t : 1; + __IOM uint16_t ACTCODE : 8; /*!< [15..8] Action Code */ + } SQCH0DSC6CR_H_b; + }; + + struct + { + union + { + __IOM uint8_t SQCH0DSC6CR_HL; /*!< (@ 0x000007EA) Sequence Channel 0 Descriptor-6 C Register */ + + struct + { + uint8_t : 6; + __IOM uint8_t AUXOP : 1; /*!< [6..6] Auxiliary Operation */ + uint8_t : 1; + } SQCH0DSC6CR_HL_b; + }; + + union + { + __IOM uint8_t SQCH0DSC6CR_HH; /*!< (@ 0x000007EB) Sequence Channel 0 Descriptor-6 C Register */ + + struct + { + __IOM uint8_t ACTCODE : 8; /*!< [7..0] Action Code */ + } SQCH0DSC6CR_HH_b; + }; + }; + }; + }; + }; + + union + { + union + { + __IOM uint32_t SQCH0DSC6DR; /*!< (@ 0x000007EC) Sequence Channel 0 Descriptor-6 D Register */ + + struct + { + __IOM uint32_t LADDR : 32; /*!< [31..0] Lower Address */ + } SQCH0DSC6DR_b; + }; + + struct + { + union + { + union + { + __IOM uint16_t SQCH0DSC6DR_L; /*!< (@ 0x000007EC) Sequence Channel 0 Descriptor-6 D Register */ + + struct + { + __IOM uint16_t LADDR : 16; /*!< [15..0] Lower Address */ + } SQCH0DSC6DR_L_b; + }; + + struct + { + union + { + __IOM uint8_t SQCH0DSC6DR_LL; /*!< (@ 0x000007EC) Sequence Channel 0 Descriptor-6 D Register */ + + struct + { + __IOM uint8_t LADDR : 8; /*!< [7..0] Lower Address */ + } SQCH0DSC6DR_LL_b; + }; + + union + { + __IOM uint8_t SQCH0DSC6DR_LH; /*!< (@ 0x000007ED) Sequence Channel 0 Descriptor-6 D Register */ + + struct + { + __IOM uint8_t LADDR : 8; /*!< [7..0] Lower Address */ + } SQCH0DSC6DR_LH_b; + }; + }; + }; + + union + { + union + { + __IOM uint16_t SQCH0DSC6DR_H; /*!< (@ 0x000007EE) Sequence Channel 0 Descriptor-6 D Register */ + + struct + { + __IOM uint16_t LADDR : 16; /*!< [15..0] Lower Address */ + } SQCH0DSC6DR_H_b; + }; + + struct + { + union + { + __IOM uint8_t SQCH0DSC6DR_HL; /*!< (@ 0x000007EE) Sequence Channel 0 Descriptor-6 D Register */ + + struct + { + __IOM uint8_t LADDR : 8; /*!< [7..0] Lower Address */ + } SQCH0DSC6DR_HL_b; + }; + + union + { + __IOM uint8_t SQCH0DSC6DR_HH; /*!< (@ 0x000007EF) Sequence Channel 0 Descriptor-6 D Register */ + + struct + { + __IOM uint8_t LADDR : 8; /*!< [7..0] Lower Address */ + } SQCH0DSC6DR_HH_b; + }; + }; + }; + }; + }; + + union + { + union + { + __IOM uint32_t SQCH0DSC7AR; /*!< (@ 0x000007F0) Sequence Channel 0 Descriptor-7 A Register */ + + struct + { + __IOM uint32_t DATA0 : 8; /*!< [7..0] Data 0 */ + __IOM uint32_t DATA1 : 8; /*!< [15..8] Data 1 */ + __IOM uint32_t DT : 6; /*!< [21..16] Data Type */ + __IOM uint32_t VC : 2; /*!< [23..22] Virtual Channel */ + __IOM uint32_t FMT : 1; /*!< [24..24] Format */ + __IOM uint32_t SPD : 1; /*!< [25..25] Speed */ + __IOM uint32_t BTA : 2; /*!< [27..26] Bus Turn Around */ + __IOM uint32_t NXACT : 2; /*!< [29..28] Next Action */ + uint32_t : 2; + } SQCH0DSC7AR_b; + }; + + struct + { + union + { + union + { + __IOM uint16_t SQCH0DSC7AR_L; /*!< (@ 0x000007F0) Sequence Channel 0 Descriptor-7 A Register */ + + struct + { + __IOM uint16_t DATA0 : 8; /*!< [7..0] Data 0 */ + __IOM uint16_t DATA1 : 8; /*!< [15..8] Data 1 */ + } SQCH0DSC7AR_L_b; + }; + + struct + { + union + { + __IOM uint8_t SQCH0DSC7AR_LL; /*!< (@ 0x000007F0) Sequence Channel 0 Descriptor-7 A Register */ + + struct + { + __IOM uint8_t DATA0 : 8; /*!< [7..0] Data 0 */ + } SQCH0DSC7AR_LL_b; + }; + + union + { + __IOM uint8_t SQCH0DSC7AR_LH; /*!< (@ 0x000007F1) Sequence Channel 0 Descriptor-7 A Register */ + + struct + { + __IOM uint8_t DATA1 : 8; /*!< [7..0] Data 1 */ + } SQCH0DSC7AR_LH_b; + }; + }; + }; + + union + { + union + { + __IOM uint16_t SQCH0DSC7AR_H; /*!< (@ 0x000007F2) Sequence Channel 0 Descriptor-7 A Register */ + + struct + { + __IOM uint16_t DT : 6; /*!< [5..0] Data Type */ + __IOM uint16_t VC : 2; /*!< [7..6] Virtual Channel */ + __IOM uint16_t FMT : 1; /*!< [8..8] Format */ + __IOM uint16_t SPD : 1; /*!< [9..9] Speed */ + __IOM uint16_t BTA : 2; /*!< [11..10] Bus Turn Around */ + __IOM uint16_t NXACT : 2; /*!< [13..12] Next Action */ + uint16_t : 2; + } SQCH0DSC7AR_H_b; + }; + + struct + { + union + { + __IOM uint8_t SQCH0DSC7AR_HL; /*!< (@ 0x000007F2) Sequence Channel 0 Descriptor-7 A Register */ + + struct + { + __IOM uint8_t DT : 6; /*!< [5..0] Data Type */ + __IOM uint8_t VC : 2; /*!< [7..6] Virtual Channel */ + } SQCH0DSC7AR_HL_b; + }; + + union + { + __IOM uint8_t SQCH0DSC7AR_HH; /*!< (@ 0x000007F3) Sequence Channel 0 Descriptor-7 A Register */ + + struct + { + __IOM uint8_t FMT : 1; /*!< [0..0] Format */ + __IOM uint8_t SPD : 1; /*!< [1..1] Speed */ + __IOM uint8_t BTA : 2; /*!< [3..2] Bus Turn Around */ + __IOM uint8_t NXACT : 2; /*!< [5..4] Next Action */ + uint8_t : 2; + } SQCH0DSC7AR_HH_b; + }; + }; + }; + }; + }; + + union + { + __IOM uint32_t SQCH0DSC7BR; /*!< (@ 0x000007F4) Sequence Channel 0 Descriptor-7 B Register */ + + struct + { + uint32_t : 24; + __IOM uint32_t DTSEL : 2; /*!< [25..24] Data Select */ + uint32_t : 6; + } SQCH0DSC7BR_b; + }; + + union + { + union + { + __IOM uint32_t SQCH0DSC7CR; /*!< (@ 0x000007F8) Sequence Channel 0 Descriptor-7 C Register */ + + struct + { + __IOM uint32_t FINACT : 1; /*!< [0..0] Finish Action */ + uint32_t : 21; + __IOM uint32_t AUXOP : 1; /*!< [22..22] Auxiliary Operation */ + uint32_t : 1; + __IOM uint32_t ACTCODE : 8; /*!< [31..24] Action Code */ + } SQCH0DSC7CR_b; + }; + + struct + { + union + { + union + { + __IOM uint16_t SQCH0DSC7CR_L; /*!< (@ 0x000007F8) Sequence Channel 0 Descriptor-7 C Register */ + + struct + { + __IOM uint16_t FINACT : 1; /*!< [0..0] Finish Action */ + uint16_t : 15; + } SQCH0DSC7CR_L_b; + }; + + union + { + __IOM uint8_t SQCH0DSC7CR_LL; /*!< (@ 0x000007F8) Sequence Channel 0 Descriptor-7 C Register */ + + struct + { + __IOM uint8_t FINACT : 1; /*!< [0..0] Finish Action */ + uint8_t : 7; + } SQCH0DSC7CR_LL_b; + }; + }; + + union + { + union + { + __IOM uint16_t SQCH0DSC7CR_H; /*!< (@ 0x000007FA) Sequence Channel 0 Descriptor-7 C Register */ + + struct + { + uint16_t : 6; + __IOM uint16_t AUXOP : 1; /*!< [6..6] Auxiliary Operation */ + uint16_t : 1; + __IOM uint16_t ACTCODE : 8; /*!< [15..8] Action Code */ + } SQCH0DSC7CR_H_b; + }; + + struct + { + union + { + __IOM uint8_t SQCH0DSC7CR_HL; /*!< (@ 0x000007FA) Sequence Channel 0 Descriptor-7 C Register */ + + struct + { + uint8_t : 6; + __IOM uint8_t AUXOP : 1; /*!< [6..6] Auxiliary Operation */ + uint8_t : 1; + } SQCH0DSC7CR_HL_b; + }; + + union + { + __IOM uint8_t SQCH0DSC7CR_HH; /*!< (@ 0x000007FB) Sequence Channel 0 Descriptor-7 C Register */ + + struct + { + __IOM uint8_t ACTCODE : 8; /*!< [7..0] Action Code */ + } SQCH0DSC7CR_HH_b; + }; + }; + }; + }; + }; + + union + { + union + { + __IOM uint32_t SQCH0DSC7DR; /*!< (@ 0x000007FC) Sequence Channel 0 Descriptor-7 D Register */ + + struct + { + __IOM uint32_t LADDR : 32; /*!< [31..0] Lower Address */ + } SQCH0DSC7DR_b; + }; + + struct + { + union + { + union + { + __IOM uint16_t SQCH0DSC7DR_L; /*!< (@ 0x000007FC) Sequence Channel 0 Descriptor-7 D Register */ + + struct + { + __IOM uint16_t LADDR : 16; /*!< [15..0] Lower Address */ + } SQCH0DSC7DR_L_b; + }; + + struct + { + union + { + __IOM uint8_t SQCH0DSC7DR_LL; /*!< (@ 0x000007FC) Sequence Channel 0 Descriptor-7 D Register */ + + struct + { + __IOM uint8_t LADDR : 8; /*!< [7..0] Lower Address */ + } SQCH0DSC7DR_LL_b; + }; + + union + { + __IOM uint8_t SQCH0DSC7DR_LH; /*!< (@ 0x000007FD) Sequence Channel 0 Descriptor-7 D Register */ + + struct + { + __IOM uint8_t LADDR : 8; /*!< [7..0] Lower Address */ + } SQCH0DSC7DR_LH_b; + }; + }; + }; + + union + { + union + { + __IOM uint16_t SQCH0DSC7DR_H; /*!< (@ 0x000007FE) Sequence Channel 0 Descriptor-7 D Register */ + + struct + { + __IOM uint16_t LADDR : 16; /*!< [15..0] Lower Address */ + } SQCH0DSC7DR_H_b; + }; + + struct + { + union + { + __IOM uint8_t SQCH0DSC7DR_HL; /*!< (@ 0x000007FE) Sequence Channel 0 Descriptor-7 D Register */ + + struct + { + __IOM uint8_t LADDR : 8; /*!< [7..0] Lower Address */ + } SQCH0DSC7DR_HL_b; + }; + + union + { + __IOM uint8_t SQCH0DSC7DR_HH; /*!< (@ 0x000007FF) Sequence Channel 0 Descriptor-7 D Register */ + + struct + { + __IOM uint8_t LADDR : 8; /*!< [7..0] Lower Address */ + } SQCH0DSC7DR_HH_b; + }; + }; + }; + }; + }; + + union + { + union + { + __IOM uint32_t SQCH1DSC0AR; /*!< (@ 0x00000800) Sequence Channel 1 Descriptor-0 A Register */ + + struct + { + __IOM uint32_t DATA0 : 8; /*!< [7..0] Data 0 */ + __IOM uint32_t DATA1 : 8; /*!< [15..8] Data 1 */ + __IOM uint32_t DT : 6; /*!< [21..16] Data Type */ + __IOM uint32_t VC : 2; /*!< [23..22] Virtual Channel */ + __IOM uint32_t FMT : 1; /*!< [24..24] Format */ + __IOM uint32_t SPD : 1; /*!< [25..25] Speed */ + __IOM uint32_t BTA : 2; /*!< [27..26] Bus Turn Around */ + __IOM uint32_t NXACT : 2; /*!< [29..28] Next Action */ + uint32_t : 2; + } SQCH1DSC0AR_b; + }; + + struct + { + union + { + union + { + __IOM uint16_t SQCH1DSC0AR_L; /*!< (@ 0x00000800) Sequence Channel 1 Descriptor-0 A Register */ + + struct + { + __IOM uint16_t DATA0 : 8; /*!< [7..0] Data 0 */ + __IOM uint16_t DATA1 : 8; /*!< [15..8] Data 1 */ + } SQCH1DSC0AR_L_b; + }; + + struct + { + union + { + __IOM uint8_t SQCH1DSC0AR_LL; /*!< (@ 0x00000800) Sequence Channel 1 Descriptor-0 A Register */ + + struct + { + __IOM uint8_t DATA0 : 8; /*!< [7..0] Data 0 */ + } SQCH1DSC0AR_LL_b; + }; + + union + { + __IOM uint8_t SQCH1DSC0AR_LH; /*!< (@ 0x00000801) Sequence Channel 1 Descriptor-0 A Register */ + + struct + { + __IOM uint8_t DATA1 : 8; /*!< [7..0] Data 1 */ + } SQCH1DSC0AR_LH_b; + }; + }; + }; + + union + { + union + { + __IOM uint16_t SQCH1DSC0AR_H; /*!< (@ 0x00000802) Sequence Channel 1 Descriptor-0 A Register */ + + struct + { + __IOM uint16_t DT : 6; /*!< [5..0] Data Type */ + __IOM uint16_t VC : 2; /*!< [7..6] Virtual Channel */ + __IOM uint16_t FMT : 1; /*!< [8..8] Format */ + __IOM uint16_t SPD : 1; /*!< [9..9] Speed */ + __IOM uint16_t BTA : 2; /*!< [11..10] Bus Turn Around */ + __IOM uint16_t NXACT : 2; /*!< [13..12] Next Action */ + uint16_t : 2; + } SQCH1DSC0AR_H_b; + }; + + struct + { + union + { + __IOM uint8_t SQCH1DSC0AR_HL; /*!< (@ 0x00000802) Sequence Channel 1 Descriptor-0 A Register */ + + struct + { + __IOM uint8_t DT : 6; /*!< [5..0] Data Type */ + __IOM uint8_t VC : 2; /*!< [7..6] Virtual Channel */ + } SQCH1DSC0AR_HL_b; + }; + + union + { + __IOM uint8_t SQCH1DSC0AR_HH; /*!< (@ 0x00000803) Sequence Channel 1 Descriptor-0 A Register */ + + struct + { + __IOM uint8_t FMT : 1; /*!< [0..0] Format */ + __IOM uint8_t SPD : 1; /*!< [1..1] Speed */ + __IOM uint8_t BTA : 2; /*!< [3..2] Bus Turn Around */ + __IOM uint8_t NXACT : 2; /*!< [5..4] Next Action */ + uint8_t : 2; + } SQCH1DSC0AR_HH_b; + }; + }; + }; + }; + }; + + union + { + __IOM uint32_t SQCH1DSC0BR; /*!< (@ 0x00000804) Sequence Channel 1 Descriptor-0 B Register */ + + struct + { + uint32_t : 24; + __IOM uint32_t DTSEL : 2; /*!< [25..24] Data Select */ + uint32_t : 6; + } SQCH1DSC0BR_b; + }; + + union + { + union + { + __IOM uint32_t SQCH1DSC0CR; /*!< (@ 0x00000808) Sequence Channel 1 Descriptor-0 C Register */ + + struct + { + __IOM uint32_t FINACT : 1; /*!< [0..0] Finish Action */ + uint32_t : 21; + __IOM uint32_t AUXOP : 1; /*!< [22..22] Auxiliary Operation */ + uint32_t : 1; + __IOM uint32_t ACTCODE : 8; /*!< [31..24] Action Code */ + } SQCH1DSC0CR_b; + }; + + struct + { + union + { + union + { + __IOM uint16_t SQCH1DSC0CR_L; /*!< (@ 0x00000808) Sequence Channel 1 Descriptor-0 C Register */ + + struct + { + __IOM uint16_t FINACT : 1; /*!< [0..0] Finish Action */ + uint16_t : 15; + } SQCH1DSC0CR_L_b; + }; + + union + { + __IOM uint8_t SQCH1DSC0CR_LL; /*!< (@ 0x00000808) Sequence Channel 1 Descriptor-0 C Register */ + + struct + { + __IOM uint8_t FINACT : 1; /*!< [0..0] Finish Action */ + uint8_t : 7; + } SQCH1DSC0CR_LL_b; + }; + }; + + union + { + union + { + __IOM uint16_t SQCH1DSC0CR_H; /*!< (@ 0x0000080A) Sequence Channel 1 Descriptor-0 C Register */ + + struct + { + uint16_t : 6; + __IOM uint16_t AUXOP : 1; /*!< [6..6] Auxiliary Operation */ + uint16_t : 1; + __IOM uint16_t ACTCODE : 8; /*!< [15..8] Action Code */ + } SQCH1DSC0CR_H_b; + }; + + struct + { + union + { + __IOM uint8_t SQCH1DSC0CR_HL; /*!< (@ 0x0000080A) Sequence Channel 1 Descriptor-0 C Register */ + + struct + { + uint8_t : 6; + __IOM uint8_t AUXOP : 1; /*!< [6..6] Auxiliary Operation */ + uint8_t : 1; + } SQCH1DSC0CR_HL_b; + }; + + union + { + __IOM uint8_t SQCH1DSC0CR_HH; /*!< (@ 0x0000080B) Sequence Channel 1 Descriptor-0 C Register */ + + struct + { + __IOM uint8_t ACTCODE : 8; /*!< [7..0] Action Code */ + } SQCH1DSC0CR_HH_b; + }; + }; + }; + }; + }; + + union + { + union + { + __IOM uint32_t SQCH1DSC0DR; /*!< (@ 0x0000080C) Sequence Channel 1 Descriptor-0 D Register */ + + struct + { + __IOM uint32_t LADDR : 32; /*!< [31..0] Lower Address */ + } SQCH1DSC0DR_b; + }; + + struct + { + union + { + union + { + __IOM uint16_t SQCH1DSC0DR_L; /*!< (@ 0x0000080C) Sequence Channel 1 Descriptor-0 D Register */ + + struct + { + __IOM uint16_t LADDR : 16; /*!< [15..0] Lower Address */ + } SQCH1DSC0DR_L_b; + }; + + struct + { + union + { + __IOM uint8_t SQCH1DSC0DR_LL; /*!< (@ 0x0000080C) Sequence Channel 1 Descriptor-0 D Register */ + + struct + { + __IOM uint8_t LADDR : 8; /*!< [7..0] Lower Address */ + } SQCH1DSC0DR_LL_b; + }; + + union + { + __IOM uint8_t SQCH1DSC0DR_LH; /*!< (@ 0x0000080D) Sequence Channel 1 Descriptor-0 D Register */ + + struct + { + __IOM uint8_t LADDR : 8; /*!< [7..0] Lower Address */ + } SQCH1DSC0DR_LH_b; + }; + }; + }; + + union + { + __IOM uint8_t SQCH1DSC0DR_HL; /*!< (@ 0x0000080E) Sequence Channel 1 Descriptor-0 D Register */ + + struct + { + __IOM uint8_t LADDR : 8; /*!< [7..0] Lower Address */ + } SQCH1DSC0DR_HL_b; + }; + + union + { + __IOM uint8_t SQCH1DSC0DR_HH; /*!< (@ 0x0000080F) Sequence Channel 1 Descriptor-0 D Register */ + + struct + { + __IOM uint8_t LADDR : 8; /*!< [7..0] Lower Address */ + } SQCH1DSC0DR_HH_b; + }; + }; + }; + + union + { + union + { + __IOM uint32_t SQCH1DSC1AR; /*!< (@ 0x00000810) Sequence Channel 1 Descriptor-1 A Register */ + + struct + { + __IOM uint32_t DATA0 : 8; /*!< [7..0] Data 0 */ + __IOM uint32_t DATA1 : 8; /*!< [15..8] Data 1 */ + __IOM uint32_t DT : 6; /*!< [21..16] Data Type */ + __IOM uint32_t VC : 2; /*!< [23..22] Virtual Channel */ + __IOM uint32_t FMT : 1; /*!< [24..24] Format */ + __IOM uint32_t SPD : 1; /*!< [25..25] Speed */ + __IOM uint32_t BTA : 2; /*!< [27..26] Bus Turn Around */ + __IOM uint32_t NXACT : 2; /*!< [29..28] Next Action */ + uint32_t : 2; + } SQCH1DSC1AR_b; + }; + + struct + { + union + { + union + { + __IOM uint16_t SQCH1DSC1AR_L; /*!< (@ 0x00000810) Sequence Channel 1 Descriptor-1 A Register */ + + struct + { + __IOM uint16_t DATA0 : 8; /*!< [7..0] Data 0 */ + __IOM uint16_t DATA1 : 8; /*!< [15..8] Data 1 */ + } SQCH1DSC1AR_L_b; + }; + + struct + { + union + { + __IOM uint8_t SQCH1DSC1AR_LL; /*!< (@ 0x00000810) Sequence Channel 1 Descriptor-1 A Register */ + + struct + { + __IOM uint8_t DATA0 : 8; /*!< [7..0] Data 0 */ + } SQCH1DSC1AR_LL_b; + }; + + union + { + __IOM uint8_t SQCH1DSC1AR_LH; /*!< (@ 0x00000811) Sequence Channel 1 Descriptor-1 A Register */ + + struct + { + __IOM uint8_t DATA1 : 8; /*!< [7..0] Data 1 */ + } SQCH1DSC1AR_LH_b; + }; + }; + }; + + union + { + union + { + __IOM uint16_t SQCH1DSC1AR_H; /*!< (@ 0x00000812) Sequence Channel 1 Descriptor-1 A Register */ + + struct + { + __IOM uint16_t DT : 6; /*!< [5..0] Data Type */ + __IOM uint16_t VC : 2; /*!< [7..6] Virtual Channel */ + __IOM uint16_t FMT : 1; /*!< [8..8] Format */ + __IOM uint16_t SPD : 1; /*!< [9..9] Speed */ + __IOM uint16_t BTA : 2; /*!< [11..10] Bus Turn Around */ + __IOM uint16_t NXACT : 2; /*!< [13..12] Next Action */ + uint16_t : 2; + } SQCH1DSC1AR_H_b; + }; + + struct + { + union + { + __IOM uint8_t SQCH1DSC1AR_HL; /*!< (@ 0x00000812) Sequence Channel 1 Descriptor-1 A Register */ + + struct + { + __IOM uint8_t DT : 6; /*!< [5..0] Data Type */ + __IOM uint8_t VC : 2; /*!< [7..6] Virtual Channel */ + } SQCH1DSC1AR_HL_b; + }; + + union + { + __IOM uint8_t SQCH1DSC1AR_HH; /*!< (@ 0x00000813) Sequence Channel 1 Descriptor-1 A Register */ + + struct + { + __IOM uint8_t FMT : 1; /*!< [0..0] Format */ + __IOM uint8_t SPD : 1; /*!< [1..1] Speed */ + __IOM uint8_t BTA : 2; /*!< [3..2] Bus Turn Around */ + __IOM uint8_t NXACT : 2; /*!< [5..4] Next Action */ + uint8_t : 2; + } SQCH1DSC1AR_HH_b; + }; + }; + }; + }; + }; + + union + { + __IOM uint32_t SQCH1DSC1BR; /*!< (@ 0x00000814) Sequence Channel 1 Descriptor-1 B Register */ + + struct + { + uint32_t : 24; + __IOM uint32_t DTSEL : 2; /*!< [25..24] Data Select */ + uint32_t : 6; + } SQCH1DSC1BR_b; + }; + + union + { + union + { + __IOM uint32_t SQCH1DSC1CR; /*!< (@ 0x00000818) Sequence Channel 1 Descriptor-1 C Register */ + + struct + { + __IOM uint32_t FINACT : 1; /*!< [0..0] Finish Action */ + uint32_t : 21; + __IOM uint32_t AUXOP : 1; /*!< [22..22] Auxiliary Operation */ + uint32_t : 1; + __IOM uint32_t ACTCODE : 8; /*!< [31..24] Action Code */ + } SQCH1DSC1CR_b; + }; + + struct + { + union + { + union + { + __IOM uint16_t SQCH1DSC1CR_L; /*!< (@ 0x00000818) Sequence Channel 1 Descriptor-1 C Register */ + + struct + { + __IOM uint16_t FINACT : 1; /*!< [0..0] Finish Action */ + uint16_t : 15; + } SQCH1DSC1CR_L_b; + }; + + union + { + __IOM uint8_t SQCH1DSC1CR_LL; /*!< (@ 0x00000818) Sequence Channel 1 Descriptor-1 C Register */ + + struct + { + __IOM uint8_t FINACT : 1; /*!< [0..0] Finish Action */ + uint8_t : 7; + } SQCH1DSC1CR_LL_b; + }; + }; + + union + { + union + { + __IOM uint16_t SQCH1DSC1CR_H; /*!< (@ 0x0000081A) Sequence Channel 1 Descriptor-1 C Register */ + + struct + { + uint16_t : 6; + __IOM uint16_t AUXOP : 1; /*!< [6..6] Auxiliary Operation */ + uint16_t : 1; + __IOM uint16_t ACTCODE : 8; /*!< [15..8] Action Code */ + } SQCH1DSC1CR_H_b; + }; + + struct + { + union + { + __IOM uint8_t SQCH1DSC1CR_HL; /*!< (@ 0x0000081A) Sequence Channel 1 Descriptor-1 C Register */ + + struct + { + uint8_t : 6; + __IOM uint8_t AUXOP : 1; /*!< [6..6] Auxiliary Operation */ + uint8_t : 1; + } SQCH1DSC1CR_HL_b; + }; + + union + { + __IOM uint8_t SQCH1DSC1CR_HH; /*!< (@ 0x0000081B) Sequence Channel 1 Descriptor-1 C Register */ + + struct + { + __IOM uint8_t ACTCODE : 8; /*!< [7..0] Action Code */ + } SQCH1DSC1CR_HH_b; + }; + }; + }; + }; + }; + + union + { + union + { + __IOM uint32_t SQCH1DSC1DR; /*!< (@ 0x0000081C) Sequence Channel 1 Descriptor-1 D Register */ + + struct + { + __IOM uint32_t LADDR : 32; /*!< [31..0] Lower Address */ + } SQCH1DSC1DR_b; + }; + + struct + { + union + { + union + { + __IOM uint16_t SQCH1DSC1DR_L; /*!< (@ 0x0000081C) Sequence Channel 1 Descriptor-1 D Register */ + + struct + { + __IOM uint16_t LADDR : 16; /*!< [15..0] Lower Address */ + } SQCH1DSC1DR_L_b; + }; + + struct + { + union + { + __IOM uint8_t SQCH1DSC1DR_LL; /*!< (@ 0x0000081C) Sequence Channel 1 Descriptor-1 D Register */ + + struct + { + __IOM uint8_t LADDR : 8; /*!< [7..0] Lower Address */ + } SQCH1DSC1DR_LL_b; + }; + + union + { + __IOM uint8_t SQCH1DSC1DR_LH; /*!< (@ 0x0000081D) Sequence Channel 1 Descriptor-1 D Register */ + + struct + { + __IOM uint8_t LADDR : 8; /*!< [7..0] Lower Address */ + } SQCH1DSC1DR_LH_b; + }; + }; + }; + + union + { + __IOM uint8_t SQCH1DSC1DR_HL; /*!< (@ 0x0000081E) Sequence Channel 1 Descriptor-1 D Register */ + + struct + { + __IOM uint8_t LADDR : 8; /*!< [7..0] Lower Address */ + } SQCH1DSC1DR_HL_b; + }; + + union + { + __IOM uint8_t SQCH1DSC1DR_HH; /*!< (@ 0x0000081F) Sequence Channel 1 Descriptor-1 D Register */ + + struct + { + __IOM uint8_t LADDR : 8; /*!< [7..0] Lower Address */ + } SQCH1DSC1DR_HH_b; + }; + }; + }; + + union + { + union + { + __IOM uint32_t SQCH1DSC2AR; /*!< (@ 0x00000820) Sequence Channel 1 Descriptor-2 A Register */ + + struct + { + __IOM uint32_t DATA0 : 8; /*!< [7..0] Data 0 */ + __IOM uint32_t DATA1 : 8; /*!< [15..8] Data 1 */ + __IOM uint32_t DT : 6; /*!< [21..16] Data Type */ + __IOM uint32_t VC : 2; /*!< [23..22] Virtual Channel */ + __IOM uint32_t FMT : 1; /*!< [24..24] Format */ + __IOM uint32_t SPD : 1; /*!< [25..25] Speed */ + __IOM uint32_t BTA : 2; /*!< [27..26] Bus Turn Around */ + __IOM uint32_t NXACT : 2; /*!< [29..28] Next Action */ + uint32_t : 2; + } SQCH1DSC2AR_b; + }; + + struct + { + union + { + union + { + __IOM uint16_t SQCH1DSC2AR_L; /*!< (@ 0x00000820) Sequence Channel 1 Descriptor-2 A Register */ + + struct + { + __IOM uint16_t DATA0 : 8; /*!< [7..0] Data 0 */ + __IOM uint16_t DATA1 : 8; /*!< [15..8] Data 1 */ + } SQCH1DSC2AR_L_b; + }; + + struct + { + union + { + __IOM uint8_t SQCH1DSC2AR_LL; /*!< (@ 0x00000820) Sequence Channel 1 Descriptor-2 A Register */ + + struct + { + __IOM uint8_t DATA0 : 8; /*!< [7..0] Data 0 */ + } SQCH1DSC2AR_LL_b; + }; + + union + { + __IOM uint8_t SQCH1DSC2AR_LH; /*!< (@ 0x00000821) Sequence Channel 1 Descriptor-2 A Register */ + + struct + { + __IOM uint8_t DATA1 : 8; /*!< [7..0] Data 1 */ + } SQCH1DSC2AR_LH_b; + }; + }; + }; + + union + { + union + { + __IOM uint16_t SQCH1DSC2AR_H; /*!< (@ 0x00000822) Sequence Channel 1 Descriptor-2 A Register */ + + struct + { + __IOM uint16_t DT : 6; /*!< [5..0] Data Type */ + __IOM uint16_t VC : 2; /*!< [7..6] Virtual Channel */ + __IOM uint16_t FMT : 1; /*!< [8..8] Format */ + __IOM uint16_t SPD : 1; /*!< [9..9] Speed */ + __IOM uint16_t BTA : 2; /*!< [11..10] Bus Turn Around */ + __IOM uint16_t NXACT : 2; /*!< [13..12] Next Action */ + uint16_t : 2; + } SQCH1DSC2AR_H_b; + }; + + struct + { + union + { + __IOM uint8_t SQCH1DSC2AR_HL; /*!< (@ 0x00000822) Sequence Channel 1 Descriptor-2 A Register */ + + struct + { + __IOM uint8_t DT : 6; /*!< [5..0] Data Type */ + __IOM uint8_t VC : 2; /*!< [7..6] Virtual Channel */ + } SQCH1DSC2AR_HL_b; + }; + + union + { + __IOM uint8_t SQCH1DSC2AR_HH; /*!< (@ 0x00000823) Sequence Channel 1 Descriptor-2 A Register */ + + struct + { + __IOM uint8_t FMT : 1; /*!< [0..0] Format */ + __IOM uint8_t SPD : 1; /*!< [1..1] Speed */ + __IOM uint8_t BTA : 2; /*!< [3..2] Bus Turn Around */ + __IOM uint8_t NXACT : 2; /*!< [5..4] Next Action */ + uint8_t : 2; + } SQCH1DSC2AR_HH_b; + }; + }; + }; + }; + }; + + union + { + __IOM uint32_t SQCH1DSC2BR; /*!< (@ 0x00000824) Sequence Channel 1 Descriptor-2 B Register */ + + struct + { + uint32_t : 24; + __IOM uint32_t DTSEL : 2; /*!< [25..24] Data Select */ + uint32_t : 6; + } SQCH1DSC2BR_b; + }; + + union + { + union + { + __IOM uint32_t SQCH1DSC2CR; /*!< (@ 0x00000828) Sequence Channel 1 Descriptor-2 C Register */ + + struct + { + __IOM uint32_t FINACT : 1; /*!< [0..0] Finish Action */ + uint32_t : 21; + __IOM uint32_t AUXOP : 1; /*!< [22..22] Auxiliary Operation */ + uint32_t : 1; + __IOM uint32_t ACTCODE : 8; /*!< [31..24] Action Code */ + } SQCH1DSC2CR_b; + }; + + struct + { + union + { + union + { + __IOM uint16_t SQCH1DSC2CR_L; /*!< (@ 0x00000828) Sequence Channel 1 Descriptor-2 C Register */ + + struct + { + __IOM uint16_t FINACT : 1; /*!< [0..0] Finish Action */ + uint16_t : 15; + } SQCH1DSC2CR_L_b; + }; + + union + { + __IOM uint8_t SQCH1DSC2CR_LL; /*!< (@ 0x00000828) Sequence Channel 1 Descriptor-2 C Register */ + + struct + { + __IOM uint8_t FINACT : 1; /*!< [0..0] Finish Action */ + uint8_t : 7; + } SQCH1DSC2CR_LL_b; + }; + }; + + union + { + union + { + __IOM uint16_t SQCH1DSC2CR_H; /*!< (@ 0x0000082A) Sequence Channel 1 Descriptor-2 C Register */ + + struct + { + uint16_t : 6; + __IOM uint16_t AUXOP : 1; /*!< [6..6] Auxiliary Operation */ + uint16_t : 1; + __IOM uint16_t ACTCODE : 8; /*!< [15..8] Action Code */ + } SQCH1DSC2CR_H_b; + }; + + struct + { + union + { + __IOM uint8_t SQCH1DSC2CR_HL; /*!< (@ 0x0000082A) Sequence Channel 1 Descriptor-2 C Register */ + + struct + { + uint8_t : 6; + __IOM uint8_t AUXOP : 1; /*!< [6..6] Auxiliary Operation */ + uint8_t : 1; + } SQCH1DSC2CR_HL_b; + }; + + union + { + __IOM uint8_t SQCH1DSC2CR_HH; /*!< (@ 0x0000082B) Sequence Channel 1 Descriptor-2 C Register */ + + struct + { + __IOM uint8_t ACTCODE : 8; /*!< [7..0] Action Code */ + } SQCH1DSC2CR_HH_b; + }; + }; + }; + }; + }; + + union + { + union + { + __IOM uint32_t SQCH1DSC2DR; /*!< (@ 0x0000082C) Sequence Channel 1 Descriptor-2 D Register */ + + struct + { + __IOM uint32_t LADDR : 32; /*!< [31..0] Lower Address */ + } SQCH1DSC2DR_b; + }; + + struct + { + union + { + union + { + __IOM uint16_t SQCH1DSC2DR_L; /*!< (@ 0x0000082C) Sequence Channel 1 Descriptor-2 D Register */ + + struct + { + __IOM uint16_t LADDR : 16; /*!< [15..0] Lower Address */ + } SQCH1DSC2DR_L_b; + }; + + struct + { + union + { + __IOM uint8_t SQCH1DSC2DR_LL; /*!< (@ 0x0000082C) Sequence Channel 1 Descriptor-2 D Register */ + + struct + { + __IOM uint8_t LADDR : 8; /*!< [7..0] Lower Address */ + } SQCH1DSC2DR_LL_b; + }; + + union + { + __IOM uint8_t SQCH1DSC2DR_LH; /*!< (@ 0x0000082D) Sequence Channel 1 Descriptor-2 D Register */ + + struct + { + __IOM uint8_t LADDR : 8; /*!< [7..0] Lower Address */ + } SQCH1DSC2DR_LH_b; + }; + }; + }; + + union + { + __IOM uint8_t SQCH1DSC2DR_HL; /*!< (@ 0x0000082E) Sequence Channel 1 Descriptor-2 D Register */ + + struct + { + __IOM uint8_t LADDR : 8; /*!< [7..0] Lower Address */ + } SQCH1DSC2DR_HL_b; + }; + + union + { + __IOM uint8_t SQCH1DSC2DR_HH; /*!< (@ 0x0000082F) Sequence Channel 1 Descriptor-2 D Register */ + + struct + { + __IOM uint8_t LADDR : 8; /*!< [7..0] Lower Address */ + } SQCH1DSC2DR_HH_b; + }; + }; + }; + + union + { + union + { + __IOM uint32_t SQCH1DSC3AR; /*!< (@ 0x00000830) Sequence Channel 1 Descriptor-3 A Register */ + + struct + { + __IOM uint32_t DATA0 : 8; /*!< [7..0] Data 0 */ + __IOM uint32_t DATA1 : 8; /*!< [15..8] Data 1 */ + __IOM uint32_t DT : 6; /*!< [21..16] Data Type */ + __IOM uint32_t VC : 2; /*!< [23..22] Virtual Channel */ + __IOM uint32_t FMT : 1; /*!< [24..24] Format */ + __IOM uint32_t SPD : 1; /*!< [25..25] Speed */ + __IOM uint32_t BTA : 2; /*!< [27..26] Bus Turn Around */ + __IOM uint32_t NXACT : 2; /*!< [29..28] Next Action */ + uint32_t : 2; + } SQCH1DSC3AR_b; + }; + + struct + { + union + { + union + { + __IOM uint16_t SQCH1DSC3AR_L; /*!< (@ 0x00000830) Sequence Channel 1 Descriptor-3 A Register */ + + struct + { + __IOM uint16_t DATA0 : 8; /*!< [7..0] Data 0 */ + __IOM uint16_t DATA1 : 8; /*!< [15..8] Data 1 */ + } SQCH1DSC3AR_L_b; + }; + + struct + { + union + { + __IOM uint8_t SQCH1DSC3AR_LL; /*!< (@ 0x00000830) Sequence Channel 1 Descriptor-3 A Register */ + + struct + { + __IOM uint8_t DATA0 : 8; /*!< [7..0] Data 0 */ + } SQCH1DSC3AR_LL_b; + }; + + union + { + __IOM uint8_t SQCH1DSC3AR_LH; /*!< (@ 0x00000831) Sequence Channel 1 Descriptor-3 A Register */ + + struct + { + __IOM uint8_t DATA1 : 8; /*!< [7..0] Data 1 */ + } SQCH1DSC3AR_LH_b; + }; + }; + }; + + union + { + union + { + __IOM uint16_t SQCH1DSC3AR_H; /*!< (@ 0x00000832) Sequence Channel 1 Descriptor-3 A Register */ + + struct + { + __IOM uint16_t DT : 6; /*!< [5..0] Data Type */ + __IOM uint16_t VC : 2; /*!< [7..6] Virtual Channel */ + __IOM uint16_t FMT : 1; /*!< [8..8] Format */ + __IOM uint16_t SPD : 1; /*!< [9..9] Speed */ + __IOM uint16_t BTA : 2; /*!< [11..10] Bus Turn Around */ + __IOM uint16_t NXACT : 2; /*!< [13..12] Next Action */ + uint16_t : 2; + } SQCH1DSC3AR_H_b; + }; + + struct + { + union + { + __IOM uint8_t SQCH1DSC3AR_HL; /*!< (@ 0x00000832) Sequence Channel 1 Descriptor-3 A Register */ + + struct + { + __IOM uint8_t DT : 6; /*!< [5..0] Data Type */ + __IOM uint8_t VC : 2; /*!< [7..6] Virtual Channel */ + } SQCH1DSC3AR_HL_b; + }; + + union + { + __IOM uint8_t SQCH1DSC3AR_HH; /*!< (@ 0x00000833) Sequence Channel 1 Descriptor-3 A Register */ + + struct + { + __IOM uint8_t FMT : 1; /*!< [0..0] Format */ + __IOM uint8_t SPD : 1; /*!< [1..1] Speed */ + __IOM uint8_t BTA : 2; /*!< [3..2] Bus Turn Around */ + __IOM uint8_t NXACT : 2; /*!< [5..4] Next Action */ + uint8_t : 2; + } SQCH1DSC3AR_HH_b; + }; + }; + }; + }; + }; + + union + { + __IOM uint32_t SQCH1DSC3BR; /*!< (@ 0x00000834) Sequence Channel 1 Descriptor-3 B Register */ + + struct + { + uint32_t : 24; + __IOM uint32_t DTSEL : 2; /*!< [25..24] Data Select */ + uint32_t : 6; + } SQCH1DSC3BR_b; + }; + + union + { + union + { + __IOM uint32_t SQCH1DSC3CR; /*!< (@ 0x00000838) Sequence Channel 1 Descriptor-3 C Register */ + + struct + { + __IOM uint32_t FINACT : 1; /*!< [0..0] Finish Action */ + uint32_t : 21; + __IOM uint32_t AUXOP : 1; /*!< [22..22] Auxiliary Operation */ + uint32_t : 1; + __IOM uint32_t ACTCODE : 8; /*!< [31..24] Action Code */ + } SQCH1DSC3CR_b; + }; + + struct + { + union + { + union + { + __IOM uint16_t SQCH1DSC3CR_L; /*!< (@ 0x00000838) Sequence Channel 1 Descriptor-3 C Register */ + + struct + { + __IOM uint16_t FINACT : 1; /*!< [0..0] Finish Action */ + uint16_t : 15; + } SQCH1DSC3CR_L_b; + }; + + union + { + __IOM uint8_t SQCH1DSC3CR_LL; /*!< (@ 0x00000838) Sequence Channel 1 Descriptor-3 C Register */ + + struct + { + __IOM uint8_t FINACT : 1; /*!< [0..0] Finish Action */ + uint8_t : 7; + } SQCH1DSC3CR_LL_b; + }; + }; + + union + { + union + { + __IOM uint16_t SQCH1DSC3CR_H; /*!< (@ 0x0000083A) Sequence Channel 1 Descriptor-3 C Register */ + + struct + { + uint16_t : 6; + __IOM uint16_t AUXOP : 1; /*!< [6..6] Auxiliary Operation */ + uint16_t : 1; + __IOM uint16_t ACTCODE : 8; /*!< [15..8] Action Code */ + } SQCH1DSC3CR_H_b; + }; + + struct + { + union + { + __IOM uint8_t SQCH1DSC3CR_HL; /*!< (@ 0x0000083A) Sequence Channel 1 Descriptor-3 C Register */ + + struct + { + uint8_t : 6; + __IOM uint8_t AUXOP : 1; /*!< [6..6] Auxiliary Operation */ + uint8_t : 1; + } SQCH1DSC3CR_HL_b; + }; + + union + { + __IOM uint8_t SQCH1DSC3CR_HH; /*!< (@ 0x0000083B) Sequence Channel 1 Descriptor-3 C Register */ + + struct + { + __IOM uint8_t ACTCODE : 8; /*!< [7..0] Action Code */ + } SQCH1DSC3CR_HH_b; + }; + }; + }; + }; + }; + + union + { + union + { + __IOM uint32_t SQCH1DSC3DR; /*!< (@ 0x0000083C) Sequence Channel 1 Descriptor-3 D Register */ + + struct + { + __IOM uint32_t LADDR : 32; /*!< [31..0] Lower Address */ + } SQCH1DSC3DR_b; + }; + + struct + { + union + { + union + { + __IOM uint16_t SQCH1DSC3DR_L; /*!< (@ 0x0000083C) Sequence Channel 1 Descriptor-3 D Register */ + + struct + { + __IOM uint16_t LADDR : 16; /*!< [15..0] Lower Address */ + } SQCH1DSC3DR_L_b; + }; + + struct + { + union + { + __IOM uint8_t SQCH1DSC3DR_LL; /*!< (@ 0x0000083C) Sequence Channel 1 Descriptor-3 D Register */ + + struct + { + __IOM uint8_t LADDR : 8; /*!< [7..0] Lower Address */ + } SQCH1DSC3DR_LL_b; + }; + + union + { + __IOM uint8_t SQCH1DSC3DR_LH; /*!< (@ 0x0000083D) Sequence Channel 1 Descriptor-3 D Register */ + + struct + { + __IOM uint8_t LADDR : 8; /*!< [7..0] Lower Address */ + } SQCH1DSC3DR_LH_b; + }; + }; + }; + + union + { + __IOM uint8_t SQCH1DSC3DR_HL; /*!< (@ 0x0000083E) Sequence Channel 1 Descriptor-3 D Register */ + + struct + { + __IOM uint8_t LADDR : 8; /*!< [7..0] Lower Address */ + } SQCH1DSC3DR_HL_b; + }; + + union + { + __IOM uint8_t SQCH1DSC3DR_HH; /*!< (@ 0x0000083F) Sequence Channel 1 Descriptor-3 D Register */ + + struct + { + __IOM uint8_t LADDR : 8; /*!< [7..0] Lower Address */ + } SQCH1DSC3DR_HH_b; + }; + }; + }; + + union + { + union + { + __IOM uint32_t SQCH1DSC4AR; /*!< (@ 0x00000840) Sequence Channel 1 Descriptor-4 A Register */ + + struct + { + __IOM uint32_t DATA0 : 8; /*!< [7..0] Data 0 */ + __IOM uint32_t DATA1 : 8; /*!< [15..8] Data 1 */ + __IOM uint32_t DT : 6; /*!< [21..16] Data Type */ + __IOM uint32_t VC : 2; /*!< [23..22] Virtual Channel */ + __IOM uint32_t FMT : 1; /*!< [24..24] Format */ + __IOM uint32_t SPD : 1; /*!< [25..25] Speed */ + __IOM uint32_t BTA : 2; /*!< [27..26] Bus Turn Around */ + __IOM uint32_t NXACT : 2; /*!< [29..28] Next Action */ + uint32_t : 2; + } SQCH1DSC4AR_b; + }; + + struct + { + union + { + union + { + __IOM uint16_t SQCH1DSC4AR_L; /*!< (@ 0x00000840) Sequence Channel 1 Descriptor-4 A Register */ + + struct + { + __IOM uint16_t DATA0 : 8; /*!< [7..0] Data 0 */ + __IOM uint16_t DATA1 : 8; /*!< [15..8] Data 1 */ + } SQCH1DSC4AR_L_b; + }; + + struct + { + union + { + __IOM uint8_t SQCH1DSC4AR_LL; /*!< (@ 0x00000840) Sequence Channel 1 Descriptor-4 A Register */ + + struct + { + __IOM uint8_t DATA0 : 8; /*!< [7..0] Data 0 */ + } SQCH1DSC4AR_LL_b; + }; + + union + { + __IOM uint8_t SQCH1DSC4AR_LH; /*!< (@ 0x00000841) Sequence Channel 1 Descriptor-4 A Register */ + + struct + { + __IOM uint8_t DATA1 : 8; /*!< [7..0] Data 1 */ + } SQCH1DSC4AR_LH_b; + }; + }; + }; + + union + { + union + { + __IOM uint16_t SQCH1DSC4AR_H; /*!< (@ 0x00000842) Sequence Channel 1 Descriptor-4 A Register */ + + struct + { + __IOM uint16_t DT : 6; /*!< [5..0] Data Type */ + __IOM uint16_t VC : 2; /*!< [7..6] Virtual Channel */ + __IOM uint16_t FMT : 1; /*!< [8..8] Format */ + __IOM uint16_t SPD : 1; /*!< [9..9] Speed */ + __IOM uint16_t BTA : 2; /*!< [11..10] Bus Turn Around */ + __IOM uint16_t NXACT : 2; /*!< [13..12] Next Action */ + uint16_t : 2; + } SQCH1DSC4AR_H_b; + }; + + struct + { + union + { + __IOM uint8_t SQCH1DSC4AR_HL; /*!< (@ 0x00000842) Sequence Channel 1 Descriptor-4 A Register */ + + struct + { + __IOM uint8_t DT : 6; /*!< [5..0] Data Type */ + __IOM uint8_t VC : 2; /*!< [7..6] Virtual Channel */ + } SQCH1DSC4AR_HL_b; + }; + + union + { + __IOM uint8_t SQCH1DSC4AR_HH; /*!< (@ 0x00000843) Sequence Channel 1 Descriptor-4 A Register */ + + struct + { + __IOM uint8_t FMT : 1; /*!< [0..0] Format */ + __IOM uint8_t SPD : 1; /*!< [1..1] Speed */ + __IOM uint8_t BTA : 2; /*!< [3..2] Bus Turn Around */ + __IOM uint8_t NXACT : 2; /*!< [5..4] Next Action */ + uint8_t : 2; + } SQCH1DSC4AR_HH_b; + }; + }; + }; + }; + }; + + union + { + __IOM uint32_t SQCH1DSC4BR; /*!< (@ 0x00000844) Sequence Channel 1 Descriptor-4 B Register */ + + struct + { + uint32_t : 24; + __IOM uint32_t DTSEL : 2; /*!< [25..24] Data Select */ + uint32_t : 6; + } SQCH1DSC4BR_b; + }; + + union + { + union + { + __IOM uint32_t SQCH1DSC4CR; /*!< (@ 0x00000848) Sequence Channel 1 Descriptor-4 C Register */ + + struct + { + __IOM uint32_t FINACT : 1; /*!< [0..0] Finish Action */ + uint32_t : 21; + __IOM uint32_t AUXOP : 1; /*!< [22..22] Auxiliary Operation */ + uint32_t : 1; + __IOM uint32_t ACTCODE : 8; /*!< [31..24] Action Code */ + } SQCH1DSC4CR_b; + }; + + struct + { + union + { + union + { + __IOM uint16_t SQCH1DSC4CR_L; /*!< (@ 0x00000848) Sequence Channel 1 Descriptor-4 C Register */ + + struct + { + __IOM uint16_t FINACT : 1; /*!< [0..0] Finish Action */ + uint16_t : 15; + } SQCH1DSC4CR_L_b; + }; + + union + { + __IOM uint8_t SQCH1DSC4CR_LL; /*!< (@ 0x00000848) Sequence Channel 1 Descriptor-4 C Register */ + + struct + { + __IOM uint8_t FINACT : 1; /*!< [0..0] Finish Action */ + uint8_t : 7; + } SQCH1DSC4CR_LL_b; + }; + }; + + union + { + union + { + __IOM uint16_t SQCH1DSC4CR_H; /*!< (@ 0x0000084A) Sequence Channel 1 Descriptor-4 C Register */ + + struct + { + uint16_t : 6; + __IOM uint16_t AUXOP : 1; /*!< [6..6] Auxiliary Operation */ + uint16_t : 1; + __IOM uint16_t ACTCODE : 8; /*!< [15..8] Action Code */ + } SQCH1DSC4CR_H_b; + }; + + struct + { + union + { + __IOM uint8_t SQCH1DSC4CR_HL; /*!< (@ 0x0000084A) Sequence Channel 1 Descriptor-4 C Register */ + + struct + { + uint8_t : 6; + __IOM uint8_t AUXOP : 1; /*!< [6..6] Auxiliary Operation */ + uint8_t : 1; + } SQCH1DSC4CR_HL_b; + }; + + union + { + __IOM uint8_t SQCH1DSC4CR_HH; /*!< (@ 0x0000084B) Sequence Channel 1 Descriptor-4 C Register */ + + struct + { + __IOM uint8_t ACTCODE : 8; /*!< [7..0] Action Code */ + } SQCH1DSC4CR_HH_b; + }; + }; + }; + }; + }; + + union + { + union + { + __IOM uint32_t SQCH1DSC4DR; /*!< (@ 0x0000084C) Sequence Channel 1 Descriptor-4 D Register */ + + struct + { + __IOM uint32_t LADDR : 32; /*!< [31..0] Lower Address */ + } SQCH1DSC4DR_b; + }; + + struct + { + union + { + union + { + __IOM uint16_t SQCH1DSC4DR_L; /*!< (@ 0x0000084C) Sequence Channel 1 Descriptor-4 D Register */ + + struct + { + __IOM uint16_t LADDR : 16; /*!< [15..0] Lower Address */ + } SQCH1DSC4DR_L_b; + }; + + struct + { + union + { + __IOM uint8_t SQCH1DSC4DR_LL; /*!< (@ 0x0000084C) Sequence Channel 1 Descriptor-4 D Register */ + + struct + { + __IOM uint8_t LADDR : 8; /*!< [7..0] Lower Address */ + } SQCH1DSC4DR_LL_b; + }; + + union + { + __IOM uint8_t SQCH1DSC4DR_LH; /*!< (@ 0x0000084D) Sequence Channel 1 Descriptor-4 D Register */ + + struct + { + __IOM uint8_t LADDR : 8; /*!< [7..0] Lower Address */ + } SQCH1DSC4DR_LH_b; + }; + }; + }; + + union + { + __IOM uint8_t SQCH1DSC4DR_HL; /*!< (@ 0x0000084E) Sequence Channel 1 Descriptor-4 D Register */ + + struct + { + __IOM uint8_t LADDR : 8; /*!< [7..0] Lower Address */ + } SQCH1DSC4DR_HL_b; + }; + + union + { + __IOM uint8_t SQCH1DSC4DR_HH; /*!< (@ 0x0000084F) Sequence Channel 1 Descriptor-4 D Register */ + + struct + { + __IOM uint8_t LADDR : 8; /*!< [7..0] Lower Address */ + } SQCH1DSC4DR_HH_b; + }; + }; + }; + + union + { + union + { + __IOM uint32_t SQCH1DSC5AR; /*!< (@ 0x00000850) Sequence Channel 1 Descriptor-5 A Register */ + + struct + { + __IOM uint32_t DATA0 : 8; /*!< [7..0] Data 0 */ + __IOM uint32_t DATA1 : 8; /*!< [15..8] Data 1 */ + __IOM uint32_t DT : 6; /*!< [21..16] Data Type */ + __IOM uint32_t VC : 2; /*!< [23..22] Virtual Channel */ + __IOM uint32_t FMT : 1; /*!< [24..24] Format */ + __IOM uint32_t SPD : 1; /*!< [25..25] Speed */ + __IOM uint32_t BTA : 2; /*!< [27..26] Bus Turn Around */ + __IOM uint32_t NXACT : 2; /*!< [29..28] Next Action */ + uint32_t : 2; + } SQCH1DSC5AR_b; + }; + + struct + { + union + { + union + { + __IOM uint16_t SQCH1DSC5AR_L; /*!< (@ 0x00000850) Sequence Channel 1 Descriptor-5 A Register */ + + struct + { + __IOM uint16_t DATA0 : 8; /*!< [7..0] Data 0 */ + __IOM uint16_t DATA1 : 8; /*!< [15..8] Data 1 */ + } SQCH1DSC5AR_L_b; + }; + + struct + { + union + { + __IOM uint8_t SQCH1DSC5AR_LL; /*!< (@ 0x00000850) Sequence Channel 1 Descriptor-5 A Register */ + + struct + { + __IOM uint8_t DATA0 : 8; /*!< [7..0] Data 0 */ + } SQCH1DSC5AR_LL_b; + }; + + union + { + __IOM uint8_t SQCH1DSC5AR_LH; /*!< (@ 0x00000851) Sequence Channel 1 Descriptor-5 A Register */ + + struct + { + __IOM uint8_t DATA1 : 8; /*!< [7..0] Data 1 */ + } SQCH1DSC5AR_LH_b; + }; + }; + }; + + union + { + union + { + __IOM uint16_t SQCH1DSC5AR_H; /*!< (@ 0x00000852) Sequence Channel 1 Descriptor-5 A Register */ + + struct + { + __IOM uint16_t DT : 6; /*!< [5..0] Data Type */ + __IOM uint16_t VC : 2; /*!< [7..6] Virtual Channel */ + __IOM uint16_t FMT : 1; /*!< [8..8] Format */ + __IOM uint16_t SPD : 1; /*!< [9..9] Speed */ + __IOM uint16_t BTA : 2; /*!< [11..10] Bus Turn Around */ + __IOM uint16_t NXACT : 2; /*!< [13..12] Next Action */ + uint16_t : 2; + } SQCH1DSC5AR_H_b; + }; + + struct + { + union + { + __IOM uint8_t SQCH1DSC5AR_HL; /*!< (@ 0x00000852) Sequence Channel 1 Descriptor-5 A Register */ + + struct + { + __IOM uint8_t DT : 6; /*!< [5..0] Data Type */ + __IOM uint8_t VC : 2; /*!< [7..6] Virtual Channel */ + } SQCH1DSC5AR_HL_b; + }; + + union + { + __IOM uint8_t SQCH1DSC5AR_HH; /*!< (@ 0x00000853) Sequence Channel 1 Descriptor-5 A Register */ + + struct + { + __IOM uint8_t FMT : 1; /*!< [0..0] Format */ + __IOM uint8_t SPD : 1; /*!< [1..1] Speed */ + __IOM uint8_t BTA : 2; /*!< [3..2] Bus Turn Around */ + __IOM uint8_t NXACT : 2; /*!< [5..4] Next Action */ + uint8_t : 2; + } SQCH1DSC5AR_HH_b; + }; + }; + }; + }; + }; + + union + { + __IOM uint32_t SQCH1DSC5BR; /*!< (@ 0x00000854) Sequence Channel 1 Descriptor-5 B Register */ + + struct + { + uint32_t : 24; + __IOM uint32_t DTSEL : 2; /*!< [25..24] Data Select */ + uint32_t : 6; + } SQCH1DSC5BR_b; + }; + + union + { + union + { + __IOM uint32_t SQCH1DSC5CR; /*!< (@ 0x00000858) Sequence Channel 1 Descriptor-5 C Register */ + + struct + { + __IOM uint32_t FINACT : 1; /*!< [0..0] Finish Action */ + uint32_t : 21; + __IOM uint32_t AUXOP : 1; /*!< [22..22] Auxiliary Operation */ + uint32_t : 1; + __IOM uint32_t ACTCODE : 8; /*!< [31..24] Action Code */ + } SQCH1DSC5CR_b; + }; + + struct + { + union + { + union + { + __IOM uint16_t SQCH1DSC5CR_L; /*!< (@ 0x00000858) Sequence Channel 1 Descriptor-5 C Register */ + + struct + { + __IOM uint16_t FINACT : 1; /*!< [0..0] Finish Action */ + uint16_t : 15; + } SQCH1DSC5CR_L_b; + }; + + union + { + __IOM uint8_t SQCH1DSC5CR_LL; /*!< (@ 0x00000858) Sequence Channel 1 Descriptor-5 C Register */ + + struct + { + __IOM uint8_t FINACT : 1; /*!< [0..0] Finish Action */ + uint8_t : 7; + } SQCH1DSC5CR_LL_b; + }; + }; + + union + { + union + { + __IOM uint16_t SQCH1DSC5CR_H; /*!< (@ 0x0000085A) Sequence Channel 1 Descriptor-5 C Register */ + + struct + { + uint16_t : 6; + __IOM uint16_t AUXOP : 1; /*!< [6..6] Auxiliary Operation */ + uint16_t : 1; + __IOM uint16_t ACTCODE : 8; /*!< [15..8] Action Code */ + } SQCH1DSC5CR_H_b; + }; + + struct + { + union + { + __IOM uint8_t SQCH1DSC5CR_HL; /*!< (@ 0x0000085A) Sequence Channel 1 Descriptor-5 C Register */ + + struct + { + uint8_t : 6; + __IOM uint8_t AUXOP : 1; /*!< [6..6] Auxiliary Operation */ + uint8_t : 1; + } SQCH1DSC5CR_HL_b; + }; + + union + { + __IOM uint8_t SQCH1DSC5CR_HH; /*!< (@ 0x0000085B) Sequence Channel 1 Descriptor-5 C Register */ + + struct + { + __IOM uint8_t ACTCODE : 8; /*!< [7..0] Action Code */ + } SQCH1DSC5CR_HH_b; + }; + }; + }; + }; + }; + + union + { + union + { + __IOM uint32_t SQCH1DSC5DR; /*!< (@ 0x0000085C) Sequence Channel 1 Descriptor-5 D Register */ + + struct + { + __IOM uint32_t LADDR : 32; /*!< [31..0] Lower Address */ + } SQCH1DSC5DR_b; + }; + + struct + { + union + { + union + { + __IOM uint16_t SQCH1DSC5DR_L; /*!< (@ 0x0000085C) Sequence Channel 1 Descriptor-5 D Register */ + + struct + { + __IOM uint16_t LADDR : 16; /*!< [15..0] Lower Address */ + } SQCH1DSC5DR_L_b; + }; + + struct + { + union + { + __IOM uint8_t SQCH1DSC5DR_LL; /*!< (@ 0x0000085C) Sequence Channel 1 Descriptor-5 D Register */ + + struct + { + __IOM uint8_t LADDR : 8; /*!< [7..0] Lower Address */ + } SQCH1DSC5DR_LL_b; + }; + + union + { + __IOM uint8_t SQCH1DSC5DR_LH; /*!< (@ 0x0000085D) Sequence Channel 1 Descriptor-5 D Register */ + + struct + { + __IOM uint8_t LADDR : 8; /*!< [7..0] Lower Address */ + } SQCH1DSC5DR_LH_b; + }; + }; + }; + + union + { + __IOM uint8_t SQCH1DSC5DR_HL; /*!< (@ 0x0000085E) Sequence Channel 1 Descriptor-5 D Register */ + + struct + { + __IOM uint8_t LADDR : 8; /*!< [7..0] Lower Address */ + } SQCH1DSC5DR_HL_b; + }; + + union + { + __IOM uint8_t SQCH1DSC5DR_HH; /*!< (@ 0x0000085F) Sequence Channel 1 Descriptor-5 D Register */ + + struct + { + __IOM uint8_t LADDR : 8; /*!< [7..0] Lower Address */ + } SQCH1DSC5DR_HH_b; + }; + }; + }; + + union + { + union + { + __IOM uint32_t SQCH1DSC6AR; /*!< (@ 0x00000860) Sequence Channel 1 Descriptor-6 A Register */ + + struct + { + __IOM uint32_t DATA0 : 8; /*!< [7..0] Data 0 */ + __IOM uint32_t DATA1 : 8; /*!< [15..8] Data 1 */ + __IOM uint32_t DT : 6; /*!< [21..16] Data Type */ + __IOM uint32_t VC : 2; /*!< [23..22] Virtual Channel */ + __IOM uint32_t FMT : 1; /*!< [24..24] Format */ + __IOM uint32_t SPD : 1; /*!< [25..25] Speed */ + __IOM uint32_t BTA : 2; /*!< [27..26] Bus Turn Around */ + __IOM uint32_t NXACT : 2; /*!< [29..28] Next Action */ + uint32_t : 2; + } SQCH1DSC6AR_b; + }; + + struct + { + union + { + union + { + __IOM uint16_t SQCH1DSC6AR_L; /*!< (@ 0x00000860) Sequence Channel 1 Descriptor-6 A Register */ + + struct + { + __IOM uint16_t DATA0 : 8; /*!< [7..0] Data 0 */ + __IOM uint16_t DATA1 : 8; /*!< [15..8] Data 1 */ + } SQCH1DSC6AR_L_b; + }; + + struct + { + union + { + __IOM uint8_t SQCH1DSC6AR_LL; /*!< (@ 0x00000860) Sequence Channel 1 Descriptor-6 A Register */ + + struct + { + __IOM uint8_t DATA0 : 8; /*!< [7..0] Data 0 */ + } SQCH1DSC6AR_LL_b; + }; + + union + { + __IOM uint8_t SQCH1DSC6AR_LH; /*!< (@ 0x00000861) Sequence Channel 1 Descriptor-6 A Register */ + + struct + { + __IOM uint8_t DATA1 : 8; /*!< [7..0] Data 1 */ + } SQCH1DSC6AR_LH_b; + }; + }; + }; + + union + { + union + { + __IOM uint16_t SQCH1DSC6AR_H; /*!< (@ 0x00000862) Sequence Channel 1 Descriptor-6 A Register */ + + struct + { + __IOM uint16_t DT : 6; /*!< [5..0] Data Type */ + __IOM uint16_t VC : 2; /*!< [7..6] Virtual Channel */ + __IOM uint16_t FMT : 1; /*!< [8..8] Format */ + __IOM uint16_t SPD : 1; /*!< [9..9] Speed */ + __IOM uint16_t BTA : 2; /*!< [11..10] Bus Turn Around */ + __IOM uint16_t NXACT : 2; /*!< [13..12] Next Action */ + uint16_t : 2; + } SQCH1DSC6AR_H_b; + }; + + struct + { + union + { + __IOM uint8_t SQCH1DSC6AR_HL; /*!< (@ 0x00000862) Sequence Channel 1 Descriptor-6 A Register */ + + struct + { + __IOM uint8_t DT : 6; /*!< [5..0] Data Type */ + __IOM uint8_t VC : 2; /*!< [7..6] Virtual Channel */ + } SQCH1DSC6AR_HL_b; + }; + + union + { + __IOM uint8_t SQCH1DSC6AR_HH; /*!< (@ 0x00000863) Sequence Channel 1 Descriptor-6 A Register */ + + struct + { + __IOM uint8_t FMT : 1; /*!< [0..0] Format */ + __IOM uint8_t SPD : 1; /*!< [1..1] Speed */ + __IOM uint8_t BTA : 2; /*!< [3..2] Bus Turn Around */ + __IOM uint8_t NXACT : 2; /*!< [5..4] Next Action */ + uint8_t : 2; + } SQCH1DSC6AR_HH_b; + }; + }; + }; + }; + }; + + union + { + __IOM uint32_t SQCH1DSC6BR; /*!< (@ 0x00000864) Sequence Channel 1 Descriptor-6 B Register */ + + struct + { + uint32_t : 24; + __IOM uint32_t DTSEL : 2; /*!< [25..24] Data Select */ + uint32_t : 6; + } SQCH1DSC6BR_b; + }; + + union + { + union + { + __IOM uint32_t SQCH1DSC6CR; /*!< (@ 0x00000868) Sequence Channel 1 Descriptor-6 C Register */ + + struct + { + __IOM uint32_t FINACT : 1; /*!< [0..0] Finish Action */ + uint32_t : 21; + __IOM uint32_t AUXOP : 1; /*!< [22..22] Auxiliary Operation */ + uint32_t : 1; + __IOM uint32_t ACTCODE : 8; /*!< [31..24] Action Code */ + } SQCH1DSC6CR_b; + }; + + struct + { + union + { + union + { + __IOM uint16_t SQCH1DSC6CR_L; /*!< (@ 0x00000868) Sequence Channel 1 Descriptor-6 C Register */ + + struct + { + __IOM uint16_t FINACT : 1; /*!< [0..0] Finish Action */ + uint16_t : 15; + } SQCH1DSC6CR_L_b; + }; + + union + { + __IOM uint8_t SQCH1DSC6CR_LL; /*!< (@ 0x00000868) Sequence Channel 1 Descriptor-6 C Register */ + + struct + { + __IOM uint8_t FINACT : 1; /*!< [0..0] Finish Action */ + uint8_t : 7; + } SQCH1DSC6CR_LL_b; + }; + }; + + union + { + union + { + __IOM uint16_t SQCH1DSC6CR_H; /*!< (@ 0x0000086A) Sequence Channel 1 Descriptor-6 C Register */ + + struct + { + uint16_t : 6; + __IOM uint16_t AUXOP : 1; /*!< [6..6] Auxiliary Operation */ + uint16_t : 1; + __IOM uint16_t ACTCODE : 8; /*!< [15..8] Action Code */ + } SQCH1DSC6CR_H_b; + }; + + struct + { + union + { + __IOM uint8_t SQCH1DSC6CR_HL; /*!< (@ 0x0000086A) Sequence Channel 1 Descriptor-6 C Register */ + + struct + { + uint8_t : 6; + __IOM uint8_t AUXOP : 1; /*!< [6..6] Auxiliary Operation */ + uint8_t : 1; + } SQCH1DSC6CR_HL_b; + }; + + union + { + __IOM uint8_t SQCH1DSC6CR_HH; /*!< (@ 0x0000086B) Sequence Channel 1 Descriptor-6 C Register */ + + struct + { + __IOM uint8_t ACTCODE : 8; /*!< [7..0] Action Code */ + } SQCH1DSC6CR_HH_b; + }; + }; + }; + }; + }; + + union + { + union + { + __IOM uint32_t SQCH1DSC6DR; /*!< (@ 0x0000086C) Sequence Channel 1 Descriptor-6 D Register */ + + struct + { + __IOM uint32_t LADDR : 32; /*!< [31..0] Lower Address */ + } SQCH1DSC6DR_b; + }; + + struct + { + union + { + union + { + __IOM uint16_t SQCH1DSC6DR_L; /*!< (@ 0x0000086C) Sequence Channel 1 Descriptor-6 D Register */ + + struct + { + __IOM uint16_t LADDR : 16; /*!< [15..0] Lower Address */ + } SQCH1DSC6DR_L_b; + }; + + struct + { + union + { + __IOM uint8_t SQCH1DSC6DR_LL; /*!< (@ 0x0000086C) Sequence Channel 1 Descriptor-6 D Register */ + + struct + { + __IOM uint8_t LADDR : 8; /*!< [7..0] Lower Address */ + } SQCH1DSC6DR_LL_b; + }; + + union + { + __IOM uint8_t SQCH1DSC6DR_LH; /*!< (@ 0x0000086D) Sequence Channel 1 Descriptor-6 D Register */ + + struct + { + __IOM uint8_t LADDR : 8; /*!< [7..0] Lower Address */ + } SQCH1DSC6DR_LH_b; + }; + }; + }; + + union + { + __IOM uint8_t SQCH1DSC6DR_HL; /*!< (@ 0x0000086E) Sequence Channel 1 Descriptor-6 D Register */ + + struct + { + __IOM uint8_t LADDR : 8; /*!< [7..0] Lower Address */ + } SQCH1DSC6DR_HL_b; + }; + + union + { + __IOM uint8_t SQCH1DSC6DR_HH; /*!< (@ 0x0000086F) Sequence Channel 1 Descriptor-6 D Register */ + + struct + { + __IOM uint8_t LADDR : 8; /*!< [7..0] Lower Address */ + } SQCH1DSC6DR_HH_b; + }; + }; + }; + + union + { + union + { + __IOM uint32_t SQCH1DSC7AR; /*!< (@ 0x00000870) Sequence Channel 1 Descriptor-7 A Register */ + + struct + { + __IOM uint32_t DATA0 : 8; /*!< [7..0] Data 0 */ + __IOM uint32_t DATA1 : 8; /*!< [15..8] Data 1 */ + __IOM uint32_t DT : 6; /*!< [21..16] Data Type */ + __IOM uint32_t VC : 2; /*!< [23..22] Virtual Channel */ + __IOM uint32_t FMT : 1; /*!< [24..24] Format */ + __IOM uint32_t SPD : 1; /*!< [25..25] Speed */ + __IOM uint32_t BTA : 2; /*!< [27..26] Bus Turn Around */ + __IOM uint32_t NXACT : 2; /*!< [29..28] Next Action */ + uint32_t : 2; + } SQCH1DSC7AR_b; + }; + + struct + { + union + { + union + { + __IOM uint16_t SQCH1DSC7AR_L; /*!< (@ 0x00000870) Sequence Channel 1 Descriptor-7 A Register */ + + struct + { + __IOM uint16_t DATA0 : 8; /*!< [7..0] Data 0 */ + __IOM uint16_t DATA1 : 8; /*!< [15..8] Data 1 */ + } SQCH1DSC7AR_L_b; + }; + + struct + { + union + { + __IOM uint8_t SQCH1DSC7AR_LL; /*!< (@ 0x00000870) Sequence Channel 1 Descriptor-7 A Register */ + + struct + { + __IOM uint8_t DATA0 : 8; /*!< [7..0] Data 0 */ + } SQCH1DSC7AR_LL_b; + }; + + union + { + __IOM uint8_t SQCH1DSC7AR_LH; /*!< (@ 0x00000871) Sequence Channel 1 Descriptor-7 A Register */ + + struct + { + __IOM uint8_t DATA1 : 8; /*!< [7..0] Data 1 */ + } SQCH1DSC7AR_LH_b; + }; + }; + }; + + union + { + union + { + __IOM uint16_t SQCH1DSC7AR_H; /*!< (@ 0x00000872) Sequence Channel 1 Descriptor-7 A Register */ + + struct + { + __IOM uint16_t DT : 6; /*!< [5..0] Data Type */ + __IOM uint16_t VC : 2; /*!< [7..6] Virtual Channel */ + __IOM uint16_t FMT : 1; /*!< [8..8] Format */ + __IOM uint16_t SPD : 1; /*!< [9..9] Speed */ + __IOM uint16_t BTA : 2; /*!< [11..10] Bus Turn Around */ + __IOM uint16_t NXACT : 2; /*!< [13..12] Next Action */ + uint16_t : 2; + } SQCH1DSC7AR_H_b; + }; + + struct + { + union + { + __IOM uint8_t SQCH1DSC7AR_HL; /*!< (@ 0x00000872) Sequence Channel 1 Descriptor-7 A Register */ + + struct + { + __IOM uint8_t DT : 6; /*!< [5..0] Data Type */ + __IOM uint8_t VC : 2; /*!< [7..6] Virtual Channel */ + } SQCH1DSC7AR_HL_b; + }; + + union + { + __IOM uint8_t SQCH1DSC7AR_HH; /*!< (@ 0x00000873) Sequence Channel 1 Descriptor-7 A Register */ + + struct + { + __IOM uint8_t FMT : 1; /*!< [0..0] Format */ + __IOM uint8_t SPD : 1; /*!< [1..1] Speed */ + __IOM uint8_t BTA : 2; /*!< [3..2] Bus Turn Around */ + __IOM uint8_t NXACT : 2; /*!< [5..4] Next Action */ + uint8_t : 2; + } SQCH1DSC7AR_HH_b; + }; + }; + }; + }; + }; + + union + { + __IOM uint32_t SQCH1DSC7BR; /*!< (@ 0x00000874) Sequence Channel 1 Descriptor-7 B Register */ + + struct + { + uint32_t : 24; + __IOM uint32_t DTSEL : 2; /*!< [25..24] Data Select */ + uint32_t : 6; + } SQCH1DSC7BR_b; + }; + + union + { + union + { + __IOM uint32_t SQCH1DSC7CR; /*!< (@ 0x00000878) Sequence Channel 1 Descriptor-7 C Register */ + + struct + { + __IOM uint32_t FINACT : 1; /*!< [0..0] Finish Action */ + uint32_t : 21; + __IOM uint32_t AUXOP : 1; /*!< [22..22] Auxiliary Operation */ + uint32_t : 1; + __IOM uint32_t ACTCODE : 8; /*!< [31..24] Action Code */ + } SQCH1DSC7CR_b; + }; + + struct + { + union + { + union + { + __IOM uint16_t SQCH1DSC7CR_L; /*!< (@ 0x00000878) Sequence Channel 1 Descriptor-7 C Register */ + + struct + { + __IOM uint16_t FINACT : 1; /*!< [0..0] Finish Action */ + uint16_t : 15; + } SQCH1DSC7CR_L_b; + }; + + union + { + __IOM uint8_t SQCH1DSC7CR_LL; /*!< (@ 0x00000878) Sequence Channel 1 Descriptor-7 C Register */ + + struct + { + __IOM uint8_t FINACT : 1; /*!< [0..0] Finish Action */ + uint8_t : 7; + } SQCH1DSC7CR_LL_b; + }; + }; + + union + { + union + { + __IOM uint16_t SQCH1DSC7CR_H; /*!< (@ 0x0000087A) Sequence Channel 1 Descriptor-7 C Register */ + + struct + { + uint16_t : 6; + __IOM uint16_t AUXOP : 1; /*!< [6..6] Auxiliary Operation */ + uint16_t : 1; + __IOM uint16_t ACTCODE : 8; /*!< [15..8] Action Code */ + } SQCH1DSC7CR_H_b; + }; + + struct + { + union + { + __IOM uint8_t SQCH1DSC7CR_HL; /*!< (@ 0x0000087A) Sequence Channel 1 Descriptor-7 C Register */ + + struct + { + uint8_t : 6; + __IOM uint8_t AUXOP : 1; /*!< [6..6] Auxiliary Operation */ + uint8_t : 1; + } SQCH1DSC7CR_HL_b; + }; + + union + { + __IOM uint8_t SQCH1DSC7CR_HH; /*!< (@ 0x0000087B) Sequence Channel 1 Descriptor-7 C Register */ + + struct + { + __IOM uint8_t ACTCODE : 8; /*!< [7..0] Action Code */ + } SQCH1DSC7CR_HH_b; + }; + }; + }; + }; + }; + + union + { + union + { + __IOM uint32_t SQCH1DSC7DR; /*!< (@ 0x0000087C) Sequence Channel 1 Descriptor-7 D Register */ + + struct + { + __IOM uint32_t LADDR : 32; /*!< [31..0] Lower Address */ + } SQCH1DSC7DR_b; + }; + + struct + { + union + { + union + { + __IOM uint16_t SQCH1DSC7DR_L; /*!< (@ 0x0000087C) Sequence Channel 1 Descriptor-7 D Register */ + + struct + { + __IOM uint16_t LADDR : 16; /*!< [15..0] Lower Address */ + } SQCH1DSC7DR_L_b; + }; + + struct + { + union + { + __IOM uint8_t SQCH1DSC7DR_LL; /*!< (@ 0x0000087C) Sequence Channel 1 Descriptor-7 D Register */ + + struct + { + __IOM uint8_t LADDR : 8; /*!< [7..0] Lower Address */ + } SQCH1DSC7DR_LL_b; + }; + + union + { + __IOM uint8_t SQCH1DSC7DR_LH; /*!< (@ 0x0000087D) Sequence Channel 1 Descriptor-7 D Register */ + + struct + { + __IOM uint8_t LADDR : 8; /*!< [7..0] Lower Address */ + } SQCH1DSC7DR_LH_b; + }; + }; + }; + + union + { + __IOM uint8_t SQCH1DSC7DR_HL; /*!< (@ 0x0000087E) Sequence Channel 1 Descriptor-7 D Register */ + + struct + { + __IOM uint8_t LADDR : 8; /*!< [7..0] Lower Address */ + } SQCH1DSC7DR_HL_b; + }; + + union + { + __IOM uint8_t SQCH1DSC7DR_HH; /*!< (@ 0x0000087F) Sequence Channel 1 Descriptor-7 D Register */ + + struct + { + __IOM uint8_t LADDR : 8; /*!< [7..0] Lower Address */ + } SQCH1DSC7DR_HH_b; + }; + }; + }; +} R_DSILINK_Type; /*!< Size = 2176 (0x880) */ + +/* =========================================================================================================================== */ +/* ================ 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_DRW_BASE (0x40344000UL + 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_GLCDC_BASE (0x40342000UL + 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_DPHYCNT_BASE (0x40346C00UL + BASE_NS_OFFSET) + #define R_DSILINK_BASE (0x40346000UL + 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_DRW ((R_DRW_Type *) R_DRW_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_GLCDC ((R_GLCDC_Type *) R_GLCDC_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_DPHYCNT ((R_DPHYCNT_Type *) R_DPHYCNT_BASE) + #define R_DSILINK ((R_DSILINK_Type *) R_DSILINK_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) */ + +/* =========================================================================================================================== */ +/* ================ BG ================ */ +/* =========================================================================================================================== */ + +/* ========================================================== EN =========================================================== */ + #define R_GLCDC_BG_EN_SWRST_Pos (16UL) /*!< SWRST (Bit 16) */ + #define R_GLCDC_BG_EN_SWRST_Msk (0x10000UL) /*!< SWRST (Bitfield-Mask: 0x01) */ + #define R_GLCDC_BG_EN_VEN_Pos (8UL) /*!< VEN (Bit 8) */ + #define R_GLCDC_BG_EN_VEN_Msk (0x100UL) /*!< VEN (Bitfield-Mask: 0x01) */ + #define R_GLCDC_BG_EN_EN_Pos (0UL) /*!< EN (Bit 0) */ + #define R_GLCDC_BG_EN_EN_Msk (0x1UL) /*!< EN (Bitfield-Mask: 0x01) */ +/* ========================================================= PERI ========================================================== */ + #define R_GLCDC_BG_PERI_FV_Pos (16UL) /*!< FV (Bit 16) */ + #define R_GLCDC_BG_PERI_FV_Msk (0x7ff0000UL) /*!< FV (Bitfield-Mask: 0x7ff) */ + #define R_GLCDC_BG_PERI_FH_Pos (0UL) /*!< FH (Bit 0) */ + #define R_GLCDC_BG_PERI_FH_Msk (0x7ffUL) /*!< FH (Bitfield-Mask: 0x7ff) */ +/* ========================================================= SYNC ========================================================== */ + #define R_GLCDC_BG_SYNC_VP_Pos (16UL) /*!< VP (Bit 16) */ + #define R_GLCDC_BG_SYNC_VP_Msk (0xf0000UL) /*!< VP (Bitfield-Mask: 0x0f) */ + #define R_GLCDC_BG_SYNC_HP_Pos (0UL) /*!< HP (Bit 0) */ + #define R_GLCDC_BG_SYNC_HP_Msk (0xfUL) /*!< HP (Bitfield-Mask: 0x0f) */ +/* ========================================================= VSIZE ========================================================= */ + #define R_GLCDC_BG_VSIZE_VP_Pos (16UL) /*!< VP (Bit 16) */ + #define R_GLCDC_BG_VSIZE_VP_Msk (0x7ff0000UL) /*!< VP (Bitfield-Mask: 0x7ff) */ + #define R_GLCDC_BG_VSIZE_VW_Pos (0UL) /*!< VW (Bit 0) */ + #define R_GLCDC_BG_VSIZE_VW_Msk (0x7ffUL) /*!< VW (Bitfield-Mask: 0x7ff) */ +/* ========================================================= HSIZE ========================================================= */ + #define R_GLCDC_BG_HSIZE_HP_Pos (16UL) /*!< HP (Bit 16) */ + #define R_GLCDC_BG_HSIZE_HP_Msk (0x7ff0000UL) /*!< HP (Bitfield-Mask: 0x7ff) */ + #define R_GLCDC_BG_HSIZE_HW_Pos (0UL) /*!< HW (Bit 0) */ + #define R_GLCDC_BG_HSIZE_HW_Msk (0x7ffUL) /*!< HW (Bitfield-Mask: 0x7ff) */ +/* ========================================================== BGC ========================================================== */ + #define R_GLCDC_BG_BGC_R_Pos (16UL) /*!< R (Bit 16) */ + #define R_GLCDC_BG_BGC_R_Msk (0xff0000UL) /*!< R (Bitfield-Mask: 0xff) */ + #define R_GLCDC_BG_BGC_G_Pos (8UL) /*!< G (Bit 8) */ + #define R_GLCDC_BG_BGC_G_Msk (0xff00UL) /*!< G (Bitfield-Mask: 0xff) */ + #define R_GLCDC_BG_BGC_B_Pos (0UL) /*!< B (Bit 0) */ + #define R_GLCDC_BG_BGC_B_Msk (0xffUL) /*!< B (Bitfield-Mask: 0xff) */ +/* ========================================================== MON ========================================================== */ + #define R_GLCDC_BG_MON_SWRST_Pos (16UL) /*!< SWRST (Bit 16) */ + #define R_GLCDC_BG_MON_SWRST_Msk (0x10000UL) /*!< SWRST (Bitfield-Mask: 0x01) */ + #define R_GLCDC_BG_MON_VEN_Pos (8UL) /*!< VEN (Bit 8) */ + #define R_GLCDC_BG_MON_VEN_Msk (0x100UL) /*!< VEN (Bitfield-Mask: 0x01) */ + #define R_GLCDC_BG_MON_EN_Pos (0UL) /*!< EN (Bit 0) */ + #define R_GLCDC_BG_MON_EN_Msk (0x1UL) /*!< EN (Bitfield-Mask: 0x01) */ + +/* =========================================================================================================================== */ +/* ================ GR ================ */ +/* =========================================================================================================================== */ + +/* ========================================================== VEN ========================================================== */ + #define R_GLCDC_GR_VEN_PVEN_Pos (0UL) /*!< PVEN (Bit 0) */ + #define R_GLCDC_GR_VEN_PVEN_Msk (0x1UL) /*!< PVEN (Bitfield-Mask: 0x01) */ +/* ========================================================= FLMRD ========================================================= */ + #define R_GLCDC_GR_FLMRD_RENB_Pos (0UL) /*!< RENB (Bit 0) */ + #define R_GLCDC_GR_FLMRD_RENB_Msk (0x1UL) /*!< RENB (Bitfield-Mask: 0x01) */ +/* ========================================================= FLM1 ========================================================== */ + #define R_GLCDC_GR_FLM1_BSTMD_Pos (0UL) /*!< BSTMD (Bit 0) */ + #define R_GLCDC_GR_FLM1_BSTMD_Msk (0x3UL) /*!< BSTMD (Bitfield-Mask: 0x03) */ +/* ========================================================= FLM2 ========================================================== */ + #define R_GLCDC_GR_FLM2_BASE_Pos (0UL) /*!< BASE (Bit 0) */ + #define R_GLCDC_GR_FLM2_BASE_Msk (0xffffffffUL) /*!< BASE (Bitfield-Mask: 0xffffffff) */ +/* ========================================================= FLM3 ========================================================== */ + #define R_GLCDC_GR_FLM3_LNOFF_Pos (16UL) /*!< LNOFF (Bit 16) */ + #define R_GLCDC_GR_FLM3_LNOFF_Msk (0xffff0000UL) /*!< LNOFF (Bitfield-Mask: 0xffff) */ +/* ========================================================= FLM5 ========================================================== */ + #define R_GLCDC_GR_FLM5_LNNUM_Pos (16UL) /*!< LNNUM (Bit 16) */ + #define R_GLCDC_GR_FLM5_LNNUM_Msk (0x7ff0000UL) /*!< LNNUM (Bitfield-Mask: 0x7ff) */ + #define R_GLCDC_GR_FLM5_DATANUM_Pos (0UL) /*!< DATANUM (Bit 0) */ + #define R_GLCDC_GR_FLM5_DATANUM_Msk (0xffffUL) /*!< DATANUM (Bitfield-Mask: 0xffff) */ +/* ========================================================= FLM6 ========================================================== */ + #define R_GLCDC_GR_FLM6_FORMAT_Pos (28UL) /*!< FORMAT (Bit 28) */ + #define R_GLCDC_GR_FLM6_FORMAT_Msk (0x70000000UL) /*!< FORMAT (Bitfield-Mask: 0x07) */ +/* ========================================================== AB1 ========================================================== */ + #define R_GLCDC_GR_AB1_ARCON_Pos (12UL) /*!< ARCON (Bit 12) */ + #define R_GLCDC_GR_AB1_ARCON_Msk (0x1000UL) /*!< ARCON (Bitfield-Mask: 0x01) */ + #define R_GLCDC_GR_AB1_ARCDISPON_Pos (8UL) /*!< ARCDISPON (Bit 8) */ + #define R_GLCDC_GR_AB1_ARCDISPON_Msk (0x100UL) /*!< ARCDISPON (Bitfield-Mask: 0x01) */ + #define R_GLCDC_GR_AB1_GRCDISPON_Pos (4UL) /*!< GRCDISPON (Bit 4) */ + #define R_GLCDC_GR_AB1_GRCDISPON_Msk (0x10UL) /*!< GRCDISPON (Bitfield-Mask: 0x01) */ + #define R_GLCDC_GR_AB1_DISPSEL_Pos (0UL) /*!< DISPSEL (Bit 0) */ + #define R_GLCDC_GR_AB1_DISPSEL_Msk (0x3UL) /*!< DISPSEL (Bitfield-Mask: 0x03) */ +/* ========================================================== AB2 ========================================================== */ + #define R_GLCDC_GR_AB2_GRCVS_Pos (16UL) /*!< GRCVS (Bit 16) */ + #define R_GLCDC_GR_AB2_GRCVS_Msk (0x7ff0000UL) /*!< GRCVS (Bitfield-Mask: 0x7ff) */ + #define R_GLCDC_GR_AB2_GRCVW_Pos (0UL) /*!< GRCVW (Bit 0) */ + #define R_GLCDC_GR_AB2_GRCVW_Msk (0x7ffUL) /*!< GRCVW (Bitfield-Mask: 0x7ff) */ +/* ========================================================== AB3 ========================================================== */ + #define R_GLCDC_GR_AB3_GRCHS_Pos (16UL) /*!< GRCHS (Bit 16) */ + #define R_GLCDC_GR_AB3_GRCHS_Msk (0x7ff0000UL) /*!< GRCHS (Bitfield-Mask: 0x7ff) */ + #define R_GLCDC_GR_AB3_GRCHW_Pos (0UL) /*!< GRCHW (Bit 0) */ + #define R_GLCDC_GR_AB3_GRCHW_Msk (0x7ffUL) /*!< GRCHW (Bitfield-Mask: 0x7ff) */ +/* ========================================================== AB4 ========================================================== */ + #define R_GLCDC_GR_AB4_ARCVS_Pos (16UL) /*!< ARCVS (Bit 16) */ + #define R_GLCDC_GR_AB4_ARCVS_Msk (0x7ff0000UL) /*!< ARCVS (Bitfield-Mask: 0x7ff) */ + #define R_GLCDC_GR_AB4_ARCVW_Pos (0UL) /*!< ARCVW (Bit 0) */ + #define R_GLCDC_GR_AB4_ARCVW_Msk (0x7ffUL) /*!< ARCVW (Bitfield-Mask: 0x7ff) */ +/* ========================================================== AB5 ========================================================== */ + #define R_GLCDC_GR_AB5_ARCHS_Pos (16UL) /*!< ARCHS (Bit 16) */ + #define R_GLCDC_GR_AB5_ARCHS_Msk (0x7ff0000UL) /*!< ARCHS (Bitfield-Mask: 0x7ff) */ + #define R_GLCDC_GR_AB5_ARCHW_Pos (0UL) /*!< ARCHW (Bit 0) */ + #define R_GLCDC_GR_AB5_ARCHW_Msk (0x7ffUL) /*!< ARCHW (Bitfield-Mask: 0x7ff) */ +/* ========================================================== AB6 ========================================================== */ + #define R_GLCDC_GR_AB6_ARCCOEF_Pos (16UL) /*!< ARCCOEF (Bit 16) */ + #define R_GLCDC_GR_AB6_ARCCOEF_Msk (0x1ff0000UL) /*!< ARCCOEF (Bitfield-Mask: 0x1ff) */ + #define R_GLCDC_GR_AB6_ARCRATE_Pos (0UL) /*!< ARCRATE (Bit 0) */ + #define R_GLCDC_GR_AB6_ARCRATE_Msk (0xffUL) /*!< ARCRATE (Bitfield-Mask: 0xff) */ +/* ========================================================== AB7 ========================================================== */ + #define R_GLCDC_GR_AB7_ARCDEF_Pos (16UL) /*!< ARCDEF (Bit 16) */ + #define R_GLCDC_GR_AB7_ARCDEF_Msk (0xff0000UL) /*!< ARCDEF (Bitfield-Mask: 0xff) */ + #define R_GLCDC_GR_AB7_CKON_Pos (0UL) /*!< CKON (Bit 0) */ + #define R_GLCDC_GR_AB7_CKON_Msk (0x1UL) /*!< CKON (Bitfield-Mask: 0x01) */ +/* ========================================================== AB8 ========================================================== */ + #define R_GLCDC_GR_AB8_CKKG_Pos (16UL) /*!< CKKG (Bit 16) */ + #define R_GLCDC_GR_AB8_CKKG_Msk (0xff0000UL) /*!< CKKG (Bitfield-Mask: 0xff) */ + #define R_GLCDC_GR_AB8_CKKB_Pos (8UL) /*!< CKKB (Bit 8) */ + #define R_GLCDC_GR_AB8_CKKB_Msk (0xff00UL) /*!< CKKB (Bitfield-Mask: 0xff) */ + #define R_GLCDC_GR_AB8_CKKR_Pos (0UL) /*!< CKKR (Bit 0) */ + #define R_GLCDC_GR_AB8_CKKR_Msk (0xffUL) /*!< CKKR (Bitfield-Mask: 0xff) */ +/* ========================================================== AB9 ========================================================== */ + #define R_GLCDC_GR_AB9_CKA_Pos (24UL) /*!< CKA (Bit 24) */ + #define R_GLCDC_GR_AB9_CKA_Msk (0xff000000UL) /*!< CKA (Bitfield-Mask: 0xff) */ + #define R_GLCDC_GR_AB9_CKG_Pos (16UL) /*!< CKG (Bit 16) */ + #define R_GLCDC_GR_AB9_CKG_Msk (0xff0000UL) /*!< CKG (Bitfield-Mask: 0xff) */ + #define R_GLCDC_GR_AB9_CKB_Pos (8UL) /*!< CKB (Bit 8) */ + #define R_GLCDC_GR_AB9_CKB_Msk (0xff00UL) /*!< CKB (Bitfield-Mask: 0xff) */ + #define R_GLCDC_GR_AB9_CKR_Pos (0UL) /*!< CKR (Bit 0) */ + #define R_GLCDC_GR_AB9_CKR_Msk (0xffUL) /*!< CKR (Bitfield-Mask: 0xff) */ +/* ========================================================= BASE ========================================================== */ + #define R_GLCDC_GR_BASE_G_Pos (16UL) /*!< G (Bit 16) */ + #define R_GLCDC_GR_BASE_G_Msk (0xff0000UL) /*!< G (Bitfield-Mask: 0xff) */ + #define R_GLCDC_GR_BASE_B_Pos (8UL) /*!< B (Bit 8) */ + #define R_GLCDC_GR_BASE_B_Msk (0xff00UL) /*!< B (Bitfield-Mask: 0xff) */ + #define R_GLCDC_GR_BASE_R_Pos (0UL) /*!< R (Bit 0) */ + #define R_GLCDC_GR_BASE_R_Msk (0xffUL) /*!< R (Bitfield-Mask: 0xff) */ +/* ======================================================== CLUTINT ======================================================== */ + #define R_GLCDC_GR_CLUTINT_SEL_Pos (16UL) /*!< SEL (Bit 16) */ + #define R_GLCDC_GR_CLUTINT_SEL_Msk (0x10000UL) /*!< SEL (Bitfield-Mask: 0x01) */ + #define R_GLCDC_GR_CLUTINT_LINE_Pos (0UL) /*!< LINE (Bit 0) */ + #define R_GLCDC_GR_CLUTINT_LINE_Msk (0x7ffUL) /*!< LINE (Bitfield-Mask: 0x7ff) */ +/* ========================================================== MON ========================================================== */ + #define R_GLCDC_GR_MON_UNDFLST_Pos (16UL) /*!< UNDFLST (Bit 16) */ + #define R_GLCDC_GR_MON_UNDFLST_Msk (0x10000UL) /*!< UNDFLST (Bitfield-Mask: 0x01) */ + #define R_GLCDC_GR_MON_ARCST_Pos (0UL) /*!< ARCST (Bit 0) */ + #define R_GLCDC_GR_MON_ARCST_Msk (0x1UL) /*!< ARCST (Bitfield-Mask: 0x01) */ + +/* =========================================================================================================================== */ +/* ================ GAM ================ */ +/* =========================================================================================================================== */ + +/* ========================================================= LATCH ========================================================= */ + #define R_GLCDC_GAM_LATCH_VEN_Pos (0UL) /*!< VEN (Bit 0) */ + #define R_GLCDC_GAM_LATCH_VEN_Msk (0x1UL) /*!< VEN (Bitfield-Mask: 0x01) */ +/* ======================================================== GAM_SW ========================================================= */ + #define R_GLCDC_GAM_GAM_SW_GAMON_Pos (0UL) /*!< GAMON (Bit 0) */ + #define R_GLCDC_GAM_GAM_SW_GAMON_Msk (0x1UL) /*!< GAMON (Bitfield-Mask: 0x01) */ +/* ========================================================== LUT ========================================================== */ + #define R_GLCDC_GAM_LUT___Pos (0UL) /*!< _ (Bit 0) */ + #define R_GLCDC_GAM_LUT___Msk (0x7ffUL) /*!< _ (Bitfield-Mask: 0x7ff) */ +/* ========================================================= AREA ========================================================== */ + #define R_GLCDC_GAM_AREA___Pos (0UL) /*!< _ (Bit 0) */ + #define R_GLCDC_GAM_AREA___Msk (0x3ffUL) /*!< _ (Bitfield-Mask: 0x3ff) */ + +/* =========================================================================================================================== */ +/* ================ OUT ================ */ +/* =========================================================================================================================== */ + +/* ======================================================== VLATCH ========================================================= */ + #define R_GLCDC_OUT_VLATCH_VEN_Pos (0UL) /*!< VEN (Bit 0) */ + #define R_GLCDC_OUT_VLATCH_VEN_Msk (0x1UL) /*!< VEN (Bitfield-Mask: 0x01) */ +/* ========================================================== SET ========================================================== */ + #define R_GLCDC_OUT_SET_ENDIANON_Pos (28UL) /*!< ENDIANON (Bit 28) */ + #define R_GLCDC_OUT_SET_ENDIANON_Msk (0x10000000UL) /*!< ENDIANON (Bitfield-Mask: 0x01) */ + #define R_GLCDC_OUT_SET_SWAPON_Pos (24UL) /*!< SWAPON (Bit 24) */ + #define R_GLCDC_OUT_SET_SWAPON_Msk (0x1000000UL) /*!< SWAPON (Bitfield-Mask: 0x01) */ + #define R_GLCDC_OUT_SET_FORMAT_Pos (12UL) /*!< FORMAT (Bit 12) */ + #define R_GLCDC_OUT_SET_FORMAT_Msk (0x3000UL) /*!< FORMAT (Bitfield-Mask: 0x03) */ + #define R_GLCDC_OUT_SET_FRQSEL_Pos (8UL) /*!< FRQSEL (Bit 8) */ + #define R_GLCDC_OUT_SET_FRQSEL_Msk (0x300UL) /*!< FRQSEL (Bitfield-Mask: 0x03) */ + #define R_GLCDC_OUT_SET_DIRSEL_Pos (4UL) /*!< DIRSEL (Bit 4) */ + #define R_GLCDC_OUT_SET_DIRSEL_Msk (0x10UL) /*!< DIRSEL (Bitfield-Mask: 0x01) */ + #define R_GLCDC_OUT_SET_PHASE_Pos (0UL) /*!< PHASE (Bit 0) */ + #define R_GLCDC_OUT_SET_PHASE_Msk (0x3UL) /*!< PHASE (Bitfield-Mask: 0x03) */ +/* ======================================================== BRIGHT1 ======================================================== */ + #define R_GLCDC_OUT_BRIGHT1_BRTG_Pos (0UL) /*!< BRTG (Bit 0) */ + #define R_GLCDC_OUT_BRIGHT1_BRTG_Msk (0x3ffUL) /*!< BRTG (Bitfield-Mask: 0x3ff) */ +/* ======================================================== BRIGHT2 ======================================================== */ + #define R_GLCDC_OUT_BRIGHT2_BRTB_Pos (16UL) /*!< BRTB (Bit 16) */ + #define R_GLCDC_OUT_BRIGHT2_BRTB_Msk (0x3ff0000UL) /*!< BRTB (Bitfield-Mask: 0x3ff) */ + #define R_GLCDC_OUT_BRIGHT2_BRTR_Pos (0UL) /*!< BRTR (Bit 0) */ + #define R_GLCDC_OUT_BRIGHT2_BRTR_Msk (0x3ffUL) /*!< BRTR (Bitfield-Mask: 0x3ff) */ +/* ======================================================= CONTRAST ======================================================== */ + #define R_GLCDC_OUT_CONTRAST_CONTG_Pos (16UL) /*!< CONTG (Bit 16) */ + #define R_GLCDC_OUT_CONTRAST_CONTG_Msk (0xff0000UL) /*!< CONTG (Bitfield-Mask: 0xff) */ + #define R_GLCDC_OUT_CONTRAST_CONTB_Pos (8UL) /*!< CONTB (Bit 8) */ + #define R_GLCDC_OUT_CONTRAST_CONTB_Msk (0xff00UL) /*!< CONTB (Bitfield-Mask: 0xff) */ + #define R_GLCDC_OUT_CONTRAST_CONTR_Pos (0UL) /*!< CONTR (Bit 0) */ + #define R_GLCDC_OUT_CONTRAST_CONTR_Msk (0xffUL) /*!< CONTR (Bitfield-Mask: 0xff) */ +/* ========================================================= PDTHA ========================================================= */ + #define R_GLCDC_OUT_PDTHA_SEL_Pos (20UL) /*!< SEL (Bit 20) */ + #define R_GLCDC_OUT_PDTHA_SEL_Msk (0x300000UL) /*!< SEL (Bitfield-Mask: 0x03) */ + #define R_GLCDC_OUT_PDTHA_FORM_Pos (16UL) /*!< FORM (Bit 16) */ + #define R_GLCDC_OUT_PDTHA_FORM_Msk (0x30000UL) /*!< FORM (Bitfield-Mask: 0x03) */ + #define R_GLCDC_OUT_PDTHA_PA_Pos (12UL) /*!< PA (Bit 12) */ + #define R_GLCDC_OUT_PDTHA_PA_Msk (0x3000UL) /*!< PA (Bitfield-Mask: 0x03) */ + #define R_GLCDC_OUT_PDTHA_PB_Pos (8UL) /*!< PB (Bit 8) */ + #define R_GLCDC_OUT_PDTHA_PB_Msk (0x300UL) /*!< PB (Bitfield-Mask: 0x03) */ + #define R_GLCDC_OUT_PDTHA_PC_Pos (4UL) /*!< PC (Bit 4) */ + #define R_GLCDC_OUT_PDTHA_PC_Msk (0x30UL) /*!< PC (Bitfield-Mask: 0x03) */ + #define R_GLCDC_OUT_PDTHA_PD_Pos (0UL) /*!< PD (Bit 0) */ + #define R_GLCDC_OUT_PDTHA_PD_Msk (0x3UL) /*!< PD (Bitfield-Mask: 0x03) */ +/* ======================================================= CLKPHASE ======================================================== */ + #define R_GLCDC_OUT_CLKPHASE_FRONTGAM_Pos (12UL) /*!< FRONTGAM (Bit 12) */ + #define R_GLCDC_OUT_CLKPHASE_FRONTGAM_Msk (0x1000UL) /*!< FRONTGAM (Bitfield-Mask: 0x01) */ + #define R_GLCDC_OUT_CLKPHASE_LCDEDGE_Pos (8UL) /*!< LCDEDGE (Bit 8) */ + #define R_GLCDC_OUT_CLKPHASE_LCDEDGE_Msk (0x100UL) /*!< LCDEDGE (Bitfield-Mask: 0x01) */ + #define R_GLCDC_OUT_CLKPHASE_TCON0EDGE_Pos (6UL) /*!< TCON0EDGE (Bit 6) */ + #define R_GLCDC_OUT_CLKPHASE_TCON0EDGE_Msk (0x40UL) /*!< TCON0EDGE (Bitfield-Mask: 0x01) */ + #define R_GLCDC_OUT_CLKPHASE_TCON1EDGE_Pos (5UL) /*!< TCON1EDGE (Bit 5) */ + #define R_GLCDC_OUT_CLKPHASE_TCON1EDGE_Msk (0x20UL) /*!< TCON1EDGE (Bitfield-Mask: 0x01) */ + #define R_GLCDC_OUT_CLKPHASE_TCON2EDGE_Pos (4UL) /*!< TCON2EDGE (Bit 4) */ + #define R_GLCDC_OUT_CLKPHASE_TCON2EDGE_Msk (0x10UL) /*!< TCON2EDGE (Bitfield-Mask: 0x01) */ + #define R_GLCDC_OUT_CLKPHASE_TCON3EDGE_Pos (3UL) /*!< TCON3EDGE (Bit 3) */ + #define R_GLCDC_OUT_CLKPHASE_TCON3EDGE_Msk (0x8UL) /*!< TCON3EDGE (Bitfield-Mask: 0x01) */ + +/* =========================================================================================================================== */ +/* ================ TCON ================ */ +/* =========================================================================================================================== */ + +/* ========================================================== TIM ========================================================== */ + #define R_GLCDC_TCON_TIM_HALF_Pos (16UL) /*!< HALF (Bit 16) */ + #define R_GLCDC_TCON_TIM_HALF_Msk (0x7ff0000UL) /*!< HALF (Bitfield-Mask: 0x7ff) */ + #define R_GLCDC_TCON_TIM_OFFSET_Pos (0UL) /*!< OFFSET (Bit 0) */ + #define R_GLCDC_TCON_TIM_OFFSET_Msk (0x7ffUL) /*!< OFFSET (Bitfield-Mask: 0x7ff) */ +/* ========================================================= STVA1 ========================================================= */ + #define R_GLCDC_TCON_STVA1_VS_Pos (16UL) /*!< VS (Bit 16) */ + #define R_GLCDC_TCON_STVA1_VS_Msk (0x7ff0000UL) /*!< VS (Bitfield-Mask: 0x7ff) */ + #define R_GLCDC_TCON_STVA1_VW_Pos (0UL) /*!< VW (Bit 0) */ + #define R_GLCDC_TCON_STVA1_VW_Msk (0x7ffUL) /*!< VW (Bitfield-Mask: 0x7ff) */ +/* ========================================================= STVB1 ========================================================= */ + #define R_GLCDC_TCON_STVB1_VS_Pos (16UL) /*!< VS (Bit 16) */ + #define R_GLCDC_TCON_STVB1_VS_Msk (0x7ff0000UL) /*!< VS (Bitfield-Mask: 0x7ff) */ + #define R_GLCDC_TCON_STVB1_VW_Pos (0UL) /*!< VW (Bit 0) */ + #define R_GLCDC_TCON_STVB1_VW_Msk (0x7ffUL) /*!< VW (Bitfield-Mask: 0x7ff) */ +/* ========================================================= STVA2 ========================================================= */ + #define R_GLCDC_TCON_STVA2_INV_Pos (4UL) /*!< INV (Bit 4) */ + #define R_GLCDC_TCON_STVA2_INV_Msk (0x10UL) /*!< INV (Bitfield-Mask: 0x01) */ + #define R_GLCDC_TCON_STVA2_SEL_Pos (0UL) /*!< SEL (Bit 0) */ + #define R_GLCDC_TCON_STVA2_SEL_Msk (0x7UL) /*!< SEL (Bitfield-Mask: 0x07) */ +/* ========================================================= STVB2 ========================================================= */ + #define R_GLCDC_TCON_STVB2_INV_Pos (4UL) /*!< INV (Bit 4) */ + #define R_GLCDC_TCON_STVB2_INV_Msk (0x10UL) /*!< INV (Bitfield-Mask: 0x01) */ + #define R_GLCDC_TCON_STVB2_SEL_Pos (0UL) /*!< SEL (Bit 0) */ + #define R_GLCDC_TCON_STVB2_SEL_Msk (0x7UL) /*!< SEL (Bitfield-Mask: 0x07) */ +/* ========================================================= STHA1 ========================================================= */ + #define R_GLCDC_TCON_STHA1_HS_Pos (16UL) /*!< HS (Bit 16) */ + #define R_GLCDC_TCON_STHA1_HS_Msk (0x7ff0000UL) /*!< HS (Bitfield-Mask: 0x7ff) */ + #define R_GLCDC_TCON_STHA1_HW_Pos (0UL) /*!< HW (Bit 0) */ + #define R_GLCDC_TCON_STHA1_HW_Msk (0x7ffUL) /*!< HW (Bitfield-Mask: 0x7ff) */ +/* ========================================================= STHB1 ========================================================= */ + #define R_GLCDC_TCON_STHB1_HS_Pos (16UL) /*!< HS (Bit 16) */ + #define R_GLCDC_TCON_STHB1_HS_Msk (0x7ff0000UL) /*!< HS (Bitfield-Mask: 0x7ff) */ + #define R_GLCDC_TCON_STHB1_HW_Pos (0UL) /*!< HW (Bit 0) */ + #define R_GLCDC_TCON_STHB1_HW_Msk (0x7ffUL) /*!< HW (Bitfield-Mask: 0x7ff) */ +/* ========================================================= STHA2 ========================================================= */ + #define R_GLCDC_TCON_STHA2_HSSEL_Pos (8UL) /*!< HSSEL (Bit 8) */ + #define R_GLCDC_TCON_STHA2_HSSEL_Msk (0x100UL) /*!< HSSEL (Bitfield-Mask: 0x01) */ + #define R_GLCDC_TCON_STHA2_INV_Pos (4UL) /*!< INV (Bit 4) */ + #define R_GLCDC_TCON_STHA2_INV_Msk (0x10UL) /*!< INV (Bitfield-Mask: 0x01) */ + #define R_GLCDC_TCON_STHA2_SEL_Pos (0UL) /*!< SEL (Bit 0) */ + #define R_GLCDC_TCON_STHA2_SEL_Msk (0x7UL) /*!< SEL (Bitfield-Mask: 0x07) */ +/* ========================================================= STHB2 ========================================================= */ + #define R_GLCDC_TCON_STHB2_HSSEL_Pos (8UL) /*!< HSSEL (Bit 8) */ + #define R_GLCDC_TCON_STHB2_HSSEL_Msk (0x100UL) /*!< HSSEL (Bitfield-Mask: 0x01) */ + #define R_GLCDC_TCON_STHB2_INV_Pos (4UL) /*!< INV (Bit 4) */ + #define R_GLCDC_TCON_STHB2_INV_Msk (0x10UL) /*!< INV (Bitfield-Mask: 0x01) */ + #define R_GLCDC_TCON_STHB2_SEL_Pos (0UL) /*!< SEL (Bit 0) */ + #define R_GLCDC_TCON_STHB2_SEL_Msk (0x7UL) /*!< SEL (Bitfield-Mask: 0x07) */ +/* ========================================================== DE =========================================================== */ + #define R_GLCDC_TCON_DE_INV_Pos (0UL) /*!< INV (Bit 0) */ + #define R_GLCDC_TCON_DE_INV_Msk (0x1UL) /*!< INV (Bitfield-Mask: 0x01) */ + +/* =========================================================================================================================== */ +/* ================ SYSCNT ================ */ +/* =========================================================================================================================== */ + +/* ======================================================== DTCTEN ========================================================= */ + #define R_GLCDC_SYSCNT_DTCTEN_L2UNDFDTC_Pos (2UL) /*!< L2UNDFDTC (Bit 2) */ + #define R_GLCDC_SYSCNT_DTCTEN_L2UNDFDTC_Msk (0x4UL) /*!< L2UNDFDTC (Bitfield-Mask: 0x01) */ + #define R_GLCDC_SYSCNT_DTCTEN_L1UNDFDTC_Pos (1UL) /*!< L1UNDFDTC (Bit 1) */ + #define R_GLCDC_SYSCNT_DTCTEN_L1UNDFDTC_Msk (0x2UL) /*!< L1UNDFDTC (Bitfield-Mask: 0x01) */ + #define R_GLCDC_SYSCNT_DTCTEN_VPOSDTC_Pos (0UL) /*!< VPOSDTC (Bit 0) */ + #define R_GLCDC_SYSCNT_DTCTEN_VPOSDTC_Msk (0x1UL) /*!< VPOSDTC (Bitfield-Mask: 0x01) */ +/* ========================================================= INTEN ========================================================= */ + #define R_GLCDC_SYSCNT_INTEN_L2UNDFINTEN_Pos (2UL) /*!< L2UNDFINTEN (Bit 2) */ + #define R_GLCDC_SYSCNT_INTEN_L2UNDFINTEN_Msk (0x4UL) /*!< L2UNDFINTEN (Bitfield-Mask: 0x01) */ + #define R_GLCDC_SYSCNT_INTEN_L1UNDFINTEN_Pos (1UL) /*!< L1UNDFINTEN (Bit 1) */ + #define R_GLCDC_SYSCNT_INTEN_L1UNDFINTEN_Msk (0x2UL) /*!< L1UNDFINTEN (Bitfield-Mask: 0x01) */ + #define R_GLCDC_SYSCNT_INTEN_VPOSINTEN_Pos (0UL) /*!< VPOSINTEN (Bit 0) */ + #define R_GLCDC_SYSCNT_INTEN_VPOSINTEN_Msk (0x1UL) /*!< VPOSINTEN (Bitfield-Mask: 0x01) */ +/* ========================================================= STCLR ========================================================= */ + #define R_GLCDC_SYSCNT_STCLR_L2UNDFCLR_Pos (2UL) /*!< L2UNDFCLR (Bit 2) */ + #define R_GLCDC_SYSCNT_STCLR_L2UNDFCLR_Msk (0x4UL) /*!< L2UNDFCLR (Bitfield-Mask: 0x01) */ + #define R_GLCDC_SYSCNT_STCLR_L1UNDFCLR_Pos (1UL) /*!< L1UNDFCLR (Bit 1) */ + #define R_GLCDC_SYSCNT_STCLR_L1UNDFCLR_Msk (0x2UL) /*!< L1UNDFCLR (Bitfield-Mask: 0x01) */ + #define R_GLCDC_SYSCNT_STCLR_VPOSCLR_Pos (0UL) /*!< VPOSCLR (Bit 0) */ + #define R_GLCDC_SYSCNT_STCLR_VPOSCLR_Msk (0x1UL) /*!< VPOSCLR (Bitfield-Mask: 0x01) */ +/* ========================================================= STMON ========================================================= */ + #define R_GLCDC_SYSCNT_STMON_L2UNDF_Pos (2UL) /*!< L2UNDF (Bit 2) */ + #define R_GLCDC_SYSCNT_STMON_L2UNDF_Msk (0x4UL) /*!< L2UNDF (Bitfield-Mask: 0x01) */ + #define R_GLCDC_SYSCNT_STMON_L1UNDF_Pos (1UL) /*!< L1UNDF (Bit 1) */ + #define R_GLCDC_SYSCNT_STMON_L1UNDF_Msk (0x2UL) /*!< L1UNDF (Bitfield-Mask: 0x01) */ + #define R_GLCDC_SYSCNT_STMON_VPOS_Pos (0UL) /*!< VPOS (Bit 0) */ + #define R_GLCDC_SYSCNT_STMON_VPOS_Msk (0x1UL) /*!< VPOS (Bitfield-Mask: 0x01) */ +/* ======================================================= PANEL_CLK ======================================================= */ + #define R_GLCDC_SYSCNT_PANEL_CLK_VER_Pos (16UL) /*!< VER (Bit 16) */ + #define R_GLCDC_SYSCNT_PANEL_CLK_VER_Msk (0xffff0000UL) /*!< VER (Bitfield-Mask: 0xffff) */ + #define R_GLCDC_SYSCNT_PANEL_CLK_PIXSEL_Pos (12UL) /*!< PIXSEL (Bit 12) */ + #define R_GLCDC_SYSCNT_PANEL_CLK_PIXSEL_Msk (0x1000UL) /*!< PIXSEL (Bitfield-Mask: 0x01) */ + #define R_GLCDC_SYSCNT_PANEL_CLK_CLKSEL_Pos (8UL) /*!< CLKSEL (Bit 8) */ + #define R_GLCDC_SYSCNT_PANEL_CLK_CLKSEL_Msk (0x100UL) /*!< CLKSEL (Bitfield-Mask: 0x01) */ + #define R_GLCDC_SYSCNT_PANEL_CLK_CLKEN_Pos (6UL) /*!< CLKEN (Bit 6) */ + #define R_GLCDC_SYSCNT_PANEL_CLK_CLKEN_Msk (0x40UL) /*!< CLKEN (Bitfield-Mask: 0x01) */ + #define R_GLCDC_SYSCNT_PANEL_CLK_DCDR_Pos (0UL) /*!< DCDR (Bit 0) */ + #define R_GLCDC_SYSCNT_PANEL_CLK_DCDR_Msk (0x3fUL) /*!< DCDR (Bitfield-Mask: 0x3f) */ + +/* =========================================================================================================================== */ +/* ================ 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_DRW ================ */ +/* =========================================================================================================================== */ + +/* ======================================================== CONTROL ======================================================== */ + #define R_DRW_CONTROL_SPANSTORE_Pos (23UL) /*!< SPANSTORE (Bit 23) */ + #define R_DRW_CONTROL_SPANSTORE_Msk (0x800000UL) /*!< SPANSTORE (Bitfield-Mask: 0x01) */ + #define R_DRW_CONTROL_SPANABORT_Pos (22UL) /*!< SPANABORT (Bit 22) */ + #define R_DRW_CONTROL_SPANABORT_Msk (0x400000UL) /*!< SPANABORT (Bitfield-Mask: 0x01) */ + #define R_DRW_CONTROL_UNIONCD_Pos (21UL) /*!< UNIONCD (Bit 21) */ + #define R_DRW_CONTROL_UNIONCD_Msk (0x200000UL) /*!< UNIONCD (Bitfield-Mask: 0x01) */ + #define R_DRW_CONTROL_UNIONAB_Pos (20UL) /*!< UNIONAB (Bit 20) */ + #define R_DRW_CONTROL_UNIONAB_Msk (0x100000UL) /*!< UNIONAB (Bitfield-Mask: 0x01) */ + #define R_DRW_CONTROL_UNION56_Pos (19UL) /*!< UNION56 (Bit 19) */ + #define R_DRW_CONTROL_UNION56_Msk (0x80000UL) /*!< UNION56 (Bitfield-Mask: 0x01) */ + #define R_DRW_CONTROL_UNION34_Pos (18UL) /*!< UNION34 (Bit 18) */ + #define R_DRW_CONTROL_UNION34_Msk (0x40000UL) /*!< UNION34 (Bitfield-Mask: 0x01) */ + #define R_DRW_CONTROL_UNION12_Pos (17UL) /*!< UNION12 (Bit 17) */ + #define R_DRW_CONTROL_UNION12_Msk (0x20000UL) /*!< UNION12 (Bitfield-Mask: 0x01) */ + #define R_DRW_CONTROL_BAND2ENABLE_Pos (16UL) /*!< BAND2ENABLE (Bit 16) */ + #define R_DRW_CONTROL_BAND2ENABLE_Msk (0x10000UL) /*!< BAND2ENABLE (Bitfield-Mask: 0x01) */ + #define R_DRW_CONTROL_BAND1ENABLE_Pos (15UL) /*!< BAND1ENABLE (Bit 15) */ + #define R_DRW_CONTROL_BAND1ENABLE_Msk (0x8000UL) /*!< BAND1ENABLE (Bitfield-Mask: 0x01) */ + #define R_DRW_CONTROL_LIM6THRESHOLD_Pos (14UL) /*!< LIM6THRESHOLD (Bit 14) */ + #define R_DRW_CONTROL_LIM6THRESHOLD_Msk (0x4000UL) /*!< LIM6THRESHOLD (Bitfield-Mask: 0x01) */ + #define R_DRW_CONTROL_LIM5THRESHOLD_Pos (13UL) /*!< LIM5THRESHOLD (Bit 13) */ + #define R_DRW_CONTROL_LIM5THRESHOLD_Msk (0x2000UL) /*!< LIM5THRESHOLD (Bitfield-Mask: 0x01) */ + #define R_DRW_CONTROL_LIM4THRESHOLD_Pos (12UL) /*!< LIM4THRESHOLD (Bit 12) */ + #define R_DRW_CONTROL_LIM4THRESHOLD_Msk (0x1000UL) /*!< LIM4THRESHOLD (Bitfield-Mask: 0x01) */ + #define R_DRW_CONTROL_LIM3THRESHOLD_Pos (11UL) /*!< LIM3THRESHOLD (Bit 11) */ + #define R_DRW_CONTROL_LIM3THRESHOLD_Msk (0x800UL) /*!< LIM3THRESHOLD (Bitfield-Mask: 0x01) */ + #define R_DRW_CONTROL_LIM2THRESHOLD_Pos (10UL) /*!< LIM2THRESHOLD (Bit 10) */ + #define R_DRW_CONTROL_LIM2THRESHOLD_Msk (0x400UL) /*!< LIM2THRESHOLD (Bitfield-Mask: 0x01) */ + #define R_DRW_CONTROL_LIM1THRESHOLD_Pos (9UL) /*!< LIM1THRESHOLD (Bit 9) */ + #define R_DRW_CONTROL_LIM1THRESHOLD_Msk (0x200UL) /*!< LIM1THRESHOLD (Bitfield-Mask: 0x01) */ + #define R_DRW_CONTROL_QUAD3ENABLE_Pos (8UL) /*!< QUAD3ENABLE (Bit 8) */ + #define R_DRW_CONTROL_QUAD3ENABLE_Msk (0x100UL) /*!< QUAD3ENABLE (Bitfield-Mask: 0x01) */ + #define R_DRW_CONTROL_QUAD2ENABLE_Pos (7UL) /*!< QUAD2ENABLE (Bit 7) */ + #define R_DRW_CONTROL_QUAD2ENABLE_Msk (0x80UL) /*!< QUAD2ENABLE (Bitfield-Mask: 0x01) */ + #define R_DRW_CONTROL_QUAD1ENABLE_Pos (6UL) /*!< QUAD1ENABLE (Bit 6) */ + #define R_DRW_CONTROL_QUAD1ENABLE_Msk (0x40UL) /*!< QUAD1ENABLE (Bitfield-Mask: 0x01) */ + #define R_DRW_CONTROL_LIM6ENABLE_Pos (5UL) /*!< LIM6ENABLE (Bit 5) */ + #define R_DRW_CONTROL_LIM6ENABLE_Msk (0x20UL) /*!< LIM6ENABLE (Bitfield-Mask: 0x01) */ + #define R_DRW_CONTROL_LIM5ENABLE_Pos (4UL) /*!< LIM5ENABLE (Bit 4) */ + #define R_DRW_CONTROL_LIM5ENABLE_Msk (0x10UL) /*!< LIM5ENABLE (Bitfield-Mask: 0x01) */ + #define R_DRW_CONTROL_LIM4ENABLE_Pos (3UL) /*!< LIM4ENABLE (Bit 3) */ + #define R_DRW_CONTROL_LIM4ENABLE_Msk (0x8UL) /*!< LIM4ENABLE (Bitfield-Mask: 0x01) */ + #define R_DRW_CONTROL_LIM3ENABLE_Pos (2UL) /*!< LIM3ENABLE (Bit 2) */ + #define R_DRW_CONTROL_LIM3ENABLE_Msk (0x4UL) /*!< LIM3ENABLE (Bitfield-Mask: 0x01) */ + #define R_DRW_CONTROL_LIM2ENABLE_Pos (1UL) /*!< LIM2ENABLE (Bit 1) */ + #define R_DRW_CONTROL_LIM2ENABLE_Msk (0x2UL) /*!< LIM2ENABLE (Bitfield-Mask: 0x01) */ + #define R_DRW_CONTROL_LIM1ENABLE_Pos (0UL) /*!< LIM1ENABLE (Bit 0) */ + #define R_DRW_CONTROL_LIM1ENABLE_Msk (0x1UL) /*!< LIM1ENABLE (Bitfield-Mask: 0x01) */ +/* ======================================================= CONTROL2 ======================================================== */ + #define R_DRW_CONTROL2_RLEPIXELWIDTH_Pos (30UL) /*!< RLEPIXELWIDTH (Bit 30) */ + #define R_DRW_CONTROL2_RLEPIXELWIDTH_Msk (0xc0000000UL) /*!< RLEPIXELWIDTH (Bitfield-Mask: 0x03) */ + #define R_DRW_CONTROL2_BDIA_Pos (29UL) /*!< BDIA (Bit 29) */ + #define R_DRW_CONTROL2_BDIA_Msk (0x20000000UL) /*!< BDIA (Bitfield-Mask: 0x01) */ + #define R_DRW_CONTROL2_BSIA_Pos (28UL) /*!< BSIA (Bit 28) */ + #define R_DRW_CONTROL2_BSIA_Msk (0x10000000UL) /*!< BSIA (Bitfield-Mask: 0x01) */ + #define R_DRW_CONTROL2_CLUTFORMAT_Pos (27UL) /*!< CLUTFORMAT (Bit 27) */ + #define R_DRW_CONTROL2_CLUTFORMAT_Msk (0x8000000UL) /*!< CLUTFORMAT (Bitfield-Mask: 0x01) */ + #define R_DRW_CONTROL2_COLKEYENABLE_Pos (26UL) /*!< COLKEYENABLE (Bit 26) */ + #define R_DRW_CONTROL2_COLKEYENABLE_Msk (0x4000000UL) /*!< COLKEYENABLE (Bitfield-Mask: 0x01) */ + #define R_DRW_CONTROL2_CLUTENABLE_Pos (25UL) /*!< CLUTENABLE (Bit 25) */ + #define R_DRW_CONTROL2_CLUTENABLE_Msk (0x2000000UL) /*!< CLUTENABLE (Bitfield-Mask: 0x01) */ + #define R_DRW_CONTROL2_RLEENABLE_Pos (24UL) /*!< RLEENABLE (Bit 24) */ + #define R_DRW_CONTROL2_RLEENABLE_Msk (0x1000000UL) /*!< RLEENABLE (Bitfield-Mask: 0x01) */ + #define R_DRW_CONTROL2_WRITEALPHA_Pos (22UL) /*!< WRITEALPHA (Bit 22) */ + #define R_DRW_CONTROL2_WRITEALPHA_Msk (0xc00000UL) /*!< WRITEALPHA (Bitfield-Mask: 0x03) */ + #define R_DRW_CONTROL2_WRITEFORMAT10_Pos (20UL) /*!< WRITEFORMAT10 (Bit 20) */ + #define R_DRW_CONTROL2_WRITEFORMAT10_Msk (0x300000UL) /*!< WRITEFORMAT10 (Bitfield-Mask: 0x03) */ + #define R_DRW_CONTROL2_READFORMAT10_Pos (18UL) /*!< READFORMAT10 (Bit 18) */ + #define R_DRW_CONTROL2_READFORMAT10_Msk (0xc0000UL) /*!< READFORMAT10 (Bitfield-Mask: 0x03) */ + #define R_DRW_CONTROL2_TEXTUREFILTERY_Pos (17UL) /*!< TEXTUREFILTERY (Bit 17) */ + #define R_DRW_CONTROL2_TEXTUREFILTERY_Msk (0x20000UL) /*!< TEXTUREFILTERY (Bitfield-Mask: 0x01) */ + #define R_DRW_CONTROL2_TEXTUREFILTERX_Pos (16UL) /*!< TEXTUREFILTERX (Bit 16) */ + #define R_DRW_CONTROL2_TEXTUREFILTERX_Msk (0x10000UL) /*!< TEXTUREFILTERX (Bitfield-Mask: 0x01) */ + #define R_DRW_CONTROL2_TEXTURECLAMPY_Pos (15UL) /*!< TEXTURECLAMPY (Bit 15) */ + #define R_DRW_CONTROL2_TEXTURECLAMPY_Msk (0x8000UL) /*!< TEXTURECLAMPY (Bitfield-Mask: 0x01) */ + #define R_DRW_CONTROL2_TEXTURECLAMPX_Pos (14UL) /*!< TEXTURECLAMPX (Bit 14) */ + #define R_DRW_CONTROL2_TEXTURECLAMPX_Msk (0x4000UL) /*!< TEXTURECLAMPX (Bitfield-Mask: 0x01) */ + #define R_DRW_CONTROL2_BC2_Pos (13UL) /*!< BC2 (Bit 13) */ + #define R_DRW_CONTROL2_BC2_Msk (0x2000UL) /*!< BC2 (Bitfield-Mask: 0x01) */ + #define R_DRW_CONTROL2_BDI_Pos (12UL) /*!< BDI (Bit 12) */ + #define R_DRW_CONTROL2_BDI_Msk (0x1000UL) /*!< BDI (Bitfield-Mask: 0x01) */ + #define R_DRW_CONTROL2_BSI_Pos (11UL) /*!< BSI (Bit 11) */ + #define R_DRW_CONTROL2_BSI_Msk (0x800UL) /*!< BSI (Bitfield-Mask: 0x01) */ + #define R_DRW_CONTROL2_BDF_Pos (10UL) /*!< BDF (Bit 10) */ + #define R_DRW_CONTROL2_BDF_Msk (0x400UL) /*!< BDF (Bitfield-Mask: 0x01) */ + #define R_DRW_CONTROL2_BSF_Pos (9UL) /*!< BSF (Bit 9) */ + #define R_DRW_CONTROL2_BSF_Msk (0x200UL) /*!< BSF (Bitfield-Mask: 0x01) */ + #define R_DRW_CONTROL2_WRITEFORMAT2_Pos (8UL) /*!< WRITEFORMAT2 (Bit 8) */ + #define R_DRW_CONTROL2_WRITEFORMAT2_Msk (0x100UL) /*!< WRITEFORMAT2 (Bitfield-Mask: 0x01) */ + #define R_DRW_CONTROL2_BDFA_Pos (7UL) /*!< BDFA (Bit 7) */ + #define R_DRW_CONTROL2_BDFA_Msk (0x80UL) /*!< BDFA (Bitfield-Mask: 0x01) */ + #define R_DRW_CONTROL2_BSFA_Pos (6UL) /*!< BSFA (Bit 6) */ + #define R_DRW_CONTROL2_BSFA_Msk (0x40UL) /*!< BSFA (Bitfield-Mask: 0x01) */ + #define R_DRW_CONTROL2_READFORMAT32_Pos (4UL) /*!< READFORMAT32 (Bit 4) */ + #define R_DRW_CONTROL2_READFORMAT32_Msk (0x30UL) /*!< READFORMAT32 (Bitfield-Mask: 0x03) */ + #define R_DRW_CONTROL2_USEACB_Pos (3UL) /*!< USEACB (Bit 3) */ + #define R_DRW_CONTROL2_USEACB_Msk (0x8UL) /*!< USEACB (Bitfield-Mask: 0x01) */ + #define R_DRW_CONTROL2_PATTERNSOURCEL5_Pos (2UL) /*!< PATTERNSOURCEL5 (Bit 2) */ + #define R_DRW_CONTROL2_PATTERNSOURCEL5_Msk (0x4UL) /*!< PATTERNSOURCEL5 (Bitfield-Mask: 0x01) */ + #define R_DRW_CONTROL2_TEXTUREENABLE_Pos (1UL) /*!< TEXTUREENABLE (Bit 1) */ + #define R_DRW_CONTROL2_TEXTUREENABLE_Msk (0x2UL) /*!< TEXTUREENABLE (Bitfield-Mask: 0x01) */ + #define R_DRW_CONTROL2_PATTERNENABLE_Pos (0UL) /*!< PATTERNENABLE (Bit 0) */ + #define R_DRW_CONTROL2_PATTERNENABLE_Msk (0x1UL) /*!< PATTERNENABLE (Bitfield-Mask: 0x01) */ +/* ======================================================== IRQCTL ========================================================= */ + #define R_DRW_IRQCTL_BUSIRQCLR_Pos (5UL) /*!< BUSIRQCLR (Bit 5) */ + #define R_DRW_IRQCTL_BUSIRQCLR_Msk (0x20UL) /*!< BUSIRQCLR (Bitfield-Mask: 0x01) */ + #define R_DRW_IRQCTL_BUSIRQEN_Pos (4UL) /*!< BUSIRQEN (Bit 4) */ + #define R_DRW_IRQCTL_BUSIRQEN_Msk (0x10UL) /*!< BUSIRQEN (Bitfield-Mask: 0x01) */ + #define R_DRW_IRQCTL_DLISTIRQCLR_Pos (3UL) /*!< DLISTIRQCLR (Bit 3) */ + #define R_DRW_IRQCTL_DLISTIRQCLR_Msk (0x8UL) /*!< DLISTIRQCLR (Bitfield-Mask: 0x01) */ + #define R_DRW_IRQCTL_ENUMIRQCLR_Pos (2UL) /*!< ENUMIRQCLR (Bit 2) */ + #define R_DRW_IRQCTL_ENUMIRQCLR_Msk (0x4UL) /*!< ENUMIRQCLR (Bitfield-Mask: 0x01) */ + #define R_DRW_IRQCTL_DLISTIRQEN_Pos (1UL) /*!< DLISTIRQEN (Bit 1) */ + #define R_DRW_IRQCTL_DLISTIRQEN_Msk (0x2UL) /*!< DLISTIRQEN (Bitfield-Mask: 0x01) */ + #define R_DRW_IRQCTL_ENUMIRQEN_Pos (0UL) /*!< ENUMIRQEN (Bit 0) */ + #define R_DRW_IRQCTL_ENUMIRQEN_Msk (0x1UL) /*!< ENUMIRQEN (Bitfield-Mask: 0x01) */ +/* ======================================================= CACHECTL ======================================================== */ + #define R_DRW_CACHECTL_CFLUSHTX_Pos (3UL) /*!< CFLUSHTX (Bit 3) */ + #define R_DRW_CACHECTL_CFLUSHTX_Msk (0x8UL) /*!< CFLUSHTX (Bitfield-Mask: 0x01) */ + #define R_DRW_CACHECTL_CENABLETX_Pos (2UL) /*!< CENABLETX (Bit 2) */ + #define R_DRW_CACHECTL_CENABLETX_Msk (0x4UL) /*!< CENABLETX (Bitfield-Mask: 0x01) */ + #define R_DRW_CACHECTL_CFLUSHFX_Pos (1UL) /*!< CFLUSHFX (Bit 1) */ + #define R_DRW_CACHECTL_CFLUSHFX_Msk (0x2UL) /*!< CFLUSHFX (Bitfield-Mask: 0x01) */ + #define R_DRW_CACHECTL_CENABLEFX_Pos (0UL) /*!< CENABLEFX (Bit 0) */ + #define R_DRW_CACHECTL_CENABLEFX_Msk (0x1UL) /*!< CENABLEFX (Bitfield-Mask: 0x01) */ +/* ======================================================== STATUS ========================================================= */ + #define R_DRW_STATUS_BUSERRMDL_Pos (10UL) /*!< BUSERRMDL (Bit 10) */ + #define R_DRW_STATUS_BUSERRMDL_Msk (0x400UL) /*!< BUSERRMDL (Bitfield-Mask: 0x01) */ + #define R_DRW_STATUS_BUSERRMTXMRL_Pos (9UL) /*!< BUSERRMTXMRL (Bit 9) */ + #define R_DRW_STATUS_BUSERRMTXMRL_Msk (0x200UL) /*!< BUSERRMTXMRL (Bitfield-Mask: 0x01) */ + #define R_DRW_STATUS_BUSERRMFB_Pos (8UL) /*!< BUSERRMFB (Bit 8) */ + #define R_DRW_STATUS_BUSERRMFB_Msk (0x100UL) /*!< BUSERRMFB (Bitfield-Mask: 0x01) */ + #define R_DRW_STATUS_BUSIRQ_Pos (6UL) /*!< BUSIRQ (Bit 6) */ + #define R_DRW_STATUS_BUSIRQ_Msk (0x40UL) /*!< BUSIRQ (Bitfield-Mask: 0x01) */ + #define R_DRW_STATUS_DLISTIRQ_Pos (5UL) /*!< DLISTIRQ (Bit 5) */ + #define R_DRW_STATUS_DLISTIRQ_Msk (0x20UL) /*!< DLISTIRQ (Bitfield-Mask: 0x01) */ + #define R_DRW_STATUS_ENUMIRQ_Pos (4UL) /*!< ENUMIRQ (Bit 4) */ + #define R_DRW_STATUS_ENUMIRQ_Msk (0x10UL) /*!< ENUMIRQ (Bitfield-Mask: 0x01) */ + #define R_DRW_STATUS_DLISTACTIVE_Pos (3UL) /*!< DLISTACTIVE (Bit 3) */ + #define R_DRW_STATUS_DLISTACTIVE_Msk (0x8UL) /*!< DLISTACTIVE (Bitfield-Mask: 0x01) */ + #define R_DRW_STATUS_CACHEDIRTY_Pos (2UL) /*!< CACHEDIRTY (Bit 2) */ + #define R_DRW_STATUS_CACHEDIRTY_Msk (0x4UL) /*!< CACHEDIRTY (Bitfield-Mask: 0x01) */ + #define R_DRW_STATUS_BUSYWRITE_Pos (1UL) /*!< BUSYWRITE (Bit 1) */ + #define R_DRW_STATUS_BUSYWRITE_Msk (0x2UL) /*!< BUSYWRITE (Bitfield-Mask: 0x01) */ + #define R_DRW_STATUS_BUSYENUM_Pos (0UL) /*!< BUSYENUM (Bit 0) */ + #define R_DRW_STATUS_BUSYENUM_Msk (0x1UL) /*!< BUSYENUM (Bitfield-Mask: 0x01) */ +/* ====================================================== HWREVISION ======================================================= */ + #define R_DRW_HWREVISION_ACBLEND_Pos (27UL) /*!< ACBLEND (Bit 27) */ + #define R_DRW_HWREVISION_ACBLEND_Msk (0x8000000UL) /*!< ACBLEND (Bitfield-Mask: 0x01) */ + #define R_DRW_HWREVISION_COLORKEY_Pos (25UL) /*!< COLORKEY (Bit 25) */ + #define R_DRW_HWREVISION_COLORKEY_Msk (0x2000000UL) /*!< COLORKEY (Bitfield-Mask: 0x01) */ + #define R_DRW_HWREVISION_TEXCLUT256_Pos (24UL) /*!< TEXCLUT256 (Bit 24) */ + #define R_DRW_HWREVISION_TEXCLUT256_Msk (0x1000000UL) /*!< TEXCLUT256 (Bitfield-Mask: 0x01) */ + #define R_DRW_HWREVISION_RLEUNIT_Pos (23UL) /*!< RLEUNIT (Bit 23) */ + #define R_DRW_HWREVISION_RLEUNIT_Msk (0x800000UL) /*!< RLEUNIT (Bitfield-Mask: 0x01) */ + #define R_DRW_HWREVISION_TEXCLU_Pos (21UL) /*!< TEXCLU (Bit 21) */ + #define R_DRW_HWREVISION_TEXCLU_Msk (0x200000UL) /*!< TEXCLU (Bitfield-Mask: 0x01) */ + #define R_DRW_HWREVISION_PERFCOUNT_Pos (20UL) /*!< PERFCOUNT (Bit 20) */ + #define R_DRW_HWREVISION_PERFCOUNT_Msk (0x100000UL) /*!< PERFCOUNT (Bitfield-Mask: 0x01) */ + #define R_DRW_HWREVISION_TXCACHE_Pos (19UL) /*!< TXCACHE (Bit 19) */ + #define R_DRW_HWREVISION_TXCACHE_Msk (0x80000UL) /*!< TXCACHE (Bitfield-Mask: 0x01) */ + #define R_DRW_HWREVISION_FBCACHE_Pos (18UL) /*!< FBCACHE (Bit 18) */ + #define R_DRW_HWREVISION_FBCACHE_Msk (0x40000UL) /*!< FBCACHE (Bitfield-Mask: 0x01) */ + #define R_DRW_HWREVISION_DLR_Pos (17UL) /*!< DLR (Bit 17) */ + #define R_DRW_HWREVISION_DLR_Msk (0x20000UL) /*!< DLR (Bitfield-Mask: 0x01) */ + #define R_DRW_HWREVISION_REV_Pos (0UL) /*!< REV (Bit 0) */ + #define R_DRW_HWREVISION_REV_Msk (0xfffUL) /*!< REV (Bitfield-Mask: 0xfff) */ +/* ======================================================== COLOR1 ========================================================= */ + #define R_DRW_COLOR1_COLOR1A_Pos (24UL) /*!< COLOR1A (Bit 24) */ + #define R_DRW_COLOR1_COLOR1A_Msk (0xff000000UL) /*!< COLOR1A (Bitfield-Mask: 0xff) */ + #define R_DRW_COLOR1_COLOR1R_Pos (16UL) /*!< COLOR1R (Bit 16) */ + #define R_DRW_COLOR1_COLOR1R_Msk (0xff0000UL) /*!< COLOR1R (Bitfield-Mask: 0xff) */ + #define R_DRW_COLOR1_COLOR1G_Pos (8UL) /*!< COLOR1G (Bit 8) */ + #define R_DRW_COLOR1_COLOR1G_Msk (0xff00UL) /*!< COLOR1G (Bitfield-Mask: 0xff) */ + #define R_DRW_COLOR1_COLOR1B_Pos (0UL) /*!< COLOR1B (Bit 0) */ + #define R_DRW_COLOR1_COLOR1B_Msk (0xffUL) /*!< COLOR1B (Bitfield-Mask: 0xff) */ +/* ======================================================== COLOR2 ========================================================= */ + #define R_DRW_COLOR2_COLOR2A_Pos (24UL) /*!< COLOR2A (Bit 24) */ + #define R_DRW_COLOR2_COLOR2A_Msk (0xff000000UL) /*!< COLOR2A (Bitfield-Mask: 0xff) */ + #define R_DRW_COLOR2_COLOR2R_Pos (16UL) /*!< COLOR2R (Bit 16) */ + #define R_DRW_COLOR2_COLOR2R_Msk (0xff0000UL) /*!< COLOR2R (Bitfield-Mask: 0xff) */ + #define R_DRW_COLOR2_COLOR2G_Pos (8UL) /*!< COLOR2G (Bit 8) */ + #define R_DRW_COLOR2_COLOR2G_Msk (0xff00UL) /*!< COLOR2G (Bitfield-Mask: 0xff) */ + #define R_DRW_COLOR2_COLOR2B_Pos (0UL) /*!< COLOR2B (Bit 0) */ + #define R_DRW_COLOR2_COLOR2B_Msk (0xffUL) /*!< COLOR2B (Bitfield-Mask: 0xff) */ +/* ======================================================== PATTERN ======================================================== */ + #define R_DRW_PATTERN_PATTERN_Pos (0UL) /*!< PATTERN (Bit 0) */ + #define R_DRW_PATTERN_PATTERN_Msk (0xffUL) /*!< PATTERN (Bitfield-Mask: 0xff) */ +/* ======================================================== L1START ======================================================== */ + #define R_DRW_L1START_LSTART_Pos (0UL) /*!< LSTART (Bit 0) */ + #define R_DRW_L1START_LSTART_Msk (0xffffffffUL) /*!< LSTART (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== L2START ======================================================== */ + #define R_DRW_L2START_LSTART_Pos (0UL) /*!< LSTART (Bit 0) */ + #define R_DRW_L2START_LSTART_Msk (0xffffffffUL) /*!< LSTART (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== L3START ======================================================== */ + #define R_DRW_L3START_LSTART_Pos (0UL) /*!< LSTART (Bit 0) */ + #define R_DRW_L3START_LSTART_Msk (0xffffffffUL) /*!< LSTART (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== L4START ======================================================== */ + #define R_DRW_L4START_LSTART_Pos (0UL) /*!< LSTART (Bit 0) */ + #define R_DRW_L4START_LSTART_Msk (0xffffffffUL) /*!< LSTART (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== L5START ======================================================== */ + #define R_DRW_L5START_LSTART_Pos (0UL) /*!< LSTART (Bit 0) */ + #define R_DRW_L5START_LSTART_Msk (0xffffffffUL) /*!< LSTART (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== L6START ======================================================== */ + #define R_DRW_L6START_LSTART_Pos (0UL) /*!< LSTART (Bit 0) */ + #define R_DRW_L6START_LSTART_Msk (0xffffffffUL) /*!< LSTART (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== L1XADD ========================================================= */ + #define R_DRW_L1XADD_LXADD_Pos (0UL) /*!< LXADD (Bit 0) */ + #define R_DRW_L1XADD_LXADD_Msk (0xffffffffUL) /*!< LXADD (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== L2XADD ========================================================= */ + #define R_DRW_L2XADD_LXADD_Pos (0UL) /*!< LXADD (Bit 0) */ + #define R_DRW_L2XADD_LXADD_Msk (0xffffffffUL) /*!< LXADD (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== L3XADD ========================================================= */ + #define R_DRW_L3XADD_LXADD_Pos (0UL) /*!< LXADD (Bit 0) */ + #define R_DRW_L3XADD_LXADD_Msk (0xffffffffUL) /*!< LXADD (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== L4XADD ========================================================= */ + #define R_DRW_L4XADD_LXADD_Pos (0UL) /*!< LXADD (Bit 0) */ + #define R_DRW_L4XADD_LXADD_Msk (0xffffffffUL) /*!< LXADD (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== L5XADD ========================================================= */ + #define R_DRW_L5XADD_LXADD_Pos (0UL) /*!< LXADD (Bit 0) */ + #define R_DRW_L5XADD_LXADD_Msk (0xffffffffUL) /*!< LXADD (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== L6XADD ========================================================= */ + #define R_DRW_L6XADD_LXADD_Pos (0UL) /*!< LXADD (Bit 0) */ + #define R_DRW_L6XADD_LXADD_Msk (0xffffffffUL) /*!< LXADD (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== L1YADD ========================================================= */ + #define R_DRW_L1YADD_LYADD_Pos (0UL) /*!< LYADD (Bit 0) */ + #define R_DRW_L1YADD_LYADD_Msk (0xffffffffUL) /*!< LYADD (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== L2YADD ========================================================= */ + #define R_DRW_L2YADD_LYADD_Pos (0UL) /*!< LYADD (Bit 0) */ + #define R_DRW_L2YADD_LYADD_Msk (0xffffffffUL) /*!< LYADD (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== L3YADD ========================================================= */ + #define R_DRW_L3YADD_LYADD_Pos (0UL) /*!< LYADD (Bit 0) */ + #define R_DRW_L3YADD_LYADD_Msk (0xffffffffUL) /*!< LYADD (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== L4YADD ========================================================= */ + #define R_DRW_L4YADD_LYADD_Pos (0UL) /*!< LYADD (Bit 0) */ + #define R_DRW_L4YADD_LYADD_Msk (0xffffffffUL) /*!< LYADD (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== L5YADD ========================================================= */ + #define R_DRW_L5YADD_LYADD_Pos (0UL) /*!< LYADD (Bit 0) */ + #define R_DRW_L5YADD_LYADD_Msk (0xffffffffUL) /*!< LYADD (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== L6YADD ========================================================= */ + #define R_DRW_L6YADD_LYADD_Pos (0UL) /*!< LYADD (Bit 0) */ + #define R_DRW_L6YADD_LYADD_Msk (0xffffffffUL) /*!< LYADD (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== L1BAND ========================================================= */ + #define R_DRW_L1BAND_LBAND_Pos (0UL) /*!< LBAND (Bit 0) */ + #define R_DRW_L1BAND_LBAND_Msk (0xffffffffUL) /*!< LBAND (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== L2BAND ========================================================= */ + #define R_DRW_L2BAND_LBAND_Pos (0UL) /*!< LBAND (Bit 0) */ + #define R_DRW_L2BAND_LBAND_Msk (0xffffffffUL) /*!< LBAND (Bitfield-Mask: 0xffffffff) */ +/* ======================================================= TEXORIGIN ======================================================= */ + #define R_DRW_TEXORIGIN_TEXORIGIN_Pos (0UL) /*!< TEXORIGIN (Bit 0) */ + #define R_DRW_TEXORIGIN_TEXORIGIN_Msk (0xffffffffUL) /*!< TEXORIGIN (Bitfield-Mask: 0xffffffff) */ +/* ======================================================= TEXPITCH ======================================================== */ + #define R_DRW_TEXPITCH_TEXPITCH_Pos (0UL) /*!< TEXPITCH (Bit 0) */ + #define R_DRW_TEXPITCH_TEXPITCH_Msk (0xffffffffUL) /*!< TEXPITCH (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== TEXMASK ======================================================== */ + #define R_DRW_TEXMASK_TEXVMASK_Pos (11UL) /*!< TEXVMASK (Bit 11) */ + #define R_DRW_TEXMASK_TEXVMASK_Msk (0xfffff800UL) /*!< TEXVMASK (Bitfield-Mask: 0x1fffff) */ + #define R_DRW_TEXMASK_TEXUMASK_Pos (0UL) /*!< TEXUMASK (Bit 0) */ + #define R_DRW_TEXMASK_TEXUMASK_Msk (0x7ffUL) /*!< TEXUMASK (Bitfield-Mask: 0x7ff) */ +/* ======================================================== LUSTART ======================================================== */ + #define R_DRW_LUSTART_LUSTART_Pos (0UL) /*!< LUSTART (Bit 0) */ + #define R_DRW_LUSTART_LUSTART_Msk (0xffffffffUL) /*!< LUSTART (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== LUXADD ========================================================= */ + #define R_DRW_LUXADD_LUXADD_Pos (0UL) /*!< LUXADD (Bit 0) */ + #define R_DRW_LUXADD_LUXADD_Msk (0xffffffffUL) /*!< LUXADD (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== LUYADD ========================================================= */ + #define R_DRW_LUYADD_LUYADD_Pos (0UL) /*!< LUYADD (Bit 0) */ + #define R_DRW_LUYADD_LUYADD_Msk (0xffffffffUL) /*!< LUYADD (Bitfield-Mask: 0xffffffff) */ +/* ======================================================= LVSTARTI ======================================================== */ + #define R_DRW_LVSTARTI_LVSTARTI_Pos (0UL) /*!< LVSTARTI (Bit 0) */ + #define R_DRW_LVSTARTI_LVSTARTI_Msk (0xffffffffUL) /*!< LVSTARTI (Bitfield-Mask: 0xffffffff) */ +/* ======================================================= LVSTARTF ======================================================== */ + #define R_DRW_LVSTARTF_LVSTARTF_Pos (0UL) /*!< LVSTARTF (Bit 0) */ + #define R_DRW_LVSTARTF_LVSTARTF_Msk (0xffffUL) /*!< LVSTARTF (Bitfield-Mask: 0xffff) */ +/* ======================================================== LVXADDI ======================================================== */ + #define R_DRW_LVXADDI_LVXADDI_Pos (0UL) /*!< LVXADDI (Bit 0) */ + #define R_DRW_LVXADDI_LVXADDI_Msk (0xffffffffUL) /*!< LVXADDI (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== LVYADDI ======================================================== */ + #define R_DRW_LVYADDI_LVYADDI_Pos (0UL) /*!< LVYADDI (Bit 0) */ + #define R_DRW_LVYADDI_LVYADDI_Msk (0xffffffffUL) /*!< LVYADDI (Bitfield-Mask: 0xffffffff) */ +/* ======================================================= LVYXADDF ======================================================== */ + #define R_DRW_LVYXADDF_LVYADDF_Pos (16UL) /*!< LVYADDF (Bit 16) */ + #define R_DRW_LVYXADDF_LVYADDF_Msk (0xffff0000UL) /*!< LVYADDF (Bitfield-Mask: 0xffff) */ + #define R_DRW_LVYXADDF_LVXADDF_Pos (0UL) /*!< LVXADDF (Bit 0) */ + #define R_DRW_LVYXADDF_LVXADDF_Msk (0xffffUL) /*!< LVXADDF (Bitfield-Mask: 0xffff) */ +/* ======================================================= TEXCLADDR ======================================================= */ + #define R_DRW_TEXCLADDR_CLADDR_Pos (0UL) /*!< CLADDR (Bit 0) */ + #define R_DRW_TEXCLADDR_CLADDR_Msk (0xffUL) /*!< CLADDR (Bitfield-Mask: 0xff) */ +/* ======================================================= TEXCLDATA ======================================================= */ + #define R_DRW_TEXCLDATA_CLDATA_Pos (0UL) /*!< CLDATA (Bit 0) */ + #define R_DRW_TEXCLDATA_CLDATA_Msk (0xffffffffUL) /*!< CLDATA (Bitfield-Mask: 0xffffffff) */ +/* ====================================================== TEXCLOFFSET ====================================================== */ + #define R_DRW_TEXCLOFFSET_CLOFFSET_Pos (0UL) /*!< CLOFFSET (Bit 0) */ + #define R_DRW_TEXCLOFFSET_CLOFFSET_Msk (0xffUL) /*!< CLOFFSET (Bitfield-Mask: 0xff) */ +/* ======================================================== COLKEY ========================================================= */ + #define R_DRW_COLKEY_COLKEYR_Pos (16UL) /*!< COLKEYR (Bit 16) */ + #define R_DRW_COLKEY_COLKEYR_Msk (0xff0000UL) /*!< COLKEYR (Bitfield-Mask: 0xff) */ + #define R_DRW_COLKEY_COLKEYG_Pos (8UL) /*!< COLKEYG (Bit 8) */ + #define R_DRW_COLKEY_COLKEYG_Msk (0xff00UL) /*!< COLKEYG (Bitfield-Mask: 0xff) */ + #define R_DRW_COLKEY_COLKEYB_Pos (0UL) /*!< COLKEYB (Bit 0) */ + #define R_DRW_COLKEY_COLKEYB_Msk (0xffUL) /*!< COLKEYB (Bitfield-Mask: 0xff) */ +/* ========================================================= SIZE ========================================================== */ + #define R_DRW_SIZE_SIZEY_Pos (16UL) /*!< SIZEY (Bit 16) */ + #define R_DRW_SIZE_SIZEY_Msk (0xffff0000UL) /*!< SIZEY (Bitfield-Mask: 0xffff) */ + #define R_DRW_SIZE_SIZEX_Pos (0UL) /*!< SIZEX (Bit 0) */ + #define R_DRW_SIZE_SIZEX_Msk (0xffffUL) /*!< SIZEX (Bitfield-Mask: 0xffff) */ +/* ========================================================= PITCH ========================================================= */ + #define R_DRW_PITCH_SSD_Pos (16UL) /*!< SSD (Bit 16) */ + #define R_DRW_PITCH_SSD_Msk (0xffff0000UL) /*!< SSD (Bitfield-Mask: 0xffff) */ + #define R_DRW_PITCH_PITCH_Pos (0UL) /*!< PITCH (Bit 0) */ + #define R_DRW_PITCH_PITCH_Msk (0xffffUL) /*!< PITCH (Bitfield-Mask: 0xffff) */ +/* ======================================================== ORIGIN ========================================================= */ + #define R_DRW_ORIGIN_ORIGIN_Pos (0UL) /*!< ORIGIN (Bit 0) */ + #define R_DRW_ORIGIN_ORIGIN_Msk (0xffffffffUL) /*!< ORIGIN (Bitfield-Mask: 0xffffffff) */ +/* ====================================================== DLISTSTART ======================================================= */ + #define R_DRW_DLISTSTART_DLISTSTART_Pos (0UL) /*!< DLISTSTART (Bit 0) */ + #define R_DRW_DLISTSTART_DLISTSTART_Msk (0xffffffffUL) /*!< DLISTSTART (Bitfield-Mask: 0xffffffff) */ +/* ====================================================== PERFTRIGGER ====================================================== */ + #define R_DRW_PERFTRIGGER_PERFTRIGGER2_Pos (16UL) /*!< PERFTRIGGER2 (Bit 16) */ + #define R_DRW_PERFTRIGGER_PERFTRIGGER2_Msk (0xffff0000UL) /*!< PERFTRIGGER2 (Bitfield-Mask: 0xffff) */ + #define R_DRW_PERFTRIGGER_PERFTRIGGER1_Pos (0UL) /*!< PERFTRIGGER1 (Bit 0) */ + #define R_DRW_PERFTRIGGER_PERFTRIGGER1_Msk (0xffffUL) /*!< PERFTRIGGER1 (Bitfield-Mask: 0xffff) */ +/* ====================================================== PERFCOUNT1 ======================================================= */ + #define R_DRW_PERFCOUNT1_PERFCOUNT_Pos (0UL) /*!< PERFCOUNT (Bit 0) */ + #define R_DRW_PERFCOUNT1_PERFCOUNT_Msk (0xffffffffUL) /*!< PERFCOUNT (Bitfield-Mask: 0xffffffff) */ +/* ====================================================== PERFCOUNT2 ======================================================= */ + #define R_DRW_PERFCOUNT2_PERFCOUNT_Pos (0UL) /*!< PERFCOUNT (Bit 0) */ + #define R_DRW_PERFCOUNT2_PERFCOUNT_Msk (0xffffffffUL) /*!< PERFCOUNT (Bitfield-Mask: 0xffffffff) */ + +/* =========================================================================================================================== */ +/* ================ 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_GLCDC ================ */ +/* =========================================================================================================================== */ + +/* ======================================================= GR1_CLUT0 ======================================================= */ + #define R_GLCDC_GR1_CLUT0_A_Pos (24UL) /*!< A (Bit 24) */ + #define R_GLCDC_GR1_CLUT0_A_Msk (0xff000000UL) /*!< A (Bitfield-Mask: 0xff) */ + #define R_GLCDC_GR1_CLUT0_R_Pos (16UL) /*!< R (Bit 16) */ + #define R_GLCDC_GR1_CLUT0_R_Msk (0xff0000UL) /*!< R (Bitfield-Mask: 0xff) */ + #define R_GLCDC_GR1_CLUT0_G_Pos (8UL) /*!< G (Bit 8) */ + #define R_GLCDC_GR1_CLUT0_G_Msk (0xff00UL) /*!< G (Bitfield-Mask: 0xff) */ + #define R_GLCDC_GR1_CLUT0_B_Pos (0UL) /*!< B (Bit 0) */ + #define R_GLCDC_GR1_CLUT0_B_Msk (0xffUL) /*!< B (Bitfield-Mask: 0xff) */ +/* ======================================================= GR1_CLUT1 ======================================================= */ + #define R_GLCDC_GR1_CLUT1_A_Pos (24UL) /*!< A (Bit 24) */ + #define R_GLCDC_GR1_CLUT1_A_Msk (0xff000000UL) /*!< A (Bitfield-Mask: 0xff) */ + #define R_GLCDC_GR1_CLUT1_R_Pos (16UL) /*!< R (Bit 16) */ + #define R_GLCDC_GR1_CLUT1_R_Msk (0xff0000UL) /*!< R (Bitfield-Mask: 0xff) */ + #define R_GLCDC_GR1_CLUT1_G_Pos (8UL) /*!< G (Bit 8) */ + #define R_GLCDC_GR1_CLUT1_G_Msk (0xff00UL) /*!< G (Bitfield-Mask: 0xff) */ + #define R_GLCDC_GR1_CLUT1_B_Pos (0UL) /*!< B (Bit 0) */ + #define R_GLCDC_GR1_CLUT1_B_Msk (0xffUL) /*!< B (Bitfield-Mask: 0xff) */ +/* ======================================================= GR2_CLUT0 ======================================================= */ + #define R_GLCDC_GR2_CLUT0_A_Pos (24UL) /*!< A (Bit 24) */ + #define R_GLCDC_GR2_CLUT0_A_Msk (0xff000000UL) /*!< A (Bitfield-Mask: 0xff) */ + #define R_GLCDC_GR2_CLUT0_R_Pos (16UL) /*!< R (Bit 16) */ + #define R_GLCDC_GR2_CLUT0_R_Msk (0xff0000UL) /*!< R (Bitfield-Mask: 0xff) */ + #define R_GLCDC_GR2_CLUT0_G_Pos (8UL) /*!< G (Bit 8) */ + #define R_GLCDC_GR2_CLUT0_G_Msk (0xff00UL) /*!< G (Bitfield-Mask: 0xff) */ + #define R_GLCDC_GR2_CLUT0_B_Pos (0UL) /*!< B (Bit 0) */ + #define R_GLCDC_GR2_CLUT0_B_Msk (0xffUL) /*!< B (Bitfield-Mask: 0xff) */ +/* ======================================================= GR2_CLUT1 ======================================================= */ + #define R_GLCDC_GR2_CLUT1_A_Pos (24UL) /*!< A (Bit 24) */ + #define R_GLCDC_GR2_CLUT1_A_Msk (0xff000000UL) /*!< A (Bitfield-Mask: 0xff) */ + #define R_GLCDC_GR2_CLUT1_R_Pos (16UL) /*!< R (Bit 16) */ + #define R_GLCDC_GR2_CLUT1_R_Msk (0xff0000UL) /*!< R (Bitfield-Mask: 0xff) */ + #define R_GLCDC_GR2_CLUT1_G_Pos (8UL) /*!< G (Bit 8) */ + #define R_GLCDC_GR2_CLUT1_G_Msk (0xff00UL) /*!< G (Bitfield-Mask: 0xff) */ + #define R_GLCDC_GR2_CLUT1_B_Pos (0UL) /*!< B (Bit 0) */ + #define R_GLCDC_GR2_CLUT1_B_Msk (0xffUL) /*!< B (Bitfield-Mask: 0xff) */ + +/* =========================================================================================================================== */ +/* ================ 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_DPHYCNT ================ */ +/* =========================================================================================================================== */ + +/* ======================================================= DPHYREFCR ======================================================= */ + #define R_DPHYCNT_DPHYREFCR_RFREQ_Pos (0UL) /*!< RFREQ (Bit 0) */ + #define R_DPHYCNT_DPHYREFCR_RFREQ_Msk (0xffUL) /*!< RFREQ (Bitfield-Mask: 0xff) */ +/* ======================================================= DPHYPLFCR ======================================================= */ + #define R_DPHYCNT_DPHYPLFCR_IDIV_Pos (0UL) /*!< IDIV (Bit 0) */ + #define R_DPHYCNT_DPHYPLFCR_IDIV_Msk (0x3UL) /*!< IDIV (Bitfield-Mask: 0x03) */ + #define R_DPHYCNT_DPHYPLFCR_NFMUL_Pos (8UL) /*!< NFMUL (Bit 8) */ + #define R_DPHYCNT_DPHYPLFCR_NFMUL_Msk (0x300UL) /*!< NFMUL (Bitfield-Mask: 0x03) */ + #define R_DPHYCNT_DPHYPLFCR_NMUL_Pos (16UL) /*!< NMUL (Bit 16) */ + #define R_DPHYCNT_DPHYPLFCR_NMUL_Msk (0xff0000UL) /*!< NMUL (Bitfield-Mask: 0xff) */ +/* ======================================================= DPHYPLOCR ======================================================= */ + #define R_DPHYCNT_DPHYPLOCR_PLLSTP_Pos (0UL) /*!< PLLSTP (Bit 0) */ + #define R_DPHYCNT_DPHYPLOCR_PLLSTP_Msk (0x1UL) /*!< PLLSTP (Bitfield-Mask: 0x01) */ +/* ======================================================= DPHYESCCR ======================================================= */ + #define R_DPHYCNT_DPHYESCCR_ESCDIV_Pos (0UL) /*!< ESCDIV (Bit 0) */ + #define R_DPHYCNT_DPHYESCCR_ESCDIV_Msk (0x1fUL) /*!< ESCDIV (Bitfield-Mask: 0x1f) */ +/* ======================================================= DPHYPWRCR ======================================================= */ + #define R_DPHYCNT_DPHYPWRCR_PWRSEN_Pos (0UL) /*!< PWRSEN (Bit 0) */ + #define R_DPHYCNT_DPHYPWRCR_PWRSEN_Msk (0x1UL) /*!< PWRSEN (Bitfield-Mask: 0x01) */ +/* ======================================================== DPHYSFR ======================================================== */ + #define R_DPHYCNT_DPHYSFR_PWRSF_Pos (0UL) /*!< PWRSF (Bit 0) */ + #define R_DPHYCNT_DPHYSFR_PWRSF_Msk (0x1UL) /*!< PWRSF (Bitfield-Mask: 0x01) */ + #define R_DPHYCNT_DPHYSFR_PLLSF_Pos (8UL) /*!< PLLSF (Bit 8) */ + #define R_DPHYCNT_DPHYSFR_PLLSF_Msk (0x100UL) /*!< PLLSF (Bitfield-Mask: 0x01) */ +/* ======================================================== DPHYOCR ======================================================== */ + #define R_DPHYCNT_DPHYOCR_DPHYEN_Pos (0UL) /*!< DPHYEN (Bit 0) */ + #define R_DPHYCNT_DPHYOCR_DPHYEN_Msk (0x1UL) /*!< DPHYEN (Bitfield-Mask: 0x01) */ +/* ======================================================= DPHYTIM1 ======================================================== */ + #define R_DPHYCNT_DPHYTIM1_TINIT_Pos (0UL) /*!< TINIT (Bit 0) */ + #define R_DPHYCNT_DPHYTIM1_TINIT_Msk (0x7ffffUL) /*!< TINIT (Bitfield-Mask: 0x7ffff) */ +/* ======================================================= DPHYTIM2 ======================================================== */ + #define R_DPHYCNT_DPHYTIM2_TCLKPREP_Pos (0UL) /*!< TCLKPREP (Bit 0) */ + #define R_DPHYCNT_DPHYTIM2_TCLKPREP_Msk (0xffUL) /*!< TCLKPREP (Bitfield-Mask: 0xff) */ +/* ======================================================= DPHYTIM3 ======================================================== */ + #define R_DPHYCNT_DPHYTIM3_THSPREP_Pos (0UL) /*!< THSPREP (Bit 0) */ + #define R_DPHYCNT_DPHYTIM3_THSPREP_Msk (0xffUL) /*!< THSPREP (Bitfield-Mask: 0xff) */ +/* ======================================================= DPHYTIM4 ======================================================== */ + #define R_DPHYCNT_DPHYTIM4_TCLKZERO_Pos (0UL) /*!< TCLKZERO (Bit 0) */ + #define R_DPHYCNT_DPHYTIM4_TCLKZERO_Msk (0xffUL) /*!< TCLKZERO (Bitfield-Mask: 0xff) */ + #define R_DPHYCNT_DPHYTIM4_TCLKPRE_Pos (8UL) /*!< TCLKPRE (Bit 8) */ + #define R_DPHYCNT_DPHYTIM4_TCLKPRE_Msk (0xff00UL) /*!< TCLKPRE (Bitfield-Mask: 0xff) */ + #define R_DPHYCNT_DPHYTIM4_TCLKPOST_Pos (16UL) /*!< TCLKPOST (Bit 16) */ + #define R_DPHYCNT_DPHYTIM4_TCLKPOST_Msk (0xff0000UL) /*!< TCLKPOST (Bitfield-Mask: 0xff) */ + #define R_DPHYCNT_DPHYTIM4_TCLKTRL_Pos (24UL) /*!< TCLKTRL (Bit 24) */ + #define R_DPHYCNT_DPHYTIM4_TCLKTRL_Msk (0xff000000UL) /*!< TCLKTRL (Bitfield-Mask: 0xff) */ +/* ======================================================= DPHYTIM5 ======================================================== */ + #define R_DPHYCNT_DPHYTIM5_THSZERO_Pos (0UL) /*!< THSZERO (Bit 0) */ + #define R_DPHYCNT_DPHYTIM5_THSZERO_Msk (0xffUL) /*!< THSZERO (Bitfield-Mask: 0xff) */ + #define R_DPHYCNT_DPHYTIM5_THSTRL_Pos (8UL) /*!< THSTRL (Bit 8) */ + #define R_DPHYCNT_DPHYTIM5_THSTRL_Msk (0xff00UL) /*!< THSTRL (Bitfield-Mask: 0xff) */ + #define R_DPHYCNT_DPHYTIM5_THSEXIT_Pos (16UL) /*!< THSEXIT (Bit 16) */ + #define R_DPHYCNT_DPHYTIM5_THSEXIT_Msk (0xff0000UL) /*!< THSEXIT (Bitfield-Mask: 0xff) */ +/* ======================================================= DPHYTIM6 ======================================================== */ + #define R_DPHYCNT_DPHYTIM6_TLPX_Pos (0UL) /*!< TLPX (Bit 0) */ + #define R_DPHYCNT_DPHYTIM6_TLPX_Msk (0xffUL) /*!< TLPX (Bitfield-Mask: 0xff) */ + +/* =========================================================================================================================== */ +/* ================ R_DSILINK ================ */ +/* =========================================================================================================================== */ + +/* ========================================================== ISR ========================================================== */ + #define R_DSILINK_ISR_SQ0_Pos (0UL) /*!< SQ0 (Bit 0) */ + #define R_DSILINK_ISR_SQ0_Msk (0x1UL) /*!< SQ0 (Bitfield-Mask: 0x01) */ + #define R_DSILINK_ISR_SQ1_Pos (4UL) /*!< SQ1 (Bit 4) */ + #define R_DSILINK_ISR_SQ1_Msk (0x10UL) /*!< SQ1 (Bitfield-Mask: 0x01) */ + #define R_DSILINK_ISR_VM_Pos (8UL) /*!< VM (Bit 8) */ + #define R_DSILINK_ISR_VM_Msk (0x100UL) /*!< VM (Bitfield-Mask: 0x01) */ + #define R_DSILINK_ISR_RCV_Pos (12UL) /*!< RCV (Bit 12) */ + #define R_DSILINK_ISR_RCV_Msk (0x1000UL) /*!< RCV (Bitfield-Mask: 0x01) */ + #define R_DSILINK_ISR_FERR_Pos (16UL) /*!< FERR (Bit 16) */ + #define R_DSILINK_ISR_FERR_Msk (0x10000UL) /*!< FERR (Bitfield-Mask: 0x01) */ + #define R_DSILINK_ISR_PPI_Pos (20UL) /*!< PPI (Bit 20) */ + #define R_DSILINK_ISR_PPI_Msk (0x100000UL) /*!< PPI (Bitfield-Mask: 0x01) */ +/* ======================================================== LINKSR ========================================================= */ + #define R_DSILINK_LINKSR_SQ0RUN_Pos (0UL) /*!< SQ0RUN (Bit 0) */ + #define R_DSILINK_LINKSR_SQ0RUN_Msk (0x1UL) /*!< SQ0RUN (Bitfield-Mask: 0x01) */ + #define R_DSILINK_LINKSR_SQ1RUN_Pos (4UL) /*!< SQ1RUN (Bit 4) */ + #define R_DSILINK_LINKSR_SQ1RUN_Msk (0x10UL) /*!< SQ1RUN (Bitfield-Mask: 0x01) */ + #define R_DSILINK_LINKSR_VRUN_Pos (8UL) /*!< VRUN (Bit 8) */ + #define R_DSILINK_LINKSR_VRUN_Msk (0x100UL) /*!< VRUN (Bitfield-Mask: 0x01) */ + #define R_DSILINK_LINKSR_HSBUSY_Pos (12UL) /*!< HSBUSY (Bit 12) */ + #define R_DSILINK_LINKSR_HSBUSY_Msk (0x1000UL) /*!< HSBUSY (Bitfield-Mask: 0x01) */ + #define R_DSILINK_LINKSR_LPBUSY_Pos (13UL) /*!< LPBUSY (Bit 13) */ + #define R_DSILINK_LINKSR_LPBUSY_Msk (0x2000UL) /*!< LPBUSY (Bitfield-Mask: 0x01) */ +/* ======================================================== TXSETR ========================================================= */ + #define R_DSILINK_TXSETR_NUMLANE_Pos (0UL) /*!< NUMLANE (Bit 0) */ + #define R_DSILINK_TXSETR_NUMLANE_Msk (0x3UL) /*!< NUMLANE (Bitfield-Mask: 0x03) */ + #define R_DSILINK_TXSETR_CLEN_Pos (8UL) /*!< CLEN (Bit 8) */ + #define R_DSILINK_TXSETR_CLEN_Msk (0x100UL) /*!< CLEN (Bitfield-Mask: 0x01) */ + #define R_DSILINK_TXSETR_DLEN_Pos (9UL) /*!< DLEN (Bit 9) */ + #define R_DSILINK_TXSETR_DLEN_Msk (0x200UL) /*!< DLEN (Bitfield-Mask: 0x01) */ +/* ======================================================= HSCLKSETR ======================================================= */ + #define R_DSILINK_HSCLKSETR_HSCLST_Pos (0UL) /*!< HSCLST (Bit 0) */ + #define R_DSILINK_HSCLKSETR_HSCLST_Msk (0x1UL) /*!< HSCLST (Bitfield-Mask: 0x01) */ + #define R_DSILINK_HSCLKSETR_HSCLMD_Pos (1UL) /*!< HSCLMD (Bit 1) */ + #define R_DSILINK_HSCLKSETR_HSCLMD_Msk (0x2UL) /*!< HSCLMD (Bitfield-Mask: 0x01) */ +/* ======================================================= ULPSSETR ======================================================== */ + #define R_DSILINK_ULPSSETR_WKUP_Pos (0UL) /*!< WKUP (Bit 0) */ + #define R_DSILINK_ULPSSETR_WKUP_Msk (0xffUL) /*!< WKUP (Bitfield-Mask: 0xff) */ +/* ======================================================== ULPSCR ========================================================= */ + #define R_DSILINK_ULPSCR_CLENT_Pos (24UL) /*!< CLENT (Bit 24) */ + #define R_DSILINK_ULPSCR_CLENT_Msk (0x1000000UL) /*!< CLENT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_ULPSCR_CLEXIT_Pos (25UL) /*!< CLEXIT (Bit 25) */ + #define R_DSILINK_ULPSCR_CLEXIT_Msk (0x2000000UL) /*!< CLEXIT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_ULPSCR_DLENT_Pos (28UL) /*!< DLENT (Bit 28) */ + #define R_DSILINK_ULPSCR_DLENT_Msk (0x10000000UL) /*!< DLENT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_ULPSCR_DLEXIT_Pos (29UL) /*!< DLEXIT (Bit 29) */ + #define R_DSILINK_ULPSCR_DLEXIT_Msk (0x20000000UL) /*!< DLEXIT (Bitfield-Mask: 0x01) */ +/* ========================================================= RSTCR ========================================================= */ + #define R_DSILINK_RSTCR_SWRST_Pos (0UL) /*!< SWRST (Bit 0) */ + #define R_DSILINK_RSTCR_SWRST_Msk (0x1UL) /*!< SWRST (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RSTCR_FTXSTP_Pos (16UL) /*!< FTXSTP (Bit 16) */ + #define R_DSILINK_RSTCR_FTXSTP_Msk (0x10000UL) /*!< FTXSTP (Bitfield-Mask: 0x01) */ +/* ========================================================= RSTSR ========================================================= */ + #define R_DSILINK_RSTSR_RSTHS_Pos (0UL) /*!< RSTHS (Bit 0) */ + #define R_DSILINK_RSTSR_RSTHS_Msk (0x1UL) /*!< RSTHS (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RSTSR_RSTLP_Pos (1UL) /*!< RSTLP (Bit 1) */ + #define R_DSILINK_RSTSR_RSTLP_Msk (0x2UL) /*!< RSTLP (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RSTSR_RSTAPB_Pos (2UL) /*!< RSTAPB (Bit 2) */ + #define R_DSILINK_RSTSR_RSTAPB_Msk (0x4UL) /*!< RSTAPB (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RSTSR_RSTAXI_Pos (3UL) /*!< RSTAXI (Bit 3) */ + #define R_DSILINK_RSTSR_RSTAXI_Msk (0x8UL) /*!< RSTAXI (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RSTSR_RSTV_Pos (4UL) /*!< RSTV (Bit 4) */ + #define R_DSILINK_RSTSR_RSTV_Msk (0x10UL) /*!< RSTV (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RSTSR_DL0STP_Pos (8UL) /*!< DL0STP (Bit 8) */ + #define R_DSILINK_RSTSR_DL0STP_Msk (0x100UL) /*!< DL0STP (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RSTSR_DL1STP_Pos (9UL) /*!< DL1STP (Bit 9) */ + #define R_DSILINK_RSTSR_DL1STP_Msk (0x200UL) /*!< DL1STP (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RSTSR_DL0DIR_Pos (15UL) /*!< DL0DIR (Bit 15) */ + #define R_DSILINK_RSTSR_DL0DIR_Msk (0x8000UL) /*!< DL0DIR (Bitfield-Mask: 0x01) */ +/* ======================================================== DSISETR ======================================================== */ + #define R_DSILINK_DSISETR_MRPSZ_Pos (0UL) /*!< MRPSZ (Bit 0) */ + #define R_DSILINK_DSISETR_MRPSZ_Msk (0xffffUL) /*!< MRPSZ (Bitfield-Mask: 0xffff) */ + #define R_DSILINK_DSISETR_ECCEN_Pos (16UL) /*!< ECCEN (Bit 16) */ + #define R_DSILINK_DSISETR_ECCEN_Msk (0x10000UL) /*!< ECCEN (Bitfield-Mask: 0x01) */ + #define R_DSILINK_DSISETR_VC0CRCEN_Pos (20UL) /*!< VC0CRCEN (Bit 20) */ + #define R_DSILINK_DSISETR_VC0CRCEN_Msk (0x100000UL) /*!< VC0CRCEN (Bitfield-Mask: 0x01) */ + #define R_DSILINK_DSISETR_VC1CRCEN_Pos (21UL) /*!< VC1CRCEN (Bit 21) */ + #define R_DSILINK_DSISETR_VC1CRCEN_Msk (0x200000UL) /*!< VC1CRCEN (Bitfield-Mask: 0x01) */ + #define R_DSILINK_DSISETR_VC2CRCEN_Pos (22UL) /*!< VC2CRCEN (Bit 22) */ + #define R_DSILINK_DSISETR_VC2CRCEN_Msk (0x400000UL) /*!< VC2CRCEN (Bitfield-Mask: 0x01) */ + #define R_DSILINK_DSISETR_VC3CRCEN_Pos (23UL) /*!< VC3CRCEN (Bit 23) */ + #define R_DSILINK_DSISETR_VC3CRCEN_Msk (0x800000UL) /*!< VC3CRCEN (Bitfield-Mask: 0x01) */ + #define R_DSILINK_DSISETR_SCREN_Pos (29UL) /*!< SCREN (Bit 29) */ + #define R_DSILINK_DSISETR_SCREN_Msk (0x20000000UL) /*!< SCREN (Bitfield-Mask: 0x01) */ + #define R_DSILINK_DSISETR_EXTEMD_Pos (30UL) /*!< EXTEMD (Bit 30) */ + #define R_DSILINK_DSISETR_EXTEMD_Msk (0x40000000UL) /*!< EXTEMD (Bitfield-Mask: 0x01) */ + #define R_DSILINK_DSISETR_EOTPEN_Pos (31UL) /*!< EOTPEN (Bit 31) */ + #define R_DSILINK_DSISETR_EOTPEN_Msk (0x80000000UL) /*!< EOTPEN (Bitfield-Mask: 0x01) */ +/* ======================================================== TXPPD0R ======================================================== */ + #define R_DSILINK_TXPPD0R_DATA0_Pos (0UL) /*!< DATA0 (Bit 0) */ + #define R_DSILINK_TXPPD0R_DATA0_Msk (0xffUL) /*!< DATA0 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_TXPPD0R_DATA1_Pos (8UL) /*!< DATA1 (Bit 8) */ + #define R_DSILINK_TXPPD0R_DATA1_Msk (0xff00UL) /*!< DATA1 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_TXPPD0R_DATA2_Pos (16UL) /*!< DATA2 (Bit 16) */ + #define R_DSILINK_TXPPD0R_DATA2_Msk (0xff0000UL) /*!< DATA2 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_TXPPD0R_DATA3_Pos (24UL) /*!< DATA3 (Bit 24) */ + #define R_DSILINK_TXPPD0R_DATA3_Msk (0xff000000UL) /*!< DATA3 (Bitfield-Mask: 0xff) */ +/* ======================================================== TXPPD1R ======================================================== */ + #define R_DSILINK_TXPPD1R_DATA4_Pos (0UL) /*!< DATA4 (Bit 0) */ + #define R_DSILINK_TXPPD1R_DATA4_Msk (0xffUL) /*!< DATA4 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_TXPPD1R_DATA5_Pos (8UL) /*!< DATA5 (Bit 8) */ + #define R_DSILINK_TXPPD1R_DATA5_Msk (0xff00UL) /*!< DATA5 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_TXPPD1R_DATA6_Pos (16UL) /*!< DATA6 (Bit 16) */ + #define R_DSILINK_TXPPD1R_DATA6_Msk (0xff0000UL) /*!< DATA6 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_TXPPD1R_DATA7_Pos (24UL) /*!< DATA7 (Bit 24) */ + #define R_DSILINK_TXPPD1R_DATA7_Msk (0xff000000UL) /*!< DATA7 (Bitfield-Mask: 0xff) */ +/* ======================================================== TXPPD2R ======================================================== */ + #define R_DSILINK_TXPPD2R_DATA8_Pos (0UL) /*!< DATA8 (Bit 0) */ + #define R_DSILINK_TXPPD2R_DATA8_Msk (0xffUL) /*!< DATA8 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_TXPPD2R_DATA9_Pos (8UL) /*!< DATA9 (Bit 8) */ + #define R_DSILINK_TXPPD2R_DATA9_Msk (0xff00UL) /*!< DATA9 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_TXPPD2R_DATA10_Pos (16UL) /*!< DATA10 (Bit 16) */ + #define R_DSILINK_TXPPD2R_DATA10_Msk (0xff0000UL) /*!< DATA10 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_TXPPD2R_DATA11_Pos (24UL) /*!< DATA11 (Bit 24) */ + #define R_DSILINK_TXPPD2R_DATA11_Msk (0xff000000UL) /*!< DATA11 (Bitfield-Mask: 0xff) */ +/* ======================================================== TXPPD3R ======================================================== */ + #define R_DSILINK_TXPPD3R_DATA12_Pos (0UL) /*!< DATA12 (Bit 0) */ + #define R_DSILINK_TXPPD3R_DATA12_Msk (0xffUL) /*!< DATA12 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_TXPPD3R_DATA13_Pos (8UL) /*!< DATA13 (Bit 8) */ + #define R_DSILINK_TXPPD3R_DATA13_Msk (0xff00UL) /*!< DATA13 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_TXPPD3R_DATA14_Pos (16UL) /*!< DATA14 (Bit 16) */ + #define R_DSILINK_TXPPD3R_DATA14_Msk (0xff0000UL) /*!< DATA14 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_TXPPD3R_DATA15_Pos (24UL) /*!< DATA15 (Bit 24) */ + #define R_DSILINK_TXPPD3R_DATA15_Msk (0xff000000UL) /*!< DATA15 (Bitfield-Mask: 0xff) */ +/* ========================================================= RXSR ========================================================== */ + #define R_DSILINK_RXSR_BTAREND_Pos (0UL) /*!< BTAREND (Bit 0) */ + #define R_DSILINK_RXSR_BTAREND_Msk (0x1UL) /*!< BTAREND (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXSR_LRXHTO_Pos (1UL) /*!< LRXHTO (Bit 1) */ + #define R_DSILINK_RXSR_LRXHTO_Msk (0x2UL) /*!< LRXHTO (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXSR_TATO_Pos (2UL) /*!< TATO (Bit 2) */ + #define R_DSILINK_RXSR_TATO_Msk (0x4UL) /*!< TATO (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXSR_RXRESP_Pos (8UL) /*!< RXRESP (Bit 8) */ + #define R_DSILINK_RXSR_RXRESP_Msk (0x100UL) /*!< RXRESP (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXSR_RXEOTP_Pos (10UL) /*!< RXEOTP (Bit 10) */ + #define R_DSILINK_RXSR_RXEOTP_Msk (0x400UL) /*!< RXEOTP (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXSR_RXTE_Pos (13UL) /*!< RXTE (Bit 13) */ + #define R_DSILINK_RXSR_RXTE_Msk (0x2000UL) /*!< RXTE (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXSR_RXACK_Pos (14UL) /*!< RXACK (Bit 14) */ + #define R_DSILINK_RXSR_RXACK_Msk (0x4000UL) /*!< RXACK (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXSR_EXTEDET_Pos (15UL) /*!< EXTEDET (Bit 15) */ + #define R_DSILINK_RXSR_EXTEDET_Msk (0x8000UL) /*!< EXTEDET (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXSR_MLFERR_Pos (16UL) /*!< MLFERR (Bit 16) */ + #define R_DSILINK_RXSR_MLFERR_Msk (0x10000UL) /*!< MLFERR (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXSR_ECCERRM_Pos (17UL) /*!< ECCERRM (Bit 17) */ + #define R_DSILINK_RXSR_ECCERRM_Msk (0x20000UL) /*!< ECCERRM (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXSR_UNEXERR_Pos (18UL) /*!< UNEXERR (Bit 18) */ + #define R_DSILINK_RXSR_UNEXERR_Msk (0x40000UL) /*!< UNEXERR (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXSR_WCERR_Pos (20UL) /*!< WCERR (Bit 20) */ + #define R_DSILINK_RXSR_WCERR_Msk (0x100000UL) /*!< WCERR (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXSR_CRCERR_Pos (21UL) /*!< CRCERR (Bit 21) */ + #define R_DSILINK_RXSR_CRCERR_Msk (0x200000UL) /*!< CRCERR (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXSR_IBERR_Pos (22UL) /*!< IBERR (Bit 22) */ + #define R_DSILINK_RXSR_IBERR_Msk (0x400000UL) /*!< IBERR (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXSR_RXOVFERR_Pos (23UL) /*!< RXOVFERR (Bit 23) */ + #define R_DSILINK_RXSR_RXOVFERR_Msk (0x800000UL) /*!< RXOVFERR (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXSR_PRTOERR_Pos (24UL) /*!< PRTOERR (Bit 24) */ + #define R_DSILINK_RXSR_PRTOERR_Msk (0x1000000UL) /*!< PRTOERR (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXSR_NORESERR_Pos (25UL) /*!< NORESERR (Bit 25) */ + #define R_DSILINK_RXSR_NORESERR_Msk (0x2000000UL) /*!< NORESERR (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXSR_RSIZEERR_Pos (26UL) /*!< RSIZEERR (Bit 26) */ + #define R_DSILINK_RXSR_RSIZEERR_Msk (0x4000000UL) /*!< RSIZEERR (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXSR_ECCERRS_Pos (28UL) /*!< ECCERRS (Bit 28) */ + #define R_DSILINK_RXSR_ECCERRS_Msk (0x10000000UL) /*!< ECCERRS (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXSR_RXAKE_Pos (30UL) /*!< RXAKE (Bit 30) */ + #define R_DSILINK_RXSR_RXAKE_Msk (0x40000000UL) /*!< RXAKE (Bitfield-Mask: 0x01) */ +/* ========================================================= RXSCR ========================================================= */ + #define R_DSILINK_RXSCR_BTAREND_Pos (0UL) /*!< BTAREND (Bit 0) */ + #define R_DSILINK_RXSCR_BTAREND_Msk (0x1UL) /*!< BTAREND (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXSCR_LRXHTO_Pos (1UL) /*!< LRXHTO (Bit 1) */ + #define R_DSILINK_RXSCR_LRXHTO_Msk (0x2UL) /*!< LRXHTO (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXSCR_TATO_Pos (2UL) /*!< TATO (Bit 2) */ + #define R_DSILINK_RXSCR_TATO_Msk (0x4UL) /*!< TATO (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXSCR_RXRESP_Pos (8UL) /*!< RXRESP (Bit 8) */ + #define R_DSILINK_RXSCR_RXRESP_Msk (0x100UL) /*!< RXRESP (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXSCR_RXEOTP_Pos (10UL) /*!< RXEOTP (Bit 10) */ + #define R_DSILINK_RXSCR_RXEOTP_Msk (0x400UL) /*!< RXEOTP (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXSCR_RXTE_Pos (13UL) /*!< RXTE (Bit 13) */ + #define R_DSILINK_RXSCR_RXTE_Msk (0x2000UL) /*!< RXTE (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXSCR_RXACK_Pos (14UL) /*!< RXACK (Bit 14) */ + #define R_DSILINK_RXSCR_RXACK_Msk (0x4000UL) /*!< RXACK (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXSCR_EXTEDET_Pos (15UL) /*!< EXTEDET (Bit 15) */ + #define R_DSILINK_RXSCR_EXTEDET_Msk (0x8000UL) /*!< EXTEDET (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXSCR_MLFERR_Pos (16UL) /*!< MLFERR (Bit 16) */ + #define R_DSILINK_RXSCR_MLFERR_Msk (0x10000UL) /*!< MLFERR (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXSCR_ECCERRM_Pos (17UL) /*!< ECCERRM (Bit 17) */ + #define R_DSILINK_RXSCR_ECCERRM_Msk (0x20000UL) /*!< ECCERRM (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXSCR_UNEXERR_Pos (18UL) /*!< UNEXERR (Bit 18) */ + #define R_DSILINK_RXSCR_UNEXERR_Msk (0x40000UL) /*!< UNEXERR (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXSCR_WCERR_Pos (20UL) /*!< WCERR (Bit 20) */ + #define R_DSILINK_RXSCR_WCERR_Msk (0x100000UL) /*!< WCERR (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXSCR_CRCERR_Pos (21UL) /*!< CRCERR (Bit 21) */ + #define R_DSILINK_RXSCR_CRCERR_Msk (0x200000UL) /*!< CRCERR (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXSCR_IBERR_Pos (22UL) /*!< IBERR (Bit 22) */ + #define R_DSILINK_RXSCR_IBERR_Msk (0x400000UL) /*!< IBERR (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXSCR_RXOVFERR_Pos (23UL) /*!< RXOVFERR (Bit 23) */ + #define R_DSILINK_RXSCR_RXOVFERR_Msk (0x800000UL) /*!< RXOVFERR (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXSCR_PRTOERR_Pos (24UL) /*!< PRTOERR (Bit 24) */ + #define R_DSILINK_RXSCR_PRTOERR_Msk (0x1000000UL) /*!< PRTOERR (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXSCR_NORESERR_Pos (25UL) /*!< NORESERR (Bit 25) */ + #define R_DSILINK_RXSCR_NORESERR_Msk (0x2000000UL) /*!< NORESERR (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXSCR_RSIZEERR_Pos (26UL) /*!< RSIZEERR (Bit 26) */ + #define R_DSILINK_RXSCR_RSIZEERR_Msk (0x4000000UL) /*!< RSIZEERR (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXSCR_ECCERRS_Pos (28UL) /*!< ECCERRS (Bit 28) */ + #define R_DSILINK_RXSCR_ECCERRS_Msk (0x10000000UL) /*!< ECCERRS (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXSCR_RXAKE_Pos (30UL) /*!< RXAKE (Bit 30) */ + #define R_DSILINK_RXSCR_RXAKE_Msk (0x40000000UL) /*!< RXAKE (Bitfield-Mask: 0x01) */ +/* ========================================================= RXIER ========================================================= */ + #define R_DSILINK_RXIER_BTAREND_Pos (0UL) /*!< BTAREND (Bit 0) */ + #define R_DSILINK_RXIER_BTAREND_Msk (0x1UL) /*!< BTAREND (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXIER_LRXHTO_Pos (1UL) /*!< LRXHTO (Bit 1) */ + #define R_DSILINK_RXIER_LRXHTO_Msk (0x2UL) /*!< LRXHTO (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXIER_TATO_Pos (2UL) /*!< TATO (Bit 2) */ + #define R_DSILINK_RXIER_TATO_Msk (0x4UL) /*!< TATO (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXIER_RXRESP_Pos (8UL) /*!< RXRESP (Bit 8) */ + #define R_DSILINK_RXIER_RXRESP_Msk (0x100UL) /*!< RXRESP (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXIER_RXEOTP_Pos (10UL) /*!< RXEOTP (Bit 10) */ + #define R_DSILINK_RXIER_RXEOTP_Msk (0x400UL) /*!< RXEOTP (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXIER_RXTE_Pos (13UL) /*!< RXTE (Bit 13) */ + #define R_DSILINK_RXIER_RXTE_Msk (0x2000UL) /*!< RXTE (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXIER_RXACK_Pos (14UL) /*!< RXACK (Bit 14) */ + #define R_DSILINK_RXIER_RXACK_Msk (0x4000UL) /*!< RXACK (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXIER_EXTEDET_Pos (15UL) /*!< EXTEDET (Bit 15) */ + #define R_DSILINK_RXIER_EXTEDET_Msk (0x8000UL) /*!< EXTEDET (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXIER_MLFERR_Pos (16UL) /*!< MLFERR (Bit 16) */ + #define R_DSILINK_RXIER_MLFERR_Msk (0x10000UL) /*!< MLFERR (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXIER_ECCERRM_Pos (17UL) /*!< ECCERRM (Bit 17) */ + #define R_DSILINK_RXIER_ECCERRM_Msk (0x20000UL) /*!< ECCERRM (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXIER_UNEXERR_Pos (18UL) /*!< UNEXERR (Bit 18) */ + #define R_DSILINK_RXIER_UNEXERR_Msk (0x40000UL) /*!< UNEXERR (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXIER_WCERR_Pos (20UL) /*!< WCERR (Bit 20) */ + #define R_DSILINK_RXIER_WCERR_Msk (0x100000UL) /*!< WCERR (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXIER_CRCERR_Pos (21UL) /*!< CRCERR (Bit 21) */ + #define R_DSILINK_RXIER_CRCERR_Msk (0x200000UL) /*!< CRCERR (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXIER_IBERR_Pos (22UL) /*!< IBERR (Bit 22) */ + #define R_DSILINK_RXIER_IBERR_Msk (0x400000UL) /*!< IBERR (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXIER_RXOVFERR_Pos (23UL) /*!< RXOVFERR (Bit 23) */ + #define R_DSILINK_RXIER_RXOVFERR_Msk (0x800000UL) /*!< RXOVFERR (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXIER_PRTOERR_Pos (24UL) /*!< PRTOERR (Bit 24) */ + #define R_DSILINK_RXIER_PRTOERR_Msk (0x1000000UL) /*!< PRTOERR (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXIER_NORESERR_Pos (25UL) /*!< NORESERR (Bit 25) */ + #define R_DSILINK_RXIER_NORESERR_Msk (0x2000000UL) /*!< NORESERR (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXIER_RSIZEERR_Pos (26UL) /*!< RSIZEERR (Bit 26) */ + #define R_DSILINK_RXIER_RSIZEERR_Msk (0x4000000UL) /*!< RSIZEERR (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXIER_ECCERRS_Pos (28UL) /*!< ECCERRS (Bit 28) */ + #define R_DSILINK_RXIER_ECCERRS_Msk (0x10000000UL) /*!< ECCERRS (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXIER_RXAKE_Pos (30UL) /*!< RXAKE (Bit 30) */ + #define R_DSILINK_RXIER_RXAKE_Msk (0x40000000UL) /*!< RXAKE (Bitfield-Mask: 0x01) */ +/* ==================================================== PRESPTOBTASETR ===================================================== */ + #define R_DSILINK_PRESPTOBTASETR_PRTBTA_Pos (0UL) /*!< PRTBTA (Bit 0) */ + #define R_DSILINK_PRESPTOBTASETR_PRTBTA_Msk (0xffffffffUL) /*!< PRTBTA (Bitfield-Mask: 0xffffffff) */ +/* ===================================================== PRESPTOLPSETR ===================================================== */ + #define R_DSILINK_PRESPTOLPSETR_LPWTO_Pos (0UL) /*!< LPWTO (Bit 0) */ + #define R_DSILINK_PRESPTOLPSETR_LPWTO_Msk (0xffffUL) /*!< LPWTO (Bitfield-Mask: 0xffff) */ + #define R_DSILINK_PRESPTOLPSETR_LPRTO_Pos (16UL) /*!< LPRTO (Bit 16) */ + #define R_DSILINK_PRESPTOLPSETR_LPRTO_Msk (0xffff0000UL) /*!< LPRTO (Bitfield-Mask: 0xffff) */ +/* ===================================================== PRESPTOHSSETR ===================================================== */ + #define R_DSILINK_PRESPTOHSSETR_HSWTO_Pos (0UL) /*!< HSWTO (Bit 0) */ + #define R_DSILINK_PRESPTOHSSETR_HSWTO_Msk (0xffffUL) /*!< HSWTO (Bitfield-Mask: 0xffff) */ + #define R_DSILINK_PRESPTOHSSETR_HSRTO_Pos (16UL) /*!< HSRTO (Bit 16) */ + #define R_DSILINK_PRESPTOHSSETR_HSRTO_Msk (0xffff0000UL) /*!< HSRTO (Bitfield-Mask: 0xffff) */ +/* ======================================================= AKEPLATIR ======================================================= */ + #define R_DSILINK_AKEPLATIR_EREP_Pos (0UL) /*!< EREP (Bit 0) */ + #define R_DSILINK_AKEPLATIR_EREP_Msk (0xffffUL) /*!< EREP (Bitfield-Mask: 0xffff) */ + #define R_DSILINK_AKEPLATIR_VC_Pos (16UL) /*!< VC (Bit 16) */ + #define R_DSILINK_AKEPLATIR_VC_Msk (0xf0000UL) /*!< VC (Bitfield-Mask: 0x0f) */ +/* ======================================================= AKEPACMSR ======================================================= */ + #define R_DSILINK_AKEPACMSR_AEREP_Pos (0UL) /*!< AEREP (Bit 0) */ + #define R_DSILINK_AKEPACMSR_AEREP_Msk (0xffffUL) /*!< AEREP (Bitfield-Mask: 0xffff) */ + #define R_DSILINK_AKEPACMSR_AVC_Pos (16UL) /*!< AVC (Bit 16) */ + #define R_DSILINK_AKEPACMSR_AVC_Msk (0xf0000UL) /*!< AVC (Bitfield-Mask: 0x0f) */ +/* ======================================================== AKEPSCR ======================================================== */ + #define R_DSILINK_AKEPSCR_AEREP_Pos (0UL) /*!< AEREP (Bit 0) */ + #define R_DSILINK_AKEPSCR_AEREP_Msk (0xffffUL) /*!< AEREP (Bitfield-Mask: 0xffff) */ + #define R_DSILINK_AKEPSCR_AVC_Pos (16UL) /*!< AVC (Bit 16) */ + #define R_DSILINK_AKEPSCR_AVC_Msk (0xf0000UL) /*!< AVC (Bitfield-Mask: 0x0f) */ +/* ======================================================== RXRSSR ========================================================= */ + #define R_DSILINK_RXRSSR_SLT0VLD_Pos (0UL) /*!< SLT0VLD (Bit 0) */ + #define R_DSILINK_RXRSSR_SLT0VLD_Msk (0x1UL) /*!< SLT0VLD (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSSR_SLT1VLD_Pos (1UL) /*!< SLT1VLD (Bit 1) */ + #define R_DSILINK_RXRSSR_SLT1VLD_Msk (0x2UL) /*!< SLT1VLD (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSSR_SLT2VLD_Pos (2UL) /*!< SLT2VLD (Bit 2) */ + #define R_DSILINK_RXRSSR_SLT2VLD_Msk (0x4UL) /*!< SLT2VLD (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSSR_SLT3VLD_Pos (3UL) /*!< SLT3VLD (Bit 3) */ + #define R_DSILINK_RXRSSR_SLT3VLD_Msk (0x8UL) /*!< SLT3VLD (Bitfield-Mask: 0x01) */ +/* ======================================================== RXRSSCR ======================================================== */ + #define R_DSILINK_RXRSSCR_SLT0VLD_Pos (0UL) /*!< SLT0VLD (Bit 0) */ + #define R_DSILINK_RXRSSCR_SLT0VLD_Msk (0x1UL) /*!< SLT0VLD (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSSCR_SLT1VLD_Pos (1UL) /*!< SLT1VLD (Bit 1) */ + #define R_DSILINK_RXRSSCR_SLT1VLD_Msk (0x2UL) /*!< SLT1VLD (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSSCR_SLT2VLD_Pos (2UL) /*!< SLT2VLD (Bit 2) */ + #define R_DSILINK_RXRSSCR_SLT2VLD_Msk (0x4UL) /*!< SLT2VLD (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSSCR_SLT3VLD_Pos (3UL) /*!< SLT3VLD (Bit 3) */ + #define R_DSILINK_RXRSSCR_SLT3VLD_Msk (0x8UL) /*!< SLT3VLD (Bitfield-Mask: 0x01) */ +/* ====================================================== RXRINFOOWSR ====================================================== */ + #define R_DSILINK_RXRINFOOWSR_SL0OW_Pos (0UL) /*!< SL0OW (Bit 0) */ + #define R_DSILINK_RXRINFOOWSR_SL0OW_Msk (0x1UL) /*!< SL0OW (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRINFOOWSR_SL1OW_Pos (1UL) /*!< SL1OW (Bit 1) */ + #define R_DSILINK_RXRINFOOWSR_SL1OW_Msk (0x2UL) /*!< SL1OW (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRINFOOWSR_SL2OW_Pos (2UL) /*!< SL2OW (Bit 2) */ + #define R_DSILINK_RXRINFOOWSR_SL2OW_Msk (0x4UL) /*!< SL2OW (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRINFOOWSR_SL3OW_Pos (3UL) /*!< SL3OW (Bit 3) */ + #define R_DSILINK_RXRINFOOWSR_SL3OW_Msk (0x8UL) /*!< SL3OW (Bitfield-Mask: 0x01) */ +/* ===================================================== RXRINFOOWSCR ====================================================== */ + #define R_DSILINK_RXRINFOOWSCR_SL0OW_Pos (0UL) /*!< SL0OW (Bit 0) */ + #define R_DSILINK_RXRINFOOWSCR_SL0OW_Msk (0x1UL) /*!< SL0OW (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRINFOOWSCR_SL1OW_Pos (1UL) /*!< SL1OW (Bit 1) */ + #define R_DSILINK_RXRINFOOWSCR_SL1OW_Msk (0x2UL) /*!< SL1OW (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRINFOOWSCR_SL2OW_Pos (2UL) /*!< SL2OW (Bit 2) */ + #define R_DSILINK_RXRINFOOWSCR_SL2OW_Msk (0x4UL) /*!< SL2OW (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRINFOOWSCR_SL3OW_Pos (3UL) /*!< SL3OW (Bit 3) */ + #define R_DSILINK_RXRINFOOWSCR_SL3OW_Msk (0x8UL) /*!< SL3OW (Bitfield-Mask: 0x01) */ +/* ======================================================== RXRSS0R ======================================================== */ + #define R_DSILINK_RXRSS0R_DATA0_Pos (0UL) /*!< DATA0 (Bit 0) */ + #define R_DSILINK_RXRSS0R_DATA0_Msk (0xffUL) /*!< DATA0 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_RXRSS0R_DATA1_Pos (8UL) /*!< DATA1 (Bit 8) */ + #define R_DSILINK_RXRSS0R_DATA1_Msk (0xff00UL) /*!< DATA1 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_RXRSS0R_DT_Pos (16UL) /*!< DT (Bit 16) */ + #define R_DSILINK_RXRSS0R_DT_Msk (0x3f0000UL) /*!< DT (Bitfield-Mask: 0x3f) */ + #define R_DSILINK_RXRSS0R_VC_Pos (22UL) /*!< VC (Bit 22) */ + #define R_DSILINK_RXRSS0R_VC_Msk (0xc00000UL) /*!< VC (Bitfield-Mask: 0x03) */ + #define R_DSILINK_RXRSS0R_FMT_Pos (24UL) /*!< FMT (Bit 24) */ + #define R_DSILINK_RXRSS0R_FMT_Msk (0x1000000UL) /*!< FMT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS0R_RXSUC_Pos (25UL) /*!< RXSUC (Bit 25) */ + #define R_DSILINK_RXRSS0R_RXSUC_Msk (0x2000000UL) /*!< RXSUC (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS0R_RXFERR_Pos (26UL) /*!< RXFERR (Bit 26) */ + #define R_DSILINK_RXRSS0R_RXFERR_Msk (0x4000000UL) /*!< RXFERR (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS0R_RXFAIL_Pos (27UL) /*!< RXFAIL (Bit 27) */ + #define R_DSILINK_RXRSS0R_RXFAIL_Msk (0x8000000UL) /*!< RXFAIL (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS0R_RXPFAIL_Pos (28UL) /*!< RXPFAIL (Bit 28) */ + #define R_DSILINK_RXRSS0R_RXPFAIL_Msk (0x10000000UL) /*!< RXPFAIL (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS0R_RXCERR_Pos (29UL) /*!< RXCERR (Bit 29) */ + #define R_DSILINK_RXRSS0R_RXCERR_Msk (0x20000000UL) /*!< RXCERR (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS0R_RXAKE_Pos (30UL) /*!< RXAKE (Bit 30) */ + #define R_DSILINK_RXRSS0R_RXAKE_Msk (0x40000000UL) /*!< RXAKE (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS0R_INFOOW_Pos (31UL) /*!< INFOOW (Bit 31) */ + #define R_DSILINK_RXRSS0R_INFOOW_Msk (0x80000000UL) /*!< INFOOW (Bitfield-Mask: 0x01) */ +/* ======================================================== RXRSS1R ======================================================== */ + #define R_DSILINK_RXRSS1R_DATA0_Pos (0UL) /*!< DATA0 (Bit 0) */ + #define R_DSILINK_RXRSS1R_DATA0_Msk (0xffUL) /*!< DATA0 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_RXRSS1R_DATA1_Pos (8UL) /*!< DATA1 (Bit 8) */ + #define R_DSILINK_RXRSS1R_DATA1_Msk (0xff00UL) /*!< DATA1 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_RXRSS1R_DT_Pos (16UL) /*!< DT (Bit 16) */ + #define R_DSILINK_RXRSS1R_DT_Msk (0x3f0000UL) /*!< DT (Bitfield-Mask: 0x3f) */ + #define R_DSILINK_RXRSS1R_VC_Pos (22UL) /*!< VC (Bit 22) */ + #define R_DSILINK_RXRSS1R_VC_Msk (0xc00000UL) /*!< VC (Bitfield-Mask: 0x03) */ + #define R_DSILINK_RXRSS1R_FMT_Pos (24UL) /*!< FMT (Bit 24) */ + #define R_DSILINK_RXRSS1R_FMT_Msk (0x1000000UL) /*!< FMT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS1R_RXSUC_Pos (25UL) /*!< RXSUC (Bit 25) */ + #define R_DSILINK_RXRSS1R_RXSUC_Msk (0x2000000UL) /*!< RXSUC (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS1R_RXFERR_Pos (26UL) /*!< RXFERR (Bit 26) */ + #define R_DSILINK_RXRSS1R_RXFERR_Msk (0x4000000UL) /*!< RXFERR (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS1R_RXFAIL_Pos (27UL) /*!< RXFAIL (Bit 27) */ + #define R_DSILINK_RXRSS1R_RXFAIL_Msk (0x8000000UL) /*!< RXFAIL (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS1R_RXPFAIL_Pos (28UL) /*!< RXPFAIL (Bit 28) */ + #define R_DSILINK_RXRSS1R_RXPFAIL_Msk (0x10000000UL) /*!< RXPFAIL (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS1R_RXCERR_Pos (29UL) /*!< RXCERR (Bit 29) */ + #define R_DSILINK_RXRSS1R_RXCERR_Msk (0x20000000UL) /*!< RXCERR (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS1R_RXAKE_Pos (30UL) /*!< RXAKE (Bit 30) */ + #define R_DSILINK_RXRSS1R_RXAKE_Msk (0x40000000UL) /*!< RXAKE (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS1R_INFOOW_Pos (31UL) /*!< INFOOW (Bit 31) */ + #define R_DSILINK_RXRSS1R_INFOOW_Msk (0x80000000UL) /*!< INFOOW (Bitfield-Mask: 0x01) */ +/* ======================================================== RXRSS2R ======================================================== */ + #define R_DSILINK_RXRSS2R_DATA0_Pos (0UL) /*!< DATA0 (Bit 0) */ + #define R_DSILINK_RXRSS2R_DATA0_Msk (0xffUL) /*!< DATA0 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_RXRSS2R_DATA1_Pos (8UL) /*!< DATA1 (Bit 8) */ + #define R_DSILINK_RXRSS2R_DATA1_Msk (0xff00UL) /*!< DATA1 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_RXRSS2R_DT_Pos (16UL) /*!< DT (Bit 16) */ + #define R_DSILINK_RXRSS2R_DT_Msk (0x3f0000UL) /*!< DT (Bitfield-Mask: 0x3f) */ + #define R_DSILINK_RXRSS2R_VC_Pos (22UL) /*!< VC (Bit 22) */ + #define R_DSILINK_RXRSS2R_VC_Msk (0xc00000UL) /*!< VC (Bitfield-Mask: 0x03) */ + #define R_DSILINK_RXRSS2R_FMT_Pos (24UL) /*!< FMT (Bit 24) */ + #define R_DSILINK_RXRSS2R_FMT_Msk (0x1000000UL) /*!< FMT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS2R_RXSUC_Pos (25UL) /*!< RXSUC (Bit 25) */ + #define R_DSILINK_RXRSS2R_RXSUC_Msk (0x2000000UL) /*!< RXSUC (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS2R_RXFERR_Pos (26UL) /*!< RXFERR (Bit 26) */ + #define R_DSILINK_RXRSS2R_RXFERR_Msk (0x4000000UL) /*!< RXFERR (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS2R_RXFAIL_Pos (27UL) /*!< RXFAIL (Bit 27) */ + #define R_DSILINK_RXRSS2R_RXFAIL_Msk (0x8000000UL) /*!< RXFAIL (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS2R_RXPFAIL_Pos (28UL) /*!< RXPFAIL (Bit 28) */ + #define R_DSILINK_RXRSS2R_RXPFAIL_Msk (0x10000000UL) /*!< RXPFAIL (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS2R_RXCERR_Pos (29UL) /*!< RXCERR (Bit 29) */ + #define R_DSILINK_RXRSS2R_RXCERR_Msk (0x20000000UL) /*!< RXCERR (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS2R_RXAKE_Pos (30UL) /*!< RXAKE (Bit 30) */ + #define R_DSILINK_RXRSS2R_RXAKE_Msk (0x40000000UL) /*!< RXAKE (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS2R_INFOOW_Pos (31UL) /*!< INFOOW (Bit 31) */ + #define R_DSILINK_RXRSS2R_INFOOW_Msk (0x80000000UL) /*!< INFOOW (Bitfield-Mask: 0x01) */ +/* ======================================================== RXRSS3R ======================================================== */ + #define R_DSILINK_RXRSS3R_DATA0_Pos (0UL) /*!< DATA0 (Bit 0) */ + #define R_DSILINK_RXRSS3R_DATA0_Msk (0xffUL) /*!< DATA0 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_RXRSS3R_DATA1_Pos (8UL) /*!< DATA1 (Bit 8) */ + #define R_DSILINK_RXRSS3R_DATA1_Msk (0xff00UL) /*!< DATA1 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_RXRSS3R_DT_Pos (16UL) /*!< DT (Bit 16) */ + #define R_DSILINK_RXRSS3R_DT_Msk (0x3f0000UL) /*!< DT (Bitfield-Mask: 0x3f) */ + #define R_DSILINK_RXRSS3R_VC_Pos (22UL) /*!< VC (Bit 22) */ + #define R_DSILINK_RXRSS3R_VC_Msk (0xc00000UL) /*!< VC (Bitfield-Mask: 0x03) */ + #define R_DSILINK_RXRSS3R_FMT_Pos (24UL) /*!< FMT (Bit 24) */ + #define R_DSILINK_RXRSS3R_FMT_Msk (0x1000000UL) /*!< FMT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS3R_RXSUC_Pos (25UL) /*!< RXSUC (Bit 25) */ + #define R_DSILINK_RXRSS3R_RXSUC_Msk (0x2000000UL) /*!< RXSUC (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS3R_RXFERR_Pos (26UL) /*!< RXFERR (Bit 26) */ + #define R_DSILINK_RXRSS3R_RXFERR_Msk (0x4000000UL) /*!< RXFERR (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS3R_RXFAIL_Pos (27UL) /*!< RXFAIL (Bit 27) */ + #define R_DSILINK_RXRSS3R_RXFAIL_Msk (0x8000000UL) /*!< RXFAIL (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS3R_RXPFAIL_Pos (28UL) /*!< RXPFAIL (Bit 28) */ + #define R_DSILINK_RXRSS3R_RXPFAIL_Msk (0x10000000UL) /*!< RXPFAIL (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS3R_RXCERR_Pos (29UL) /*!< RXCERR (Bit 29) */ + #define R_DSILINK_RXRSS3R_RXCERR_Msk (0x20000000UL) /*!< RXCERR (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS3R_RXAKE_Pos (30UL) /*!< RXAKE (Bit 30) */ + #define R_DSILINK_RXRSS3R_RXAKE_Msk (0x40000000UL) /*!< RXAKE (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS3R_INFOOW_Pos (31UL) /*!< INFOOW (Bit 31) */ + #define R_DSILINK_RXRSS3R_INFOOW_Msk (0x80000000UL) /*!< INFOOW (Bitfield-Mask: 0x01) */ +/* ======================================================= RXRSS0R_L ======================================================= */ + #define R_DSILINK_RXRSS0R_L_DATA0_Pos (0UL) /*!< DATA0 (Bit 0) */ + #define R_DSILINK_RXRSS0R_L_DATA0_Msk (0xffUL) /*!< DATA0 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_RXRSS0R_L_DATA1_Pos (8UL) /*!< DATA1 (Bit 8) */ + #define R_DSILINK_RXRSS0R_L_DATA1_Msk (0xff00UL) /*!< DATA1 (Bitfield-Mask: 0xff) */ +/* ======================================================= RXRSS1R_L ======================================================= */ + #define R_DSILINK_RXRSS1R_L_DATA0_Pos (0UL) /*!< DATA0 (Bit 0) */ + #define R_DSILINK_RXRSS1R_L_DATA0_Msk (0xffUL) /*!< DATA0 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_RXRSS1R_L_DATA1_Pos (8UL) /*!< DATA1 (Bit 8) */ + #define R_DSILINK_RXRSS1R_L_DATA1_Msk (0xff00UL) /*!< DATA1 (Bitfield-Mask: 0xff) */ +/* ======================================================= RXRSS2R_L ======================================================= */ + #define R_DSILINK_RXRSS2R_L_DATA0_Pos (0UL) /*!< DATA0 (Bit 0) */ + #define R_DSILINK_RXRSS2R_L_DATA0_Msk (0xffUL) /*!< DATA0 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_RXRSS2R_L_DATA1_Pos (8UL) /*!< DATA1 (Bit 8) */ + #define R_DSILINK_RXRSS2R_L_DATA1_Msk (0xff00UL) /*!< DATA1 (Bitfield-Mask: 0xff) */ +/* ======================================================= RXRSS3R_L ======================================================= */ + #define R_DSILINK_RXRSS3R_L_DATA0_Pos (0UL) /*!< DATA0 (Bit 0) */ + #define R_DSILINK_RXRSS3R_L_DATA0_Msk (0xffUL) /*!< DATA0 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_RXRSS3R_L_DATA1_Pos (8UL) /*!< DATA1 (Bit 8) */ + #define R_DSILINK_RXRSS3R_L_DATA1_Msk (0xff00UL) /*!< DATA1 (Bitfield-Mask: 0xff) */ +/* ====================================================== RXRSS0R_LL ======================================================= */ + #define R_DSILINK_RXRSS0R_LL_DATA0_Pos (0UL) /*!< DATA0 (Bit 0) */ + #define R_DSILINK_RXRSS0R_LL_DATA0_Msk (0xffUL) /*!< DATA0 (Bitfield-Mask: 0xff) */ +/* ====================================================== RXRSS1R_LL ======================================================= */ + #define R_DSILINK_RXRSS1R_LL_DATA0_Pos (0UL) /*!< DATA0 (Bit 0) */ + #define R_DSILINK_RXRSS1R_LL_DATA0_Msk (0xffUL) /*!< DATA0 (Bitfield-Mask: 0xff) */ +/* ====================================================== RXRSS2R_LL ======================================================= */ + #define R_DSILINK_RXRSS2R_LL_DATA0_Pos (0UL) /*!< DATA0 (Bit 0) */ + #define R_DSILINK_RXRSS2R_LL_DATA0_Msk (0xffUL) /*!< DATA0 (Bitfield-Mask: 0xff) */ +/* ====================================================== RXRSS3R_LL ======================================================= */ + #define R_DSILINK_RXRSS3R_LL_DATA0_Pos (0UL) /*!< DATA0 (Bit 0) */ + #define R_DSILINK_RXRSS3R_LL_DATA0_Msk (0xffUL) /*!< DATA0 (Bitfield-Mask: 0xff) */ +/* ====================================================== RXRSS0R_LH ======================================================= */ + #define R_DSILINK_RXRSS0R_LH_DATA1_Pos (0UL) /*!< DATA1 (Bit 0) */ + #define R_DSILINK_RXRSS0R_LH_DATA1_Msk (0xffUL) /*!< DATA1 (Bitfield-Mask: 0xff) */ +/* ====================================================== RXRSS1R_LH ======================================================= */ + #define R_DSILINK_RXRSS1R_LH_DATA1_Pos (0UL) /*!< DATA1 (Bit 0) */ + #define R_DSILINK_RXRSS1R_LH_DATA1_Msk (0xffUL) /*!< DATA1 (Bitfield-Mask: 0xff) */ +/* ====================================================== RXRSS2R_LH ======================================================= */ + #define R_DSILINK_RXRSS2R_LH_DATA1_Pos (0UL) /*!< DATA1 (Bit 0) */ + #define R_DSILINK_RXRSS2R_LH_DATA1_Msk (0xffUL) /*!< DATA1 (Bitfield-Mask: 0xff) */ +/* ====================================================== RXRSS3R_LH ======================================================= */ + #define R_DSILINK_RXRSS3R_LH_DATA1_Pos (0UL) /*!< DATA1 (Bit 0) */ + #define R_DSILINK_RXRSS3R_LH_DATA1_Msk (0xffUL) /*!< DATA1 (Bitfield-Mask: 0xff) */ +/* ======================================================= RXRSS0R_H ======================================================= */ + #define R_DSILINK_RXRSS0R_H_DT_Pos (0UL) /*!< DT (Bit 0) */ + #define R_DSILINK_RXRSS0R_H_DT_Msk (0x3fUL) /*!< DT (Bitfield-Mask: 0x3f) */ + #define R_DSILINK_RXRSS0R_H_VC_Pos (6UL) /*!< VC (Bit 6) */ + #define R_DSILINK_RXRSS0R_H_VC_Msk (0xc0UL) /*!< VC (Bitfield-Mask: 0x03) */ + #define R_DSILINK_RXRSS0R_H_FMT_Pos (8UL) /*!< FMT (Bit 8) */ + #define R_DSILINK_RXRSS0R_H_FMT_Msk (0x100UL) /*!< FMT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS0R_H_RXSUC_Pos (9UL) /*!< RXSUC (Bit 9) */ + #define R_DSILINK_RXRSS0R_H_RXSUC_Msk (0x200UL) /*!< RXSUC (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS0R_H_RXFERR_Pos (10UL) /*!< RXFERR (Bit 10) */ + #define R_DSILINK_RXRSS0R_H_RXFERR_Msk (0x400UL) /*!< RXFERR (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS0R_H_RXFAIL_Pos (11UL) /*!< RXFAIL (Bit 11) */ + #define R_DSILINK_RXRSS0R_H_RXFAIL_Msk (0x800UL) /*!< RXFAIL (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS0R_H_RXPFAIL_Pos (12UL) /*!< RXPFAIL (Bit 12) */ + #define R_DSILINK_RXRSS0R_H_RXPFAIL_Msk (0x1000UL) /*!< RXPFAIL (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS0R_H_RXCERR_Pos (13UL) /*!< RXCERR (Bit 13) */ + #define R_DSILINK_RXRSS0R_H_RXCERR_Msk (0x2000UL) /*!< RXCERR (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS0R_H_RXAKE_Pos (14UL) /*!< RXAKE (Bit 14) */ + #define R_DSILINK_RXRSS0R_H_RXAKE_Msk (0x4000UL) /*!< RXAKE (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS0R_H_INFOOW_Pos (15UL) /*!< INFOOW (Bit 15) */ + #define R_DSILINK_RXRSS0R_H_INFOOW_Msk (0x8000UL) /*!< INFOOW (Bitfield-Mask: 0x01) */ +/* ======================================================= RXRSS1R_H ======================================================= */ + #define R_DSILINK_RXRSS1R_H_DT_Pos (0UL) /*!< DT (Bit 0) */ + #define R_DSILINK_RXRSS1R_H_DT_Msk (0x3fUL) /*!< DT (Bitfield-Mask: 0x3f) */ + #define R_DSILINK_RXRSS1R_H_VC_Pos (6UL) /*!< VC (Bit 6) */ + #define R_DSILINK_RXRSS1R_H_VC_Msk (0xc0UL) /*!< VC (Bitfield-Mask: 0x03) */ + #define R_DSILINK_RXRSS1R_H_FMT_Pos (8UL) /*!< FMT (Bit 8) */ + #define R_DSILINK_RXRSS1R_H_FMT_Msk (0x100UL) /*!< FMT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS1R_H_RXSUC_Pos (9UL) /*!< RXSUC (Bit 9) */ + #define R_DSILINK_RXRSS1R_H_RXSUC_Msk (0x200UL) /*!< RXSUC (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS1R_H_RXFERR_Pos (10UL) /*!< RXFERR (Bit 10) */ + #define R_DSILINK_RXRSS1R_H_RXFERR_Msk (0x400UL) /*!< RXFERR (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS1R_H_RXFAIL_Pos (11UL) /*!< RXFAIL (Bit 11) */ + #define R_DSILINK_RXRSS1R_H_RXFAIL_Msk (0x800UL) /*!< RXFAIL (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS1R_H_RXPFAIL_Pos (12UL) /*!< RXPFAIL (Bit 12) */ + #define R_DSILINK_RXRSS1R_H_RXPFAIL_Msk (0x1000UL) /*!< RXPFAIL (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS1R_H_RXCERR_Pos (13UL) /*!< RXCERR (Bit 13) */ + #define R_DSILINK_RXRSS1R_H_RXCERR_Msk (0x2000UL) /*!< RXCERR (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS1R_H_RXAKE_Pos (14UL) /*!< RXAKE (Bit 14) */ + #define R_DSILINK_RXRSS1R_H_RXAKE_Msk (0x4000UL) /*!< RXAKE (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS1R_H_INFOOW_Pos (15UL) /*!< INFOOW (Bit 15) */ + #define R_DSILINK_RXRSS1R_H_INFOOW_Msk (0x8000UL) /*!< INFOOW (Bitfield-Mask: 0x01) */ +/* ======================================================= RXRSS2R_H ======================================================= */ + #define R_DSILINK_RXRSS2R_H_DT_Pos (0UL) /*!< DT (Bit 0) */ + #define R_DSILINK_RXRSS2R_H_DT_Msk (0x3fUL) /*!< DT (Bitfield-Mask: 0x3f) */ + #define R_DSILINK_RXRSS2R_H_VC_Pos (6UL) /*!< VC (Bit 6) */ + #define R_DSILINK_RXRSS2R_H_VC_Msk (0xc0UL) /*!< VC (Bitfield-Mask: 0x03) */ + #define R_DSILINK_RXRSS2R_H_FMT_Pos (8UL) /*!< FMT (Bit 8) */ + #define R_DSILINK_RXRSS2R_H_FMT_Msk (0x100UL) /*!< FMT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS2R_H_RXSUC_Pos (9UL) /*!< RXSUC (Bit 9) */ + #define R_DSILINK_RXRSS2R_H_RXSUC_Msk (0x200UL) /*!< RXSUC (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS2R_H_RXFERR_Pos (10UL) /*!< RXFERR (Bit 10) */ + #define R_DSILINK_RXRSS2R_H_RXFERR_Msk (0x400UL) /*!< RXFERR (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS2R_H_RXFAIL_Pos (11UL) /*!< RXFAIL (Bit 11) */ + #define R_DSILINK_RXRSS2R_H_RXFAIL_Msk (0x800UL) /*!< RXFAIL (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS2R_H_RXPFAIL_Pos (12UL) /*!< RXPFAIL (Bit 12) */ + #define R_DSILINK_RXRSS2R_H_RXPFAIL_Msk (0x1000UL) /*!< RXPFAIL (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS2R_H_RXCERR_Pos (13UL) /*!< RXCERR (Bit 13) */ + #define R_DSILINK_RXRSS2R_H_RXCERR_Msk (0x2000UL) /*!< RXCERR (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS2R_H_RXAKE_Pos (14UL) /*!< RXAKE (Bit 14) */ + #define R_DSILINK_RXRSS2R_H_RXAKE_Msk (0x4000UL) /*!< RXAKE (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS2R_H_INFOOW_Pos (15UL) /*!< INFOOW (Bit 15) */ + #define R_DSILINK_RXRSS2R_H_INFOOW_Msk (0x8000UL) /*!< INFOOW (Bitfield-Mask: 0x01) */ +/* ======================================================= RXRSS3R_H ======================================================= */ + #define R_DSILINK_RXRSS3R_H_DT_Pos (0UL) /*!< DT (Bit 0) */ + #define R_DSILINK_RXRSS3R_H_DT_Msk (0x3fUL) /*!< DT (Bitfield-Mask: 0x3f) */ + #define R_DSILINK_RXRSS3R_H_VC_Pos (6UL) /*!< VC (Bit 6) */ + #define R_DSILINK_RXRSS3R_H_VC_Msk (0xc0UL) /*!< VC (Bitfield-Mask: 0x03) */ + #define R_DSILINK_RXRSS3R_H_FMT_Pos (8UL) /*!< FMT (Bit 8) */ + #define R_DSILINK_RXRSS3R_H_FMT_Msk (0x100UL) /*!< FMT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS3R_H_RXSUC_Pos (9UL) /*!< RXSUC (Bit 9) */ + #define R_DSILINK_RXRSS3R_H_RXSUC_Msk (0x200UL) /*!< RXSUC (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS3R_H_RXFERR_Pos (10UL) /*!< RXFERR (Bit 10) */ + #define R_DSILINK_RXRSS3R_H_RXFERR_Msk (0x400UL) /*!< RXFERR (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS3R_H_RXFAIL_Pos (11UL) /*!< RXFAIL (Bit 11) */ + #define R_DSILINK_RXRSS3R_H_RXFAIL_Msk (0x800UL) /*!< RXFAIL (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS3R_H_RXPFAIL_Pos (12UL) /*!< RXPFAIL (Bit 12) */ + #define R_DSILINK_RXRSS3R_H_RXPFAIL_Msk (0x1000UL) /*!< RXPFAIL (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS3R_H_RXCERR_Pos (13UL) /*!< RXCERR (Bit 13) */ + #define R_DSILINK_RXRSS3R_H_RXCERR_Msk (0x2000UL) /*!< RXCERR (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS3R_H_RXAKE_Pos (14UL) /*!< RXAKE (Bit 14) */ + #define R_DSILINK_RXRSS3R_H_RXAKE_Msk (0x4000UL) /*!< RXAKE (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS3R_H_INFOOW_Pos (15UL) /*!< INFOOW (Bit 15) */ + #define R_DSILINK_RXRSS3R_H_INFOOW_Msk (0x8000UL) /*!< INFOOW (Bitfield-Mask: 0x01) */ +/* ====================================================== RXRSS0R_HL ======================================================= */ + #define R_DSILINK_RXRSS0R_HL_DT_Pos (0UL) /*!< DT (Bit 0) */ + #define R_DSILINK_RXRSS0R_HL_DT_Msk (0x3fUL) /*!< DT (Bitfield-Mask: 0x3f) */ + #define R_DSILINK_RXRSS0R_HL_VC_Pos (6UL) /*!< VC (Bit 6) */ + #define R_DSILINK_RXRSS0R_HL_VC_Msk (0xc0UL) /*!< VC (Bitfield-Mask: 0x03) */ +/* ====================================================== RXRSS1R_HL ======================================================= */ + #define R_DSILINK_RXRSS1R_HL_DT_Pos (0UL) /*!< DT (Bit 0) */ + #define R_DSILINK_RXRSS1R_HL_DT_Msk (0x3fUL) /*!< DT (Bitfield-Mask: 0x3f) */ + #define R_DSILINK_RXRSS1R_HL_VC_Pos (6UL) /*!< VC (Bit 6) */ + #define R_DSILINK_RXRSS1R_HL_VC_Msk (0xc0UL) /*!< VC (Bitfield-Mask: 0x03) */ +/* ====================================================== RXRSS2R_HL ======================================================= */ + #define R_DSILINK_RXRSS2R_HL_DT_Pos (0UL) /*!< DT (Bit 0) */ + #define R_DSILINK_RXRSS2R_HL_DT_Msk (0x3fUL) /*!< DT (Bitfield-Mask: 0x3f) */ + #define R_DSILINK_RXRSS2R_HL_VC_Pos (6UL) /*!< VC (Bit 6) */ + #define R_DSILINK_RXRSS2R_HL_VC_Msk (0xc0UL) /*!< VC (Bitfield-Mask: 0x03) */ +/* ====================================================== RXRSS3R_HL ======================================================= */ + #define R_DSILINK_RXRSS3R_HL_DT_Pos (0UL) /*!< DT (Bit 0) */ + #define R_DSILINK_RXRSS3R_HL_DT_Msk (0x3fUL) /*!< DT (Bitfield-Mask: 0x3f) */ + #define R_DSILINK_RXRSS3R_HL_VC_Pos (6UL) /*!< VC (Bit 6) */ + #define R_DSILINK_RXRSS3R_HL_VC_Msk (0xc0UL) /*!< VC (Bitfield-Mask: 0x03) */ +/* ====================================================== RXRSS0R_HH ======================================================= */ + #define R_DSILINK_RXRSS0R_HH_FMT_Pos (0UL) /*!< FMT (Bit 0) */ + #define R_DSILINK_RXRSS0R_HH_FMT_Msk (0x1UL) /*!< FMT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS0R_HH_RXSUC_Pos (1UL) /*!< RXSUC (Bit 1) */ + #define R_DSILINK_RXRSS0R_HH_RXSUC_Msk (0x2UL) /*!< RXSUC (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS0R_HH_RXFERR_Pos (2UL) /*!< RXFERR (Bit 2) */ + #define R_DSILINK_RXRSS0R_HH_RXFERR_Msk (0x4UL) /*!< RXFERR (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS0R_HH_RXFAIL_Pos (3UL) /*!< RXFAIL (Bit 3) */ + #define R_DSILINK_RXRSS0R_HH_RXFAIL_Msk (0x8UL) /*!< RXFAIL (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS0R_HH_RXPFAIL_Pos (4UL) /*!< RXPFAIL (Bit 4) */ + #define R_DSILINK_RXRSS0R_HH_RXPFAIL_Msk (0x10UL) /*!< RXPFAIL (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS0R_HH_RXCERR_Pos (5UL) /*!< RXCERR (Bit 5) */ + #define R_DSILINK_RXRSS0R_HH_RXCERR_Msk (0x20UL) /*!< RXCERR (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS0R_HH_RXAKE_Pos (6UL) /*!< RXAKE (Bit 6) */ + #define R_DSILINK_RXRSS0R_HH_RXAKE_Msk (0x40UL) /*!< RXAKE (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS0R_HH_INFOOW_Pos (7UL) /*!< INFOOW (Bit 7) */ + #define R_DSILINK_RXRSS0R_HH_INFOOW_Msk (0x80UL) /*!< INFOOW (Bitfield-Mask: 0x01) */ +/* ====================================================== RXRSS1R_HH ======================================================= */ + #define R_DSILINK_RXRSS1R_HH_FMT_Pos (0UL) /*!< FMT (Bit 0) */ + #define R_DSILINK_RXRSS1R_HH_FMT_Msk (0x1UL) /*!< FMT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS1R_HH_RXSUC_Pos (1UL) /*!< RXSUC (Bit 1) */ + #define R_DSILINK_RXRSS1R_HH_RXSUC_Msk (0x2UL) /*!< RXSUC (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS1R_HH_RXFERR_Pos (2UL) /*!< RXFERR (Bit 2) */ + #define R_DSILINK_RXRSS1R_HH_RXFERR_Msk (0x4UL) /*!< RXFERR (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS1R_HH_RXFAIL_Pos (3UL) /*!< RXFAIL (Bit 3) */ + #define R_DSILINK_RXRSS1R_HH_RXFAIL_Msk (0x8UL) /*!< RXFAIL (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS1R_HH_RXPFAIL_Pos (4UL) /*!< RXPFAIL (Bit 4) */ + #define R_DSILINK_RXRSS1R_HH_RXPFAIL_Msk (0x10UL) /*!< RXPFAIL (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS1R_HH_RXCERR_Pos (5UL) /*!< RXCERR (Bit 5) */ + #define R_DSILINK_RXRSS1R_HH_RXCERR_Msk (0x20UL) /*!< RXCERR (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS1R_HH_RXAKE_Pos (6UL) /*!< RXAKE (Bit 6) */ + #define R_DSILINK_RXRSS1R_HH_RXAKE_Msk (0x40UL) /*!< RXAKE (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS1R_HH_INFOOW_Pos (7UL) /*!< INFOOW (Bit 7) */ + #define R_DSILINK_RXRSS1R_HH_INFOOW_Msk (0x80UL) /*!< INFOOW (Bitfield-Mask: 0x01) */ +/* ====================================================== RXRSS2R_HH ======================================================= */ + #define R_DSILINK_RXRSS2R_HH_FMT_Pos (0UL) /*!< FMT (Bit 0) */ + #define R_DSILINK_RXRSS2R_HH_FMT_Msk (0x1UL) /*!< FMT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS2R_HH_RXSUC_Pos (1UL) /*!< RXSUC (Bit 1) */ + #define R_DSILINK_RXRSS2R_HH_RXSUC_Msk (0x2UL) /*!< RXSUC (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS2R_HH_RXFERR_Pos (2UL) /*!< RXFERR (Bit 2) */ + #define R_DSILINK_RXRSS2R_HH_RXFERR_Msk (0x4UL) /*!< RXFERR (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS2R_HH_RXFAIL_Pos (3UL) /*!< RXFAIL (Bit 3) */ + #define R_DSILINK_RXRSS2R_HH_RXFAIL_Msk (0x8UL) /*!< RXFAIL (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS2R_HH_RXPFAIL_Pos (4UL) /*!< RXPFAIL (Bit 4) */ + #define R_DSILINK_RXRSS2R_HH_RXPFAIL_Msk (0x10UL) /*!< RXPFAIL (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS2R_HH_RXCERR_Pos (5UL) /*!< RXCERR (Bit 5) */ + #define R_DSILINK_RXRSS2R_HH_RXCERR_Msk (0x20UL) /*!< RXCERR (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS2R_HH_RXAKE_Pos (6UL) /*!< RXAKE (Bit 6) */ + #define R_DSILINK_RXRSS2R_HH_RXAKE_Msk (0x40UL) /*!< RXAKE (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS2R_HH_INFOOW_Pos (7UL) /*!< INFOOW (Bit 7) */ + #define R_DSILINK_RXRSS2R_HH_INFOOW_Msk (0x80UL) /*!< INFOOW (Bitfield-Mask: 0x01) */ +/* ====================================================== RXRSS3R_HH ======================================================= */ + #define R_DSILINK_RXRSS3R_HH_FMT_Pos (0UL) /*!< FMT (Bit 0) */ + #define R_DSILINK_RXRSS3R_HH_FMT_Msk (0x1UL) /*!< FMT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS3R_HH_RXSUC_Pos (1UL) /*!< RXSUC (Bit 1) */ + #define R_DSILINK_RXRSS3R_HH_RXSUC_Msk (0x2UL) /*!< RXSUC (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS3R_HH_RXFERR_Pos (2UL) /*!< RXFERR (Bit 2) */ + #define R_DSILINK_RXRSS3R_HH_RXFERR_Msk (0x4UL) /*!< RXFERR (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS3R_HH_RXFAIL_Pos (3UL) /*!< RXFAIL (Bit 3) */ + #define R_DSILINK_RXRSS3R_HH_RXFAIL_Msk (0x8UL) /*!< RXFAIL (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS3R_HH_RXPFAIL_Pos (4UL) /*!< RXPFAIL (Bit 4) */ + #define R_DSILINK_RXRSS3R_HH_RXPFAIL_Msk (0x10UL) /*!< RXPFAIL (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS3R_HH_RXCERR_Pos (5UL) /*!< RXCERR (Bit 5) */ + #define R_DSILINK_RXRSS3R_HH_RXCERR_Msk (0x20UL) /*!< RXCERR (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS3R_HH_RXAKE_Pos (6UL) /*!< RXAKE (Bit 6) */ + #define R_DSILINK_RXRSS3R_HH_RXAKE_Msk (0x40UL) /*!< RXAKE (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS3R_HH_INFOOW_Pos (7UL) /*!< INFOOW (Bit 7) */ + #define R_DSILINK_RXRSS3R_HH_INFOOW_Msk (0x80UL) /*!< INFOOW (Bitfield-Mask: 0x01) */ +/* ======================================================== RXPPD0R ======================================================== */ + #define R_DSILINK_RXPPD0R_DATA0_Pos (0UL) /*!< DATA0 (Bit 0) */ + #define R_DSILINK_RXPPD0R_DATA0_Msk (0xffUL) /*!< DATA0 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_RXPPD0R_DATA1_Pos (8UL) /*!< DATA1 (Bit 8) */ + #define R_DSILINK_RXPPD0R_DATA1_Msk (0xff00UL) /*!< DATA1 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_RXPPD0R_DATA2_Pos (16UL) /*!< DATA2 (Bit 16) */ + #define R_DSILINK_RXPPD0R_DATA2_Msk (0xff0000UL) /*!< DATA2 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_RXPPD0R_DATA3_Pos (24UL) /*!< DATA3 (Bit 24) */ + #define R_DSILINK_RXPPD0R_DATA3_Msk (0xff000000UL) /*!< DATA3 (Bitfield-Mask: 0xff) */ +/* ======================================================== RXPPD1R ======================================================== */ + #define R_DSILINK_RXPPD1R_DATA4_Pos (0UL) /*!< DATA4 (Bit 0) */ + #define R_DSILINK_RXPPD1R_DATA4_Msk (0xffUL) /*!< DATA4 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_RXPPD1R_DATA5_Pos (8UL) /*!< DATA5 (Bit 8) */ + #define R_DSILINK_RXPPD1R_DATA5_Msk (0xff00UL) /*!< DATA5 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_RXPPD1R_DATA6_Pos (16UL) /*!< DATA6 (Bit 16) */ + #define R_DSILINK_RXPPD1R_DATA6_Msk (0xff0000UL) /*!< DATA6 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_RXPPD1R_DATA7_Pos (24UL) /*!< DATA7 (Bit 24) */ + #define R_DSILINK_RXPPD1R_DATA7_Msk (0xff000000UL) /*!< DATA7 (Bitfield-Mask: 0xff) */ +/* ======================================================== RXPPD2R ======================================================== */ + #define R_DSILINK_RXPPD2R_DATA8_Pos (0UL) /*!< DATA8 (Bit 0) */ + #define R_DSILINK_RXPPD2R_DATA8_Msk (0xffUL) /*!< DATA8 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_RXPPD2R_DATA9_Pos (8UL) /*!< DATA9 (Bit 8) */ + #define R_DSILINK_RXPPD2R_DATA9_Msk (0xff00UL) /*!< DATA9 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_RXPPD2R_DATA10_Pos (16UL) /*!< DATA10 (Bit 16) */ + #define R_DSILINK_RXPPD2R_DATA10_Msk (0xff0000UL) /*!< DATA10 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_RXPPD2R_DATA11_Pos (24UL) /*!< DATA11 (Bit 24) */ + #define R_DSILINK_RXPPD2R_DATA11_Msk (0xff000000UL) /*!< DATA11 (Bitfield-Mask: 0xff) */ +/* ======================================================== RXPPD3R ======================================================== */ + #define R_DSILINK_RXPPD3R_DATA12_Pos (0UL) /*!< DATA12 (Bit 0) */ + #define R_DSILINK_RXPPD3R_DATA12_Msk (0xffUL) /*!< DATA12 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_RXPPD3R_DATA13_Pos (8UL) /*!< DATA13 (Bit 8) */ + #define R_DSILINK_RXPPD3R_DATA13_Msk (0xff00UL) /*!< DATA13 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_RXPPD3R_DATA14_Pos (16UL) /*!< DATA14 (Bit 16) */ + #define R_DSILINK_RXPPD3R_DATA14_Msk (0xff0000UL) /*!< DATA14 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_RXPPD3R_DATA15_Pos (24UL) /*!< DATA15 (Bit 24) */ + #define R_DSILINK_RXPPD3R_DATA15_Msk (0xff000000UL) /*!< DATA15 (Bitfield-Mask: 0xff) */ +/* ====================================================== HSTXTOSETR ======================================================= */ + #define R_DSILINK_HSTXTOSETR_HTXTO_Pos (0UL) /*!< HTXTO (Bit 0) */ + #define R_DSILINK_HSTXTOSETR_HTXTO_Msk (0xffffffffUL) /*!< HTXTO (Bitfield-Mask: 0xffffffff) */ +/* ====================================================== LRXHTOSETR ======================================================= */ + #define R_DSILINK_LRXHTOSETR_LRXHTO_Pos (0UL) /*!< LRXHTO (Bit 0) */ + #define R_DSILINK_LRXHTOSETR_LRXHTO_Msk (0xffffffffUL) /*!< LRXHTO (Bitfield-Mask: 0xffffffff) */ +/* ======================================================= TATOSETR ======================================================== */ + #define R_DSILINK_TATOSETR_TATO_Pos (0UL) /*!< TATO (Bit 0) */ + #define R_DSILINK_TATOSETR_TATO_Msk (0xffffffffUL) /*!< TATO (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== FERRSR ========================================================= */ + #define R_DSILINK_FERRSR_HTXTO_Pos (0UL) /*!< HTXTO (Bit 0) */ + #define R_DSILINK_FERRSR_HTXTO_Msk (0x1UL) /*!< HTXTO (Bitfield-Mask: 0x01) */ + #define R_DSILINK_FERRSR_LRXHTO_Pos (1UL) /*!< LRXHTO (Bit 1) */ + #define R_DSILINK_FERRSR_LRXHTO_Msk (0x2UL) /*!< LRXHTO (Bitfield-Mask: 0x01) */ + #define R_DSILINK_FERRSR_TATO_Pos (2UL) /*!< TATO (Bit 2) */ + #define R_DSILINK_FERRSR_TATO_Msk (0x4UL) /*!< TATO (Bitfield-Mask: 0x01) */ + #define R_DSILINK_FERRSR_ESCENT_Pos (16UL) /*!< ESCENT (Bit 16) */ + #define R_DSILINK_FERRSR_ESCENT_Msk (0x10000UL) /*!< ESCENT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_FERRSR_SYNCESC_Pos (17UL) /*!< SYNCESC (Bit 17) */ + #define R_DSILINK_FERRSR_SYNCESC_Msk (0x20000UL) /*!< SYNCESC (Bitfield-Mask: 0x01) */ + #define R_DSILINK_FERRSR_CTRL_Pos (18UL) /*!< CTRL (Bit 18) */ + #define R_DSILINK_FERRSR_CTRL_Msk (0x40000UL) /*!< CTRL (Bitfield-Mask: 0x01) */ + #define R_DSILINK_FERRSR_CLP0_Pos (19UL) /*!< CLP0 (Bit 19) */ + #define R_DSILINK_FERRSR_CLP0_Msk (0x80000UL) /*!< CLP0 (Bitfield-Mask: 0x01) */ + #define R_DSILINK_FERRSR_CLP1_Pos (20UL) /*!< CLP1 (Bit 20) */ + #define R_DSILINK_FERRSR_CLP1_Msk (0x100000UL) /*!< CLP1 (Bitfield-Mask: 0x01) */ + #define R_DSILINK_FERRSR_CLP0S_Pos (27UL) /*!< CLP0S (Bit 27) */ + #define R_DSILINK_FERRSR_CLP0S_Msk (0x8000000UL) /*!< CLP0S (Bitfield-Mask: 0x01) */ + #define R_DSILINK_FERRSR_CLP1S_Pos (28UL) /*!< CLP1S (Bit 28) */ + #define R_DSILINK_FERRSR_CLP1S_Msk (0x10000000UL) /*!< CLP1S (Bitfield-Mask: 0x01) */ +/* ======================================================== FERRSCR ======================================================== */ + #define R_DSILINK_FERRSCR_HTXTO_Pos (0UL) /*!< HTXTO (Bit 0) */ + #define R_DSILINK_FERRSCR_HTXTO_Msk (0x1UL) /*!< HTXTO (Bitfield-Mask: 0x01) */ + #define R_DSILINK_FERRSCR_LRXHTO_Pos (1UL) /*!< LRXHTO (Bit 1) */ + #define R_DSILINK_FERRSCR_LRXHTO_Msk (0x2UL) /*!< LRXHTO (Bitfield-Mask: 0x01) */ + #define R_DSILINK_FERRSCR_TATO_Pos (2UL) /*!< TATO (Bit 2) */ + #define R_DSILINK_FERRSCR_TATO_Msk (0x4UL) /*!< TATO (Bitfield-Mask: 0x01) */ + #define R_DSILINK_FERRSCR_ESCENT_Pos (16UL) /*!< ESCENT (Bit 16) */ + #define R_DSILINK_FERRSCR_ESCENT_Msk (0x10000UL) /*!< ESCENT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_FERRSCR_SYNCESC_Pos (17UL) /*!< SYNCESC (Bit 17) */ + #define R_DSILINK_FERRSCR_SYNCESC_Msk (0x20000UL) /*!< SYNCESC (Bitfield-Mask: 0x01) */ + #define R_DSILINK_FERRSCR_CTRL_Pos (18UL) /*!< CTRL (Bit 18) */ + #define R_DSILINK_FERRSCR_CTRL_Msk (0x40000UL) /*!< CTRL (Bitfield-Mask: 0x01) */ + #define R_DSILINK_FERRSCR_CLP0_Pos (19UL) /*!< CLP0 (Bit 19) */ + #define R_DSILINK_FERRSCR_CLP0_Msk (0x80000UL) /*!< CLP0 (Bitfield-Mask: 0x01) */ + #define R_DSILINK_FERRSCR_CLP1_Pos (20UL) /*!< CLP1 (Bit 20) */ + #define R_DSILINK_FERRSCR_CLP1_Msk (0x100000UL) /*!< CLP1 (Bitfield-Mask: 0x01) */ +/* ======================================================== FERRIER ======================================================== */ + #define R_DSILINK_FERRIER_HTXTO_Pos (0UL) /*!< HTXTO (Bit 0) */ + #define R_DSILINK_FERRIER_HTXTO_Msk (0x1UL) /*!< HTXTO (Bitfield-Mask: 0x01) */ + #define R_DSILINK_FERRIER_LRXHTO_Pos (1UL) /*!< LRXHTO (Bit 1) */ + #define R_DSILINK_FERRIER_LRXHTO_Msk (0x2UL) /*!< LRXHTO (Bitfield-Mask: 0x01) */ + #define R_DSILINK_FERRIER_TATO_Pos (2UL) /*!< TATO (Bit 2) */ + #define R_DSILINK_FERRIER_TATO_Msk (0x4UL) /*!< TATO (Bitfield-Mask: 0x01) */ + #define R_DSILINK_FERRIER_ESCENT_Pos (16UL) /*!< ESCENT (Bit 16) */ + #define R_DSILINK_FERRIER_ESCENT_Msk (0x10000UL) /*!< ESCENT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_FERRIER_SYNCESC_Pos (17UL) /*!< SYNCESC (Bit 17) */ + #define R_DSILINK_FERRIER_SYNCESC_Msk (0x20000UL) /*!< SYNCESC (Bitfield-Mask: 0x01) */ + #define R_DSILINK_FERRIER_CTRL_Pos (18UL) /*!< CTRL (Bit 18) */ + #define R_DSILINK_FERRIER_CTRL_Msk (0x40000UL) /*!< CTRL (Bitfield-Mask: 0x01) */ + #define R_DSILINK_FERRIER_CLP0_Pos (19UL) /*!< CLP0 (Bit 19) */ + #define R_DSILINK_FERRIER_CLP0_Msk (0x80000UL) /*!< CLP0 (Bitfield-Mask: 0x01) */ + #define R_DSILINK_FERRIER_CLP1_Pos (20UL) /*!< CLP1 (Bit 20) */ + #define R_DSILINK_FERRIER_CLP1_Msk (0x100000UL) /*!< CLP1 (Bitfield-Mask: 0x01) */ +/* ====================================================== CLSTPTSETR ======================================================= */ + #define R_DSILINK_CLSTPTSETR_CLKSTPT_Pos (2UL) /*!< CLKSTPT (Bit 2) */ + #define R_DSILINK_CLSTPTSETR_CLKSTPT_Msk (0xffcUL) /*!< CLKSTPT (Bitfield-Mask: 0x3ff) */ + #define R_DSILINK_CLSTPTSETR_CLKBFHT_Pos (16UL) /*!< CLKBFHT (Bit 16) */ + #define R_DSILINK_CLSTPTSETR_CLKBFHT_Msk (0xff0000UL) /*!< CLKBFHT (Bitfield-Mask: 0xff) */ + #define R_DSILINK_CLSTPTSETR_CLKKPT_Pos (24UL) /*!< CLKKPT (Bit 24) */ + #define R_DSILINK_CLSTPTSETR_CLKKPT_Msk (0xff000000UL) /*!< CLKKPT (Bitfield-Mask: 0xff) */ +/* ====================================================== LPTRNSTSETR ====================================================== */ + #define R_DSILINK_LPTRNSTSETR_GOLPBKT_Pos (0UL) /*!< GOLPBKT (Bit 0) */ + #define R_DSILINK_LPTRNSTSETR_GOLPBKT_Msk (0x3ffUL) /*!< GOLPBKT (Bitfield-Mask: 0x3ff) */ +/* ========================================================= PLSR ========================================================== */ + #define R_DSILINK_PLSR_CLUAN_Pos (0UL) /*!< CLUAN (Bit 0) */ + #define R_DSILINK_PLSR_CLUAN_Msk (0x1UL) /*!< CLUAN (Bitfield-Mask: 0x01) */ + #define R_DSILINK_PLSR_CLSTP_Pos (1UL) /*!< CLSTP (Bit 1) */ + #define R_DSILINK_PLSR_CLSTP_Msk (0x2UL) /*!< CLSTP (Bitfield-Mask: 0x01) */ + #define R_DSILINK_PLSR_DL0RLE_Pos (2UL) /*!< DL0RLE (Bit 2) */ + #define R_DSILINK_PLSR_DL0RLE_Msk (0x4UL) /*!< DL0RLE (Bitfield-Mask: 0x01) */ + #define R_DSILINK_PLSR_DL0RUE_Pos (3UL) /*!< DL0RUE (Bit 3) */ + #define R_DSILINK_PLSR_DL0RUE_Msk (0x8UL) /*!< DL0RUE (Bitfield-Mask: 0x01) */ + #define R_DSILINK_PLSR_DL0UAN_Pos (4UL) /*!< DL0UAN (Bit 4) */ + #define R_DSILINK_PLSR_DL0UAN_Msk (0x10UL) /*!< DL0UAN (Bitfield-Mask: 0x01) */ + #define R_DSILINK_PLSR_DL1UAN_Pos (5UL) /*!< DL1UAN (Bit 5) */ + #define R_DSILINK_PLSR_DL1UAN_Msk (0x20UL) /*!< DL1UAN (Bitfield-Mask: 0x01) */ + #define R_DSILINK_PLSR_DL0STP_Pos (8UL) /*!< DL0STP (Bit 8) */ + #define R_DSILINK_PLSR_DL0STP_Msk (0x100UL) /*!< DL0STP (Bitfield-Mask: 0x01) */ + #define R_DSILINK_PLSR_DL1STP_Pos (9UL) /*!< DL1STP (Bit 9) */ + #define R_DSILINK_PLSR_DL1STP_Msk (0x200UL) /*!< DL1STP (Bitfield-Mask: 0x01) */ + #define R_DSILINK_PLSR_DL0RX2TX_Pos (12UL) /*!< DL0RX2TX (Bit 12) */ + #define R_DSILINK_PLSR_DL0RX2TX_Msk (0x1000UL) /*!< DL0RX2TX (Bitfield-Mask: 0x01) */ + #define R_DSILINK_PLSR_DL0TX2RX_Pos (13UL) /*!< DL0TX2RX (Bit 13) */ + #define R_DSILINK_PLSR_DL0TX2RX_Msk (0x2000UL) /*!< DL0TX2RX (Bitfield-Mask: 0x01) */ + #define R_DSILINK_PLSR_DL0DIR_Pos (15UL) /*!< DL0DIR (Bit 15) */ + #define R_DSILINK_PLSR_DL0DIR_Msk (0x8000UL) /*!< DL0DIR (Bitfield-Mask: 0x01) */ + #define R_DSILINK_PLSR_CLULPENT_Pos (24UL) /*!< CLULPENT (Bit 24) */ + #define R_DSILINK_PLSR_CLULPENT_Msk (0x1000000UL) /*!< CLULPENT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_PLSR_CLULPEXT_Pos (25UL) /*!< CLULPEXT (Bit 25) */ + #define R_DSILINK_PLSR_CLULPEXT_Msk (0x2000000UL) /*!< CLULPEXT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_PLSR_CLLP2HS_Pos (26UL) /*!< CLLP2HS (Bit 26) */ + #define R_DSILINK_PLSR_CLLP2HS_Msk (0x4000000UL) /*!< CLLP2HS (Bitfield-Mask: 0x01) */ + #define R_DSILINK_PLSR_CLHS2LP_Pos (27UL) /*!< CLHS2LP (Bit 27) */ + #define R_DSILINK_PLSR_CLHS2LP_Msk (0x8000000UL) /*!< CLHS2LP (Bitfield-Mask: 0x01) */ + #define R_DSILINK_PLSR_DLULPENT_Pos (28UL) /*!< DLULPENT (Bit 28) */ + #define R_DSILINK_PLSR_DLULPENT_Msk (0x10000000UL) /*!< DLULPENT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_PLSR_DLULPEXT_Pos (29UL) /*!< DLULPEXT (Bit 29) */ + #define R_DSILINK_PLSR_DLULPEXT_Msk (0x20000000UL) /*!< DLULPEXT (Bitfield-Mask: 0x01) */ +/* ========================================================= PLSCR ========================================================= */ + #define R_DSILINK_PLSCR_DL0RX2TX_Pos (12UL) /*!< DL0RX2TX (Bit 12) */ + #define R_DSILINK_PLSCR_DL0RX2TX_Msk (0x1000UL) /*!< DL0RX2TX (Bitfield-Mask: 0x01) */ + #define R_DSILINK_PLSCR_DL0TX2RX_Pos (13UL) /*!< DL0TX2RX (Bit 13) */ + #define R_DSILINK_PLSCR_DL0TX2RX_Msk (0x2000UL) /*!< DL0TX2RX (Bitfield-Mask: 0x01) */ + #define R_DSILINK_PLSCR_CLULPENT_Pos (24UL) /*!< CLULPENT (Bit 24) */ + #define R_DSILINK_PLSCR_CLULPENT_Msk (0x1000000UL) /*!< CLULPENT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_PLSCR_CLULPEXT_Pos (25UL) /*!< CLULPEXT (Bit 25) */ + #define R_DSILINK_PLSCR_CLULPEXT_Msk (0x2000000UL) /*!< CLULPEXT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_PLSCR_CLLP2HS_Pos (26UL) /*!< CLLP2HS (Bit 26) */ + #define R_DSILINK_PLSCR_CLLP2HS_Msk (0x4000000UL) /*!< CLLP2HS (Bitfield-Mask: 0x01) */ + #define R_DSILINK_PLSCR_CLHS2LP_Pos (27UL) /*!< CLHS2LP (Bit 27) */ + #define R_DSILINK_PLSCR_CLHS2LP_Msk (0x8000000UL) /*!< CLHS2LP (Bitfield-Mask: 0x01) */ + #define R_DSILINK_PLSCR_DLULPENT_Pos (28UL) /*!< DLULPENT (Bit 28) */ + #define R_DSILINK_PLSCR_DLULPENT_Msk (0x10000000UL) /*!< DLULPENT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_PLSCR_DLULPEXT_Pos (29UL) /*!< DLULPEXT (Bit 29) */ + #define R_DSILINK_PLSCR_DLULPEXT_Msk (0x20000000UL) /*!< DLULPEXT (Bitfield-Mask: 0x01) */ +/* ========================================================= PLIER ========================================================= */ + #define R_DSILINK_PLIER_DL0RX2TX_Pos (12UL) /*!< DL0RX2TX (Bit 12) */ + #define R_DSILINK_PLIER_DL0RX2TX_Msk (0x1000UL) /*!< DL0RX2TX (Bitfield-Mask: 0x01) */ + #define R_DSILINK_PLIER_DL0TX2RX_Pos (13UL) /*!< DL0TX2RX (Bit 13) */ + #define R_DSILINK_PLIER_DL0TX2RX_Msk (0x2000UL) /*!< DL0TX2RX (Bitfield-Mask: 0x01) */ + #define R_DSILINK_PLIER_CLULPENT_Pos (24UL) /*!< CLULPENT (Bit 24) */ + #define R_DSILINK_PLIER_CLULPENT_Msk (0x1000000UL) /*!< CLULPENT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_PLIER_CLULPEXT_Pos (25UL) /*!< CLULPEXT (Bit 25) */ + #define R_DSILINK_PLIER_CLULPEXT_Msk (0x2000000UL) /*!< CLULPEXT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_PLIER_CLLP2HS_Pos (26UL) /*!< CLLP2HS (Bit 26) */ + #define R_DSILINK_PLIER_CLLP2HS_Msk (0x4000000UL) /*!< CLLP2HS (Bitfield-Mask: 0x01) */ + #define R_DSILINK_PLIER_CLHS2LP_Pos (27UL) /*!< CLHS2LP (Bit 27) */ + #define R_DSILINK_PLIER_CLHS2LP_Msk (0x8000000UL) /*!< CLHS2LP (Bitfield-Mask: 0x01) */ + #define R_DSILINK_PLIER_DLULPENT_Pos (28UL) /*!< DLULPENT (Bit 28) */ + #define R_DSILINK_PLIER_DLULPENT_Msk (0x10000000UL) /*!< DLULPENT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_PLIER_DLULPEXT_Pos (29UL) /*!< DLULPEXT (Bit 29) */ + #define R_DSILINK_PLIER_DLULPEXT_Msk (0x20000000UL) /*!< DLULPEXT (Bitfield-Mask: 0x01) */ +/* ======================================================== VMSET0R ======================================================== */ + #define R_DSILINK_VMSET0R_VSTART_Pos (0UL) /*!< VSTART (Bit 0) */ + #define R_DSILINK_VMSET0R_VSTART_Msk (0x1UL) /*!< VSTART (Bitfield-Mask: 0x01) */ + #define R_DSILINK_VMSET0R_VSTOP_Pos (1UL) /*!< VSTOP (Bit 1) */ + #define R_DSILINK_VMSET0R_VSTOP_Msk (0x2UL) /*!< VSTOP (Bitfield-Mask: 0x01) */ + #define R_DSILINK_VMSET0R_HSANOLP_Pos (8UL) /*!< HSANOLP (Bit 8) */ + #define R_DSILINK_VMSET0R_HSANOLP_Msk (0x100UL) /*!< HSANOLP (Bitfield-Mask: 0x01) */ + #define R_DSILINK_VMSET0R_HBPNOLP_Pos (9UL) /*!< HBPNOLP (Bit 9) */ + #define R_DSILINK_VMSET0R_HBPNOLP_Msk (0x200UL) /*!< HBPNOLP (Bitfield-Mask: 0x01) */ + #define R_DSILINK_VMSET0R_HFPNOLP_Pos (10UL) /*!< HFPNOLP (Bit 10) */ + #define R_DSILINK_VMSET0R_HFPNOLP_Msk (0x400UL) /*!< HFPNOLP (Bitfield-Mask: 0x01) */ +/* ======================================================== VMSET1R ======================================================== */ + #define R_DSILINK_VMSET1R_DLY_Pos (2UL) /*!< DLY (Bit 2) */ + #define R_DSILINK_VMSET1R_DLY_Msk (0x3ffcUL) /*!< DLY (Bitfield-Mask: 0xfff) */ +/* ========================================================= VMSR ========================================================== */ + #define R_DSILINK_VMSR_START_Pos (0UL) /*!< START (Bit 0) */ + #define R_DSILINK_VMSR_START_Msk (0x1UL) /*!< START (Bitfield-Mask: 0x01) */ + #define R_DSILINK_VMSR_STOP_Pos (1UL) /*!< STOP (Bit 1) */ + #define R_DSILINK_VMSR_STOP_Msk (0x2UL) /*!< STOP (Bitfield-Mask: 0x01) */ + #define R_DSILINK_VMSR_RUNNING_Pos (2UL) /*!< RUNNING (Bit 2) */ + #define R_DSILINK_VMSR_RUNNING_Msk (0x4UL) /*!< RUNNING (Bitfield-Mask: 0x01) */ + #define R_DSILINK_VMSR_VIRDY_Pos (3UL) /*!< VIRDY (Bit 3) */ + #define R_DSILINK_VMSR_VIRDY_Msk (0x8UL) /*!< VIRDY (Bitfield-Mask: 0x01) */ + #define R_DSILINK_VMSR_TIMERR_Pos (20UL) /*!< TIMERR (Bit 20) */ + #define R_DSILINK_VMSR_TIMERR_Msk (0x100000UL) /*!< TIMERR (Bitfield-Mask: 0x01) */ + #define R_DSILINK_VMSR_VBUFUDF_Pos (22UL) /*!< VBUFUDF (Bit 22) */ + #define R_DSILINK_VMSR_VBUFUDF_Msk (0x400000UL) /*!< VBUFUDF (Bitfield-Mask: 0x01) */ + #define R_DSILINK_VMSR_VBUFOVF_Pos (23UL) /*!< VBUFOVF (Bit 23) */ + #define R_DSILINK_VMSR_VBUFOVF_Msk (0x800000UL) /*!< VBUFOVF (Bitfield-Mask: 0x01) */ +/* ========================================================= VMSCR ========================================================= */ + #define R_DSILINK_VMSCR_START_Pos (0UL) /*!< START (Bit 0) */ + #define R_DSILINK_VMSCR_START_Msk (0x1UL) /*!< START (Bitfield-Mask: 0x01) */ + #define R_DSILINK_VMSCR_STOP_Pos (1UL) /*!< STOP (Bit 1) */ + #define R_DSILINK_VMSCR_STOP_Msk (0x2UL) /*!< STOP (Bitfield-Mask: 0x01) */ + #define R_DSILINK_VMSCR_VIRDY_Pos (3UL) /*!< VIRDY (Bit 3) */ + #define R_DSILINK_VMSCR_VIRDY_Msk (0x8UL) /*!< VIRDY (Bitfield-Mask: 0x01) */ + #define R_DSILINK_VMSCR_TIMERR_Pos (20UL) /*!< TIMERR (Bit 20) */ + #define R_DSILINK_VMSCR_TIMERR_Msk (0x100000UL) /*!< TIMERR (Bitfield-Mask: 0x01) */ + #define R_DSILINK_VMSCR_VBUFUDF_Pos (22UL) /*!< VBUFUDF (Bit 22) */ + #define R_DSILINK_VMSCR_VBUFUDF_Msk (0x400000UL) /*!< VBUFUDF (Bitfield-Mask: 0x01) */ + #define R_DSILINK_VMSCR_VBUFOVF_Pos (23UL) /*!< VBUFOVF (Bit 23) */ + #define R_DSILINK_VMSCR_VBUFOVF_Msk (0x800000UL) /*!< VBUFOVF (Bitfield-Mask: 0x01) */ +/* ========================================================= VMIER ========================================================= */ + #define R_DSILINK_VMIER_START_Pos (0UL) /*!< START (Bit 0) */ + #define R_DSILINK_VMIER_START_Msk (0x1UL) /*!< START (Bitfield-Mask: 0x01) */ + #define R_DSILINK_VMIER_STOP_Pos (1UL) /*!< STOP (Bit 1) */ + #define R_DSILINK_VMIER_STOP_Msk (0x2UL) /*!< STOP (Bitfield-Mask: 0x01) */ + #define R_DSILINK_VMIER_VIRDY_Pos (3UL) /*!< VIRDY (Bit 3) */ + #define R_DSILINK_VMIER_VIRDY_Msk (0x8UL) /*!< VIRDY (Bitfield-Mask: 0x01) */ + #define R_DSILINK_VMIER_TIMERR_Pos (20UL) /*!< TIMERR (Bit 20) */ + #define R_DSILINK_VMIER_TIMERR_Msk (0x100000UL) /*!< TIMERR (Bitfield-Mask: 0x01) */ + #define R_DSILINK_VMIER_VBUFUDF_Pos (22UL) /*!< VBUFUDF (Bit 22) */ + #define R_DSILINK_VMIER_VBUFUDF_Msk (0x400000UL) /*!< VBUFUDF (Bitfield-Mask: 0x01) */ + #define R_DSILINK_VMIER_VBUFOVF_Pos (23UL) /*!< VBUFOVF (Bit 23) */ + #define R_DSILINK_VMIER_VBUFOVF_Msk (0x800000UL) /*!< VBUFOVF (Bitfield-Mask: 0x01) */ +/* ======================================================= VMPPSETR ======================================================== */ + #define R_DSILINK_VMPPSETR_TXESYNC_Pos (15UL) /*!< TXESYNC (Bit 15) */ + #define R_DSILINK_VMPPSETR_TXESYNC_Msk (0x8000UL) /*!< TXESYNC (Bitfield-Mask: 0x01) */ + #define R_DSILINK_VMPPSETR_DT_Pos (16UL) /*!< DT (Bit 16) */ + #define R_DSILINK_VMPPSETR_DT_Msk (0x3f0000UL) /*!< DT (Bitfield-Mask: 0x3f) */ + #define R_DSILINK_VMPPSETR_VC_Pos (22UL) /*!< VC (Bit 22) */ + #define R_DSILINK_VMPPSETR_VC_Msk (0xc00000UL) /*!< VC (Bitfield-Mask: 0x03) */ +/* ======================================================= VMVSSETR ======================================================== */ + #define R_DSILINK_VMVSSETR_VSA_Pos (0UL) /*!< VSA (Bit 0) */ + #define R_DSILINK_VMVSSETR_VSA_Msk (0xfffUL) /*!< VSA (Bitfield-Mask: 0xfff) */ + #define R_DSILINK_VMVSSETR_VSPOL_Pos (15UL) /*!< VSPOL (Bit 15) */ + #define R_DSILINK_VMVSSETR_VSPOL_Msk (0x8000UL) /*!< VSPOL (Bitfield-Mask: 0x01) */ + #define R_DSILINK_VMVSSETR_VACT_Pos (16UL) /*!< VACT (Bit 16) */ + #define R_DSILINK_VMVSSETR_VACT_Msk (0x7fff0000UL) /*!< VACT (Bitfield-Mask: 0x7fff) */ +/* ======================================================= VMVPSETR ======================================================== */ + #define R_DSILINK_VMVPSETR_VBP_Pos (0UL) /*!< VBP (Bit 0) */ + #define R_DSILINK_VMVPSETR_VBP_Msk (0x1fffUL) /*!< VBP (Bitfield-Mask: 0x1fff) */ + #define R_DSILINK_VMVPSETR_VFP_Pos (16UL) /*!< VFP (Bit 16) */ + #define R_DSILINK_VMVPSETR_VFP_Msk (0x1fff0000UL) /*!< VFP (Bitfield-Mask: 0x1fff) */ +/* ======================================================= VMHSSETR ======================================================== */ + #define R_DSILINK_VMHSSETR_HSA_Pos (0UL) /*!< HSA (Bit 0) */ + #define R_DSILINK_VMHSSETR_HSA_Msk (0xfffUL) /*!< HSA (Bitfield-Mask: 0xfff) */ + #define R_DSILINK_VMHSSETR_HSPOL_Pos (15UL) /*!< HSPOL (Bit 15) */ + #define R_DSILINK_VMHSSETR_HSPOL_Msk (0x8000UL) /*!< HSPOL (Bitfield-Mask: 0x01) */ + #define R_DSILINK_VMHSSETR_HACT_Pos (16UL) /*!< HACT (Bit 16) */ + #define R_DSILINK_VMHSSETR_HACT_Msk (0x7fff0000UL) /*!< HACT (Bitfield-Mask: 0x7fff) */ +/* ======================================================= VMHPSETR ======================================================== */ + #define R_DSILINK_VMHPSETR_HBP_Pos (0UL) /*!< HBP (Bit 0) */ + #define R_DSILINK_VMHPSETR_HBP_Msk (0x1fffUL) /*!< HBP (Bitfield-Mask: 0x1fff) */ + #define R_DSILINK_VMHPSETR_HFP_Pos (16UL) /*!< HFP (Bit 16) */ + #define R_DSILINK_VMHPSETR_HFP_Msk (0x1fff0000UL) /*!< HFP (Bitfield-Mask: 0x1fff) */ +/* ====================================================== SQCH0SET0R ======================================================= */ + #define R_DSILINK_SQCH0SET0R_START_Pos (0UL) /*!< START (Bit 0) */ + #define R_DSILINK_SQCH0SET0R_START_Msk (0x1UL) /*!< START (Bitfield-Mask: 0x01) */ +/* ======================================================== SQCH0SR ======================================================== */ + #define R_DSILINK_SQCH0SR_RUNNING_Pos (2UL) /*!< RUNNING (Bit 2) */ + #define R_DSILINK_SQCH0SR_RUNNING_Msk (0x4UL) /*!< RUNNING (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0SR_AACTFIN_Pos (4UL) /*!< AACTFIN (Bit 4) */ + #define R_DSILINK_SQCH0SR_AACTFIN_Msk (0x10UL) /*!< AACTFIN (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0SR_ADESFIN_Pos (8UL) /*!< ADESFIN (Bit 8) */ + #define R_DSILINK_SQCH0SR_ADESFIN_Msk (0x100UL) /*!< ADESFIN (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0SR_DABORT_Pos (16UL) /*!< DABORT (Bit 16) */ + #define R_DSILINK_SQCH0SR_DABORT_Msk (0x10000UL) /*!< DABORT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0SR_SIZEERR_Pos (19UL) /*!< SIZEERR (Bit 19) */ + #define R_DSILINK_SQCH0SR_SIZEERR_Msk (0x80000UL) /*!< SIZEERR (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0SR_TXIBERR_Pos (24UL) /*!< TXIBERR (Bit 24) */ + #define R_DSILINK_SQCH0SR_TXIBERR_Msk (0x1000000UL) /*!< TXIBERR (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0SR_RXFERR_Pos (26UL) /*!< RXFERR (Bit 26) */ + #define R_DSILINK_SQCH0SR_RXFERR_Msk (0x4000000UL) /*!< RXFERR (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0SR_RXFAIL_Pos (27UL) /*!< RXFAIL (Bit 27) */ + #define R_DSILINK_SQCH0SR_RXFAIL_Msk (0x8000000UL) /*!< RXFAIL (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0SR_RXPFAIL_Pos (28UL) /*!< RXPFAIL (Bit 28) */ + #define R_DSILINK_SQCH0SR_RXPFAIL_Msk (0x10000000UL) /*!< RXPFAIL (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0SR_RXCORERR_Pos (29UL) /*!< RXCORERR (Bit 29) */ + #define R_DSILINK_SQCH0SR_RXCORERR_Msk (0x20000000UL) /*!< RXCORERR (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0SR_RXAKE_Pos (30UL) /*!< RXAKE (Bit 30) */ + #define R_DSILINK_SQCH0SR_RXAKE_Msk (0x40000000UL) /*!< RXAKE (Bitfield-Mask: 0x01) */ +/* ======================================================= SQCH0SCR ======================================================== */ + #define R_DSILINK_SQCH0SCR_AACTFIN_Pos (4UL) /*!< AACTFIN (Bit 4) */ + #define R_DSILINK_SQCH0SCR_AACTFIN_Msk (0x10UL) /*!< AACTFIN (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0SCR_ADESFIN_Pos (8UL) /*!< ADESFIN (Bit 8) */ + #define R_DSILINK_SQCH0SCR_ADESFIN_Msk (0x100UL) /*!< ADESFIN (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0SCR_DABORT_Pos (16UL) /*!< DABORT (Bit 16) */ + #define R_DSILINK_SQCH0SCR_DABORT_Msk (0x10000UL) /*!< DABORT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0SCR_SIZEERR_Pos (19UL) /*!< SIZEERR (Bit 19) */ + #define R_DSILINK_SQCH0SCR_SIZEERR_Msk (0x80000UL) /*!< SIZEERR (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0SCR_TXIBERR_Pos (24UL) /*!< TXIBERR (Bit 24) */ + #define R_DSILINK_SQCH0SCR_TXIBERR_Msk (0x1000000UL) /*!< TXIBERR (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0SCR_RXFERR_Pos (26UL) /*!< RXFERR (Bit 26) */ + #define R_DSILINK_SQCH0SCR_RXFERR_Msk (0x4000000UL) /*!< RXFERR (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0SCR_RXFAIL_Pos (27UL) /*!< RXFAIL (Bit 27) */ + #define R_DSILINK_SQCH0SCR_RXFAIL_Msk (0x8000000UL) /*!< RXFAIL (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0SCR_RXPFAIL_Pos (28UL) /*!< RXPFAIL (Bit 28) */ + #define R_DSILINK_SQCH0SCR_RXPFAIL_Msk (0x10000000UL) /*!< RXPFAIL (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0SCR_RXCORERR_Pos (29UL) /*!< RXCORERR (Bit 29) */ + #define R_DSILINK_SQCH0SCR_RXCORERR_Msk (0x20000000UL) /*!< RXCORERR (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0SCR_RXAKE_Pos (30UL) /*!< RXAKE (Bit 30) */ + #define R_DSILINK_SQCH0SCR_RXAKE_Msk (0x40000000UL) /*!< RXAKE (Bitfield-Mask: 0x01) */ +/* ======================================================= SQCH0IER ======================================================== */ + #define R_DSILINK_SQCH0IER_AACTFIN_Pos (4UL) /*!< AACTFIN (Bit 4) */ + #define R_DSILINK_SQCH0IER_AACTFIN_Msk (0x10UL) /*!< AACTFIN (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0IER_ADESFIN_Pos (8UL) /*!< ADESFIN (Bit 8) */ + #define R_DSILINK_SQCH0IER_ADESFIN_Msk (0x100UL) /*!< ADESFIN (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0IER_DABORT_Pos (16UL) /*!< DABORT (Bit 16) */ + #define R_DSILINK_SQCH0IER_DABORT_Msk (0x10000UL) /*!< DABORT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0IER_SIZEERR_Pos (19UL) /*!< SIZEERR (Bit 19) */ + #define R_DSILINK_SQCH0IER_SIZEERR_Msk (0x80000UL) /*!< SIZEERR (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0IER_TXIBERR_Pos (24UL) /*!< TXIBERR (Bit 24) */ + #define R_DSILINK_SQCH0IER_TXIBERR_Msk (0x1000000UL) /*!< TXIBERR (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0IER_RXFERR_Pos (26UL) /*!< RXFERR (Bit 26) */ + #define R_DSILINK_SQCH0IER_RXFERR_Msk (0x4000000UL) /*!< RXFERR (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0IER_RXFAIL_Pos (27UL) /*!< RXFAIL (Bit 27) */ + #define R_DSILINK_SQCH0IER_RXFAIL_Msk (0x8000000UL) /*!< RXFAIL (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0IER_RXPFAIL_Pos (28UL) /*!< RXPFAIL (Bit 28) */ + #define R_DSILINK_SQCH0IER_RXPFAIL_Msk (0x10000000UL) /*!< RXPFAIL (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0IER_RXCORERR_Pos (29UL) /*!< RXCORERR (Bit 29) */ + #define R_DSILINK_SQCH0IER_RXCORERR_Msk (0x20000000UL) /*!< RXCORERR (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0IER_RXAKE_Pos (30UL) /*!< RXAKE (Bit 30) */ + #define R_DSILINK_SQCH0IER_RXAKE_Msk (0x40000000UL) /*!< RXAKE (Bitfield-Mask: 0x01) */ +/* ====================================================== SQCH1SET0R ======================================================= */ + #define R_DSILINK_SQCH1SET0R_START_Pos (0UL) /*!< START (Bit 0) */ + #define R_DSILINK_SQCH1SET0R_START_Msk (0x1UL) /*!< START (Bitfield-Mask: 0x01) */ +/* ======================================================== SQCH1SR ======================================================== */ + #define R_DSILINK_SQCH1SR_RUNNING_Pos (2UL) /*!< RUNNING (Bit 2) */ + #define R_DSILINK_SQCH1SR_RUNNING_Msk (0x4UL) /*!< RUNNING (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1SR_AACTFIN_Pos (4UL) /*!< AACTFIN (Bit 4) */ + #define R_DSILINK_SQCH1SR_AACTFIN_Msk (0x10UL) /*!< AACTFIN (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1SR_ADESFIN_Pos (8UL) /*!< ADESFIN (Bit 8) */ + #define R_DSILINK_SQCH1SR_ADESFIN_Msk (0x100UL) /*!< ADESFIN (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1SR_DABORT_Pos (16UL) /*!< DABORT (Bit 16) */ + #define R_DSILINK_SQCH1SR_DABORT_Msk (0x10000UL) /*!< DABORT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1SR_SIZEERR_Pos (19UL) /*!< SIZEERR (Bit 19) */ + #define R_DSILINK_SQCH1SR_SIZEERR_Msk (0x80000UL) /*!< SIZEERR (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1SR_TXIBERR_Pos (24UL) /*!< TXIBERR (Bit 24) */ + #define R_DSILINK_SQCH1SR_TXIBERR_Msk (0x1000000UL) /*!< TXIBERR (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1SR_RXFERR_Pos (26UL) /*!< RXFERR (Bit 26) */ + #define R_DSILINK_SQCH1SR_RXFERR_Msk (0x4000000UL) /*!< RXFERR (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1SR_RXFAIL_Pos (27UL) /*!< RXFAIL (Bit 27) */ + #define R_DSILINK_SQCH1SR_RXFAIL_Msk (0x8000000UL) /*!< RXFAIL (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1SR_RXPFAIL_Pos (28UL) /*!< RXPFAIL (Bit 28) */ + #define R_DSILINK_SQCH1SR_RXPFAIL_Msk (0x10000000UL) /*!< RXPFAIL (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1SR_RXCORERR_Pos (29UL) /*!< RXCORERR (Bit 29) */ + #define R_DSILINK_SQCH1SR_RXCORERR_Msk (0x20000000UL) /*!< RXCORERR (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1SR_RXAKE_Pos (30UL) /*!< RXAKE (Bit 30) */ + #define R_DSILINK_SQCH1SR_RXAKE_Msk (0x40000000UL) /*!< RXAKE (Bitfield-Mask: 0x01) */ +/* ======================================================= SQCH1SCR ======================================================== */ + #define R_DSILINK_SQCH1SCR_AACTFIN_Pos (4UL) /*!< AACTFIN (Bit 4) */ + #define R_DSILINK_SQCH1SCR_AACTFIN_Msk (0x10UL) /*!< AACTFIN (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1SCR_ADESFIN_Pos (8UL) /*!< ADESFIN (Bit 8) */ + #define R_DSILINK_SQCH1SCR_ADESFIN_Msk (0x100UL) /*!< ADESFIN (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1SCR_DABORT_Pos (16UL) /*!< DABORT (Bit 16) */ + #define R_DSILINK_SQCH1SCR_DABORT_Msk (0x10000UL) /*!< DABORT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1SCR_SIZEERR_Pos (19UL) /*!< SIZEERR (Bit 19) */ + #define R_DSILINK_SQCH1SCR_SIZEERR_Msk (0x80000UL) /*!< SIZEERR (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1SCR_TXIBERR_Pos (24UL) /*!< TXIBERR (Bit 24) */ + #define R_DSILINK_SQCH1SCR_TXIBERR_Msk (0x1000000UL) /*!< TXIBERR (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1SCR_RXFERR_Pos (26UL) /*!< RXFERR (Bit 26) */ + #define R_DSILINK_SQCH1SCR_RXFERR_Msk (0x4000000UL) /*!< RXFERR (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1SCR_RXFAIL_Pos (27UL) /*!< RXFAIL (Bit 27) */ + #define R_DSILINK_SQCH1SCR_RXFAIL_Msk (0x8000000UL) /*!< RXFAIL (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1SCR_RXPFAIL_Pos (28UL) /*!< RXPFAIL (Bit 28) */ + #define R_DSILINK_SQCH1SCR_RXPFAIL_Msk (0x10000000UL) /*!< RXPFAIL (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1SCR_RXCORERR_Pos (29UL) /*!< RXCORERR (Bit 29) */ + #define R_DSILINK_SQCH1SCR_RXCORERR_Msk (0x20000000UL) /*!< RXCORERR (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1SCR_RXAKE_Pos (30UL) /*!< RXAKE (Bit 30) */ + #define R_DSILINK_SQCH1SCR_RXAKE_Msk (0x40000000UL) /*!< RXAKE (Bitfield-Mask: 0x01) */ +/* ======================================================= SQCH1IER ======================================================== */ + #define R_DSILINK_SQCH1IER_AACTFIN_Pos (4UL) /*!< AACTFIN (Bit 4) */ + #define R_DSILINK_SQCH1IER_AACTFIN_Msk (0x10UL) /*!< AACTFIN (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1IER_ADESFIN_Pos (8UL) /*!< ADESFIN (Bit 8) */ + #define R_DSILINK_SQCH1IER_ADESFIN_Msk (0x100UL) /*!< ADESFIN (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1IER_DABORT_Pos (16UL) /*!< DABORT (Bit 16) */ + #define R_DSILINK_SQCH1IER_DABORT_Msk (0x10000UL) /*!< DABORT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1IER_SIZEERR_Pos (19UL) /*!< SIZEERR (Bit 19) */ + #define R_DSILINK_SQCH1IER_SIZEERR_Msk (0x80000UL) /*!< SIZEERR (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1IER_TXIBERR_Pos (24UL) /*!< TXIBERR (Bit 24) */ + #define R_DSILINK_SQCH1IER_TXIBERR_Msk (0x1000000UL) /*!< TXIBERR (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1IER_RXFERR_Pos (26UL) /*!< RXFERR (Bit 26) */ + #define R_DSILINK_SQCH1IER_RXFERR_Msk (0x4000000UL) /*!< RXFERR (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1IER_RXFAIL_Pos (27UL) /*!< RXFAIL (Bit 27) */ + #define R_DSILINK_SQCH1IER_RXFAIL_Msk (0x8000000UL) /*!< RXFAIL (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1IER_RXPFAIL_Pos (28UL) /*!< RXPFAIL (Bit 28) */ + #define R_DSILINK_SQCH1IER_RXPFAIL_Msk (0x10000000UL) /*!< RXPFAIL (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1IER_RXCORERR_Pos (29UL) /*!< RXCORERR (Bit 29) */ + #define R_DSILINK_SQCH1IER_RXCORERR_Msk (0x20000000UL) /*!< RXCORERR (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1IER_RXAKE_Pos (30UL) /*!< RXAKE (Bit 30) */ + #define R_DSILINK_SQCH1IER_RXAKE_Msk (0x40000000UL) /*!< RXAKE (Bitfield-Mask: 0x01) */ +/* ====================================================== SQCH0DSC0AR ====================================================== */ + #define R_DSILINK_SQCH0DSC0AR_DATA0_Pos (0UL) /*!< DATA0 (Bit 0) */ + #define R_DSILINK_SQCH0DSC0AR_DATA0_Msk (0xffUL) /*!< DATA0 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_SQCH0DSC0AR_DATA1_Pos (8UL) /*!< DATA1 (Bit 8) */ + #define R_DSILINK_SQCH0DSC0AR_DATA1_Msk (0xff00UL) /*!< DATA1 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_SQCH0DSC0AR_DT_Pos (16UL) /*!< DT (Bit 16) */ + #define R_DSILINK_SQCH0DSC0AR_DT_Msk (0x3f0000UL) /*!< DT (Bitfield-Mask: 0x3f) */ + #define R_DSILINK_SQCH0DSC0AR_VC_Pos (22UL) /*!< VC (Bit 22) */ + #define R_DSILINK_SQCH0DSC0AR_VC_Msk (0xc00000UL) /*!< VC (Bitfield-Mask: 0x03) */ + #define R_DSILINK_SQCH0DSC0AR_FMT_Pos (24UL) /*!< FMT (Bit 24) */ + #define R_DSILINK_SQCH0DSC0AR_FMT_Msk (0x1000000UL) /*!< FMT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0DSC0AR_SPD_Pos (25UL) /*!< SPD (Bit 25) */ + #define R_DSILINK_SQCH0DSC0AR_SPD_Msk (0x2000000UL) /*!< SPD (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0DSC0AR_BTA_Pos (26UL) /*!< BTA (Bit 26) */ + #define R_DSILINK_SQCH0DSC0AR_BTA_Msk (0xc000000UL) /*!< BTA (Bitfield-Mask: 0x03) */ + #define R_DSILINK_SQCH0DSC0AR_NXACT_Pos (28UL) /*!< NXACT (Bit 28) */ + #define R_DSILINK_SQCH0DSC0AR_NXACT_Msk (0x30000000UL) /*!< NXACT (Bitfield-Mask: 0x03) */ +/* ====================================================== SQCH0DSC1AR ====================================================== */ + #define R_DSILINK_SQCH0DSC1AR_DATA0_Pos (0UL) /*!< DATA0 (Bit 0) */ + #define R_DSILINK_SQCH0DSC1AR_DATA0_Msk (0xffUL) /*!< DATA0 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_SQCH0DSC1AR_DATA1_Pos (8UL) /*!< DATA1 (Bit 8) */ + #define R_DSILINK_SQCH0DSC1AR_DATA1_Msk (0xff00UL) /*!< DATA1 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_SQCH0DSC1AR_DT_Pos (16UL) /*!< DT (Bit 16) */ + #define R_DSILINK_SQCH0DSC1AR_DT_Msk (0x3f0000UL) /*!< DT (Bitfield-Mask: 0x3f) */ + #define R_DSILINK_SQCH0DSC1AR_VC_Pos (22UL) /*!< VC (Bit 22) */ + #define R_DSILINK_SQCH0DSC1AR_VC_Msk (0xc00000UL) /*!< VC (Bitfield-Mask: 0x03) */ + #define R_DSILINK_SQCH0DSC1AR_FMT_Pos (24UL) /*!< FMT (Bit 24) */ + #define R_DSILINK_SQCH0DSC1AR_FMT_Msk (0x1000000UL) /*!< FMT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0DSC1AR_SPD_Pos (25UL) /*!< SPD (Bit 25) */ + #define R_DSILINK_SQCH0DSC1AR_SPD_Msk (0x2000000UL) /*!< SPD (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0DSC1AR_BTA_Pos (26UL) /*!< BTA (Bit 26) */ + #define R_DSILINK_SQCH0DSC1AR_BTA_Msk (0xc000000UL) /*!< BTA (Bitfield-Mask: 0x03) */ + #define R_DSILINK_SQCH0DSC1AR_NXACT_Pos (28UL) /*!< NXACT (Bit 28) */ + #define R_DSILINK_SQCH0DSC1AR_NXACT_Msk (0x30000000UL) /*!< NXACT (Bitfield-Mask: 0x03) */ +/* ====================================================== SQCH0DSC2AR ====================================================== */ + #define R_DSILINK_SQCH0DSC2AR_DATA0_Pos (0UL) /*!< DATA0 (Bit 0) */ + #define R_DSILINK_SQCH0DSC2AR_DATA0_Msk (0xffUL) /*!< DATA0 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_SQCH0DSC2AR_DATA1_Pos (8UL) /*!< DATA1 (Bit 8) */ + #define R_DSILINK_SQCH0DSC2AR_DATA1_Msk (0xff00UL) /*!< DATA1 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_SQCH0DSC2AR_DT_Pos (16UL) /*!< DT (Bit 16) */ + #define R_DSILINK_SQCH0DSC2AR_DT_Msk (0x3f0000UL) /*!< DT (Bitfield-Mask: 0x3f) */ + #define R_DSILINK_SQCH0DSC2AR_VC_Pos (22UL) /*!< VC (Bit 22) */ + #define R_DSILINK_SQCH0DSC2AR_VC_Msk (0xc00000UL) /*!< VC (Bitfield-Mask: 0x03) */ + #define R_DSILINK_SQCH0DSC2AR_FMT_Pos (24UL) /*!< FMT (Bit 24) */ + #define R_DSILINK_SQCH0DSC2AR_FMT_Msk (0x1000000UL) /*!< FMT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0DSC2AR_SPD_Pos (25UL) /*!< SPD (Bit 25) */ + #define R_DSILINK_SQCH0DSC2AR_SPD_Msk (0x2000000UL) /*!< SPD (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0DSC2AR_BTA_Pos (26UL) /*!< BTA (Bit 26) */ + #define R_DSILINK_SQCH0DSC2AR_BTA_Msk (0xc000000UL) /*!< BTA (Bitfield-Mask: 0x03) */ + #define R_DSILINK_SQCH0DSC2AR_NXACT_Pos (28UL) /*!< NXACT (Bit 28) */ + #define R_DSILINK_SQCH0DSC2AR_NXACT_Msk (0x30000000UL) /*!< NXACT (Bitfield-Mask: 0x03) */ +/* ====================================================== SQCH0DSC3AR ====================================================== */ + #define R_DSILINK_SQCH0DSC3AR_DATA0_Pos (0UL) /*!< DATA0 (Bit 0) */ + #define R_DSILINK_SQCH0DSC3AR_DATA0_Msk (0xffUL) /*!< DATA0 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_SQCH0DSC3AR_DATA1_Pos (8UL) /*!< DATA1 (Bit 8) */ + #define R_DSILINK_SQCH0DSC3AR_DATA1_Msk (0xff00UL) /*!< DATA1 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_SQCH0DSC3AR_DT_Pos (16UL) /*!< DT (Bit 16) */ + #define R_DSILINK_SQCH0DSC3AR_DT_Msk (0x3f0000UL) /*!< DT (Bitfield-Mask: 0x3f) */ + #define R_DSILINK_SQCH0DSC3AR_VC_Pos (22UL) /*!< VC (Bit 22) */ + #define R_DSILINK_SQCH0DSC3AR_VC_Msk (0xc00000UL) /*!< VC (Bitfield-Mask: 0x03) */ + #define R_DSILINK_SQCH0DSC3AR_FMT_Pos (24UL) /*!< FMT (Bit 24) */ + #define R_DSILINK_SQCH0DSC3AR_FMT_Msk (0x1000000UL) /*!< FMT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0DSC3AR_SPD_Pos (25UL) /*!< SPD (Bit 25) */ + #define R_DSILINK_SQCH0DSC3AR_SPD_Msk (0x2000000UL) /*!< SPD (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0DSC3AR_BTA_Pos (26UL) /*!< BTA (Bit 26) */ + #define R_DSILINK_SQCH0DSC3AR_BTA_Msk (0xc000000UL) /*!< BTA (Bitfield-Mask: 0x03) */ + #define R_DSILINK_SQCH0DSC3AR_NXACT_Pos (28UL) /*!< NXACT (Bit 28) */ + #define R_DSILINK_SQCH0DSC3AR_NXACT_Msk (0x30000000UL) /*!< NXACT (Bitfield-Mask: 0x03) */ +/* ====================================================== SQCH0DSC4AR ====================================================== */ + #define R_DSILINK_SQCH0DSC4AR_DATA0_Pos (0UL) /*!< DATA0 (Bit 0) */ + #define R_DSILINK_SQCH0DSC4AR_DATA0_Msk (0xffUL) /*!< DATA0 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_SQCH0DSC4AR_DATA1_Pos (8UL) /*!< DATA1 (Bit 8) */ + #define R_DSILINK_SQCH0DSC4AR_DATA1_Msk (0xff00UL) /*!< DATA1 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_SQCH0DSC4AR_DT_Pos (16UL) /*!< DT (Bit 16) */ + #define R_DSILINK_SQCH0DSC4AR_DT_Msk (0x3f0000UL) /*!< DT (Bitfield-Mask: 0x3f) */ + #define R_DSILINK_SQCH0DSC4AR_VC_Pos (22UL) /*!< VC (Bit 22) */ + #define R_DSILINK_SQCH0DSC4AR_VC_Msk (0xc00000UL) /*!< VC (Bitfield-Mask: 0x03) */ + #define R_DSILINK_SQCH0DSC4AR_FMT_Pos (24UL) /*!< FMT (Bit 24) */ + #define R_DSILINK_SQCH0DSC4AR_FMT_Msk (0x1000000UL) /*!< FMT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0DSC4AR_SPD_Pos (25UL) /*!< SPD (Bit 25) */ + #define R_DSILINK_SQCH0DSC4AR_SPD_Msk (0x2000000UL) /*!< SPD (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0DSC4AR_BTA_Pos (26UL) /*!< BTA (Bit 26) */ + #define R_DSILINK_SQCH0DSC4AR_BTA_Msk (0xc000000UL) /*!< BTA (Bitfield-Mask: 0x03) */ + #define R_DSILINK_SQCH0DSC4AR_NXACT_Pos (28UL) /*!< NXACT (Bit 28) */ + #define R_DSILINK_SQCH0DSC4AR_NXACT_Msk (0x30000000UL) /*!< NXACT (Bitfield-Mask: 0x03) */ +/* ====================================================== SQCH0DSC5AR ====================================================== */ + #define R_DSILINK_SQCH0DSC5AR_DATA0_Pos (0UL) /*!< DATA0 (Bit 0) */ + #define R_DSILINK_SQCH0DSC5AR_DATA0_Msk (0xffUL) /*!< DATA0 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_SQCH0DSC5AR_DATA1_Pos (8UL) /*!< DATA1 (Bit 8) */ + #define R_DSILINK_SQCH0DSC5AR_DATA1_Msk (0xff00UL) /*!< DATA1 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_SQCH0DSC5AR_DT_Pos (16UL) /*!< DT (Bit 16) */ + #define R_DSILINK_SQCH0DSC5AR_DT_Msk (0x3f0000UL) /*!< DT (Bitfield-Mask: 0x3f) */ + #define R_DSILINK_SQCH0DSC5AR_VC_Pos (22UL) /*!< VC (Bit 22) */ + #define R_DSILINK_SQCH0DSC5AR_VC_Msk (0xc00000UL) /*!< VC (Bitfield-Mask: 0x03) */ + #define R_DSILINK_SQCH0DSC5AR_FMT_Pos (24UL) /*!< FMT (Bit 24) */ + #define R_DSILINK_SQCH0DSC5AR_FMT_Msk (0x1000000UL) /*!< FMT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0DSC5AR_SPD_Pos (25UL) /*!< SPD (Bit 25) */ + #define R_DSILINK_SQCH0DSC5AR_SPD_Msk (0x2000000UL) /*!< SPD (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0DSC5AR_BTA_Pos (26UL) /*!< BTA (Bit 26) */ + #define R_DSILINK_SQCH0DSC5AR_BTA_Msk (0xc000000UL) /*!< BTA (Bitfield-Mask: 0x03) */ + #define R_DSILINK_SQCH0DSC5AR_NXACT_Pos (28UL) /*!< NXACT (Bit 28) */ + #define R_DSILINK_SQCH0DSC5AR_NXACT_Msk (0x30000000UL) /*!< NXACT (Bitfield-Mask: 0x03) */ +/* ====================================================== SQCH0DSC6AR ====================================================== */ + #define R_DSILINK_SQCH0DSC6AR_DATA0_Pos (0UL) /*!< DATA0 (Bit 0) */ + #define R_DSILINK_SQCH0DSC6AR_DATA0_Msk (0xffUL) /*!< DATA0 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_SQCH0DSC6AR_DATA1_Pos (8UL) /*!< DATA1 (Bit 8) */ + #define R_DSILINK_SQCH0DSC6AR_DATA1_Msk (0xff00UL) /*!< DATA1 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_SQCH0DSC6AR_DT_Pos (16UL) /*!< DT (Bit 16) */ + #define R_DSILINK_SQCH0DSC6AR_DT_Msk (0x3f0000UL) /*!< DT (Bitfield-Mask: 0x3f) */ + #define R_DSILINK_SQCH0DSC6AR_VC_Pos (22UL) /*!< VC (Bit 22) */ + #define R_DSILINK_SQCH0DSC6AR_VC_Msk (0xc00000UL) /*!< VC (Bitfield-Mask: 0x03) */ + #define R_DSILINK_SQCH0DSC6AR_FMT_Pos (24UL) /*!< FMT (Bit 24) */ + #define R_DSILINK_SQCH0DSC6AR_FMT_Msk (0x1000000UL) /*!< FMT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0DSC6AR_SPD_Pos (25UL) /*!< SPD (Bit 25) */ + #define R_DSILINK_SQCH0DSC6AR_SPD_Msk (0x2000000UL) /*!< SPD (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0DSC6AR_BTA_Pos (26UL) /*!< BTA (Bit 26) */ + #define R_DSILINK_SQCH0DSC6AR_BTA_Msk (0xc000000UL) /*!< BTA (Bitfield-Mask: 0x03) */ + #define R_DSILINK_SQCH0DSC6AR_NXACT_Pos (28UL) /*!< NXACT (Bit 28) */ + #define R_DSILINK_SQCH0DSC6AR_NXACT_Msk (0x30000000UL) /*!< NXACT (Bitfield-Mask: 0x03) */ +/* ====================================================== SQCH0DSC7AR ====================================================== */ + #define R_DSILINK_SQCH0DSC7AR_DATA0_Pos (0UL) /*!< DATA0 (Bit 0) */ + #define R_DSILINK_SQCH0DSC7AR_DATA0_Msk (0xffUL) /*!< DATA0 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_SQCH0DSC7AR_DATA1_Pos (8UL) /*!< DATA1 (Bit 8) */ + #define R_DSILINK_SQCH0DSC7AR_DATA1_Msk (0xff00UL) /*!< DATA1 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_SQCH0DSC7AR_DT_Pos (16UL) /*!< DT (Bit 16) */ + #define R_DSILINK_SQCH0DSC7AR_DT_Msk (0x3f0000UL) /*!< DT (Bitfield-Mask: 0x3f) */ + #define R_DSILINK_SQCH0DSC7AR_VC_Pos (22UL) /*!< VC (Bit 22) */ + #define R_DSILINK_SQCH0DSC7AR_VC_Msk (0xc00000UL) /*!< VC (Bitfield-Mask: 0x03) */ + #define R_DSILINK_SQCH0DSC7AR_FMT_Pos (24UL) /*!< FMT (Bit 24) */ + #define R_DSILINK_SQCH0DSC7AR_FMT_Msk (0x1000000UL) /*!< FMT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0DSC7AR_SPD_Pos (25UL) /*!< SPD (Bit 25) */ + #define R_DSILINK_SQCH0DSC7AR_SPD_Msk (0x2000000UL) /*!< SPD (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0DSC7AR_BTA_Pos (26UL) /*!< BTA (Bit 26) */ + #define R_DSILINK_SQCH0DSC7AR_BTA_Msk (0xc000000UL) /*!< BTA (Bitfield-Mask: 0x03) */ + #define R_DSILINK_SQCH0DSC7AR_NXACT_Pos (28UL) /*!< NXACT (Bit 28) */ + #define R_DSILINK_SQCH0DSC7AR_NXACT_Msk (0x30000000UL) /*!< NXACT (Bitfield-Mask: 0x03) */ +/* ===================================================== SQCH0DSC0AR_L ===================================================== */ + #define R_DSILINK_SQCH0DSC0AR_L_DATA0_Pos (0UL) /*!< DATA0 (Bit 0) */ + #define R_DSILINK_SQCH0DSC0AR_L_DATA0_Msk (0xffUL) /*!< DATA0 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_SQCH0DSC0AR_L_DATA1_Pos (8UL) /*!< DATA1 (Bit 8) */ + #define R_DSILINK_SQCH0DSC0AR_L_DATA1_Msk (0xff00UL) /*!< DATA1 (Bitfield-Mask: 0xff) */ +/* ===================================================== SQCH0DSC1AR_L ===================================================== */ + #define R_DSILINK_SQCH0DSC1AR_L_DATA0_Pos (0UL) /*!< DATA0 (Bit 0) */ + #define R_DSILINK_SQCH0DSC1AR_L_DATA0_Msk (0xffUL) /*!< DATA0 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_SQCH0DSC1AR_L_DATA1_Pos (8UL) /*!< DATA1 (Bit 8) */ + #define R_DSILINK_SQCH0DSC1AR_L_DATA1_Msk (0xff00UL) /*!< DATA1 (Bitfield-Mask: 0xff) */ +/* ===================================================== SQCH0DSC2AR_L ===================================================== */ + #define R_DSILINK_SQCH0DSC2AR_L_DATA0_Pos (0UL) /*!< DATA0 (Bit 0) */ + #define R_DSILINK_SQCH0DSC2AR_L_DATA0_Msk (0xffUL) /*!< DATA0 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_SQCH0DSC2AR_L_DATA1_Pos (8UL) /*!< DATA1 (Bit 8) */ + #define R_DSILINK_SQCH0DSC2AR_L_DATA1_Msk (0xff00UL) /*!< DATA1 (Bitfield-Mask: 0xff) */ +/* ===================================================== SQCH0DSC3AR_L ===================================================== */ + #define R_DSILINK_SQCH0DSC3AR_L_DATA0_Pos (0UL) /*!< DATA0 (Bit 0) */ + #define R_DSILINK_SQCH0DSC3AR_L_DATA0_Msk (0xffUL) /*!< DATA0 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_SQCH0DSC3AR_L_DATA1_Pos (8UL) /*!< DATA1 (Bit 8) */ + #define R_DSILINK_SQCH0DSC3AR_L_DATA1_Msk (0xff00UL) /*!< DATA1 (Bitfield-Mask: 0xff) */ +/* ===================================================== SQCH0DSC4AR_L ===================================================== */ + #define R_DSILINK_SQCH0DSC4AR_L_DATA0_Pos (0UL) /*!< DATA0 (Bit 0) */ + #define R_DSILINK_SQCH0DSC4AR_L_DATA0_Msk (0xffUL) /*!< DATA0 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_SQCH0DSC4AR_L_DATA1_Pos (8UL) /*!< DATA1 (Bit 8) */ + #define R_DSILINK_SQCH0DSC4AR_L_DATA1_Msk (0xff00UL) /*!< DATA1 (Bitfield-Mask: 0xff) */ +/* ===================================================== SQCH0DSC5AR_L ===================================================== */ + #define R_DSILINK_SQCH0DSC5AR_L_DATA0_Pos (0UL) /*!< DATA0 (Bit 0) */ + #define R_DSILINK_SQCH0DSC5AR_L_DATA0_Msk (0xffUL) /*!< DATA0 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_SQCH0DSC5AR_L_DATA1_Pos (8UL) /*!< DATA1 (Bit 8) */ + #define R_DSILINK_SQCH0DSC5AR_L_DATA1_Msk (0xff00UL) /*!< DATA1 (Bitfield-Mask: 0xff) */ +/* ===================================================== SQCH0DSC6AR_L ===================================================== */ + #define R_DSILINK_SQCH0DSC6AR_L_DATA0_Pos (0UL) /*!< DATA0 (Bit 0) */ + #define R_DSILINK_SQCH0DSC6AR_L_DATA0_Msk (0xffUL) /*!< DATA0 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_SQCH0DSC6AR_L_DATA1_Pos (8UL) /*!< DATA1 (Bit 8) */ + #define R_DSILINK_SQCH0DSC6AR_L_DATA1_Msk (0xff00UL) /*!< DATA1 (Bitfield-Mask: 0xff) */ +/* ===================================================== SQCH0DSC7AR_L ===================================================== */ + #define R_DSILINK_SQCH0DSC7AR_L_DATA0_Pos (0UL) /*!< DATA0 (Bit 0) */ + #define R_DSILINK_SQCH0DSC7AR_L_DATA0_Msk (0xffUL) /*!< DATA0 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_SQCH0DSC7AR_L_DATA1_Pos (8UL) /*!< DATA1 (Bit 8) */ + #define R_DSILINK_SQCH0DSC7AR_L_DATA1_Msk (0xff00UL) /*!< DATA1 (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH0DSC0AR_LL ===================================================== */ + #define R_DSILINK_SQCH0DSC0AR_LL_DATA0_Pos (0UL) /*!< DATA0 (Bit 0) */ + #define R_DSILINK_SQCH0DSC0AR_LL_DATA0_Msk (0xffUL) /*!< DATA0 (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH0DSC1AR_LL ===================================================== */ + #define R_DSILINK_SQCH0DSC1AR_LL_DATA0_Pos (0UL) /*!< DATA0 (Bit 0) */ + #define R_DSILINK_SQCH0DSC1AR_LL_DATA0_Msk (0xffUL) /*!< DATA0 (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH0DSC2AR_LL ===================================================== */ + #define R_DSILINK_SQCH0DSC2AR_LL_DATA0_Pos (0UL) /*!< DATA0 (Bit 0) */ + #define R_DSILINK_SQCH0DSC2AR_LL_DATA0_Msk (0xffUL) /*!< DATA0 (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH0DSC3AR_LL ===================================================== */ + #define R_DSILINK_SQCH0DSC3AR_LL_DATA0_Pos (0UL) /*!< DATA0 (Bit 0) */ + #define R_DSILINK_SQCH0DSC3AR_LL_DATA0_Msk (0xffUL) /*!< DATA0 (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH0DSC4AR_LL ===================================================== */ + #define R_DSILINK_SQCH0DSC4AR_LL_DATA0_Pos (0UL) /*!< DATA0 (Bit 0) */ + #define R_DSILINK_SQCH0DSC4AR_LL_DATA0_Msk (0xffUL) /*!< DATA0 (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH0DSC5AR_LL ===================================================== */ + #define R_DSILINK_SQCH0DSC5AR_LL_DATA0_Pos (0UL) /*!< DATA0 (Bit 0) */ + #define R_DSILINK_SQCH0DSC5AR_LL_DATA0_Msk (0xffUL) /*!< DATA0 (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH0DSC6AR_LL ===================================================== */ + #define R_DSILINK_SQCH0DSC6AR_LL_DATA0_Pos (0UL) /*!< DATA0 (Bit 0) */ + #define R_DSILINK_SQCH0DSC6AR_LL_DATA0_Msk (0xffUL) /*!< DATA0 (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH0DSC7AR_LL ===================================================== */ + #define R_DSILINK_SQCH0DSC7AR_LL_DATA0_Pos (0UL) /*!< DATA0 (Bit 0) */ + #define R_DSILINK_SQCH0DSC7AR_LL_DATA0_Msk (0xffUL) /*!< DATA0 (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH0DSC0AR_LH ===================================================== */ + #define R_DSILINK_SQCH0DSC0AR_LH_DATA1_Pos (0UL) /*!< DATA1 (Bit 0) */ + #define R_DSILINK_SQCH0DSC0AR_LH_DATA1_Msk (0xffUL) /*!< DATA1 (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH0DSC1AR_LH ===================================================== */ + #define R_DSILINK_SQCH0DSC1AR_LH_DATA1_Pos (0UL) /*!< DATA1 (Bit 0) */ + #define R_DSILINK_SQCH0DSC1AR_LH_DATA1_Msk (0xffUL) /*!< DATA1 (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH0DSC2AR_LH ===================================================== */ + #define R_DSILINK_SQCH0DSC2AR_LH_DATA1_Pos (0UL) /*!< DATA1 (Bit 0) */ + #define R_DSILINK_SQCH0DSC2AR_LH_DATA1_Msk (0xffUL) /*!< DATA1 (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH0DSC3AR_LH ===================================================== */ + #define R_DSILINK_SQCH0DSC3AR_LH_DATA1_Pos (0UL) /*!< DATA1 (Bit 0) */ + #define R_DSILINK_SQCH0DSC3AR_LH_DATA1_Msk (0xffUL) /*!< DATA1 (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH0DSC4AR_LH ===================================================== */ + #define R_DSILINK_SQCH0DSC4AR_LH_DATA1_Pos (0UL) /*!< DATA1 (Bit 0) */ + #define R_DSILINK_SQCH0DSC4AR_LH_DATA1_Msk (0xffUL) /*!< DATA1 (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH0DSC5AR_LH ===================================================== */ + #define R_DSILINK_SQCH0DSC5AR_LH_DATA1_Pos (0UL) /*!< DATA1 (Bit 0) */ + #define R_DSILINK_SQCH0DSC5AR_LH_DATA1_Msk (0xffUL) /*!< DATA1 (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH0DSC6AR_LH ===================================================== */ + #define R_DSILINK_SQCH0DSC6AR_LH_DATA1_Pos (0UL) /*!< DATA1 (Bit 0) */ + #define R_DSILINK_SQCH0DSC6AR_LH_DATA1_Msk (0xffUL) /*!< DATA1 (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH0DSC7AR_LH ===================================================== */ + #define R_DSILINK_SQCH0DSC7AR_LH_DATA1_Pos (0UL) /*!< DATA1 (Bit 0) */ + #define R_DSILINK_SQCH0DSC7AR_LH_DATA1_Msk (0xffUL) /*!< DATA1 (Bitfield-Mask: 0xff) */ +/* ===================================================== SQCH0DSC0AR_H ===================================================== */ + #define R_DSILINK_SQCH0DSC0AR_H_DT_Pos (0UL) /*!< DT (Bit 0) */ + #define R_DSILINK_SQCH0DSC0AR_H_DT_Msk (0x3fUL) /*!< DT (Bitfield-Mask: 0x3f) */ + #define R_DSILINK_SQCH0DSC0AR_H_VC_Pos (6UL) /*!< VC (Bit 6) */ + #define R_DSILINK_SQCH0DSC0AR_H_VC_Msk (0xc0UL) /*!< VC (Bitfield-Mask: 0x03) */ + #define R_DSILINK_SQCH0DSC0AR_H_FMT_Pos (8UL) /*!< FMT (Bit 8) */ + #define R_DSILINK_SQCH0DSC0AR_H_FMT_Msk (0x100UL) /*!< FMT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0DSC0AR_H_SPD_Pos (9UL) /*!< SPD (Bit 9) */ + #define R_DSILINK_SQCH0DSC0AR_H_SPD_Msk (0x200UL) /*!< SPD (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0DSC0AR_H_BTA_Pos (10UL) /*!< BTA (Bit 10) */ + #define R_DSILINK_SQCH0DSC0AR_H_BTA_Msk (0xc00UL) /*!< BTA (Bitfield-Mask: 0x03) */ + #define R_DSILINK_SQCH0DSC0AR_H_NXACT_Pos (12UL) /*!< NXACT (Bit 12) */ + #define R_DSILINK_SQCH0DSC0AR_H_NXACT_Msk (0x3000UL) /*!< NXACT (Bitfield-Mask: 0x03) */ +/* ===================================================== SQCH0DSC1AR_H ===================================================== */ + #define R_DSILINK_SQCH0DSC1AR_H_DT_Pos (0UL) /*!< DT (Bit 0) */ + #define R_DSILINK_SQCH0DSC1AR_H_DT_Msk (0x3fUL) /*!< DT (Bitfield-Mask: 0x3f) */ + #define R_DSILINK_SQCH0DSC1AR_H_VC_Pos (6UL) /*!< VC (Bit 6) */ + #define R_DSILINK_SQCH0DSC1AR_H_VC_Msk (0xc0UL) /*!< VC (Bitfield-Mask: 0x03) */ + #define R_DSILINK_SQCH0DSC1AR_H_FMT_Pos (8UL) /*!< FMT (Bit 8) */ + #define R_DSILINK_SQCH0DSC1AR_H_FMT_Msk (0x100UL) /*!< FMT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0DSC1AR_H_SPD_Pos (9UL) /*!< SPD (Bit 9) */ + #define R_DSILINK_SQCH0DSC1AR_H_SPD_Msk (0x200UL) /*!< SPD (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0DSC1AR_H_BTA_Pos (10UL) /*!< BTA (Bit 10) */ + #define R_DSILINK_SQCH0DSC1AR_H_BTA_Msk (0xc00UL) /*!< BTA (Bitfield-Mask: 0x03) */ + #define R_DSILINK_SQCH0DSC1AR_H_NXACT_Pos (12UL) /*!< NXACT (Bit 12) */ + #define R_DSILINK_SQCH0DSC1AR_H_NXACT_Msk (0x3000UL) /*!< NXACT (Bitfield-Mask: 0x03) */ +/* ===================================================== SQCH0DSC2AR_H ===================================================== */ + #define R_DSILINK_SQCH0DSC2AR_H_DT_Pos (0UL) /*!< DT (Bit 0) */ + #define R_DSILINK_SQCH0DSC2AR_H_DT_Msk (0x3fUL) /*!< DT (Bitfield-Mask: 0x3f) */ + #define R_DSILINK_SQCH0DSC2AR_H_VC_Pos (6UL) /*!< VC (Bit 6) */ + #define R_DSILINK_SQCH0DSC2AR_H_VC_Msk (0xc0UL) /*!< VC (Bitfield-Mask: 0x03) */ + #define R_DSILINK_SQCH0DSC2AR_H_FMT_Pos (8UL) /*!< FMT (Bit 8) */ + #define R_DSILINK_SQCH0DSC2AR_H_FMT_Msk (0x100UL) /*!< FMT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0DSC2AR_H_SPD_Pos (9UL) /*!< SPD (Bit 9) */ + #define R_DSILINK_SQCH0DSC2AR_H_SPD_Msk (0x200UL) /*!< SPD (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0DSC2AR_H_BTA_Pos (10UL) /*!< BTA (Bit 10) */ + #define R_DSILINK_SQCH0DSC2AR_H_BTA_Msk (0xc00UL) /*!< BTA (Bitfield-Mask: 0x03) */ + #define R_DSILINK_SQCH0DSC2AR_H_NXACT_Pos (12UL) /*!< NXACT (Bit 12) */ + #define R_DSILINK_SQCH0DSC2AR_H_NXACT_Msk (0x3000UL) /*!< NXACT (Bitfield-Mask: 0x03) */ +/* ===================================================== SQCH0DSC3AR_H ===================================================== */ + #define R_DSILINK_SQCH0DSC3AR_H_DT_Pos (0UL) /*!< DT (Bit 0) */ + #define R_DSILINK_SQCH0DSC3AR_H_DT_Msk (0x3fUL) /*!< DT (Bitfield-Mask: 0x3f) */ + #define R_DSILINK_SQCH0DSC3AR_H_VC_Pos (6UL) /*!< VC (Bit 6) */ + #define R_DSILINK_SQCH0DSC3AR_H_VC_Msk (0xc0UL) /*!< VC (Bitfield-Mask: 0x03) */ + #define R_DSILINK_SQCH0DSC3AR_H_FMT_Pos (8UL) /*!< FMT (Bit 8) */ + #define R_DSILINK_SQCH0DSC3AR_H_FMT_Msk (0x100UL) /*!< FMT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0DSC3AR_H_SPD_Pos (9UL) /*!< SPD (Bit 9) */ + #define R_DSILINK_SQCH0DSC3AR_H_SPD_Msk (0x200UL) /*!< SPD (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0DSC3AR_H_BTA_Pos (10UL) /*!< BTA (Bit 10) */ + #define R_DSILINK_SQCH0DSC3AR_H_BTA_Msk (0xc00UL) /*!< BTA (Bitfield-Mask: 0x03) */ + #define R_DSILINK_SQCH0DSC3AR_H_NXACT_Pos (12UL) /*!< NXACT (Bit 12) */ + #define R_DSILINK_SQCH0DSC3AR_H_NXACT_Msk (0x3000UL) /*!< NXACT (Bitfield-Mask: 0x03) */ +/* ===================================================== SQCH0DSC4AR_H ===================================================== */ + #define R_DSILINK_SQCH0DSC4AR_H_DT_Pos (0UL) /*!< DT (Bit 0) */ + #define R_DSILINK_SQCH0DSC4AR_H_DT_Msk (0x3fUL) /*!< DT (Bitfield-Mask: 0x3f) */ + #define R_DSILINK_SQCH0DSC4AR_H_VC_Pos (6UL) /*!< VC (Bit 6) */ + #define R_DSILINK_SQCH0DSC4AR_H_VC_Msk (0xc0UL) /*!< VC (Bitfield-Mask: 0x03) */ + #define R_DSILINK_SQCH0DSC4AR_H_FMT_Pos (8UL) /*!< FMT (Bit 8) */ + #define R_DSILINK_SQCH0DSC4AR_H_FMT_Msk (0x100UL) /*!< FMT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0DSC4AR_H_SPD_Pos (9UL) /*!< SPD (Bit 9) */ + #define R_DSILINK_SQCH0DSC4AR_H_SPD_Msk (0x200UL) /*!< SPD (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0DSC4AR_H_BTA_Pos (10UL) /*!< BTA (Bit 10) */ + #define R_DSILINK_SQCH0DSC4AR_H_BTA_Msk (0xc00UL) /*!< BTA (Bitfield-Mask: 0x03) */ + #define R_DSILINK_SQCH0DSC4AR_H_NXACT_Pos (12UL) /*!< NXACT (Bit 12) */ + #define R_DSILINK_SQCH0DSC4AR_H_NXACT_Msk (0x3000UL) /*!< NXACT (Bitfield-Mask: 0x03) */ +/* ===================================================== SQCH0DSC5AR_H ===================================================== */ + #define R_DSILINK_SQCH0DSC5AR_H_DT_Pos (0UL) /*!< DT (Bit 0) */ + #define R_DSILINK_SQCH0DSC5AR_H_DT_Msk (0x3fUL) /*!< DT (Bitfield-Mask: 0x3f) */ + #define R_DSILINK_SQCH0DSC5AR_H_VC_Pos (6UL) /*!< VC (Bit 6) */ + #define R_DSILINK_SQCH0DSC5AR_H_VC_Msk (0xc0UL) /*!< VC (Bitfield-Mask: 0x03) */ + #define R_DSILINK_SQCH0DSC5AR_H_FMT_Pos (8UL) /*!< FMT (Bit 8) */ + #define R_DSILINK_SQCH0DSC5AR_H_FMT_Msk (0x100UL) /*!< FMT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0DSC5AR_H_SPD_Pos (9UL) /*!< SPD (Bit 9) */ + #define R_DSILINK_SQCH0DSC5AR_H_SPD_Msk (0x200UL) /*!< SPD (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0DSC5AR_H_BTA_Pos (10UL) /*!< BTA (Bit 10) */ + #define R_DSILINK_SQCH0DSC5AR_H_BTA_Msk (0xc00UL) /*!< BTA (Bitfield-Mask: 0x03) */ + #define R_DSILINK_SQCH0DSC5AR_H_NXACT_Pos (12UL) /*!< NXACT (Bit 12) */ + #define R_DSILINK_SQCH0DSC5AR_H_NXACT_Msk (0x3000UL) /*!< NXACT (Bitfield-Mask: 0x03) */ +/* ===================================================== SQCH0DSC6AR_H ===================================================== */ + #define R_DSILINK_SQCH0DSC6AR_H_DT_Pos (0UL) /*!< DT (Bit 0) */ + #define R_DSILINK_SQCH0DSC6AR_H_DT_Msk (0x3fUL) /*!< DT (Bitfield-Mask: 0x3f) */ + #define R_DSILINK_SQCH0DSC6AR_H_VC_Pos (6UL) /*!< VC (Bit 6) */ + #define R_DSILINK_SQCH0DSC6AR_H_VC_Msk (0xc0UL) /*!< VC (Bitfield-Mask: 0x03) */ + #define R_DSILINK_SQCH0DSC6AR_H_FMT_Pos (8UL) /*!< FMT (Bit 8) */ + #define R_DSILINK_SQCH0DSC6AR_H_FMT_Msk (0x100UL) /*!< FMT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0DSC6AR_H_SPD_Pos (9UL) /*!< SPD (Bit 9) */ + #define R_DSILINK_SQCH0DSC6AR_H_SPD_Msk (0x200UL) /*!< SPD (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0DSC6AR_H_BTA_Pos (10UL) /*!< BTA (Bit 10) */ + #define R_DSILINK_SQCH0DSC6AR_H_BTA_Msk (0xc00UL) /*!< BTA (Bitfield-Mask: 0x03) */ + #define R_DSILINK_SQCH0DSC6AR_H_NXACT_Pos (12UL) /*!< NXACT (Bit 12) */ + #define R_DSILINK_SQCH0DSC6AR_H_NXACT_Msk (0x3000UL) /*!< NXACT (Bitfield-Mask: 0x03) */ +/* ===================================================== SQCH0DSC7AR_H ===================================================== */ + #define R_DSILINK_SQCH0DSC7AR_H_DT_Pos (0UL) /*!< DT (Bit 0) */ + #define R_DSILINK_SQCH0DSC7AR_H_DT_Msk (0x3fUL) /*!< DT (Bitfield-Mask: 0x3f) */ + #define R_DSILINK_SQCH0DSC7AR_H_VC_Pos (6UL) /*!< VC (Bit 6) */ + #define R_DSILINK_SQCH0DSC7AR_H_VC_Msk (0xc0UL) /*!< VC (Bitfield-Mask: 0x03) */ + #define R_DSILINK_SQCH0DSC7AR_H_FMT_Pos (8UL) /*!< FMT (Bit 8) */ + #define R_DSILINK_SQCH0DSC7AR_H_FMT_Msk (0x100UL) /*!< FMT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0DSC7AR_H_SPD_Pos (9UL) /*!< SPD (Bit 9) */ + #define R_DSILINK_SQCH0DSC7AR_H_SPD_Msk (0x200UL) /*!< SPD (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0DSC7AR_H_BTA_Pos (10UL) /*!< BTA (Bit 10) */ + #define R_DSILINK_SQCH0DSC7AR_H_BTA_Msk (0xc00UL) /*!< BTA (Bitfield-Mask: 0x03) */ + #define R_DSILINK_SQCH0DSC7AR_H_NXACT_Pos (12UL) /*!< NXACT (Bit 12) */ + #define R_DSILINK_SQCH0DSC7AR_H_NXACT_Msk (0x3000UL) /*!< NXACT (Bitfield-Mask: 0x03) */ +/* ==================================================== SQCH0DSC0AR_HL ===================================================== */ + #define R_DSILINK_SQCH0DSC0AR_HL_DT_Pos (0UL) /*!< DT (Bit 0) */ + #define R_DSILINK_SQCH0DSC0AR_HL_DT_Msk (0x3fUL) /*!< DT (Bitfield-Mask: 0x3f) */ + #define R_DSILINK_SQCH0DSC0AR_HL_VC_Pos (6UL) /*!< VC (Bit 6) */ + #define R_DSILINK_SQCH0DSC0AR_HL_VC_Msk (0xc0UL) /*!< VC (Bitfield-Mask: 0x03) */ +/* ==================================================== SQCH0DSC1AR_HL ===================================================== */ + #define R_DSILINK_SQCH0DSC1AR_HL_DT_Pos (0UL) /*!< DT (Bit 0) */ + #define R_DSILINK_SQCH0DSC1AR_HL_DT_Msk (0x3fUL) /*!< DT (Bitfield-Mask: 0x3f) */ + #define R_DSILINK_SQCH0DSC1AR_HL_VC_Pos (6UL) /*!< VC (Bit 6) */ + #define R_DSILINK_SQCH0DSC1AR_HL_VC_Msk (0xc0UL) /*!< VC (Bitfield-Mask: 0x03) */ +/* ==================================================== SQCH0DSC2AR_HL ===================================================== */ + #define R_DSILINK_SQCH0DSC2AR_HL_DT_Pos (0UL) /*!< DT (Bit 0) */ + #define R_DSILINK_SQCH0DSC2AR_HL_DT_Msk (0x3fUL) /*!< DT (Bitfield-Mask: 0x3f) */ + #define R_DSILINK_SQCH0DSC2AR_HL_VC_Pos (6UL) /*!< VC (Bit 6) */ + #define R_DSILINK_SQCH0DSC2AR_HL_VC_Msk (0xc0UL) /*!< VC (Bitfield-Mask: 0x03) */ +/* ==================================================== SQCH0DSC3AR_HL ===================================================== */ + #define R_DSILINK_SQCH0DSC3AR_HL_DT_Pos (0UL) /*!< DT (Bit 0) */ + #define R_DSILINK_SQCH0DSC3AR_HL_DT_Msk (0x3fUL) /*!< DT (Bitfield-Mask: 0x3f) */ + #define R_DSILINK_SQCH0DSC3AR_HL_VC_Pos (6UL) /*!< VC (Bit 6) */ + #define R_DSILINK_SQCH0DSC3AR_HL_VC_Msk (0xc0UL) /*!< VC (Bitfield-Mask: 0x03) */ +/* ==================================================== SQCH0DSC4AR_HL ===================================================== */ + #define R_DSILINK_SQCH0DSC4AR_HL_DT_Pos (0UL) /*!< DT (Bit 0) */ + #define R_DSILINK_SQCH0DSC4AR_HL_DT_Msk (0x3fUL) /*!< DT (Bitfield-Mask: 0x3f) */ + #define R_DSILINK_SQCH0DSC4AR_HL_VC_Pos (6UL) /*!< VC (Bit 6) */ + #define R_DSILINK_SQCH0DSC4AR_HL_VC_Msk (0xc0UL) /*!< VC (Bitfield-Mask: 0x03) */ +/* ==================================================== SQCH0DSC5AR_HL ===================================================== */ + #define R_DSILINK_SQCH0DSC5AR_HL_DT_Pos (0UL) /*!< DT (Bit 0) */ + #define R_DSILINK_SQCH0DSC5AR_HL_DT_Msk (0x3fUL) /*!< DT (Bitfield-Mask: 0x3f) */ + #define R_DSILINK_SQCH0DSC5AR_HL_VC_Pos (6UL) /*!< VC (Bit 6) */ + #define R_DSILINK_SQCH0DSC5AR_HL_VC_Msk (0xc0UL) /*!< VC (Bitfield-Mask: 0x03) */ +/* ==================================================== SQCH0DSC6AR_HL ===================================================== */ + #define R_DSILINK_SQCH0DSC6AR_HL_DT_Pos (0UL) /*!< DT (Bit 0) */ + #define R_DSILINK_SQCH0DSC6AR_HL_DT_Msk (0x3fUL) /*!< DT (Bitfield-Mask: 0x3f) */ + #define R_DSILINK_SQCH0DSC6AR_HL_VC_Pos (6UL) /*!< VC (Bit 6) */ + #define R_DSILINK_SQCH0DSC6AR_HL_VC_Msk (0xc0UL) /*!< VC (Bitfield-Mask: 0x03) */ +/* ==================================================== SQCH0DSC7AR_HL ===================================================== */ + #define R_DSILINK_SQCH0DSC7AR_HL_DT_Pos (0UL) /*!< DT (Bit 0) */ + #define R_DSILINK_SQCH0DSC7AR_HL_DT_Msk (0x3fUL) /*!< DT (Bitfield-Mask: 0x3f) */ + #define R_DSILINK_SQCH0DSC7AR_HL_VC_Pos (6UL) /*!< VC (Bit 6) */ + #define R_DSILINK_SQCH0DSC7AR_HL_VC_Msk (0xc0UL) /*!< VC (Bitfield-Mask: 0x03) */ +/* ==================================================== SQCH0DSC0AR_HH ===================================================== */ + #define R_DSILINK_SQCH0DSC0AR_HH_FMT_Pos (0UL) /*!< FMT (Bit 0) */ + #define R_DSILINK_SQCH0DSC0AR_HH_FMT_Msk (0x1UL) /*!< FMT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0DSC0AR_HH_SPD_Pos (1UL) /*!< SPD (Bit 1) */ + #define R_DSILINK_SQCH0DSC0AR_HH_SPD_Msk (0x2UL) /*!< SPD (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0DSC0AR_HH_BTA_Pos (2UL) /*!< BTA (Bit 2) */ + #define R_DSILINK_SQCH0DSC0AR_HH_BTA_Msk (0xcUL) /*!< BTA (Bitfield-Mask: 0x03) */ + #define R_DSILINK_SQCH0DSC0AR_HH_NXACT_Pos (4UL) /*!< NXACT (Bit 4) */ + #define R_DSILINK_SQCH0DSC0AR_HH_NXACT_Msk (0x30UL) /*!< NXACT (Bitfield-Mask: 0x03) */ +/* ==================================================== SQCH0DSC1AR_HH ===================================================== */ + #define R_DSILINK_SQCH0DSC1AR_HH_FMT_Pos (0UL) /*!< FMT (Bit 0) */ + #define R_DSILINK_SQCH0DSC1AR_HH_FMT_Msk (0x1UL) /*!< FMT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0DSC1AR_HH_SPD_Pos (1UL) /*!< SPD (Bit 1) */ + #define R_DSILINK_SQCH0DSC1AR_HH_SPD_Msk (0x2UL) /*!< SPD (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0DSC1AR_HH_BTA_Pos (2UL) /*!< BTA (Bit 2) */ + #define R_DSILINK_SQCH0DSC1AR_HH_BTA_Msk (0xcUL) /*!< BTA (Bitfield-Mask: 0x03) */ + #define R_DSILINK_SQCH0DSC1AR_HH_NXACT_Pos (4UL) /*!< NXACT (Bit 4) */ + #define R_DSILINK_SQCH0DSC1AR_HH_NXACT_Msk (0x30UL) /*!< NXACT (Bitfield-Mask: 0x03) */ +/* ==================================================== SQCH0DSC2AR_HH ===================================================== */ + #define R_DSILINK_SQCH0DSC2AR_HH_FMT_Pos (0UL) /*!< FMT (Bit 0) */ + #define R_DSILINK_SQCH0DSC2AR_HH_FMT_Msk (0x1UL) /*!< FMT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0DSC2AR_HH_SPD_Pos (1UL) /*!< SPD (Bit 1) */ + #define R_DSILINK_SQCH0DSC2AR_HH_SPD_Msk (0x2UL) /*!< SPD (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0DSC2AR_HH_BTA_Pos (2UL) /*!< BTA (Bit 2) */ + #define R_DSILINK_SQCH0DSC2AR_HH_BTA_Msk (0xcUL) /*!< BTA (Bitfield-Mask: 0x03) */ + #define R_DSILINK_SQCH0DSC2AR_HH_NXACT_Pos (4UL) /*!< NXACT (Bit 4) */ + #define R_DSILINK_SQCH0DSC2AR_HH_NXACT_Msk (0x30UL) /*!< NXACT (Bitfield-Mask: 0x03) */ +/* ==================================================== SQCH0DSC3AR_HH ===================================================== */ + #define R_DSILINK_SQCH0DSC3AR_HH_FMT_Pos (0UL) /*!< FMT (Bit 0) */ + #define R_DSILINK_SQCH0DSC3AR_HH_FMT_Msk (0x1UL) /*!< FMT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0DSC3AR_HH_SPD_Pos (1UL) /*!< SPD (Bit 1) */ + #define R_DSILINK_SQCH0DSC3AR_HH_SPD_Msk (0x2UL) /*!< SPD (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0DSC3AR_HH_BTA_Pos (2UL) /*!< BTA (Bit 2) */ + #define R_DSILINK_SQCH0DSC3AR_HH_BTA_Msk (0xcUL) /*!< BTA (Bitfield-Mask: 0x03) */ + #define R_DSILINK_SQCH0DSC3AR_HH_NXACT_Pos (4UL) /*!< NXACT (Bit 4) */ + #define R_DSILINK_SQCH0DSC3AR_HH_NXACT_Msk (0x30UL) /*!< NXACT (Bitfield-Mask: 0x03) */ +/* ==================================================== SQCH0DSC4AR_HH ===================================================== */ + #define R_DSILINK_SQCH0DSC4AR_HH_FMT_Pos (0UL) /*!< FMT (Bit 0) */ + #define R_DSILINK_SQCH0DSC4AR_HH_FMT_Msk (0x1UL) /*!< FMT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0DSC4AR_HH_SPD_Pos (1UL) /*!< SPD (Bit 1) */ + #define R_DSILINK_SQCH0DSC4AR_HH_SPD_Msk (0x2UL) /*!< SPD (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0DSC4AR_HH_BTA_Pos (2UL) /*!< BTA (Bit 2) */ + #define R_DSILINK_SQCH0DSC4AR_HH_BTA_Msk (0xcUL) /*!< BTA (Bitfield-Mask: 0x03) */ + #define R_DSILINK_SQCH0DSC4AR_HH_NXACT_Pos (4UL) /*!< NXACT (Bit 4) */ + #define R_DSILINK_SQCH0DSC4AR_HH_NXACT_Msk (0x30UL) /*!< NXACT (Bitfield-Mask: 0x03) */ +/* ==================================================== SQCH0DSC5AR_HH ===================================================== */ + #define R_DSILINK_SQCH0DSC5AR_HH_FMT_Pos (0UL) /*!< FMT (Bit 0) */ + #define R_DSILINK_SQCH0DSC5AR_HH_FMT_Msk (0x1UL) /*!< FMT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0DSC5AR_HH_SPD_Pos (1UL) /*!< SPD (Bit 1) */ + #define R_DSILINK_SQCH0DSC5AR_HH_SPD_Msk (0x2UL) /*!< SPD (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0DSC5AR_HH_BTA_Pos (2UL) /*!< BTA (Bit 2) */ + #define R_DSILINK_SQCH0DSC5AR_HH_BTA_Msk (0xcUL) /*!< BTA (Bitfield-Mask: 0x03) */ + #define R_DSILINK_SQCH0DSC5AR_HH_NXACT_Pos (4UL) /*!< NXACT (Bit 4) */ + #define R_DSILINK_SQCH0DSC5AR_HH_NXACT_Msk (0x30UL) /*!< NXACT (Bitfield-Mask: 0x03) */ +/* ==================================================== SQCH0DSC6AR_HH ===================================================== */ + #define R_DSILINK_SQCH0DSC6AR_HH_FMT_Pos (0UL) /*!< FMT (Bit 0) */ + #define R_DSILINK_SQCH0DSC6AR_HH_FMT_Msk (0x1UL) /*!< FMT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0DSC6AR_HH_SPD_Pos (1UL) /*!< SPD (Bit 1) */ + #define R_DSILINK_SQCH0DSC6AR_HH_SPD_Msk (0x2UL) /*!< SPD (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0DSC6AR_HH_BTA_Pos (2UL) /*!< BTA (Bit 2) */ + #define R_DSILINK_SQCH0DSC6AR_HH_BTA_Msk (0xcUL) /*!< BTA (Bitfield-Mask: 0x03) */ + #define R_DSILINK_SQCH0DSC6AR_HH_NXACT_Pos (4UL) /*!< NXACT (Bit 4) */ + #define R_DSILINK_SQCH0DSC6AR_HH_NXACT_Msk (0x30UL) /*!< NXACT (Bitfield-Mask: 0x03) */ +/* ==================================================== SQCH0DSC7AR_HH ===================================================== */ + #define R_DSILINK_SQCH0DSC7AR_HH_FMT_Pos (0UL) /*!< FMT (Bit 0) */ + #define R_DSILINK_SQCH0DSC7AR_HH_FMT_Msk (0x1UL) /*!< FMT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0DSC7AR_HH_SPD_Pos (1UL) /*!< SPD (Bit 1) */ + #define R_DSILINK_SQCH0DSC7AR_HH_SPD_Msk (0x2UL) /*!< SPD (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0DSC7AR_HH_BTA_Pos (2UL) /*!< BTA (Bit 2) */ + #define R_DSILINK_SQCH0DSC7AR_HH_BTA_Msk (0xcUL) /*!< BTA (Bitfield-Mask: 0x03) */ + #define R_DSILINK_SQCH0DSC7AR_HH_NXACT_Pos (4UL) /*!< NXACT (Bit 4) */ + #define R_DSILINK_SQCH0DSC7AR_HH_NXACT_Msk (0x30UL) /*!< NXACT (Bitfield-Mask: 0x03) */ +/* ====================================================== SQCH0DSC0BR ====================================================== */ + #define R_DSILINK_SQCH0DSC0BR_DTSEL_Pos (24UL) /*!< DTSEL (Bit 24) */ + #define R_DSILINK_SQCH0DSC0BR_DTSEL_Msk (0x3000000UL) /*!< DTSEL (Bitfield-Mask: 0x03) */ +/* ====================================================== SQCH0DSC1BR ====================================================== */ + #define R_DSILINK_SQCH0DSC1BR_DTSEL_Pos (24UL) /*!< DTSEL (Bit 24) */ + #define R_DSILINK_SQCH0DSC1BR_DTSEL_Msk (0x3000000UL) /*!< DTSEL (Bitfield-Mask: 0x03) */ +/* ====================================================== SQCH0DSC2BR ====================================================== */ + #define R_DSILINK_SQCH0DSC2BR_DTSEL_Pos (24UL) /*!< DTSEL (Bit 24) */ + #define R_DSILINK_SQCH0DSC2BR_DTSEL_Msk (0x3000000UL) /*!< DTSEL (Bitfield-Mask: 0x03) */ +/* ====================================================== SQCH0DSC3BR ====================================================== */ + #define R_DSILINK_SQCH0DSC3BR_DTSEL_Pos (24UL) /*!< DTSEL (Bit 24) */ + #define R_DSILINK_SQCH0DSC3BR_DTSEL_Msk (0x3000000UL) /*!< DTSEL (Bitfield-Mask: 0x03) */ +/* ====================================================== SQCH0DSC4BR ====================================================== */ + #define R_DSILINK_SQCH0DSC4BR_DTSEL_Pos (24UL) /*!< DTSEL (Bit 24) */ + #define R_DSILINK_SQCH0DSC4BR_DTSEL_Msk (0x3000000UL) /*!< DTSEL (Bitfield-Mask: 0x03) */ +/* ====================================================== SQCH0DSC5BR ====================================================== */ + #define R_DSILINK_SQCH0DSC5BR_DTSEL_Pos (24UL) /*!< DTSEL (Bit 24) */ + #define R_DSILINK_SQCH0DSC5BR_DTSEL_Msk (0x3000000UL) /*!< DTSEL (Bitfield-Mask: 0x03) */ +/* ====================================================== SQCH0DSC6BR ====================================================== */ + #define R_DSILINK_SQCH0DSC6BR_DTSEL_Pos (24UL) /*!< DTSEL (Bit 24) */ + #define R_DSILINK_SQCH0DSC6BR_DTSEL_Msk (0x3000000UL) /*!< DTSEL (Bitfield-Mask: 0x03) */ +/* ====================================================== SQCH0DSC7BR ====================================================== */ + #define R_DSILINK_SQCH0DSC7BR_DTSEL_Pos (24UL) /*!< DTSEL (Bit 24) */ + #define R_DSILINK_SQCH0DSC7BR_DTSEL_Msk (0x3000000UL) /*!< DTSEL (Bitfield-Mask: 0x03) */ +/* ====================================================== SQCH0DSC0CR ====================================================== */ + #define R_DSILINK_SQCH0DSC0CR_FINACT_Pos (0UL) /*!< FINACT (Bit 0) */ + #define R_DSILINK_SQCH0DSC0CR_FINACT_Msk (0x1UL) /*!< FINACT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0DSC0CR_AUXOP_Pos (22UL) /*!< AUXOP (Bit 22) */ + #define R_DSILINK_SQCH0DSC0CR_AUXOP_Msk (0x400000UL) /*!< AUXOP (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0DSC0CR_ACTCODE_Pos (24UL) /*!< ACTCODE (Bit 24) */ + #define R_DSILINK_SQCH0DSC0CR_ACTCODE_Msk (0xff000000UL) /*!< ACTCODE (Bitfield-Mask: 0xff) */ +/* ====================================================== SQCH0DSC1CR ====================================================== */ + #define R_DSILINK_SQCH0DSC1CR_FINACT_Pos (0UL) /*!< FINACT (Bit 0) */ + #define R_DSILINK_SQCH0DSC1CR_FINACT_Msk (0x1UL) /*!< FINACT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0DSC1CR_AUXOP_Pos (22UL) /*!< AUXOP (Bit 22) */ + #define R_DSILINK_SQCH0DSC1CR_AUXOP_Msk (0x400000UL) /*!< AUXOP (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0DSC1CR_ACTCODE_Pos (24UL) /*!< ACTCODE (Bit 24) */ + #define R_DSILINK_SQCH0DSC1CR_ACTCODE_Msk (0xff000000UL) /*!< ACTCODE (Bitfield-Mask: 0xff) */ +/* ====================================================== SQCH0DSC2CR ====================================================== */ + #define R_DSILINK_SQCH0DSC2CR_FINACT_Pos (0UL) /*!< FINACT (Bit 0) */ + #define R_DSILINK_SQCH0DSC2CR_FINACT_Msk (0x1UL) /*!< FINACT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0DSC2CR_AUXOP_Pos (22UL) /*!< AUXOP (Bit 22) */ + #define R_DSILINK_SQCH0DSC2CR_AUXOP_Msk (0x400000UL) /*!< AUXOP (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0DSC2CR_ACTCODE_Pos (24UL) /*!< ACTCODE (Bit 24) */ + #define R_DSILINK_SQCH0DSC2CR_ACTCODE_Msk (0xff000000UL) /*!< ACTCODE (Bitfield-Mask: 0xff) */ +/* ====================================================== SQCH0DSC3CR ====================================================== */ + #define R_DSILINK_SQCH0DSC3CR_FINACT_Pos (0UL) /*!< FINACT (Bit 0) */ + #define R_DSILINK_SQCH0DSC3CR_FINACT_Msk (0x1UL) /*!< FINACT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0DSC3CR_AUXOP_Pos (22UL) /*!< AUXOP (Bit 22) */ + #define R_DSILINK_SQCH0DSC3CR_AUXOP_Msk (0x400000UL) /*!< AUXOP (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0DSC3CR_ACTCODE_Pos (24UL) /*!< ACTCODE (Bit 24) */ + #define R_DSILINK_SQCH0DSC3CR_ACTCODE_Msk (0xff000000UL) /*!< ACTCODE (Bitfield-Mask: 0xff) */ +/* ====================================================== SQCH0DSC4CR ====================================================== */ + #define R_DSILINK_SQCH0DSC4CR_FINACT_Pos (0UL) /*!< FINACT (Bit 0) */ + #define R_DSILINK_SQCH0DSC4CR_FINACT_Msk (0x1UL) /*!< FINACT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0DSC4CR_AUXOP_Pos (22UL) /*!< AUXOP (Bit 22) */ + #define R_DSILINK_SQCH0DSC4CR_AUXOP_Msk (0x400000UL) /*!< AUXOP (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0DSC4CR_ACTCODE_Pos (24UL) /*!< ACTCODE (Bit 24) */ + #define R_DSILINK_SQCH0DSC4CR_ACTCODE_Msk (0xff000000UL) /*!< ACTCODE (Bitfield-Mask: 0xff) */ +/* ====================================================== SQCH0DSC5CR ====================================================== */ + #define R_DSILINK_SQCH0DSC5CR_FINACT_Pos (0UL) /*!< FINACT (Bit 0) */ + #define R_DSILINK_SQCH0DSC5CR_FINACT_Msk (0x1UL) /*!< FINACT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0DSC5CR_AUXOP_Pos (22UL) /*!< AUXOP (Bit 22) */ + #define R_DSILINK_SQCH0DSC5CR_AUXOP_Msk (0x400000UL) /*!< AUXOP (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0DSC5CR_ACTCODE_Pos (24UL) /*!< ACTCODE (Bit 24) */ + #define R_DSILINK_SQCH0DSC5CR_ACTCODE_Msk (0xff000000UL) /*!< ACTCODE (Bitfield-Mask: 0xff) */ +/* ====================================================== SQCH0DSC6CR ====================================================== */ + #define R_DSILINK_SQCH0DSC6CR_FINACT_Pos (0UL) /*!< FINACT (Bit 0) */ + #define R_DSILINK_SQCH0DSC6CR_FINACT_Msk (0x1UL) /*!< FINACT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0DSC6CR_AUXOP_Pos (22UL) /*!< AUXOP (Bit 22) */ + #define R_DSILINK_SQCH0DSC6CR_AUXOP_Msk (0x400000UL) /*!< AUXOP (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0DSC6CR_ACTCODE_Pos (24UL) /*!< ACTCODE (Bit 24) */ + #define R_DSILINK_SQCH0DSC6CR_ACTCODE_Msk (0xff000000UL) /*!< ACTCODE (Bitfield-Mask: 0xff) */ +/* ====================================================== SQCH0DSC7CR ====================================================== */ + #define R_DSILINK_SQCH0DSC7CR_FINACT_Pos (0UL) /*!< FINACT (Bit 0) */ + #define R_DSILINK_SQCH0DSC7CR_FINACT_Msk (0x1UL) /*!< FINACT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0DSC7CR_AUXOP_Pos (22UL) /*!< AUXOP (Bit 22) */ + #define R_DSILINK_SQCH0DSC7CR_AUXOP_Msk (0x400000UL) /*!< AUXOP (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0DSC7CR_ACTCODE_Pos (24UL) /*!< ACTCODE (Bit 24) */ + #define R_DSILINK_SQCH0DSC7CR_ACTCODE_Msk (0xff000000UL) /*!< ACTCODE (Bitfield-Mask: 0xff) */ +/* ===================================================== SQCH0DSC0CR_L ===================================================== */ + #define R_DSILINK_SQCH0DSC0CR_L_FINACT_Pos (0UL) /*!< FINACT (Bit 0) */ + #define R_DSILINK_SQCH0DSC0CR_L_FINACT_Msk (0x1UL) /*!< FINACT (Bitfield-Mask: 0x01) */ +/* ===================================================== SQCH0DSC1CR_L ===================================================== */ + #define R_DSILINK_SQCH0DSC1CR_L_FINACT_Pos (0UL) /*!< FINACT (Bit 0) */ + #define R_DSILINK_SQCH0DSC1CR_L_FINACT_Msk (0x1UL) /*!< FINACT (Bitfield-Mask: 0x01) */ +/* ===================================================== SQCH0DSC2CR_L ===================================================== */ + #define R_DSILINK_SQCH0DSC2CR_L_FINACT_Pos (0UL) /*!< FINACT (Bit 0) */ + #define R_DSILINK_SQCH0DSC2CR_L_FINACT_Msk (0x1UL) /*!< FINACT (Bitfield-Mask: 0x01) */ +/* ===================================================== SQCH0DSC3CR_L ===================================================== */ + #define R_DSILINK_SQCH0DSC3CR_L_FINACT_Pos (0UL) /*!< FINACT (Bit 0) */ + #define R_DSILINK_SQCH0DSC3CR_L_FINACT_Msk (0x1UL) /*!< FINACT (Bitfield-Mask: 0x01) */ +/* ===================================================== SQCH0DSC4CR_L ===================================================== */ + #define R_DSILINK_SQCH0DSC4CR_L_FINACT_Pos (0UL) /*!< FINACT (Bit 0) */ + #define R_DSILINK_SQCH0DSC4CR_L_FINACT_Msk (0x1UL) /*!< FINACT (Bitfield-Mask: 0x01) */ +/* ===================================================== SQCH0DSC5CR_L ===================================================== */ + #define R_DSILINK_SQCH0DSC5CR_L_FINACT_Pos (0UL) /*!< FINACT (Bit 0) */ + #define R_DSILINK_SQCH0DSC5CR_L_FINACT_Msk (0x1UL) /*!< FINACT (Bitfield-Mask: 0x01) */ +/* ===================================================== SQCH0DSC6CR_L ===================================================== */ + #define R_DSILINK_SQCH0DSC6CR_L_FINACT_Pos (0UL) /*!< FINACT (Bit 0) */ + #define R_DSILINK_SQCH0DSC6CR_L_FINACT_Msk (0x1UL) /*!< FINACT (Bitfield-Mask: 0x01) */ +/* ===================================================== SQCH0DSC7CR_L ===================================================== */ + #define R_DSILINK_SQCH0DSC7CR_L_FINACT_Pos (0UL) /*!< FINACT (Bit 0) */ + #define R_DSILINK_SQCH0DSC7CR_L_FINACT_Msk (0x1UL) /*!< FINACT (Bitfield-Mask: 0x01) */ +/* ==================================================== SQCH0DSC0CR_LL ===================================================== */ + #define R_DSILINK_SQCH0DSC0CR_LL_FINACT_Pos (0UL) /*!< FINACT (Bit 0) */ + #define R_DSILINK_SQCH0DSC0CR_LL_FINACT_Msk (0x1UL) /*!< FINACT (Bitfield-Mask: 0x01) */ +/* ==================================================== SQCH0DSC1CR_LL ===================================================== */ + #define R_DSILINK_SQCH0DSC1CR_LL_FINACT_Pos (0UL) /*!< FINACT (Bit 0) */ + #define R_DSILINK_SQCH0DSC1CR_LL_FINACT_Msk (0x1UL) /*!< FINACT (Bitfield-Mask: 0x01) */ +/* ==================================================== SQCH0DSC2CR_LL ===================================================== */ + #define R_DSILINK_SQCH0DSC2CR_LL_FINACT_Pos (0UL) /*!< FINACT (Bit 0) */ + #define R_DSILINK_SQCH0DSC2CR_LL_FINACT_Msk (0x1UL) /*!< FINACT (Bitfield-Mask: 0x01) */ +/* ==================================================== SQCH0DSC3CR_LL ===================================================== */ + #define R_DSILINK_SQCH0DSC3CR_LL_FINACT_Pos (0UL) /*!< FINACT (Bit 0) */ + #define R_DSILINK_SQCH0DSC3CR_LL_FINACT_Msk (0x1UL) /*!< FINACT (Bitfield-Mask: 0x01) */ +/* ==================================================== SQCH0DSC4CR_LL ===================================================== */ + #define R_DSILINK_SQCH0DSC4CR_LL_FINACT_Pos (0UL) /*!< FINACT (Bit 0) */ + #define R_DSILINK_SQCH0DSC4CR_LL_FINACT_Msk (0x1UL) /*!< FINACT (Bitfield-Mask: 0x01) */ +/* ==================================================== SQCH0DSC5CR_LL ===================================================== */ + #define R_DSILINK_SQCH0DSC5CR_LL_FINACT_Pos (0UL) /*!< FINACT (Bit 0) */ + #define R_DSILINK_SQCH0DSC5CR_LL_FINACT_Msk (0x1UL) /*!< FINACT (Bitfield-Mask: 0x01) */ +/* ==================================================== SQCH0DSC6CR_LL ===================================================== */ + #define R_DSILINK_SQCH0DSC6CR_LL_FINACT_Pos (0UL) /*!< FINACT (Bit 0) */ + #define R_DSILINK_SQCH0DSC6CR_LL_FINACT_Msk (0x1UL) /*!< FINACT (Bitfield-Mask: 0x01) */ +/* ==================================================== SQCH0DSC7CR_LL ===================================================== */ + #define R_DSILINK_SQCH0DSC7CR_LL_FINACT_Pos (0UL) /*!< FINACT (Bit 0) */ + #define R_DSILINK_SQCH0DSC7CR_LL_FINACT_Msk (0x1UL) /*!< FINACT (Bitfield-Mask: 0x01) */ +/* ===================================================== SQCH0DSC0CR_H ===================================================== */ + #define R_DSILINK_SQCH0DSC0CR_H_AUXOP_Pos (6UL) /*!< AUXOP (Bit 6) */ + #define R_DSILINK_SQCH0DSC0CR_H_AUXOP_Msk (0x40UL) /*!< AUXOP (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0DSC0CR_H_ACTCODE_Pos (8UL) /*!< ACTCODE (Bit 8) */ + #define R_DSILINK_SQCH0DSC0CR_H_ACTCODE_Msk (0xff00UL) /*!< ACTCODE (Bitfield-Mask: 0xff) */ +/* ===================================================== SQCH0DSC1CR_H ===================================================== */ + #define R_DSILINK_SQCH0DSC1CR_H_AUXOP_Pos (6UL) /*!< AUXOP (Bit 6) */ + #define R_DSILINK_SQCH0DSC1CR_H_AUXOP_Msk (0x40UL) /*!< AUXOP (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0DSC1CR_H_ACTCODE_Pos (8UL) /*!< ACTCODE (Bit 8) */ + #define R_DSILINK_SQCH0DSC1CR_H_ACTCODE_Msk (0xff00UL) /*!< ACTCODE (Bitfield-Mask: 0xff) */ +/* ===================================================== SQCH0DSC2CR_H ===================================================== */ + #define R_DSILINK_SQCH0DSC2CR_H_AUXOP_Pos (6UL) /*!< AUXOP (Bit 6) */ + #define R_DSILINK_SQCH0DSC2CR_H_AUXOP_Msk (0x40UL) /*!< AUXOP (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0DSC2CR_H_ACTCODE_Pos (8UL) /*!< ACTCODE (Bit 8) */ + #define R_DSILINK_SQCH0DSC2CR_H_ACTCODE_Msk (0xff00UL) /*!< ACTCODE (Bitfield-Mask: 0xff) */ +/* ===================================================== SQCH0DSC3CR_H ===================================================== */ + #define R_DSILINK_SQCH0DSC3CR_H_AUXOP_Pos (6UL) /*!< AUXOP (Bit 6) */ + #define R_DSILINK_SQCH0DSC3CR_H_AUXOP_Msk (0x40UL) /*!< AUXOP (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0DSC3CR_H_ACTCODE_Pos (8UL) /*!< ACTCODE (Bit 8) */ + #define R_DSILINK_SQCH0DSC3CR_H_ACTCODE_Msk (0xff00UL) /*!< ACTCODE (Bitfield-Mask: 0xff) */ +/* ===================================================== SQCH0DSC4CR_H ===================================================== */ + #define R_DSILINK_SQCH0DSC4CR_H_AUXOP_Pos (6UL) /*!< AUXOP (Bit 6) */ + #define R_DSILINK_SQCH0DSC4CR_H_AUXOP_Msk (0x40UL) /*!< AUXOP (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0DSC4CR_H_ACTCODE_Pos (8UL) /*!< ACTCODE (Bit 8) */ + #define R_DSILINK_SQCH0DSC4CR_H_ACTCODE_Msk (0xff00UL) /*!< ACTCODE (Bitfield-Mask: 0xff) */ +/* ===================================================== SQCH0DSC5CR_H ===================================================== */ + #define R_DSILINK_SQCH0DSC5CR_H_AUXOP_Pos (6UL) /*!< AUXOP (Bit 6) */ + #define R_DSILINK_SQCH0DSC5CR_H_AUXOP_Msk (0x40UL) /*!< AUXOP (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0DSC5CR_H_ACTCODE_Pos (8UL) /*!< ACTCODE (Bit 8) */ + #define R_DSILINK_SQCH0DSC5CR_H_ACTCODE_Msk (0xff00UL) /*!< ACTCODE (Bitfield-Mask: 0xff) */ +/* ===================================================== SQCH0DSC6CR_H ===================================================== */ + #define R_DSILINK_SQCH0DSC6CR_H_AUXOP_Pos (6UL) /*!< AUXOP (Bit 6) */ + #define R_DSILINK_SQCH0DSC6CR_H_AUXOP_Msk (0x40UL) /*!< AUXOP (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0DSC6CR_H_ACTCODE_Pos (8UL) /*!< ACTCODE (Bit 8) */ + #define R_DSILINK_SQCH0DSC6CR_H_ACTCODE_Msk (0xff00UL) /*!< ACTCODE (Bitfield-Mask: 0xff) */ +/* ===================================================== SQCH0DSC7CR_H ===================================================== */ + #define R_DSILINK_SQCH0DSC7CR_H_AUXOP_Pos (6UL) /*!< AUXOP (Bit 6) */ + #define R_DSILINK_SQCH0DSC7CR_H_AUXOP_Msk (0x40UL) /*!< AUXOP (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0DSC7CR_H_ACTCODE_Pos (8UL) /*!< ACTCODE (Bit 8) */ + #define R_DSILINK_SQCH0DSC7CR_H_ACTCODE_Msk (0xff00UL) /*!< ACTCODE (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH0DSC0CR_HL ===================================================== */ + #define R_DSILINK_SQCH0DSC0CR_HL_AUXOP_Pos (6UL) /*!< AUXOP (Bit 6) */ + #define R_DSILINK_SQCH0DSC0CR_HL_AUXOP_Msk (0x40UL) /*!< AUXOP (Bitfield-Mask: 0x01) */ +/* ==================================================== SQCH0DSC1CR_HL ===================================================== */ + #define R_DSILINK_SQCH0DSC1CR_HL_AUXOP_Pos (6UL) /*!< AUXOP (Bit 6) */ + #define R_DSILINK_SQCH0DSC1CR_HL_AUXOP_Msk (0x40UL) /*!< AUXOP (Bitfield-Mask: 0x01) */ +/* ==================================================== SQCH0DSC2CR_HL ===================================================== */ + #define R_DSILINK_SQCH0DSC2CR_HL_AUXOP_Pos (6UL) /*!< AUXOP (Bit 6) */ + #define R_DSILINK_SQCH0DSC2CR_HL_AUXOP_Msk (0x40UL) /*!< AUXOP (Bitfield-Mask: 0x01) */ +/* ==================================================== SQCH0DSC3CR_HL ===================================================== */ + #define R_DSILINK_SQCH0DSC3CR_HL_AUXOP_Pos (6UL) /*!< AUXOP (Bit 6) */ + #define R_DSILINK_SQCH0DSC3CR_HL_AUXOP_Msk (0x40UL) /*!< AUXOP (Bitfield-Mask: 0x01) */ +/* ==================================================== SQCH0DSC4CR_HL ===================================================== */ + #define R_DSILINK_SQCH0DSC4CR_HL_AUXOP_Pos (6UL) /*!< AUXOP (Bit 6) */ + #define R_DSILINK_SQCH0DSC4CR_HL_AUXOP_Msk (0x40UL) /*!< AUXOP (Bitfield-Mask: 0x01) */ +/* ==================================================== SQCH0DSC5CR_HL ===================================================== */ + #define R_DSILINK_SQCH0DSC5CR_HL_AUXOP_Pos (6UL) /*!< AUXOP (Bit 6) */ + #define R_DSILINK_SQCH0DSC5CR_HL_AUXOP_Msk (0x40UL) /*!< AUXOP (Bitfield-Mask: 0x01) */ +/* ==================================================== SQCH0DSC6CR_HL ===================================================== */ + #define R_DSILINK_SQCH0DSC6CR_HL_AUXOP_Pos (6UL) /*!< AUXOP (Bit 6) */ + #define R_DSILINK_SQCH0DSC6CR_HL_AUXOP_Msk (0x40UL) /*!< AUXOP (Bitfield-Mask: 0x01) */ +/* ==================================================== SQCH0DSC7CR_HL ===================================================== */ + #define R_DSILINK_SQCH0DSC7CR_HL_AUXOP_Pos (6UL) /*!< AUXOP (Bit 6) */ + #define R_DSILINK_SQCH0DSC7CR_HL_AUXOP_Msk (0x40UL) /*!< AUXOP (Bitfield-Mask: 0x01) */ +/* ==================================================== SQCH0DSC0CR_HH ===================================================== */ + #define R_DSILINK_SQCH0DSC0CR_HH_ACTCODE_Pos (0UL) /*!< ACTCODE (Bit 0) */ + #define R_DSILINK_SQCH0DSC0CR_HH_ACTCODE_Msk (0xffUL) /*!< ACTCODE (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH0DSC1CR_HH ===================================================== */ + #define R_DSILINK_SQCH0DSC1CR_HH_ACTCODE_Pos (0UL) /*!< ACTCODE (Bit 0) */ + #define R_DSILINK_SQCH0DSC1CR_HH_ACTCODE_Msk (0xffUL) /*!< ACTCODE (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH0DSC2CR_HH ===================================================== */ + #define R_DSILINK_SQCH0DSC2CR_HH_ACTCODE_Pos (0UL) /*!< ACTCODE (Bit 0) */ + #define R_DSILINK_SQCH0DSC2CR_HH_ACTCODE_Msk (0xffUL) /*!< ACTCODE (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH0DSC3CR_HH ===================================================== */ + #define R_DSILINK_SQCH0DSC3CR_HH_ACTCODE_Pos (0UL) /*!< ACTCODE (Bit 0) */ + #define R_DSILINK_SQCH0DSC3CR_HH_ACTCODE_Msk (0xffUL) /*!< ACTCODE (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH0DSC4CR_HH ===================================================== */ + #define R_DSILINK_SQCH0DSC4CR_HH_ACTCODE_Pos (0UL) /*!< ACTCODE (Bit 0) */ + #define R_DSILINK_SQCH0DSC4CR_HH_ACTCODE_Msk (0xffUL) /*!< ACTCODE (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH0DSC5CR_HH ===================================================== */ + #define R_DSILINK_SQCH0DSC5CR_HH_ACTCODE_Pos (0UL) /*!< ACTCODE (Bit 0) */ + #define R_DSILINK_SQCH0DSC5CR_HH_ACTCODE_Msk (0xffUL) /*!< ACTCODE (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH0DSC6CR_HH ===================================================== */ + #define R_DSILINK_SQCH0DSC6CR_HH_ACTCODE_Pos (0UL) /*!< ACTCODE (Bit 0) */ + #define R_DSILINK_SQCH0DSC6CR_HH_ACTCODE_Msk (0xffUL) /*!< ACTCODE (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH0DSC7CR_HH ===================================================== */ + #define R_DSILINK_SQCH0DSC7CR_HH_ACTCODE_Pos (0UL) /*!< ACTCODE (Bit 0) */ + #define R_DSILINK_SQCH0DSC7CR_HH_ACTCODE_Msk (0xffUL) /*!< ACTCODE (Bitfield-Mask: 0xff) */ +/* ====================================================== SQCH0DSC0DR ====================================================== */ + #define R_DSILINK_SQCH0DSC0DR_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH0DSC0DR_LADDR_Msk (0xffffffffUL) /*!< LADDR (Bitfield-Mask: 0xffffffff) */ +/* ====================================================== SQCH0DSC1DR ====================================================== */ + #define R_DSILINK_SQCH0DSC1DR_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH0DSC1DR_LADDR_Msk (0xffffffffUL) /*!< LADDR (Bitfield-Mask: 0xffffffff) */ +/* ====================================================== SQCH0DSC2DR ====================================================== */ + #define R_DSILINK_SQCH0DSC2DR_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH0DSC2DR_LADDR_Msk (0xffffffffUL) /*!< LADDR (Bitfield-Mask: 0xffffffff) */ +/* ====================================================== SQCH0DSC3DR ====================================================== */ + #define R_DSILINK_SQCH0DSC3DR_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH0DSC3DR_LADDR_Msk (0xffffffffUL) /*!< LADDR (Bitfield-Mask: 0xffffffff) */ +/* ====================================================== SQCH0DSC4DR ====================================================== */ + #define R_DSILINK_SQCH0DSC4DR_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH0DSC4DR_LADDR_Msk (0xffffffffUL) /*!< LADDR (Bitfield-Mask: 0xffffffff) */ +/* ====================================================== SQCH0DSC5DR ====================================================== */ + #define R_DSILINK_SQCH0DSC5DR_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH0DSC5DR_LADDR_Msk (0xffffffffUL) /*!< LADDR (Bitfield-Mask: 0xffffffff) */ +/* ====================================================== SQCH0DSC6DR ====================================================== */ + #define R_DSILINK_SQCH0DSC6DR_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH0DSC6DR_LADDR_Msk (0xffffffffUL) /*!< LADDR (Bitfield-Mask: 0xffffffff) */ +/* ====================================================== SQCH0DSC7DR ====================================================== */ + #define R_DSILINK_SQCH0DSC7DR_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH0DSC7DR_LADDR_Msk (0xffffffffUL) /*!< LADDR (Bitfield-Mask: 0xffffffff) */ +/* ===================================================== SQCH0DSC0DR_L ===================================================== */ + #define R_DSILINK_SQCH0DSC0DR_L_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH0DSC0DR_L_LADDR_Msk (0xffffUL) /*!< LADDR (Bitfield-Mask: 0xffff) */ +/* ===================================================== SQCH0DSC1DR_L ===================================================== */ + #define R_DSILINK_SQCH0DSC1DR_L_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH0DSC1DR_L_LADDR_Msk (0xffffUL) /*!< LADDR (Bitfield-Mask: 0xffff) */ +/* ===================================================== SQCH0DSC2DR_L ===================================================== */ + #define R_DSILINK_SQCH0DSC2DR_L_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH0DSC2DR_L_LADDR_Msk (0xffffUL) /*!< LADDR (Bitfield-Mask: 0xffff) */ +/* ===================================================== SQCH0DSC3DR_L ===================================================== */ + #define R_DSILINK_SQCH0DSC3DR_L_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH0DSC3DR_L_LADDR_Msk (0xffffUL) /*!< LADDR (Bitfield-Mask: 0xffff) */ +/* ===================================================== SQCH0DSC4DR_L ===================================================== */ + #define R_DSILINK_SQCH0DSC4DR_L_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH0DSC4DR_L_LADDR_Msk (0xffffUL) /*!< LADDR (Bitfield-Mask: 0xffff) */ +/* ===================================================== SQCH0DSC5DR_L ===================================================== */ + #define R_DSILINK_SQCH0DSC5DR_L_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH0DSC5DR_L_LADDR_Msk (0xffffUL) /*!< LADDR (Bitfield-Mask: 0xffff) */ +/* ===================================================== SQCH0DSC6DR_L ===================================================== */ + #define R_DSILINK_SQCH0DSC6DR_L_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH0DSC6DR_L_LADDR_Msk (0xffffUL) /*!< LADDR (Bitfield-Mask: 0xffff) */ +/* ===================================================== SQCH0DSC7DR_L ===================================================== */ + #define R_DSILINK_SQCH0DSC7DR_L_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH0DSC7DR_L_LADDR_Msk (0xffffUL) /*!< LADDR (Bitfield-Mask: 0xffff) */ +/* ==================================================== SQCH0DSC0DR_LL ===================================================== */ + #define R_DSILINK_SQCH0DSC0DR_LL_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH0DSC0DR_LL_LADDR_Msk (0xffUL) /*!< LADDR (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH0DSC1DR_LL ===================================================== */ + #define R_DSILINK_SQCH0DSC1DR_LL_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH0DSC1DR_LL_LADDR_Msk (0xffUL) /*!< LADDR (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH0DSC2DR_LL ===================================================== */ + #define R_DSILINK_SQCH0DSC2DR_LL_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH0DSC2DR_LL_LADDR_Msk (0xffUL) /*!< LADDR (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH0DSC3DR_LL ===================================================== */ + #define R_DSILINK_SQCH0DSC3DR_LL_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH0DSC3DR_LL_LADDR_Msk (0xffUL) /*!< LADDR (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH0DSC4DR_LL ===================================================== */ + #define R_DSILINK_SQCH0DSC4DR_LL_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH0DSC4DR_LL_LADDR_Msk (0xffUL) /*!< LADDR (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH0DSC5DR_LL ===================================================== */ + #define R_DSILINK_SQCH0DSC5DR_LL_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH0DSC5DR_LL_LADDR_Msk (0xffUL) /*!< LADDR (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH0DSC6DR_LL ===================================================== */ + #define R_DSILINK_SQCH0DSC6DR_LL_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH0DSC6DR_LL_LADDR_Msk (0xffUL) /*!< LADDR (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH0DSC7DR_LL ===================================================== */ + #define R_DSILINK_SQCH0DSC7DR_LL_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH0DSC7DR_LL_LADDR_Msk (0xffUL) /*!< LADDR (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH0DSC0DR_LH ===================================================== */ + #define R_DSILINK_SQCH0DSC0DR_LH_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH0DSC0DR_LH_LADDR_Msk (0xffUL) /*!< LADDR (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH0DSC1DR_LH ===================================================== */ + #define R_DSILINK_SQCH0DSC1DR_LH_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH0DSC1DR_LH_LADDR_Msk (0xffUL) /*!< LADDR (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH0DSC2DR_LH ===================================================== */ + #define R_DSILINK_SQCH0DSC2DR_LH_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH0DSC2DR_LH_LADDR_Msk (0xffUL) /*!< LADDR (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH0DSC3DR_LH ===================================================== */ + #define R_DSILINK_SQCH0DSC3DR_LH_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH0DSC3DR_LH_LADDR_Msk (0xffUL) /*!< LADDR (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH0DSC4DR_LH ===================================================== */ + #define R_DSILINK_SQCH0DSC4DR_LH_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH0DSC4DR_LH_LADDR_Msk (0xffUL) /*!< LADDR (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH0DSC5DR_LH ===================================================== */ + #define R_DSILINK_SQCH0DSC5DR_LH_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH0DSC5DR_LH_LADDR_Msk (0xffUL) /*!< LADDR (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH0DSC6DR_LH ===================================================== */ + #define R_DSILINK_SQCH0DSC6DR_LH_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH0DSC6DR_LH_LADDR_Msk (0xffUL) /*!< LADDR (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH0DSC7DR_LH ===================================================== */ + #define R_DSILINK_SQCH0DSC7DR_LH_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH0DSC7DR_LH_LADDR_Msk (0xffUL) /*!< LADDR (Bitfield-Mask: 0xff) */ +/* ===================================================== SQCH0DSC0DR_H ===================================================== */ + #define R_DSILINK_SQCH0DSC0DR_H_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH0DSC0DR_H_LADDR_Msk (0xffffUL) /*!< LADDR (Bitfield-Mask: 0xffff) */ +/* ===================================================== SQCH0DSC1DR_H ===================================================== */ + #define R_DSILINK_SQCH0DSC1DR_H_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH0DSC1DR_H_LADDR_Msk (0xffffUL) /*!< LADDR (Bitfield-Mask: 0xffff) */ +/* ===================================================== SQCH0DSC2DR_H ===================================================== */ + #define R_DSILINK_SQCH0DSC2DR_H_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH0DSC2DR_H_LADDR_Msk (0xffffUL) /*!< LADDR (Bitfield-Mask: 0xffff) */ +/* ===================================================== SQCH0DSC3DR_H ===================================================== */ + #define R_DSILINK_SQCH0DSC3DR_H_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH0DSC3DR_H_LADDR_Msk (0xffffUL) /*!< LADDR (Bitfield-Mask: 0xffff) */ +/* ===================================================== SQCH0DSC4DR_H ===================================================== */ + #define R_DSILINK_SQCH0DSC4DR_H_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH0DSC4DR_H_LADDR_Msk (0xffffUL) /*!< LADDR (Bitfield-Mask: 0xffff) */ +/* ===================================================== SQCH0DSC5DR_H ===================================================== */ + #define R_DSILINK_SQCH0DSC5DR_H_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH0DSC5DR_H_LADDR_Msk (0xffffUL) /*!< LADDR (Bitfield-Mask: 0xffff) */ +/* ===================================================== SQCH0DSC6DR_H ===================================================== */ + #define R_DSILINK_SQCH0DSC6DR_H_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH0DSC6DR_H_LADDR_Msk (0xffffUL) /*!< LADDR (Bitfield-Mask: 0xffff) */ +/* ===================================================== SQCH0DSC7DR_H ===================================================== */ + #define R_DSILINK_SQCH0DSC7DR_H_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH0DSC7DR_H_LADDR_Msk (0xffffUL) /*!< LADDR (Bitfield-Mask: 0xffff) */ +/* ==================================================== SQCH0DSC0DR_HL ===================================================== */ + #define R_DSILINK_SQCH0DSC0DR_HL_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH0DSC0DR_HL_LADDR_Msk (0xffUL) /*!< LADDR (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH0DSC1DR_HL ===================================================== */ + #define R_DSILINK_SQCH0DSC1DR_HL_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH0DSC1DR_HL_LADDR_Msk (0xffUL) /*!< LADDR (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH0DSC2DR_HL ===================================================== */ + #define R_DSILINK_SQCH0DSC2DR_HL_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH0DSC2DR_HL_LADDR_Msk (0xffUL) /*!< LADDR (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH0DSC3DR_HL ===================================================== */ + #define R_DSILINK_SQCH0DSC3DR_HL_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH0DSC3DR_HL_LADDR_Msk (0xffUL) /*!< LADDR (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH0DSC4DR_HL ===================================================== */ + #define R_DSILINK_SQCH0DSC4DR_HL_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH0DSC4DR_HL_LADDR_Msk (0xffUL) /*!< LADDR (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH0DSC5DR_HL ===================================================== */ + #define R_DSILINK_SQCH0DSC5DR_HL_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH0DSC5DR_HL_LADDR_Msk (0xffUL) /*!< LADDR (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH0DSC6DR_HL ===================================================== */ + #define R_DSILINK_SQCH0DSC6DR_HL_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH0DSC6DR_HL_LADDR_Msk (0xffUL) /*!< LADDR (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH0DSC7DR_HL ===================================================== */ + #define R_DSILINK_SQCH0DSC7DR_HL_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH0DSC7DR_HL_LADDR_Msk (0xffUL) /*!< LADDR (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH0DSC0DR_HH ===================================================== */ + #define R_DSILINK_SQCH0DSC0DR_HH_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH0DSC0DR_HH_LADDR_Msk (0xffUL) /*!< LADDR (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH0DSC1DR_HH ===================================================== */ + #define R_DSILINK_SQCH0DSC1DR_HH_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH0DSC1DR_HH_LADDR_Msk (0xffUL) /*!< LADDR (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH0DSC2DR_HH ===================================================== */ + #define R_DSILINK_SQCH0DSC2DR_HH_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH0DSC2DR_HH_LADDR_Msk (0xffUL) /*!< LADDR (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH0DSC3DR_HH ===================================================== */ + #define R_DSILINK_SQCH0DSC3DR_HH_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH0DSC3DR_HH_LADDR_Msk (0xffUL) /*!< LADDR (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH0DSC4DR_HH ===================================================== */ + #define R_DSILINK_SQCH0DSC4DR_HH_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH0DSC4DR_HH_LADDR_Msk (0xffUL) /*!< LADDR (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH0DSC5DR_HH ===================================================== */ + #define R_DSILINK_SQCH0DSC5DR_HH_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH0DSC5DR_HH_LADDR_Msk (0xffUL) /*!< LADDR (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH0DSC6DR_HH ===================================================== */ + #define R_DSILINK_SQCH0DSC6DR_HH_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH0DSC6DR_HH_LADDR_Msk (0xffUL) /*!< LADDR (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH0DSC7DR_HH ===================================================== */ + #define R_DSILINK_SQCH0DSC7DR_HH_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH0DSC7DR_HH_LADDR_Msk (0xffUL) /*!< LADDR (Bitfield-Mask: 0xff) */ +/* ====================================================== SQCH1DSC0AR ====================================================== */ + #define R_DSILINK_SQCH1DSC0AR_DATA0_Pos (0UL) /*!< DATA0 (Bit 0) */ + #define R_DSILINK_SQCH1DSC0AR_DATA0_Msk (0xffUL) /*!< DATA0 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_SQCH1DSC0AR_DATA1_Pos (8UL) /*!< DATA1 (Bit 8) */ + #define R_DSILINK_SQCH1DSC0AR_DATA1_Msk (0xff00UL) /*!< DATA1 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_SQCH1DSC0AR_DT_Pos (16UL) /*!< DT (Bit 16) */ + #define R_DSILINK_SQCH1DSC0AR_DT_Msk (0x3f0000UL) /*!< DT (Bitfield-Mask: 0x3f) */ + #define R_DSILINK_SQCH1DSC0AR_VC_Pos (22UL) /*!< VC (Bit 22) */ + #define R_DSILINK_SQCH1DSC0AR_VC_Msk (0xc00000UL) /*!< VC (Bitfield-Mask: 0x03) */ + #define R_DSILINK_SQCH1DSC0AR_FMT_Pos (24UL) /*!< FMT (Bit 24) */ + #define R_DSILINK_SQCH1DSC0AR_FMT_Msk (0x1000000UL) /*!< FMT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1DSC0AR_SPD_Pos (25UL) /*!< SPD (Bit 25) */ + #define R_DSILINK_SQCH1DSC0AR_SPD_Msk (0x2000000UL) /*!< SPD (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1DSC0AR_BTA_Pos (26UL) /*!< BTA (Bit 26) */ + #define R_DSILINK_SQCH1DSC0AR_BTA_Msk (0xc000000UL) /*!< BTA (Bitfield-Mask: 0x03) */ + #define R_DSILINK_SQCH1DSC0AR_NXACT_Pos (28UL) /*!< NXACT (Bit 28) */ + #define R_DSILINK_SQCH1DSC0AR_NXACT_Msk (0x30000000UL) /*!< NXACT (Bitfield-Mask: 0x03) */ +/* ====================================================== SQCH1DSC1AR ====================================================== */ + #define R_DSILINK_SQCH1DSC1AR_DATA0_Pos (0UL) /*!< DATA0 (Bit 0) */ + #define R_DSILINK_SQCH1DSC1AR_DATA0_Msk (0xffUL) /*!< DATA0 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_SQCH1DSC1AR_DATA1_Pos (8UL) /*!< DATA1 (Bit 8) */ + #define R_DSILINK_SQCH1DSC1AR_DATA1_Msk (0xff00UL) /*!< DATA1 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_SQCH1DSC1AR_DT_Pos (16UL) /*!< DT (Bit 16) */ + #define R_DSILINK_SQCH1DSC1AR_DT_Msk (0x3f0000UL) /*!< DT (Bitfield-Mask: 0x3f) */ + #define R_DSILINK_SQCH1DSC1AR_VC_Pos (22UL) /*!< VC (Bit 22) */ + #define R_DSILINK_SQCH1DSC1AR_VC_Msk (0xc00000UL) /*!< VC (Bitfield-Mask: 0x03) */ + #define R_DSILINK_SQCH1DSC1AR_FMT_Pos (24UL) /*!< FMT (Bit 24) */ + #define R_DSILINK_SQCH1DSC1AR_FMT_Msk (0x1000000UL) /*!< FMT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1DSC1AR_SPD_Pos (25UL) /*!< SPD (Bit 25) */ + #define R_DSILINK_SQCH1DSC1AR_SPD_Msk (0x2000000UL) /*!< SPD (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1DSC1AR_BTA_Pos (26UL) /*!< BTA (Bit 26) */ + #define R_DSILINK_SQCH1DSC1AR_BTA_Msk (0xc000000UL) /*!< BTA (Bitfield-Mask: 0x03) */ + #define R_DSILINK_SQCH1DSC1AR_NXACT_Pos (28UL) /*!< NXACT (Bit 28) */ + #define R_DSILINK_SQCH1DSC1AR_NXACT_Msk (0x30000000UL) /*!< NXACT (Bitfield-Mask: 0x03) */ +/* ====================================================== SQCH1DSC2AR ====================================================== */ + #define R_DSILINK_SQCH1DSC2AR_DATA0_Pos (0UL) /*!< DATA0 (Bit 0) */ + #define R_DSILINK_SQCH1DSC2AR_DATA0_Msk (0xffUL) /*!< DATA0 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_SQCH1DSC2AR_DATA1_Pos (8UL) /*!< DATA1 (Bit 8) */ + #define R_DSILINK_SQCH1DSC2AR_DATA1_Msk (0xff00UL) /*!< DATA1 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_SQCH1DSC2AR_DT_Pos (16UL) /*!< DT (Bit 16) */ + #define R_DSILINK_SQCH1DSC2AR_DT_Msk (0x3f0000UL) /*!< DT (Bitfield-Mask: 0x3f) */ + #define R_DSILINK_SQCH1DSC2AR_VC_Pos (22UL) /*!< VC (Bit 22) */ + #define R_DSILINK_SQCH1DSC2AR_VC_Msk (0xc00000UL) /*!< VC (Bitfield-Mask: 0x03) */ + #define R_DSILINK_SQCH1DSC2AR_FMT_Pos (24UL) /*!< FMT (Bit 24) */ + #define R_DSILINK_SQCH1DSC2AR_FMT_Msk (0x1000000UL) /*!< FMT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1DSC2AR_SPD_Pos (25UL) /*!< SPD (Bit 25) */ + #define R_DSILINK_SQCH1DSC2AR_SPD_Msk (0x2000000UL) /*!< SPD (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1DSC2AR_BTA_Pos (26UL) /*!< BTA (Bit 26) */ + #define R_DSILINK_SQCH1DSC2AR_BTA_Msk (0xc000000UL) /*!< BTA (Bitfield-Mask: 0x03) */ + #define R_DSILINK_SQCH1DSC2AR_NXACT_Pos (28UL) /*!< NXACT (Bit 28) */ + #define R_DSILINK_SQCH1DSC2AR_NXACT_Msk (0x30000000UL) /*!< NXACT (Bitfield-Mask: 0x03) */ +/* ====================================================== SQCH1DSC3AR ====================================================== */ + #define R_DSILINK_SQCH1DSC3AR_DATA0_Pos (0UL) /*!< DATA0 (Bit 0) */ + #define R_DSILINK_SQCH1DSC3AR_DATA0_Msk (0xffUL) /*!< DATA0 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_SQCH1DSC3AR_DATA1_Pos (8UL) /*!< DATA1 (Bit 8) */ + #define R_DSILINK_SQCH1DSC3AR_DATA1_Msk (0xff00UL) /*!< DATA1 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_SQCH1DSC3AR_DT_Pos (16UL) /*!< DT (Bit 16) */ + #define R_DSILINK_SQCH1DSC3AR_DT_Msk (0x3f0000UL) /*!< DT (Bitfield-Mask: 0x3f) */ + #define R_DSILINK_SQCH1DSC3AR_VC_Pos (22UL) /*!< VC (Bit 22) */ + #define R_DSILINK_SQCH1DSC3AR_VC_Msk (0xc00000UL) /*!< VC (Bitfield-Mask: 0x03) */ + #define R_DSILINK_SQCH1DSC3AR_FMT_Pos (24UL) /*!< FMT (Bit 24) */ + #define R_DSILINK_SQCH1DSC3AR_FMT_Msk (0x1000000UL) /*!< FMT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1DSC3AR_SPD_Pos (25UL) /*!< SPD (Bit 25) */ + #define R_DSILINK_SQCH1DSC3AR_SPD_Msk (0x2000000UL) /*!< SPD (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1DSC3AR_BTA_Pos (26UL) /*!< BTA (Bit 26) */ + #define R_DSILINK_SQCH1DSC3AR_BTA_Msk (0xc000000UL) /*!< BTA (Bitfield-Mask: 0x03) */ + #define R_DSILINK_SQCH1DSC3AR_NXACT_Pos (28UL) /*!< NXACT (Bit 28) */ + #define R_DSILINK_SQCH1DSC3AR_NXACT_Msk (0x30000000UL) /*!< NXACT (Bitfield-Mask: 0x03) */ +/* ====================================================== SQCH1DSC4AR ====================================================== */ + #define R_DSILINK_SQCH1DSC4AR_DATA0_Pos (0UL) /*!< DATA0 (Bit 0) */ + #define R_DSILINK_SQCH1DSC4AR_DATA0_Msk (0xffUL) /*!< DATA0 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_SQCH1DSC4AR_DATA1_Pos (8UL) /*!< DATA1 (Bit 8) */ + #define R_DSILINK_SQCH1DSC4AR_DATA1_Msk (0xff00UL) /*!< DATA1 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_SQCH1DSC4AR_DT_Pos (16UL) /*!< DT (Bit 16) */ + #define R_DSILINK_SQCH1DSC4AR_DT_Msk (0x3f0000UL) /*!< DT (Bitfield-Mask: 0x3f) */ + #define R_DSILINK_SQCH1DSC4AR_VC_Pos (22UL) /*!< VC (Bit 22) */ + #define R_DSILINK_SQCH1DSC4AR_VC_Msk (0xc00000UL) /*!< VC (Bitfield-Mask: 0x03) */ + #define R_DSILINK_SQCH1DSC4AR_FMT_Pos (24UL) /*!< FMT (Bit 24) */ + #define R_DSILINK_SQCH1DSC4AR_FMT_Msk (0x1000000UL) /*!< FMT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1DSC4AR_SPD_Pos (25UL) /*!< SPD (Bit 25) */ + #define R_DSILINK_SQCH1DSC4AR_SPD_Msk (0x2000000UL) /*!< SPD (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1DSC4AR_BTA_Pos (26UL) /*!< BTA (Bit 26) */ + #define R_DSILINK_SQCH1DSC4AR_BTA_Msk (0xc000000UL) /*!< BTA (Bitfield-Mask: 0x03) */ + #define R_DSILINK_SQCH1DSC4AR_NXACT_Pos (28UL) /*!< NXACT (Bit 28) */ + #define R_DSILINK_SQCH1DSC4AR_NXACT_Msk (0x30000000UL) /*!< NXACT (Bitfield-Mask: 0x03) */ +/* ====================================================== SQCH1DSC5AR ====================================================== */ + #define R_DSILINK_SQCH1DSC5AR_DATA0_Pos (0UL) /*!< DATA0 (Bit 0) */ + #define R_DSILINK_SQCH1DSC5AR_DATA0_Msk (0xffUL) /*!< DATA0 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_SQCH1DSC5AR_DATA1_Pos (8UL) /*!< DATA1 (Bit 8) */ + #define R_DSILINK_SQCH1DSC5AR_DATA1_Msk (0xff00UL) /*!< DATA1 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_SQCH1DSC5AR_DT_Pos (16UL) /*!< DT (Bit 16) */ + #define R_DSILINK_SQCH1DSC5AR_DT_Msk (0x3f0000UL) /*!< DT (Bitfield-Mask: 0x3f) */ + #define R_DSILINK_SQCH1DSC5AR_VC_Pos (22UL) /*!< VC (Bit 22) */ + #define R_DSILINK_SQCH1DSC5AR_VC_Msk (0xc00000UL) /*!< VC (Bitfield-Mask: 0x03) */ + #define R_DSILINK_SQCH1DSC5AR_FMT_Pos (24UL) /*!< FMT (Bit 24) */ + #define R_DSILINK_SQCH1DSC5AR_FMT_Msk (0x1000000UL) /*!< FMT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1DSC5AR_SPD_Pos (25UL) /*!< SPD (Bit 25) */ + #define R_DSILINK_SQCH1DSC5AR_SPD_Msk (0x2000000UL) /*!< SPD (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1DSC5AR_BTA_Pos (26UL) /*!< BTA (Bit 26) */ + #define R_DSILINK_SQCH1DSC5AR_BTA_Msk (0xc000000UL) /*!< BTA (Bitfield-Mask: 0x03) */ + #define R_DSILINK_SQCH1DSC5AR_NXACT_Pos (28UL) /*!< NXACT (Bit 28) */ + #define R_DSILINK_SQCH1DSC5AR_NXACT_Msk (0x30000000UL) /*!< NXACT (Bitfield-Mask: 0x03) */ +/* ====================================================== SQCH1DSC6AR ====================================================== */ + #define R_DSILINK_SQCH1DSC6AR_DATA0_Pos (0UL) /*!< DATA0 (Bit 0) */ + #define R_DSILINK_SQCH1DSC6AR_DATA0_Msk (0xffUL) /*!< DATA0 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_SQCH1DSC6AR_DATA1_Pos (8UL) /*!< DATA1 (Bit 8) */ + #define R_DSILINK_SQCH1DSC6AR_DATA1_Msk (0xff00UL) /*!< DATA1 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_SQCH1DSC6AR_DT_Pos (16UL) /*!< DT (Bit 16) */ + #define R_DSILINK_SQCH1DSC6AR_DT_Msk (0x3f0000UL) /*!< DT (Bitfield-Mask: 0x3f) */ + #define R_DSILINK_SQCH1DSC6AR_VC_Pos (22UL) /*!< VC (Bit 22) */ + #define R_DSILINK_SQCH1DSC6AR_VC_Msk (0xc00000UL) /*!< VC (Bitfield-Mask: 0x03) */ + #define R_DSILINK_SQCH1DSC6AR_FMT_Pos (24UL) /*!< FMT (Bit 24) */ + #define R_DSILINK_SQCH1DSC6AR_FMT_Msk (0x1000000UL) /*!< FMT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1DSC6AR_SPD_Pos (25UL) /*!< SPD (Bit 25) */ + #define R_DSILINK_SQCH1DSC6AR_SPD_Msk (0x2000000UL) /*!< SPD (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1DSC6AR_BTA_Pos (26UL) /*!< BTA (Bit 26) */ + #define R_DSILINK_SQCH1DSC6AR_BTA_Msk (0xc000000UL) /*!< BTA (Bitfield-Mask: 0x03) */ + #define R_DSILINK_SQCH1DSC6AR_NXACT_Pos (28UL) /*!< NXACT (Bit 28) */ + #define R_DSILINK_SQCH1DSC6AR_NXACT_Msk (0x30000000UL) /*!< NXACT (Bitfield-Mask: 0x03) */ +/* ====================================================== SQCH1DSC7AR ====================================================== */ + #define R_DSILINK_SQCH1DSC7AR_DATA0_Pos (0UL) /*!< DATA0 (Bit 0) */ + #define R_DSILINK_SQCH1DSC7AR_DATA0_Msk (0xffUL) /*!< DATA0 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_SQCH1DSC7AR_DATA1_Pos (8UL) /*!< DATA1 (Bit 8) */ + #define R_DSILINK_SQCH1DSC7AR_DATA1_Msk (0xff00UL) /*!< DATA1 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_SQCH1DSC7AR_DT_Pos (16UL) /*!< DT (Bit 16) */ + #define R_DSILINK_SQCH1DSC7AR_DT_Msk (0x3f0000UL) /*!< DT (Bitfield-Mask: 0x3f) */ + #define R_DSILINK_SQCH1DSC7AR_VC_Pos (22UL) /*!< VC (Bit 22) */ + #define R_DSILINK_SQCH1DSC7AR_VC_Msk (0xc00000UL) /*!< VC (Bitfield-Mask: 0x03) */ + #define R_DSILINK_SQCH1DSC7AR_FMT_Pos (24UL) /*!< FMT (Bit 24) */ + #define R_DSILINK_SQCH1DSC7AR_FMT_Msk (0x1000000UL) /*!< FMT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1DSC7AR_SPD_Pos (25UL) /*!< SPD (Bit 25) */ + #define R_DSILINK_SQCH1DSC7AR_SPD_Msk (0x2000000UL) /*!< SPD (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1DSC7AR_BTA_Pos (26UL) /*!< BTA (Bit 26) */ + #define R_DSILINK_SQCH1DSC7AR_BTA_Msk (0xc000000UL) /*!< BTA (Bitfield-Mask: 0x03) */ + #define R_DSILINK_SQCH1DSC7AR_NXACT_Pos (28UL) /*!< NXACT (Bit 28) */ + #define R_DSILINK_SQCH1DSC7AR_NXACT_Msk (0x30000000UL) /*!< NXACT (Bitfield-Mask: 0x03) */ +/* ===================================================== SQCH1DSC0AR_L ===================================================== */ + #define R_DSILINK_SQCH1DSC0AR_L_DATA0_Pos (0UL) /*!< DATA0 (Bit 0) */ + #define R_DSILINK_SQCH1DSC0AR_L_DATA0_Msk (0xffUL) /*!< DATA0 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_SQCH1DSC0AR_L_DATA1_Pos (8UL) /*!< DATA1 (Bit 8) */ + #define R_DSILINK_SQCH1DSC0AR_L_DATA1_Msk (0xff00UL) /*!< DATA1 (Bitfield-Mask: 0xff) */ +/* ===================================================== SQCH1DSC1AR_L ===================================================== */ + #define R_DSILINK_SQCH1DSC1AR_L_DATA0_Pos (0UL) /*!< DATA0 (Bit 0) */ + #define R_DSILINK_SQCH1DSC1AR_L_DATA0_Msk (0xffUL) /*!< DATA0 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_SQCH1DSC1AR_L_DATA1_Pos (8UL) /*!< DATA1 (Bit 8) */ + #define R_DSILINK_SQCH1DSC1AR_L_DATA1_Msk (0xff00UL) /*!< DATA1 (Bitfield-Mask: 0xff) */ +/* ===================================================== SQCH1DSC2AR_L ===================================================== */ + #define R_DSILINK_SQCH1DSC2AR_L_DATA0_Pos (0UL) /*!< DATA0 (Bit 0) */ + #define R_DSILINK_SQCH1DSC2AR_L_DATA0_Msk (0xffUL) /*!< DATA0 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_SQCH1DSC2AR_L_DATA1_Pos (8UL) /*!< DATA1 (Bit 8) */ + #define R_DSILINK_SQCH1DSC2AR_L_DATA1_Msk (0xff00UL) /*!< DATA1 (Bitfield-Mask: 0xff) */ +/* ===================================================== SQCH1DSC3AR_L ===================================================== */ + #define R_DSILINK_SQCH1DSC3AR_L_DATA0_Pos (0UL) /*!< DATA0 (Bit 0) */ + #define R_DSILINK_SQCH1DSC3AR_L_DATA0_Msk (0xffUL) /*!< DATA0 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_SQCH1DSC3AR_L_DATA1_Pos (8UL) /*!< DATA1 (Bit 8) */ + #define R_DSILINK_SQCH1DSC3AR_L_DATA1_Msk (0xff00UL) /*!< DATA1 (Bitfield-Mask: 0xff) */ +/* ===================================================== SQCH1DSC4AR_L ===================================================== */ + #define R_DSILINK_SQCH1DSC4AR_L_DATA0_Pos (0UL) /*!< DATA0 (Bit 0) */ + #define R_DSILINK_SQCH1DSC4AR_L_DATA0_Msk (0xffUL) /*!< DATA0 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_SQCH1DSC4AR_L_DATA1_Pos (8UL) /*!< DATA1 (Bit 8) */ + #define R_DSILINK_SQCH1DSC4AR_L_DATA1_Msk (0xff00UL) /*!< DATA1 (Bitfield-Mask: 0xff) */ +/* ===================================================== SQCH1DSC5AR_L ===================================================== */ + #define R_DSILINK_SQCH1DSC5AR_L_DATA0_Pos (0UL) /*!< DATA0 (Bit 0) */ + #define R_DSILINK_SQCH1DSC5AR_L_DATA0_Msk (0xffUL) /*!< DATA0 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_SQCH1DSC5AR_L_DATA1_Pos (8UL) /*!< DATA1 (Bit 8) */ + #define R_DSILINK_SQCH1DSC5AR_L_DATA1_Msk (0xff00UL) /*!< DATA1 (Bitfield-Mask: 0xff) */ +/* ===================================================== SQCH1DSC6AR_L ===================================================== */ + #define R_DSILINK_SQCH1DSC6AR_L_DATA0_Pos (0UL) /*!< DATA0 (Bit 0) */ + #define R_DSILINK_SQCH1DSC6AR_L_DATA0_Msk (0xffUL) /*!< DATA0 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_SQCH1DSC6AR_L_DATA1_Pos (8UL) /*!< DATA1 (Bit 8) */ + #define R_DSILINK_SQCH1DSC6AR_L_DATA1_Msk (0xff00UL) /*!< DATA1 (Bitfield-Mask: 0xff) */ +/* ===================================================== SQCH1DSC7AR_L ===================================================== */ + #define R_DSILINK_SQCH1DSC7AR_L_DATA0_Pos (0UL) /*!< DATA0 (Bit 0) */ + #define R_DSILINK_SQCH1DSC7AR_L_DATA0_Msk (0xffUL) /*!< DATA0 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_SQCH1DSC7AR_L_DATA1_Pos (8UL) /*!< DATA1 (Bit 8) */ + #define R_DSILINK_SQCH1DSC7AR_L_DATA1_Msk (0xff00UL) /*!< DATA1 (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH1DSC0AR_LL ===================================================== */ + #define R_DSILINK_SQCH1DSC0AR_LL_DATA0_Pos (0UL) /*!< DATA0 (Bit 0) */ + #define R_DSILINK_SQCH1DSC0AR_LL_DATA0_Msk (0xffUL) /*!< DATA0 (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH1DSC1AR_LL ===================================================== */ + #define R_DSILINK_SQCH1DSC1AR_LL_DATA0_Pos (0UL) /*!< DATA0 (Bit 0) */ + #define R_DSILINK_SQCH1DSC1AR_LL_DATA0_Msk (0xffUL) /*!< DATA0 (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH1DSC2AR_LL ===================================================== */ + #define R_DSILINK_SQCH1DSC2AR_LL_DATA0_Pos (0UL) /*!< DATA0 (Bit 0) */ + #define R_DSILINK_SQCH1DSC2AR_LL_DATA0_Msk (0xffUL) /*!< DATA0 (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH1DSC3AR_LL ===================================================== */ + #define R_DSILINK_SQCH1DSC3AR_LL_DATA0_Pos (0UL) /*!< DATA0 (Bit 0) */ + #define R_DSILINK_SQCH1DSC3AR_LL_DATA0_Msk (0xffUL) /*!< DATA0 (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH1DSC4AR_LL ===================================================== */ + #define R_DSILINK_SQCH1DSC4AR_LL_DATA0_Pos (0UL) /*!< DATA0 (Bit 0) */ + #define R_DSILINK_SQCH1DSC4AR_LL_DATA0_Msk (0xffUL) /*!< DATA0 (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH1DSC5AR_LL ===================================================== */ + #define R_DSILINK_SQCH1DSC5AR_LL_DATA0_Pos (0UL) /*!< DATA0 (Bit 0) */ + #define R_DSILINK_SQCH1DSC5AR_LL_DATA0_Msk (0xffUL) /*!< DATA0 (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH1DSC6AR_LL ===================================================== */ + #define R_DSILINK_SQCH1DSC6AR_LL_DATA0_Pos (0UL) /*!< DATA0 (Bit 0) */ + #define R_DSILINK_SQCH1DSC6AR_LL_DATA0_Msk (0xffUL) /*!< DATA0 (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH1DSC7AR_LL ===================================================== */ + #define R_DSILINK_SQCH1DSC7AR_LL_DATA0_Pos (0UL) /*!< DATA0 (Bit 0) */ + #define R_DSILINK_SQCH1DSC7AR_LL_DATA0_Msk (0xffUL) /*!< DATA0 (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH1DSC0AR_LH ===================================================== */ + #define R_DSILINK_SQCH1DSC0AR_LH_DATA1_Pos (0UL) /*!< DATA1 (Bit 0) */ + #define R_DSILINK_SQCH1DSC0AR_LH_DATA1_Msk (0xffUL) /*!< DATA1 (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH1DSC1AR_LH ===================================================== */ + #define R_DSILINK_SQCH1DSC1AR_LH_DATA1_Pos (0UL) /*!< DATA1 (Bit 0) */ + #define R_DSILINK_SQCH1DSC1AR_LH_DATA1_Msk (0xffUL) /*!< DATA1 (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH1DSC2AR_LH ===================================================== */ + #define R_DSILINK_SQCH1DSC2AR_LH_DATA1_Pos (0UL) /*!< DATA1 (Bit 0) */ + #define R_DSILINK_SQCH1DSC2AR_LH_DATA1_Msk (0xffUL) /*!< DATA1 (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH1DSC3AR_LH ===================================================== */ + #define R_DSILINK_SQCH1DSC3AR_LH_DATA1_Pos (0UL) /*!< DATA1 (Bit 0) */ + #define R_DSILINK_SQCH1DSC3AR_LH_DATA1_Msk (0xffUL) /*!< DATA1 (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH1DSC4AR_LH ===================================================== */ + #define R_DSILINK_SQCH1DSC4AR_LH_DATA1_Pos (0UL) /*!< DATA1 (Bit 0) */ + #define R_DSILINK_SQCH1DSC4AR_LH_DATA1_Msk (0xffUL) /*!< DATA1 (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH1DSC5AR_LH ===================================================== */ + #define R_DSILINK_SQCH1DSC5AR_LH_DATA1_Pos (0UL) /*!< DATA1 (Bit 0) */ + #define R_DSILINK_SQCH1DSC5AR_LH_DATA1_Msk (0xffUL) /*!< DATA1 (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH1DSC6AR_LH ===================================================== */ + #define R_DSILINK_SQCH1DSC6AR_LH_DATA1_Pos (0UL) /*!< DATA1 (Bit 0) */ + #define R_DSILINK_SQCH1DSC6AR_LH_DATA1_Msk (0xffUL) /*!< DATA1 (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH1DSC7AR_LH ===================================================== */ + #define R_DSILINK_SQCH1DSC7AR_LH_DATA1_Pos (0UL) /*!< DATA1 (Bit 0) */ + #define R_DSILINK_SQCH1DSC7AR_LH_DATA1_Msk (0xffUL) /*!< DATA1 (Bitfield-Mask: 0xff) */ +/* ===================================================== SQCH1DSC0AR_H ===================================================== */ + #define R_DSILINK_SQCH1DSC0AR_H_DT_Pos (0UL) /*!< DT (Bit 0) */ + #define R_DSILINK_SQCH1DSC0AR_H_DT_Msk (0x3fUL) /*!< DT (Bitfield-Mask: 0x3f) */ + #define R_DSILINK_SQCH1DSC0AR_H_VC_Pos (6UL) /*!< VC (Bit 6) */ + #define R_DSILINK_SQCH1DSC0AR_H_VC_Msk (0xc0UL) /*!< VC (Bitfield-Mask: 0x03) */ + #define R_DSILINK_SQCH1DSC0AR_H_FMT_Pos (8UL) /*!< FMT (Bit 8) */ + #define R_DSILINK_SQCH1DSC0AR_H_FMT_Msk (0x100UL) /*!< FMT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1DSC0AR_H_SPD_Pos (9UL) /*!< SPD (Bit 9) */ + #define R_DSILINK_SQCH1DSC0AR_H_SPD_Msk (0x200UL) /*!< SPD (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1DSC0AR_H_BTA_Pos (10UL) /*!< BTA (Bit 10) */ + #define R_DSILINK_SQCH1DSC0AR_H_BTA_Msk (0xc00UL) /*!< BTA (Bitfield-Mask: 0x03) */ + #define R_DSILINK_SQCH1DSC0AR_H_NXACT_Pos (12UL) /*!< NXACT (Bit 12) */ + #define R_DSILINK_SQCH1DSC0AR_H_NXACT_Msk (0x3000UL) /*!< NXACT (Bitfield-Mask: 0x03) */ +/* ===================================================== SQCH1DSC1AR_H ===================================================== */ + #define R_DSILINK_SQCH1DSC1AR_H_DT_Pos (0UL) /*!< DT (Bit 0) */ + #define R_DSILINK_SQCH1DSC1AR_H_DT_Msk (0x3fUL) /*!< DT (Bitfield-Mask: 0x3f) */ + #define R_DSILINK_SQCH1DSC1AR_H_VC_Pos (6UL) /*!< VC (Bit 6) */ + #define R_DSILINK_SQCH1DSC1AR_H_VC_Msk (0xc0UL) /*!< VC (Bitfield-Mask: 0x03) */ + #define R_DSILINK_SQCH1DSC1AR_H_FMT_Pos (8UL) /*!< FMT (Bit 8) */ + #define R_DSILINK_SQCH1DSC1AR_H_FMT_Msk (0x100UL) /*!< FMT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1DSC1AR_H_SPD_Pos (9UL) /*!< SPD (Bit 9) */ + #define R_DSILINK_SQCH1DSC1AR_H_SPD_Msk (0x200UL) /*!< SPD (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1DSC1AR_H_BTA_Pos (10UL) /*!< BTA (Bit 10) */ + #define R_DSILINK_SQCH1DSC1AR_H_BTA_Msk (0xc00UL) /*!< BTA (Bitfield-Mask: 0x03) */ + #define R_DSILINK_SQCH1DSC1AR_H_NXACT_Pos (12UL) /*!< NXACT (Bit 12) */ + #define R_DSILINK_SQCH1DSC1AR_H_NXACT_Msk (0x3000UL) /*!< NXACT (Bitfield-Mask: 0x03) */ +/* ===================================================== SQCH1DSC2AR_H ===================================================== */ + #define R_DSILINK_SQCH1DSC2AR_H_DT_Pos (0UL) /*!< DT (Bit 0) */ + #define R_DSILINK_SQCH1DSC2AR_H_DT_Msk (0x3fUL) /*!< DT (Bitfield-Mask: 0x3f) */ + #define R_DSILINK_SQCH1DSC2AR_H_VC_Pos (6UL) /*!< VC (Bit 6) */ + #define R_DSILINK_SQCH1DSC2AR_H_VC_Msk (0xc0UL) /*!< VC (Bitfield-Mask: 0x03) */ + #define R_DSILINK_SQCH1DSC2AR_H_FMT_Pos (8UL) /*!< FMT (Bit 8) */ + #define R_DSILINK_SQCH1DSC2AR_H_FMT_Msk (0x100UL) /*!< FMT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1DSC2AR_H_SPD_Pos (9UL) /*!< SPD (Bit 9) */ + #define R_DSILINK_SQCH1DSC2AR_H_SPD_Msk (0x200UL) /*!< SPD (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1DSC2AR_H_BTA_Pos (10UL) /*!< BTA (Bit 10) */ + #define R_DSILINK_SQCH1DSC2AR_H_BTA_Msk (0xc00UL) /*!< BTA (Bitfield-Mask: 0x03) */ + #define R_DSILINK_SQCH1DSC2AR_H_NXACT_Pos (12UL) /*!< NXACT (Bit 12) */ + #define R_DSILINK_SQCH1DSC2AR_H_NXACT_Msk (0x3000UL) /*!< NXACT (Bitfield-Mask: 0x03) */ +/* ===================================================== SQCH1DSC3AR_H ===================================================== */ + #define R_DSILINK_SQCH1DSC3AR_H_DT_Pos (0UL) /*!< DT (Bit 0) */ + #define R_DSILINK_SQCH1DSC3AR_H_DT_Msk (0x3fUL) /*!< DT (Bitfield-Mask: 0x3f) */ + #define R_DSILINK_SQCH1DSC3AR_H_VC_Pos (6UL) /*!< VC (Bit 6) */ + #define R_DSILINK_SQCH1DSC3AR_H_VC_Msk (0xc0UL) /*!< VC (Bitfield-Mask: 0x03) */ + #define R_DSILINK_SQCH1DSC3AR_H_FMT_Pos (8UL) /*!< FMT (Bit 8) */ + #define R_DSILINK_SQCH1DSC3AR_H_FMT_Msk (0x100UL) /*!< FMT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1DSC3AR_H_SPD_Pos (9UL) /*!< SPD (Bit 9) */ + #define R_DSILINK_SQCH1DSC3AR_H_SPD_Msk (0x200UL) /*!< SPD (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1DSC3AR_H_BTA_Pos (10UL) /*!< BTA (Bit 10) */ + #define R_DSILINK_SQCH1DSC3AR_H_BTA_Msk (0xc00UL) /*!< BTA (Bitfield-Mask: 0x03) */ + #define R_DSILINK_SQCH1DSC3AR_H_NXACT_Pos (12UL) /*!< NXACT (Bit 12) */ + #define R_DSILINK_SQCH1DSC3AR_H_NXACT_Msk (0x3000UL) /*!< NXACT (Bitfield-Mask: 0x03) */ +/* ===================================================== SQCH1DSC4AR_H ===================================================== */ + #define R_DSILINK_SQCH1DSC4AR_H_DT_Pos (0UL) /*!< DT (Bit 0) */ + #define R_DSILINK_SQCH1DSC4AR_H_DT_Msk (0x3fUL) /*!< DT (Bitfield-Mask: 0x3f) */ + #define R_DSILINK_SQCH1DSC4AR_H_VC_Pos (6UL) /*!< VC (Bit 6) */ + #define R_DSILINK_SQCH1DSC4AR_H_VC_Msk (0xc0UL) /*!< VC (Bitfield-Mask: 0x03) */ + #define R_DSILINK_SQCH1DSC4AR_H_FMT_Pos (8UL) /*!< FMT (Bit 8) */ + #define R_DSILINK_SQCH1DSC4AR_H_FMT_Msk (0x100UL) /*!< FMT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1DSC4AR_H_SPD_Pos (9UL) /*!< SPD (Bit 9) */ + #define R_DSILINK_SQCH1DSC4AR_H_SPD_Msk (0x200UL) /*!< SPD (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1DSC4AR_H_BTA_Pos (10UL) /*!< BTA (Bit 10) */ + #define R_DSILINK_SQCH1DSC4AR_H_BTA_Msk (0xc00UL) /*!< BTA (Bitfield-Mask: 0x03) */ + #define R_DSILINK_SQCH1DSC4AR_H_NXACT_Pos (12UL) /*!< NXACT (Bit 12) */ + #define R_DSILINK_SQCH1DSC4AR_H_NXACT_Msk (0x3000UL) /*!< NXACT (Bitfield-Mask: 0x03) */ +/* ===================================================== SQCH1DSC5AR_H ===================================================== */ + #define R_DSILINK_SQCH1DSC5AR_H_DT_Pos (0UL) /*!< DT (Bit 0) */ + #define R_DSILINK_SQCH1DSC5AR_H_DT_Msk (0x3fUL) /*!< DT (Bitfield-Mask: 0x3f) */ + #define R_DSILINK_SQCH1DSC5AR_H_VC_Pos (6UL) /*!< VC (Bit 6) */ + #define R_DSILINK_SQCH1DSC5AR_H_VC_Msk (0xc0UL) /*!< VC (Bitfield-Mask: 0x03) */ + #define R_DSILINK_SQCH1DSC5AR_H_FMT_Pos (8UL) /*!< FMT (Bit 8) */ + #define R_DSILINK_SQCH1DSC5AR_H_FMT_Msk (0x100UL) /*!< FMT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1DSC5AR_H_SPD_Pos (9UL) /*!< SPD (Bit 9) */ + #define R_DSILINK_SQCH1DSC5AR_H_SPD_Msk (0x200UL) /*!< SPD (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1DSC5AR_H_BTA_Pos (10UL) /*!< BTA (Bit 10) */ + #define R_DSILINK_SQCH1DSC5AR_H_BTA_Msk (0xc00UL) /*!< BTA (Bitfield-Mask: 0x03) */ + #define R_DSILINK_SQCH1DSC5AR_H_NXACT_Pos (12UL) /*!< NXACT (Bit 12) */ + #define R_DSILINK_SQCH1DSC5AR_H_NXACT_Msk (0x3000UL) /*!< NXACT (Bitfield-Mask: 0x03) */ +/* ===================================================== SQCH1DSC6AR_H ===================================================== */ + #define R_DSILINK_SQCH1DSC6AR_H_DT_Pos (0UL) /*!< DT (Bit 0) */ + #define R_DSILINK_SQCH1DSC6AR_H_DT_Msk (0x3fUL) /*!< DT (Bitfield-Mask: 0x3f) */ + #define R_DSILINK_SQCH1DSC6AR_H_VC_Pos (6UL) /*!< VC (Bit 6) */ + #define R_DSILINK_SQCH1DSC6AR_H_VC_Msk (0xc0UL) /*!< VC (Bitfield-Mask: 0x03) */ + #define R_DSILINK_SQCH1DSC6AR_H_FMT_Pos (8UL) /*!< FMT (Bit 8) */ + #define R_DSILINK_SQCH1DSC6AR_H_FMT_Msk (0x100UL) /*!< FMT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1DSC6AR_H_SPD_Pos (9UL) /*!< SPD (Bit 9) */ + #define R_DSILINK_SQCH1DSC6AR_H_SPD_Msk (0x200UL) /*!< SPD (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1DSC6AR_H_BTA_Pos (10UL) /*!< BTA (Bit 10) */ + #define R_DSILINK_SQCH1DSC6AR_H_BTA_Msk (0xc00UL) /*!< BTA (Bitfield-Mask: 0x03) */ + #define R_DSILINK_SQCH1DSC6AR_H_NXACT_Pos (12UL) /*!< NXACT (Bit 12) */ + #define R_DSILINK_SQCH1DSC6AR_H_NXACT_Msk (0x3000UL) /*!< NXACT (Bitfield-Mask: 0x03) */ +/* ===================================================== SQCH1DSC7AR_H ===================================================== */ + #define R_DSILINK_SQCH1DSC7AR_H_DT_Pos (0UL) /*!< DT (Bit 0) */ + #define R_DSILINK_SQCH1DSC7AR_H_DT_Msk (0x3fUL) /*!< DT (Bitfield-Mask: 0x3f) */ + #define R_DSILINK_SQCH1DSC7AR_H_VC_Pos (6UL) /*!< VC (Bit 6) */ + #define R_DSILINK_SQCH1DSC7AR_H_VC_Msk (0xc0UL) /*!< VC (Bitfield-Mask: 0x03) */ + #define R_DSILINK_SQCH1DSC7AR_H_FMT_Pos (8UL) /*!< FMT (Bit 8) */ + #define R_DSILINK_SQCH1DSC7AR_H_FMT_Msk (0x100UL) /*!< FMT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1DSC7AR_H_SPD_Pos (9UL) /*!< SPD (Bit 9) */ + #define R_DSILINK_SQCH1DSC7AR_H_SPD_Msk (0x200UL) /*!< SPD (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1DSC7AR_H_BTA_Pos (10UL) /*!< BTA (Bit 10) */ + #define R_DSILINK_SQCH1DSC7AR_H_BTA_Msk (0xc00UL) /*!< BTA (Bitfield-Mask: 0x03) */ + #define R_DSILINK_SQCH1DSC7AR_H_NXACT_Pos (12UL) /*!< NXACT (Bit 12) */ + #define R_DSILINK_SQCH1DSC7AR_H_NXACT_Msk (0x3000UL) /*!< NXACT (Bitfield-Mask: 0x03) */ +/* ==================================================== SQCH1DSC0AR_HL ===================================================== */ + #define R_DSILINK_SQCH1DSC0AR_HL_DT_Pos (0UL) /*!< DT (Bit 0) */ + #define R_DSILINK_SQCH1DSC0AR_HL_DT_Msk (0x3fUL) /*!< DT (Bitfield-Mask: 0x3f) */ + #define R_DSILINK_SQCH1DSC0AR_HL_VC_Pos (6UL) /*!< VC (Bit 6) */ + #define R_DSILINK_SQCH1DSC0AR_HL_VC_Msk (0xc0UL) /*!< VC (Bitfield-Mask: 0x03) */ +/* ==================================================== SQCH1DSC1AR_HL ===================================================== */ + #define R_DSILINK_SQCH1DSC1AR_HL_DT_Pos (0UL) /*!< DT (Bit 0) */ + #define R_DSILINK_SQCH1DSC1AR_HL_DT_Msk (0x3fUL) /*!< DT (Bitfield-Mask: 0x3f) */ + #define R_DSILINK_SQCH1DSC1AR_HL_VC_Pos (6UL) /*!< VC (Bit 6) */ + #define R_DSILINK_SQCH1DSC1AR_HL_VC_Msk (0xc0UL) /*!< VC (Bitfield-Mask: 0x03) */ +/* ==================================================== SQCH1DSC2AR_HL ===================================================== */ + #define R_DSILINK_SQCH1DSC2AR_HL_DT_Pos (0UL) /*!< DT (Bit 0) */ + #define R_DSILINK_SQCH1DSC2AR_HL_DT_Msk (0x3fUL) /*!< DT (Bitfield-Mask: 0x3f) */ + #define R_DSILINK_SQCH1DSC2AR_HL_VC_Pos (6UL) /*!< VC (Bit 6) */ + #define R_DSILINK_SQCH1DSC2AR_HL_VC_Msk (0xc0UL) /*!< VC (Bitfield-Mask: 0x03) */ +/* ==================================================== SQCH1DSC3AR_HL ===================================================== */ + #define R_DSILINK_SQCH1DSC3AR_HL_DT_Pos (0UL) /*!< DT (Bit 0) */ + #define R_DSILINK_SQCH1DSC3AR_HL_DT_Msk (0x3fUL) /*!< DT (Bitfield-Mask: 0x3f) */ + #define R_DSILINK_SQCH1DSC3AR_HL_VC_Pos (6UL) /*!< VC (Bit 6) */ + #define R_DSILINK_SQCH1DSC3AR_HL_VC_Msk (0xc0UL) /*!< VC (Bitfield-Mask: 0x03) */ +/* ==================================================== SQCH1DSC4AR_HL ===================================================== */ + #define R_DSILINK_SQCH1DSC4AR_HL_DT_Pos (0UL) /*!< DT (Bit 0) */ + #define R_DSILINK_SQCH1DSC4AR_HL_DT_Msk (0x3fUL) /*!< DT (Bitfield-Mask: 0x3f) */ + #define R_DSILINK_SQCH1DSC4AR_HL_VC_Pos (6UL) /*!< VC (Bit 6) */ + #define R_DSILINK_SQCH1DSC4AR_HL_VC_Msk (0xc0UL) /*!< VC (Bitfield-Mask: 0x03) */ +/* ==================================================== SQCH1DSC5AR_HL ===================================================== */ + #define R_DSILINK_SQCH1DSC5AR_HL_DT_Pos (0UL) /*!< DT (Bit 0) */ + #define R_DSILINK_SQCH1DSC5AR_HL_DT_Msk (0x3fUL) /*!< DT (Bitfield-Mask: 0x3f) */ + #define R_DSILINK_SQCH1DSC5AR_HL_VC_Pos (6UL) /*!< VC (Bit 6) */ + #define R_DSILINK_SQCH1DSC5AR_HL_VC_Msk (0xc0UL) /*!< VC (Bitfield-Mask: 0x03) */ +/* ==================================================== SQCH1DSC6AR_HL ===================================================== */ + #define R_DSILINK_SQCH1DSC6AR_HL_DT_Pos (0UL) /*!< DT (Bit 0) */ + #define R_DSILINK_SQCH1DSC6AR_HL_DT_Msk (0x3fUL) /*!< DT (Bitfield-Mask: 0x3f) */ + #define R_DSILINK_SQCH1DSC6AR_HL_VC_Pos (6UL) /*!< VC (Bit 6) */ + #define R_DSILINK_SQCH1DSC6AR_HL_VC_Msk (0xc0UL) /*!< VC (Bitfield-Mask: 0x03) */ +/* ==================================================== SQCH1DSC7AR_HL ===================================================== */ + #define R_DSILINK_SQCH1DSC7AR_HL_DT_Pos (0UL) /*!< DT (Bit 0) */ + #define R_DSILINK_SQCH1DSC7AR_HL_DT_Msk (0x3fUL) /*!< DT (Bitfield-Mask: 0x3f) */ + #define R_DSILINK_SQCH1DSC7AR_HL_VC_Pos (6UL) /*!< VC (Bit 6) */ + #define R_DSILINK_SQCH1DSC7AR_HL_VC_Msk (0xc0UL) /*!< VC (Bitfield-Mask: 0x03) */ +/* ==================================================== SQCH1DSC0AR_HH ===================================================== */ + #define R_DSILINK_SQCH1DSC0AR_HH_FMT_Pos (0UL) /*!< FMT (Bit 0) */ + #define R_DSILINK_SQCH1DSC0AR_HH_FMT_Msk (0x1UL) /*!< FMT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1DSC0AR_HH_SPD_Pos (1UL) /*!< SPD (Bit 1) */ + #define R_DSILINK_SQCH1DSC0AR_HH_SPD_Msk (0x2UL) /*!< SPD (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1DSC0AR_HH_BTA_Pos (2UL) /*!< BTA (Bit 2) */ + #define R_DSILINK_SQCH1DSC0AR_HH_BTA_Msk (0xcUL) /*!< BTA (Bitfield-Mask: 0x03) */ + #define R_DSILINK_SQCH1DSC0AR_HH_NXACT_Pos (4UL) /*!< NXACT (Bit 4) */ + #define R_DSILINK_SQCH1DSC0AR_HH_NXACT_Msk (0x30UL) /*!< NXACT (Bitfield-Mask: 0x03) */ +/* ==================================================== SQCH1DSC1AR_HH ===================================================== */ + #define R_DSILINK_SQCH1DSC1AR_HH_FMT_Pos (0UL) /*!< FMT (Bit 0) */ + #define R_DSILINK_SQCH1DSC1AR_HH_FMT_Msk (0x1UL) /*!< FMT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1DSC1AR_HH_SPD_Pos (1UL) /*!< SPD (Bit 1) */ + #define R_DSILINK_SQCH1DSC1AR_HH_SPD_Msk (0x2UL) /*!< SPD (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1DSC1AR_HH_BTA_Pos (2UL) /*!< BTA (Bit 2) */ + #define R_DSILINK_SQCH1DSC1AR_HH_BTA_Msk (0xcUL) /*!< BTA (Bitfield-Mask: 0x03) */ + #define R_DSILINK_SQCH1DSC1AR_HH_NXACT_Pos (4UL) /*!< NXACT (Bit 4) */ + #define R_DSILINK_SQCH1DSC1AR_HH_NXACT_Msk (0x30UL) /*!< NXACT (Bitfield-Mask: 0x03) */ +/* ==================================================== SQCH1DSC2AR_HH ===================================================== */ + #define R_DSILINK_SQCH1DSC2AR_HH_FMT_Pos (0UL) /*!< FMT (Bit 0) */ + #define R_DSILINK_SQCH1DSC2AR_HH_FMT_Msk (0x1UL) /*!< FMT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1DSC2AR_HH_SPD_Pos (1UL) /*!< SPD (Bit 1) */ + #define R_DSILINK_SQCH1DSC2AR_HH_SPD_Msk (0x2UL) /*!< SPD (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1DSC2AR_HH_BTA_Pos (2UL) /*!< BTA (Bit 2) */ + #define R_DSILINK_SQCH1DSC2AR_HH_BTA_Msk (0xcUL) /*!< BTA (Bitfield-Mask: 0x03) */ + #define R_DSILINK_SQCH1DSC2AR_HH_NXACT_Pos (4UL) /*!< NXACT (Bit 4) */ + #define R_DSILINK_SQCH1DSC2AR_HH_NXACT_Msk (0x30UL) /*!< NXACT (Bitfield-Mask: 0x03) */ +/* ==================================================== SQCH1DSC3AR_HH ===================================================== */ + #define R_DSILINK_SQCH1DSC3AR_HH_FMT_Pos (0UL) /*!< FMT (Bit 0) */ + #define R_DSILINK_SQCH1DSC3AR_HH_FMT_Msk (0x1UL) /*!< FMT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1DSC3AR_HH_SPD_Pos (1UL) /*!< SPD (Bit 1) */ + #define R_DSILINK_SQCH1DSC3AR_HH_SPD_Msk (0x2UL) /*!< SPD (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1DSC3AR_HH_BTA_Pos (2UL) /*!< BTA (Bit 2) */ + #define R_DSILINK_SQCH1DSC3AR_HH_BTA_Msk (0xcUL) /*!< BTA (Bitfield-Mask: 0x03) */ + #define R_DSILINK_SQCH1DSC3AR_HH_NXACT_Pos (4UL) /*!< NXACT (Bit 4) */ + #define R_DSILINK_SQCH1DSC3AR_HH_NXACT_Msk (0x30UL) /*!< NXACT (Bitfield-Mask: 0x03) */ +/* ==================================================== SQCH1DSC4AR_HH ===================================================== */ + #define R_DSILINK_SQCH1DSC4AR_HH_FMT_Pos (0UL) /*!< FMT (Bit 0) */ + #define R_DSILINK_SQCH1DSC4AR_HH_FMT_Msk (0x1UL) /*!< FMT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1DSC4AR_HH_SPD_Pos (1UL) /*!< SPD (Bit 1) */ + #define R_DSILINK_SQCH1DSC4AR_HH_SPD_Msk (0x2UL) /*!< SPD (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1DSC4AR_HH_BTA_Pos (2UL) /*!< BTA (Bit 2) */ + #define R_DSILINK_SQCH1DSC4AR_HH_BTA_Msk (0xcUL) /*!< BTA (Bitfield-Mask: 0x03) */ + #define R_DSILINK_SQCH1DSC4AR_HH_NXACT_Pos (4UL) /*!< NXACT (Bit 4) */ + #define R_DSILINK_SQCH1DSC4AR_HH_NXACT_Msk (0x30UL) /*!< NXACT (Bitfield-Mask: 0x03) */ +/* ==================================================== SQCH1DSC5AR_HH ===================================================== */ + #define R_DSILINK_SQCH1DSC5AR_HH_FMT_Pos (0UL) /*!< FMT (Bit 0) */ + #define R_DSILINK_SQCH1DSC5AR_HH_FMT_Msk (0x1UL) /*!< FMT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1DSC5AR_HH_SPD_Pos (1UL) /*!< SPD (Bit 1) */ + #define R_DSILINK_SQCH1DSC5AR_HH_SPD_Msk (0x2UL) /*!< SPD (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1DSC5AR_HH_BTA_Pos (2UL) /*!< BTA (Bit 2) */ + #define R_DSILINK_SQCH1DSC5AR_HH_BTA_Msk (0xcUL) /*!< BTA (Bitfield-Mask: 0x03) */ + #define R_DSILINK_SQCH1DSC5AR_HH_NXACT_Pos (4UL) /*!< NXACT (Bit 4) */ + #define R_DSILINK_SQCH1DSC5AR_HH_NXACT_Msk (0x30UL) /*!< NXACT (Bitfield-Mask: 0x03) */ +/* ==================================================== SQCH1DSC6AR_HH ===================================================== */ + #define R_DSILINK_SQCH1DSC6AR_HH_FMT_Pos (0UL) /*!< FMT (Bit 0) */ + #define R_DSILINK_SQCH1DSC6AR_HH_FMT_Msk (0x1UL) /*!< FMT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1DSC6AR_HH_SPD_Pos (1UL) /*!< SPD (Bit 1) */ + #define R_DSILINK_SQCH1DSC6AR_HH_SPD_Msk (0x2UL) /*!< SPD (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1DSC6AR_HH_BTA_Pos (2UL) /*!< BTA (Bit 2) */ + #define R_DSILINK_SQCH1DSC6AR_HH_BTA_Msk (0xcUL) /*!< BTA (Bitfield-Mask: 0x03) */ + #define R_DSILINK_SQCH1DSC6AR_HH_NXACT_Pos (4UL) /*!< NXACT (Bit 4) */ + #define R_DSILINK_SQCH1DSC6AR_HH_NXACT_Msk (0x30UL) /*!< NXACT (Bitfield-Mask: 0x03) */ +/* ==================================================== SQCH1DSC7AR_HH ===================================================== */ + #define R_DSILINK_SQCH1DSC7AR_HH_FMT_Pos (0UL) /*!< FMT (Bit 0) */ + #define R_DSILINK_SQCH1DSC7AR_HH_FMT_Msk (0x1UL) /*!< FMT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1DSC7AR_HH_SPD_Pos (1UL) /*!< SPD (Bit 1) */ + #define R_DSILINK_SQCH1DSC7AR_HH_SPD_Msk (0x2UL) /*!< SPD (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1DSC7AR_HH_BTA_Pos (2UL) /*!< BTA (Bit 2) */ + #define R_DSILINK_SQCH1DSC7AR_HH_BTA_Msk (0xcUL) /*!< BTA (Bitfield-Mask: 0x03) */ + #define R_DSILINK_SQCH1DSC7AR_HH_NXACT_Pos (4UL) /*!< NXACT (Bit 4) */ + #define R_DSILINK_SQCH1DSC7AR_HH_NXACT_Msk (0x30UL) /*!< NXACT (Bitfield-Mask: 0x03) */ +/* ====================================================== SQCH1DSC0BR ====================================================== */ + #define R_DSILINK_SQCH1DSC0BR_DTSEL_Pos (24UL) /*!< DTSEL (Bit 24) */ + #define R_DSILINK_SQCH1DSC0BR_DTSEL_Msk (0x3000000UL) /*!< DTSEL (Bitfield-Mask: 0x03) */ +/* ====================================================== SQCH1DSC1BR ====================================================== */ + #define R_DSILINK_SQCH1DSC1BR_DTSEL_Pos (24UL) /*!< DTSEL (Bit 24) */ + #define R_DSILINK_SQCH1DSC1BR_DTSEL_Msk (0x3000000UL) /*!< DTSEL (Bitfield-Mask: 0x03) */ +/* ====================================================== SQCH1DSC2BR ====================================================== */ + #define R_DSILINK_SQCH1DSC2BR_DTSEL_Pos (24UL) /*!< DTSEL (Bit 24) */ + #define R_DSILINK_SQCH1DSC2BR_DTSEL_Msk (0x3000000UL) /*!< DTSEL (Bitfield-Mask: 0x03) */ +/* ====================================================== SQCH1DSC3BR ====================================================== */ + #define R_DSILINK_SQCH1DSC3BR_DTSEL_Pos (24UL) /*!< DTSEL (Bit 24) */ + #define R_DSILINK_SQCH1DSC3BR_DTSEL_Msk (0x3000000UL) /*!< DTSEL (Bitfield-Mask: 0x03) */ +/* ====================================================== SQCH1DSC4BR ====================================================== */ + #define R_DSILINK_SQCH1DSC4BR_DTSEL_Pos (24UL) /*!< DTSEL (Bit 24) */ + #define R_DSILINK_SQCH1DSC4BR_DTSEL_Msk (0x3000000UL) /*!< DTSEL (Bitfield-Mask: 0x03) */ +/* ====================================================== SQCH1DSC5BR ====================================================== */ + #define R_DSILINK_SQCH1DSC5BR_DTSEL_Pos (24UL) /*!< DTSEL (Bit 24) */ + #define R_DSILINK_SQCH1DSC5BR_DTSEL_Msk (0x3000000UL) /*!< DTSEL (Bitfield-Mask: 0x03) */ +/* ====================================================== SQCH1DSC6BR ====================================================== */ + #define R_DSILINK_SQCH1DSC6BR_DTSEL_Pos (24UL) /*!< DTSEL (Bit 24) */ + #define R_DSILINK_SQCH1DSC6BR_DTSEL_Msk (0x3000000UL) /*!< DTSEL (Bitfield-Mask: 0x03) */ +/* ====================================================== SQCH1DSC7BR ====================================================== */ + #define R_DSILINK_SQCH1DSC7BR_DTSEL_Pos (24UL) /*!< DTSEL (Bit 24) */ + #define R_DSILINK_SQCH1DSC7BR_DTSEL_Msk (0x3000000UL) /*!< DTSEL (Bitfield-Mask: 0x03) */ +/* ====================================================== SQCH1DSC0CR ====================================================== */ + #define R_DSILINK_SQCH1DSC0CR_FINACT_Pos (0UL) /*!< FINACT (Bit 0) */ + #define R_DSILINK_SQCH1DSC0CR_FINACT_Msk (0x1UL) /*!< FINACT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1DSC0CR_AUXOP_Pos (22UL) /*!< AUXOP (Bit 22) */ + #define R_DSILINK_SQCH1DSC0CR_AUXOP_Msk (0x400000UL) /*!< AUXOP (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1DSC0CR_ACTCODE_Pos (24UL) /*!< ACTCODE (Bit 24) */ + #define R_DSILINK_SQCH1DSC0CR_ACTCODE_Msk (0xff000000UL) /*!< ACTCODE (Bitfield-Mask: 0xff) */ +/* ====================================================== SQCH1DSC1CR ====================================================== */ + #define R_DSILINK_SQCH1DSC1CR_FINACT_Pos (0UL) /*!< FINACT (Bit 0) */ + #define R_DSILINK_SQCH1DSC1CR_FINACT_Msk (0x1UL) /*!< FINACT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1DSC1CR_AUXOP_Pos (22UL) /*!< AUXOP (Bit 22) */ + #define R_DSILINK_SQCH1DSC1CR_AUXOP_Msk (0x400000UL) /*!< AUXOP (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1DSC1CR_ACTCODE_Pos (24UL) /*!< ACTCODE (Bit 24) */ + #define R_DSILINK_SQCH1DSC1CR_ACTCODE_Msk (0xff000000UL) /*!< ACTCODE (Bitfield-Mask: 0xff) */ +/* ====================================================== SQCH1DSC2CR ====================================================== */ + #define R_DSILINK_SQCH1DSC2CR_FINACT_Pos (0UL) /*!< FINACT (Bit 0) */ + #define R_DSILINK_SQCH1DSC2CR_FINACT_Msk (0x1UL) /*!< FINACT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1DSC2CR_AUXOP_Pos (22UL) /*!< AUXOP (Bit 22) */ + #define R_DSILINK_SQCH1DSC2CR_AUXOP_Msk (0x400000UL) /*!< AUXOP (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1DSC2CR_ACTCODE_Pos (24UL) /*!< ACTCODE (Bit 24) */ + #define R_DSILINK_SQCH1DSC2CR_ACTCODE_Msk (0xff000000UL) /*!< ACTCODE (Bitfield-Mask: 0xff) */ +/* ====================================================== SQCH1DSC3CR ====================================================== */ + #define R_DSILINK_SQCH1DSC3CR_FINACT_Pos (0UL) /*!< FINACT (Bit 0) */ + #define R_DSILINK_SQCH1DSC3CR_FINACT_Msk (0x1UL) /*!< FINACT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1DSC3CR_AUXOP_Pos (22UL) /*!< AUXOP (Bit 22) */ + #define R_DSILINK_SQCH1DSC3CR_AUXOP_Msk (0x400000UL) /*!< AUXOP (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1DSC3CR_ACTCODE_Pos (24UL) /*!< ACTCODE (Bit 24) */ + #define R_DSILINK_SQCH1DSC3CR_ACTCODE_Msk (0xff000000UL) /*!< ACTCODE (Bitfield-Mask: 0xff) */ +/* ====================================================== SQCH1DSC4CR ====================================================== */ + #define R_DSILINK_SQCH1DSC4CR_FINACT_Pos (0UL) /*!< FINACT (Bit 0) */ + #define R_DSILINK_SQCH1DSC4CR_FINACT_Msk (0x1UL) /*!< FINACT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1DSC4CR_AUXOP_Pos (22UL) /*!< AUXOP (Bit 22) */ + #define R_DSILINK_SQCH1DSC4CR_AUXOP_Msk (0x400000UL) /*!< AUXOP (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1DSC4CR_ACTCODE_Pos (24UL) /*!< ACTCODE (Bit 24) */ + #define R_DSILINK_SQCH1DSC4CR_ACTCODE_Msk (0xff000000UL) /*!< ACTCODE (Bitfield-Mask: 0xff) */ +/* ====================================================== SQCH1DSC5CR ====================================================== */ + #define R_DSILINK_SQCH1DSC5CR_FINACT_Pos (0UL) /*!< FINACT (Bit 0) */ + #define R_DSILINK_SQCH1DSC5CR_FINACT_Msk (0x1UL) /*!< FINACT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1DSC5CR_AUXOP_Pos (22UL) /*!< AUXOP (Bit 22) */ + #define R_DSILINK_SQCH1DSC5CR_AUXOP_Msk (0x400000UL) /*!< AUXOP (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1DSC5CR_ACTCODE_Pos (24UL) /*!< ACTCODE (Bit 24) */ + #define R_DSILINK_SQCH1DSC5CR_ACTCODE_Msk (0xff000000UL) /*!< ACTCODE (Bitfield-Mask: 0xff) */ +/* ====================================================== SQCH1DSC6CR ====================================================== */ + #define R_DSILINK_SQCH1DSC6CR_FINACT_Pos (0UL) /*!< FINACT (Bit 0) */ + #define R_DSILINK_SQCH1DSC6CR_FINACT_Msk (0x1UL) /*!< FINACT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1DSC6CR_AUXOP_Pos (22UL) /*!< AUXOP (Bit 22) */ + #define R_DSILINK_SQCH1DSC6CR_AUXOP_Msk (0x400000UL) /*!< AUXOP (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1DSC6CR_ACTCODE_Pos (24UL) /*!< ACTCODE (Bit 24) */ + #define R_DSILINK_SQCH1DSC6CR_ACTCODE_Msk (0xff000000UL) /*!< ACTCODE (Bitfield-Mask: 0xff) */ +/* ====================================================== SQCH1DSC7CR ====================================================== */ + #define R_DSILINK_SQCH1DSC7CR_FINACT_Pos (0UL) /*!< FINACT (Bit 0) */ + #define R_DSILINK_SQCH1DSC7CR_FINACT_Msk (0x1UL) /*!< FINACT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1DSC7CR_AUXOP_Pos (22UL) /*!< AUXOP (Bit 22) */ + #define R_DSILINK_SQCH1DSC7CR_AUXOP_Msk (0x400000UL) /*!< AUXOP (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1DSC7CR_ACTCODE_Pos (24UL) /*!< ACTCODE (Bit 24) */ + #define R_DSILINK_SQCH1DSC7CR_ACTCODE_Msk (0xff000000UL) /*!< ACTCODE (Bitfield-Mask: 0xff) */ +/* ===================================================== SQCH1DSC0CR_L ===================================================== */ + #define R_DSILINK_SQCH1DSC0CR_L_FINACT_Pos (0UL) /*!< FINACT (Bit 0) */ + #define R_DSILINK_SQCH1DSC0CR_L_FINACT_Msk (0x1UL) /*!< FINACT (Bitfield-Mask: 0x01) */ +/* ===================================================== SQCH1DSC1CR_L ===================================================== */ + #define R_DSILINK_SQCH1DSC1CR_L_FINACT_Pos (0UL) /*!< FINACT (Bit 0) */ + #define R_DSILINK_SQCH1DSC1CR_L_FINACT_Msk (0x1UL) /*!< FINACT (Bitfield-Mask: 0x01) */ +/* ===================================================== SQCH1DSC2CR_L ===================================================== */ + #define R_DSILINK_SQCH1DSC2CR_L_FINACT_Pos (0UL) /*!< FINACT (Bit 0) */ + #define R_DSILINK_SQCH1DSC2CR_L_FINACT_Msk (0x1UL) /*!< FINACT (Bitfield-Mask: 0x01) */ +/* ===================================================== SQCH1DSC3CR_L ===================================================== */ + #define R_DSILINK_SQCH1DSC3CR_L_FINACT_Pos (0UL) /*!< FINACT (Bit 0) */ + #define R_DSILINK_SQCH1DSC3CR_L_FINACT_Msk (0x1UL) /*!< FINACT (Bitfield-Mask: 0x01) */ +/* ===================================================== SQCH1DSC4CR_L ===================================================== */ + #define R_DSILINK_SQCH1DSC4CR_L_FINACT_Pos (0UL) /*!< FINACT (Bit 0) */ + #define R_DSILINK_SQCH1DSC4CR_L_FINACT_Msk (0x1UL) /*!< FINACT (Bitfield-Mask: 0x01) */ +/* ===================================================== SQCH1DSC5CR_L ===================================================== */ + #define R_DSILINK_SQCH1DSC5CR_L_FINACT_Pos (0UL) /*!< FINACT (Bit 0) */ + #define R_DSILINK_SQCH1DSC5CR_L_FINACT_Msk (0x1UL) /*!< FINACT (Bitfield-Mask: 0x01) */ +/* ===================================================== SQCH1DSC6CR_L ===================================================== */ + #define R_DSILINK_SQCH1DSC6CR_L_FINACT_Pos (0UL) /*!< FINACT (Bit 0) */ + #define R_DSILINK_SQCH1DSC6CR_L_FINACT_Msk (0x1UL) /*!< FINACT (Bitfield-Mask: 0x01) */ +/* ===================================================== SQCH1DSC7CR_L ===================================================== */ + #define R_DSILINK_SQCH1DSC7CR_L_FINACT_Pos (0UL) /*!< FINACT (Bit 0) */ + #define R_DSILINK_SQCH1DSC7CR_L_FINACT_Msk (0x1UL) /*!< FINACT (Bitfield-Mask: 0x01) */ +/* ==================================================== SQCH1DSC0CR_LL ===================================================== */ + #define R_DSILINK_SQCH1DSC0CR_LL_FINACT_Pos (0UL) /*!< FINACT (Bit 0) */ + #define R_DSILINK_SQCH1DSC0CR_LL_FINACT_Msk (0x1UL) /*!< FINACT (Bitfield-Mask: 0x01) */ +/* ==================================================== SQCH1DSC1CR_LL ===================================================== */ + #define R_DSILINK_SQCH1DSC1CR_LL_FINACT_Pos (0UL) /*!< FINACT (Bit 0) */ + #define R_DSILINK_SQCH1DSC1CR_LL_FINACT_Msk (0x1UL) /*!< FINACT (Bitfield-Mask: 0x01) */ +/* ==================================================== SQCH1DSC2CR_LL ===================================================== */ + #define R_DSILINK_SQCH1DSC2CR_LL_FINACT_Pos (0UL) /*!< FINACT (Bit 0) */ + #define R_DSILINK_SQCH1DSC2CR_LL_FINACT_Msk (0x1UL) /*!< FINACT (Bitfield-Mask: 0x01) */ +/* ==================================================== SQCH1DSC3CR_LL ===================================================== */ + #define R_DSILINK_SQCH1DSC3CR_LL_FINACT_Pos (0UL) /*!< FINACT (Bit 0) */ + #define R_DSILINK_SQCH1DSC3CR_LL_FINACT_Msk (0x1UL) /*!< FINACT (Bitfield-Mask: 0x01) */ +/* ==================================================== SQCH1DSC4CR_LL ===================================================== */ + #define R_DSILINK_SQCH1DSC4CR_LL_FINACT_Pos (0UL) /*!< FINACT (Bit 0) */ + #define R_DSILINK_SQCH1DSC4CR_LL_FINACT_Msk (0x1UL) /*!< FINACT (Bitfield-Mask: 0x01) */ +/* ==================================================== SQCH1DSC5CR_LL ===================================================== */ + #define R_DSILINK_SQCH1DSC5CR_LL_FINACT_Pos (0UL) /*!< FINACT (Bit 0) */ + #define R_DSILINK_SQCH1DSC5CR_LL_FINACT_Msk (0x1UL) /*!< FINACT (Bitfield-Mask: 0x01) */ +/* ==================================================== SQCH1DSC6CR_LL ===================================================== */ + #define R_DSILINK_SQCH1DSC6CR_LL_FINACT_Pos (0UL) /*!< FINACT (Bit 0) */ + #define R_DSILINK_SQCH1DSC6CR_LL_FINACT_Msk (0x1UL) /*!< FINACT (Bitfield-Mask: 0x01) */ +/* ==================================================== SQCH1DSC7CR_LL ===================================================== */ + #define R_DSILINK_SQCH1DSC7CR_LL_FINACT_Pos (0UL) /*!< FINACT (Bit 0) */ + #define R_DSILINK_SQCH1DSC7CR_LL_FINACT_Msk (0x1UL) /*!< FINACT (Bitfield-Mask: 0x01) */ +/* ===================================================== SQCH1DSC0CR_H ===================================================== */ + #define R_DSILINK_SQCH1DSC0CR_H_AUXOP_Pos (6UL) /*!< AUXOP (Bit 6) */ + #define R_DSILINK_SQCH1DSC0CR_H_AUXOP_Msk (0x40UL) /*!< AUXOP (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1DSC0CR_H_ACTCODE_Pos (8UL) /*!< ACTCODE (Bit 8) */ + #define R_DSILINK_SQCH1DSC0CR_H_ACTCODE_Msk (0xff00UL) /*!< ACTCODE (Bitfield-Mask: 0xff) */ +/* ===================================================== SQCH1DSC1CR_H ===================================================== */ + #define R_DSILINK_SQCH1DSC1CR_H_AUXOP_Pos (6UL) /*!< AUXOP (Bit 6) */ + #define R_DSILINK_SQCH1DSC1CR_H_AUXOP_Msk (0x40UL) /*!< AUXOP (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1DSC1CR_H_ACTCODE_Pos (8UL) /*!< ACTCODE (Bit 8) */ + #define R_DSILINK_SQCH1DSC1CR_H_ACTCODE_Msk (0xff00UL) /*!< ACTCODE (Bitfield-Mask: 0xff) */ +/* ===================================================== SQCH1DSC2CR_H ===================================================== */ + #define R_DSILINK_SQCH1DSC2CR_H_AUXOP_Pos (6UL) /*!< AUXOP (Bit 6) */ + #define R_DSILINK_SQCH1DSC2CR_H_AUXOP_Msk (0x40UL) /*!< AUXOP (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1DSC2CR_H_ACTCODE_Pos (8UL) /*!< ACTCODE (Bit 8) */ + #define R_DSILINK_SQCH1DSC2CR_H_ACTCODE_Msk (0xff00UL) /*!< ACTCODE (Bitfield-Mask: 0xff) */ +/* ===================================================== SQCH1DSC3CR_H ===================================================== */ + #define R_DSILINK_SQCH1DSC3CR_H_AUXOP_Pos (6UL) /*!< AUXOP (Bit 6) */ + #define R_DSILINK_SQCH1DSC3CR_H_AUXOP_Msk (0x40UL) /*!< AUXOP (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1DSC3CR_H_ACTCODE_Pos (8UL) /*!< ACTCODE (Bit 8) */ + #define R_DSILINK_SQCH1DSC3CR_H_ACTCODE_Msk (0xff00UL) /*!< ACTCODE (Bitfield-Mask: 0xff) */ +/* ===================================================== SQCH1DSC4CR_H ===================================================== */ + #define R_DSILINK_SQCH1DSC4CR_H_AUXOP_Pos (6UL) /*!< AUXOP (Bit 6) */ + #define R_DSILINK_SQCH1DSC4CR_H_AUXOP_Msk (0x40UL) /*!< AUXOP (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1DSC4CR_H_ACTCODE_Pos (8UL) /*!< ACTCODE (Bit 8) */ + #define R_DSILINK_SQCH1DSC4CR_H_ACTCODE_Msk (0xff00UL) /*!< ACTCODE (Bitfield-Mask: 0xff) */ +/* ===================================================== SQCH1DSC5CR_H ===================================================== */ + #define R_DSILINK_SQCH1DSC5CR_H_AUXOP_Pos (6UL) /*!< AUXOP (Bit 6) */ + #define R_DSILINK_SQCH1DSC5CR_H_AUXOP_Msk (0x40UL) /*!< AUXOP (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1DSC5CR_H_ACTCODE_Pos (8UL) /*!< ACTCODE (Bit 8) */ + #define R_DSILINK_SQCH1DSC5CR_H_ACTCODE_Msk (0xff00UL) /*!< ACTCODE (Bitfield-Mask: 0xff) */ +/* ===================================================== SQCH1DSC6CR_H ===================================================== */ + #define R_DSILINK_SQCH1DSC6CR_H_AUXOP_Pos (6UL) /*!< AUXOP (Bit 6) */ + #define R_DSILINK_SQCH1DSC6CR_H_AUXOP_Msk (0x40UL) /*!< AUXOP (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1DSC6CR_H_ACTCODE_Pos (8UL) /*!< ACTCODE (Bit 8) */ + #define R_DSILINK_SQCH1DSC6CR_H_ACTCODE_Msk (0xff00UL) /*!< ACTCODE (Bitfield-Mask: 0xff) */ +/* ===================================================== SQCH1DSC7CR_H ===================================================== */ + #define R_DSILINK_SQCH1DSC7CR_H_AUXOP_Pos (6UL) /*!< AUXOP (Bit 6) */ + #define R_DSILINK_SQCH1DSC7CR_H_AUXOP_Msk (0x40UL) /*!< AUXOP (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1DSC7CR_H_ACTCODE_Pos (8UL) /*!< ACTCODE (Bit 8) */ + #define R_DSILINK_SQCH1DSC7CR_H_ACTCODE_Msk (0xff00UL) /*!< ACTCODE (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH1DSC0CR_HL ===================================================== */ + #define R_DSILINK_SQCH1DSC0CR_HL_AUXOP_Pos (6UL) /*!< AUXOP (Bit 6) */ + #define R_DSILINK_SQCH1DSC0CR_HL_AUXOP_Msk (0x40UL) /*!< AUXOP (Bitfield-Mask: 0x01) */ +/* ==================================================== SQCH1DSC1CR_HL ===================================================== */ + #define R_DSILINK_SQCH1DSC1CR_HL_AUXOP_Pos (6UL) /*!< AUXOP (Bit 6) */ + #define R_DSILINK_SQCH1DSC1CR_HL_AUXOP_Msk (0x40UL) /*!< AUXOP (Bitfield-Mask: 0x01) */ +/* ==================================================== SQCH1DSC2CR_HL ===================================================== */ + #define R_DSILINK_SQCH1DSC2CR_HL_AUXOP_Pos (6UL) /*!< AUXOP (Bit 6) */ + #define R_DSILINK_SQCH1DSC2CR_HL_AUXOP_Msk (0x40UL) /*!< AUXOP (Bitfield-Mask: 0x01) */ +/* ==================================================== SQCH1DSC3CR_HL ===================================================== */ + #define R_DSILINK_SQCH1DSC3CR_HL_AUXOP_Pos (6UL) /*!< AUXOP (Bit 6) */ + #define R_DSILINK_SQCH1DSC3CR_HL_AUXOP_Msk (0x40UL) /*!< AUXOP (Bitfield-Mask: 0x01) */ +/* ==================================================== SQCH1DSC4CR_HL ===================================================== */ + #define R_DSILINK_SQCH1DSC4CR_HL_AUXOP_Pos (6UL) /*!< AUXOP (Bit 6) */ + #define R_DSILINK_SQCH1DSC4CR_HL_AUXOP_Msk (0x40UL) /*!< AUXOP (Bitfield-Mask: 0x01) */ +/* ==================================================== SQCH1DSC5CR_HL ===================================================== */ + #define R_DSILINK_SQCH1DSC5CR_HL_AUXOP_Pos (6UL) /*!< AUXOP (Bit 6) */ + #define R_DSILINK_SQCH1DSC5CR_HL_AUXOP_Msk (0x40UL) /*!< AUXOP (Bitfield-Mask: 0x01) */ +/* ==================================================== SQCH1DSC6CR_HL ===================================================== */ + #define R_DSILINK_SQCH1DSC6CR_HL_AUXOP_Pos (6UL) /*!< AUXOP (Bit 6) */ + #define R_DSILINK_SQCH1DSC6CR_HL_AUXOP_Msk (0x40UL) /*!< AUXOP (Bitfield-Mask: 0x01) */ +/* ==================================================== SQCH1DSC7CR_HL ===================================================== */ + #define R_DSILINK_SQCH1DSC7CR_HL_AUXOP_Pos (6UL) /*!< AUXOP (Bit 6) */ + #define R_DSILINK_SQCH1DSC7CR_HL_AUXOP_Msk (0x40UL) /*!< AUXOP (Bitfield-Mask: 0x01) */ +/* ==================================================== SQCH1DSC0CR_HH ===================================================== */ + #define R_DSILINK_SQCH1DSC0CR_HH_ACTCODE_Pos (0UL) /*!< ACTCODE (Bit 0) */ + #define R_DSILINK_SQCH1DSC0CR_HH_ACTCODE_Msk (0xffUL) /*!< ACTCODE (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH1DSC1CR_HH ===================================================== */ + #define R_DSILINK_SQCH1DSC1CR_HH_ACTCODE_Pos (0UL) /*!< ACTCODE (Bit 0) */ + #define R_DSILINK_SQCH1DSC1CR_HH_ACTCODE_Msk (0xffUL) /*!< ACTCODE (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH1DSC2CR_HH ===================================================== */ + #define R_DSILINK_SQCH1DSC2CR_HH_ACTCODE_Pos (0UL) /*!< ACTCODE (Bit 0) */ + #define R_DSILINK_SQCH1DSC2CR_HH_ACTCODE_Msk (0xffUL) /*!< ACTCODE (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH1DSC3CR_HH ===================================================== */ + #define R_DSILINK_SQCH1DSC3CR_HH_ACTCODE_Pos (0UL) /*!< ACTCODE (Bit 0) */ + #define R_DSILINK_SQCH1DSC3CR_HH_ACTCODE_Msk (0xffUL) /*!< ACTCODE (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH1DSC4CR_HH ===================================================== */ + #define R_DSILINK_SQCH1DSC4CR_HH_ACTCODE_Pos (0UL) /*!< ACTCODE (Bit 0) */ + #define R_DSILINK_SQCH1DSC4CR_HH_ACTCODE_Msk (0xffUL) /*!< ACTCODE (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH1DSC5CR_HH ===================================================== */ + #define R_DSILINK_SQCH1DSC5CR_HH_ACTCODE_Pos (0UL) /*!< ACTCODE (Bit 0) */ + #define R_DSILINK_SQCH1DSC5CR_HH_ACTCODE_Msk (0xffUL) /*!< ACTCODE (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH1DSC6CR_HH ===================================================== */ + #define R_DSILINK_SQCH1DSC6CR_HH_ACTCODE_Pos (0UL) /*!< ACTCODE (Bit 0) */ + #define R_DSILINK_SQCH1DSC6CR_HH_ACTCODE_Msk (0xffUL) /*!< ACTCODE (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH1DSC7CR_HH ===================================================== */ + #define R_DSILINK_SQCH1DSC7CR_HH_ACTCODE_Pos (0UL) /*!< ACTCODE (Bit 0) */ + #define R_DSILINK_SQCH1DSC7CR_HH_ACTCODE_Msk (0xffUL) /*!< ACTCODE (Bitfield-Mask: 0xff) */ +/* ====================================================== SQCH1DSC0DR ====================================================== */ + #define R_DSILINK_SQCH1DSC0DR_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH1DSC0DR_LADDR_Msk (0xffffffffUL) /*!< LADDR (Bitfield-Mask: 0xffffffff) */ +/* ====================================================== SQCH1DSC1DR ====================================================== */ + #define R_DSILINK_SQCH1DSC1DR_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH1DSC1DR_LADDR_Msk (0xffffffffUL) /*!< LADDR (Bitfield-Mask: 0xffffffff) */ +/* ====================================================== SQCH1DSC2DR ====================================================== */ + #define R_DSILINK_SQCH1DSC2DR_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH1DSC2DR_LADDR_Msk (0xffffffffUL) /*!< LADDR (Bitfield-Mask: 0xffffffff) */ +/* ====================================================== SQCH1DSC3DR ====================================================== */ + #define R_DSILINK_SQCH1DSC3DR_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH1DSC3DR_LADDR_Msk (0xffffffffUL) /*!< LADDR (Bitfield-Mask: 0xffffffff) */ +/* ====================================================== SQCH1DSC4DR ====================================================== */ + #define R_DSILINK_SQCH1DSC4DR_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH1DSC4DR_LADDR_Msk (0xffffffffUL) /*!< LADDR (Bitfield-Mask: 0xffffffff) */ +/* ====================================================== SQCH1DSC5DR ====================================================== */ + #define R_DSILINK_SQCH1DSC5DR_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH1DSC5DR_LADDR_Msk (0xffffffffUL) /*!< LADDR (Bitfield-Mask: 0xffffffff) */ +/* ====================================================== SQCH1DSC6DR ====================================================== */ + #define R_DSILINK_SQCH1DSC6DR_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH1DSC6DR_LADDR_Msk (0xffffffffUL) /*!< LADDR (Bitfield-Mask: 0xffffffff) */ +/* ====================================================== SQCH1DSC7DR ====================================================== */ + #define R_DSILINK_SQCH1DSC7DR_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH1DSC7DR_LADDR_Msk (0xffffffffUL) /*!< LADDR (Bitfield-Mask: 0xffffffff) */ +/* ===================================================== SQCH1DSC0DR_L ===================================================== */ + #define R_DSILINK_SQCH1DSC0DR_L_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH1DSC0DR_L_LADDR_Msk (0xffffUL) /*!< LADDR (Bitfield-Mask: 0xffff) */ +/* ===================================================== SQCH1DSC1DR_L ===================================================== */ + #define R_DSILINK_SQCH1DSC1DR_L_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH1DSC1DR_L_LADDR_Msk (0xffffUL) /*!< LADDR (Bitfield-Mask: 0xffff) */ +/* ===================================================== SQCH1DSC2DR_L ===================================================== */ + #define R_DSILINK_SQCH1DSC2DR_L_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH1DSC2DR_L_LADDR_Msk (0xffffUL) /*!< LADDR (Bitfield-Mask: 0xffff) */ +/* ===================================================== SQCH1DSC3DR_L ===================================================== */ + #define R_DSILINK_SQCH1DSC3DR_L_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH1DSC3DR_L_LADDR_Msk (0xffffUL) /*!< LADDR (Bitfield-Mask: 0xffff) */ +/* ===================================================== SQCH1DSC4DR_L ===================================================== */ + #define R_DSILINK_SQCH1DSC4DR_L_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH1DSC4DR_L_LADDR_Msk (0xffffUL) /*!< LADDR (Bitfield-Mask: 0xffff) */ +/* ===================================================== SQCH1DSC5DR_L ===================================================== */ + #define R_DSILINK_SQCH1DSC5DR_L_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH1DSC5DR_L_LADDR_Msk (0xffffUL) /*!< LADDR (Bitfield-Mask: 0xffff) */ +/* ===================================================== SQCH1DSC6DR_L ===================================================== */ + #define R_DSILINK_SQCH1DSC6DR_L_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH1DSC6DR_L_LADDR_Msk (0xffffUL) /*!< LADDR (Bitfield-Mask: 0xffff) */ +/* ===================================================== SQCH1DSC7DR_L ===================================================== */ + #define R_DSILINK_SQCH1DSC7DR_L_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH1DSC7DR_L_LADDR_Msk (0xffffUL) /*!< LADDR (Bitfield-Mask: 0xffff) */ +/* ==================================================== SQCH1DSC0DR_LL ===================================================== */ + #define R_DSILINK_SQCH1DSC0DR_LL_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH1DSC0DR_LL_LADDR_Msk (0xffUL) /*!< LADDR (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH1DSC1DR_LL ===================================================== */ + #define R_DSILINK_SQCH1DSC1DR_LL_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH1DSC1DR_LL_LADDR_Msk (0xffUL) /*!< LADDR (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH1DSC2DR_LL ===================================================== */ + #define R_DSILINK_SQCH1DSC2DR_LL_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH1DSC2DR_LL_LADDR_Msk (0xffUL) /*!< LADDR (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH1DSC3DR_LL ===================================================== */ + #define R_DSILINK_SQCH1DSC3DR_LL_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH1DSC3DR_LL_LADDR_Msk (0xffUL) /*!< LADDR (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH1DSC4DR_LL ===================================================== */ + #define R_DSILINK_SQCH1DSC4DR_LL_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH1DSC4DR_LL_LADDR_Msk (0xffUL) /*!< LADDR (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH1DSC5DR_LL ===================================================== */ + #define R_DSILINK_SQCH1DSC5DR_LL_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH1DSC5DR_LL_LADDR_Msk (0xffUL) /*!< LADDR (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH1DSC6DR_LL ===================================================== */ + #define R_DSILINK_SQCH1DSC6DR_LL_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH1DSC6DR_LL_LADDR_Msk (0xffUL) /*!< LADDR (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH1DSC7DR_LL ===================================================== */ + #define R_DSILINK_SQCH1DSC7DR_LL_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH1DSC7DR_LL_LADDR_Msk (0xffUL) /*!< LADDR (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH1DSC0DR_LH ===================================================== */ + #define R_DSILINK_SQCH1DSC0DR_LH_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH1DSC0DR_LH_LADDR_Msk (0xffUL) /*!< LADDR (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH1DSC1DR_LH ===================================================== */ + #define R_DSILINK_SQCH1DSC1DR_LH_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH1DSC1DR_LH_LADDR_Msk (0xffUL) /*!< LADDR (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH1DSC2DR_LH ===================================================== */ + #define R_DSILINK_SQCH1DSC2DR_LH_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH1DSC2DR_LH_LADDR_Msk (0xffUL) /*!< LADDR (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH1DSC3DR_LH ===================================================== */ + #define R_DSILINK_SQCH1DSC3DR_LH_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH1DSC3DR_LH_LADDR_Msk (0xffUL) /*!< LADDR (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH1DSC4DR_LH ===================================================== */ + #define R_DSILINK_SQCH1DSC4DR_LH_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH1DSC4DR_LH_LADDR_Msk (0xffUL) /*!< LADDR (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH1DSC5DR_LH ===================================================== */ + #define R_DSILINK_SQCH1DSC5DR_LH_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH1DSC5DR_LH_LADDR_Msk (0xffUL) /*!< LADDR (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH1DSC6DR_LH ===================================================== */ + #define R_DSILINK_SQCH1DSC6DR_LH_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH1DSC6DR_LH_LADDR_Msk (0xffUL) /*!< LADDR (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH1DSC7DR_LH ===================================================== */ + #define R_DSILINK_SQCH1DSC7DR_LH_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH1DSC7DR_LH_LADDR_Msk (0xffUL) /*!< LADDR (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH1DSC0DR_HL ===================================================== */ + #define R_DSILINK_SQCH1DSC0DR_HL_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH1DSC0DR_HL_LADDR_Msk (0xffUL) /*!< LADDR (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH1DSC1DR_HL ===================================================== */ + #define R_DSILINK_SQCH1DSC1DR_HL_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH1DSC1DR_HL_LADDR_Msk (0xffUL) /*!< LADDR (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH1DSC2DR_HL ===================================================== */ + #define R_DSILINK_SQCH1DSC2DR_HL_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH1DSC2DR_HL_LADDR_Msk (0xffUL) /*!< LADDR (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH1DSC3DR_HL ===================================================== */ + #define R_DSILINK_SQCH1DSC3DR_HL_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH1DSC3DR_HL_LADDR_Msk (0xffUL) /*!< LADDR (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH1DSC4DR_HL ===================================================== */ + #define R_DSILINK_SQCH1DSC4DR_HL_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH1DSC4DR_HL_LADDR_Msk (0xffUL) /*!< LADDR (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH1DSC5DR_HL ===================================================== */ + #define R_DSILINK_SQCH1DSC5DR_HL_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH1DSC5DR_HL_LADDR_Msk (0xffUL) /*!< LADDR (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH1DSC6DR_HL ===================================================== */ + #define R_DSILINK_SQCH1DSC6DR_HL_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH1DSC6DR_HL_LADDR_Msk (0xffUL) /*!< LADDR (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH1DSC7DR_HL ===================================================== */ + #define R_DSILINK_SQCH1DSC7DR_HL_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH1DSC7DR_HL_LADDR_Msk (0xffUL) /*!< LADDR (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH1DSC0DR_HH ===================================================== */ + #define R_DSILINK_SQCH1DSC0DR_HH_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH1DSC0DR_HH_LADDR_Msk (0xffUL) /*!< LADDR (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH1DSC1DR_HH ===================================================== */ + #define R_DSILINK_SQCH1DSC1DR_HH_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH1DSC1DR_HH_LADDR_Msk (0xffUL) /*!< LADDR (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH1DSC2DR_HH ===================================================== */ + #define R_DSILINK_SQCH1DSC2DR_HH_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH1DSC2DR_HH_LADDR_Msk (0xffUL) /*!< LADDR (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH1DSC3DR_HH ===================================================== */ + #define R_DSILINK_SQCH1DSC3DR_HH_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH1DSC3DR_HH_LADDR_Msk (0xffUL) /*!< LADDR (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH1DSC4DR_HH ===================================================== */ + #define R_DSILINK_SQCH1DSC4DR_HH_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH1DSC4DR_HH_LADDR_Msk (0xffUL) /*!< LADDR (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH1DSC5DR_HH ===================================================== */ + #define R_DSILINK_SQCH1DSC5DR_HH_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH1DSC5DR_HH_LADDR_Msk (0xffUL) /*!< LADDR (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH1DSC6DR_HH ===================================================== */ + #define R_DSILINK_SQCH1DSC6DR_HH_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH1DSC6DR_HH_LADDR_Msk (0xffUL) /*!< LADDR (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH1DSC7DR_HH ===================================================== */ + #define R_DSILINK_SQCH1DSC7DR_HH_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH1DSC7DR_HH_LADDR_Msk (0xffUL) /*!< LADDR (Bitfield-Mask: 0xff) */ + +/* =========================================================================================================================== */ +/* ================ 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 /* R7FA8D1BH_H */ + +/** @} */ /* End of group R7FA8D1BH */ + +/** @} */ /* End of group Renesas */ diff --git a/bsp/renesas/ra8d1-vision-board/ra/fsp/src/bsp/cmsis/Device/RENESAS/Include/renesas.h b/bsp/renesas/ra8d1-vision-board/ra/fsp/src/bsp/cmsis/Device/RENESAS/Include/renesas.h new file mode 100644 index 0000000000..74c4a49a8a --- /dev/null +++ b/bsp/renesas/ra8d1-vision-board/ra/fsp/src/bsp/cmsis/Device/RENESAS/Include/renesas.h @@ -0,0 +1,150 @@ +/*********************************************************************************************************************** + * 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. Search CM85_WORKAROUND for related code changes */ + #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" + #elif BSP_MCU_GROUP_RA8D1 + #include "R7FA8D1BH.h" + #elif BSP_MCU_GROUP_RA8T1 + #include "R7FA8T1AH.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/ra8d1-vision-board/ra/fsp/src/bsp/cmsis/Device/RENESAS/Include/system.h b/bsp/renesas/ra8d1-vision-board/ra/fsp/src/bsp/cmsis/Device/RENESAS/Include/system.h new file mode 100644 index 0000000000..b61fe0f003 --- /dev/null +++ b/bsp/renesas/ra8d1-vision-board/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/ra8d1-vision-board/ra/fsp/src/bsp/cmsis/Device/RENESAS/Source/startup.c b/bsp/renesas/ra8d1-vision-board/ra/fsp/src/bsp/cmsis/Device/RENESAS/Source/startup.c new file mode 100644 index 0000000000..306d1732bb --- /dev/null +++ b/bsp/renesas/ra8d1-vision-board/ra/fsp/src/bsp/cmsis/Device/RENESAS/Source/startup.c @@ -0,0 +1,156 @@ +/*********************************************************************************************************************** + * 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. */ +#ifdef __ARMCC_VERSION + main(); +#elif defined(__GNUC__) + extern int entry(void); + entry(); +#endif + + 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/ra8d1-vision-board/ra/fsp/src/bsp/cmsis/Device/RENESAS/Source/system.c b/bsp/renesas/ra8d1-vision-board/ra/fsp/src/bsp/cmsis/Device/RENESAS/Source/system.c new file mode 100644 index 0000000000..7caf7e3a9c --- /dev/null +++ b/bsp/renesas/ra8d1-vision-board/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/ra8d1-vision-board/ra/fsp/src/bsp/mcu/all/bsp_clocks.c b/bsp/renesas/ra8d1-vision-board/ra/fsp/src/bsp/mcu/all/bsp_clocks.c new file mode 100644 index 0000000000..195e3d1546 --- /dev/null +++ b/bsp/renesas/ra8d1-vision-board/ra/fsp/src/bsp/mcu/all/bsp_clocks.c @@ -0,0 +1,2535 @@ +/*********************************************************************************************************************** + * 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 + bool post_div_set_delay = false; + + 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); + + /* Trigger delay after setting dividers */ + post_div_set_delay = true; + } + /* 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); + +#if BSP_CFG_CLOCK_SETTLING_DELAY_ENABLE + if (post_div_set_delay) + { + /* Update the CMSIS core clock variable so that it reflects the new ICLK frequency. */ + SystemCoreClock = clock_freq_hz_post_change; + + /* Wait for settling delay. */ + R_BSP_SoftwareDelay(BSP_CFG_CLOCK_SETTLING_DELAY_US, BSP_DELAY_UNITS_MICROSECONDS); + } + else +#endif + { + /* 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; + + /* Wait for settling delay. */ + SystemCoreClockUpdate(); + R_BSP_SoftwareDelay(BSP_CFG_CLOCK_SETTLING_DELAY_US, BSP_DELAY_UNITS_MICROSECONDS); + #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/ra8d1-vision-board/ra/fsp/src/bsp/mcu/all/bsp_clocks.h b/bsp/renesas/ra8d1-vision-board/ra/fsp/src/bsp/mcu/all/bsp_clocks.h new file mode 100644 index 0000000000..9d3f7cf294 --- /dev/null +++ b/bsp/renesas/ra8d1-vision-board/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/ra8d1-vision-board/ra/fsp/src/bsp/mcu/all/bsp_common.c b/bsp/renesas/ra8d1-vision-board/ra/fsp/src/bsp/mcu/all/bsp_common.c new file mode 100644 index 0000000000..374b57196a --- /dev/null +++ b/bsp/renesas/ra8d1-vision-board/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/ra8d1-vision-board/ra/fsp/src/bsp/mcu/all/bsp_common.h b/bsp/renesas/ra8d1-vision-board/ra/fsp/src/bsp/mcu/all/bsp_common.h new file mode 100644 index 0000000000..5f45859b78 --- /dev/null +++ b/bsp/renesas/ra8d1-vision-board/ra/fsp/src/bsp/mcu/all/bsp_common.h @@ -0,0 +1,582 @@ +/*********************************************************************************************************************** + * 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) +{ +#if BSP_FEATURE_TZ_VERSION == 2 && BSP_TZ_NONSECURE_BUILD == 1 + + return (bsp_unique_id_t *) (BSP_FEATURE_BSP_UNIQUE_ID_POINTER | BSP_FEATURE_TZ_NS_OFFSET); +#else + + return (bsp_unique_id_t *) BSP_FEATURE_BSP_UNIQUE_ID_POINTER; +#endif +} + +/*******************************************************************************************************************//** + * 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/ra8d1-vision-board/ra/fsp/src/bsp/mcu/all/bsp_compiler_support.h b/bsp/renesas/ra8d1-vision-board/ra/fsp/src/bsp/mcu/all/bsp_compiler_support.h new file mode 100644 index 0000000000..43a316e183 --- /dev/null +++ b/bsp/renesas/ra8d1-vision-board/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/ra8d1-vision-board/ra/fsp/src/bsp/mcu/all/bsp_delay.c b/bsp/renesas/ra8d1-vision-board/ra/fsp/src/bsp/mcu/all/bsp_delay.c new file mode 100644 index 0000000000..03768614d4 --- /dev/null +++ b/bsp/renesas/ra8d1-vision-board/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/ra8d1-vision-board/ra/fsp/src/bsp/mcu/all/bsp_delay.h b/bsp/renesas/ra8d1-vision-board/ra/fsp/src/bsp/mcu/all/bsp_delay.h new file mode 100644 index 0000000000..8a2c20c0b2 --- /dev/null +++ b/bsp/renesas/ra8d1-vision-board/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/ra8d1-vision-board/ra/fsp/src/bsp/mcu/all/bsp_exceptions.h b/bsp/renesas/ra8d1-vision-board/ra/fsp/src/bsp/mcu/all/bsp_exceptions.h new file mode 100644 index 0000000000..ef1dd59e68 --- /dev/null +++ b/bsp/renesas/ra8d1-vision-board/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/ra8d1-vision-board/ra/fsp/src/bsp/mcu/all/bsp_group_irq.c b/bsp/renesas/ra8d1-vision-board/ra/fsp/src/bsp/mcu/all/bsp_group_irq.c new file mode 100644 index 0000000000..f94729092c --- /dev/null +++ b/bsp/renesas/ra8d1-vision-board/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/ra8d1-vision-board/ra/fsp/src/bsp/mcu/all/bsp_group_irq.h b/bsp/renesas/ra8d1-vision-board/ra/fsp/src/bsp/mcu/all/bsp_group_irq.h new file mode 100644 index 0000000000..001fa8e527 --- /dev/null +++ b/bsp/renesas/ra8d1-vision-board/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/ra8d1-vision-board/ra/fsp/src/bsp/mcu/all/bsp_guard.c b/bsp/renesas/ra8d1-vision-board/ra/fsp/src/bsp/mcu/all/bsp_guard.c new file mode 100644 index 0000000000..3c3ca2dc45 --- /dev/null +++ b/bsp/renesas/ra8d1-vision-board/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/ra8d1-vision-board/ra/fsp/src/bsp/mcu/all/bsp_guard.h b/bsp/renesas/ra8d1-vision-board/ra/fsp/src/bsp/mcu/all/bsp_guard.h new file mode 100644 index 0000000000..ae5bb696e0 --- /dev/null +++ b/bsp/renesas/ra8d1-vision-board/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/ra8d1-vision-board/ra/fsp/src/bsp/mcu/all/bsp_io.c b/bsp/renesas/ra8d1-vision-board/ra/fsp/src/bsp/mcu/all/bsp_io.c new file mode 100644 index 0000000000..130761000a --- /dev/null +++ b/bsp/renesas/ra8d1-vision-board/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/ra8d1-vision-board/ra/fsp/src/bsp/mcu/all/bsp_io.h b/bsp/renesas/ra8d1-vision-board/ra/fsp/src/bsp/mcu/all/bsp_io.h new file mode 100644 index 0000000000..db50c6f88a --- /dev/null +++ b/bsp/renesas/ra8d1-vision-board/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/ra8d1-vision-board/ra/fsp/src/bsp/mcu/all/bsp_irq.c b/bsp/renesas/ra8d1-vision-board/ra/fsp/src/bsp/mcu/all/bsp_irq.c new file mode 100644 index 0000000000..a45899fbad --- /dev/null +++ b/bsp/renesas/ra8d1-vision-board/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/ra8d1-vision-board/ra/fsp/src/bsp/mcu/all/bsp_irq.h b/bsp/renesas/ra8d1-vision-board/ra/fsp/src/bsp/mcu/all/bsp_irq.h new file mode 100644 index 0000000000..296f78cc16 --- /dev/null +++ b/bsp/renesas/ra8d1-vision-board/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/ra8d1-vision-board/ra/fsp/src/bsp/mcu/all/bsp_mcu_api.h b/bsp/renesas/ra8d1-vision-board/ra/fsp/src/bsp/mcu/all/bsp_mcu_api.h new file mode 100644 index 0000000000..26a63083da --- /dev/null +++ b/bsp/renesas/ra8d1-vision-board/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/ra8d1-vision-board/ra/fsp/src/bsp/mcu/all/bsp_module_stop.h b/bsp/renesas/ra8d1-vision-board/ra/fsp/src/bsp/mcu/all/bsp_module_stop.h new file mode 100644 index 0000000000..b3501b654c --- /dev/null +++ b/bsp/renesas/ra8d1-vision-board/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/ra8d1-vision-board/ra/fsp/src/bsp/mcu/all/bsp_register_protection.c b/bsp/renesas/ra8d1-vision-board/ra/fsp/src/bsp/mcu/all/bsp_register_protection.c new file mode 100644 index 0000000000..65ba58879a --- /dev/null +++ b/bsp/renesas/ra8d1-vision-board/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/ra8d1-vision-board/ra/fsp/src/bsp/mcu/all/bsp_register_protection.h b/bsp/renesas/ra8d1-vision-board/ra/fsp/src/bsp/mcu/all/bsp_register_protection.h new file mode 100644 index 0000000000..c7be654681 --- /dev/null +++ b/bsp/renesas/ra8d1-vision-board/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/ra8d1-vision-board/ra/fsp/src/bsp/mcu/all/bsp_rom_registers.c b/bsp/renesas/ra8d1-vision-board/ra/fsp/src/bsp/mcu/all/bsp_rom_registers.c new file mode 100644 index 0000000000..b687da9434 --- /dev/null +++ b/bsp/renesas/ra8d1-vision-board/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/ra8d1-vision-board/ra/fsp/src/bsp/mcu/all/bsp_sbrk.c b/bsp/renesas/ra8d1-vision-board/ra/fsp/src/bsp/mcu/all/bsp_sbrk.c new file mode 100644 index 0000000000..2bf2cbbe7c --- /dev/null +++ b/bsp/renesas/ra8d1-vision-board/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/ra8d1-vision-board/ra/fsp/src/bsp/mcu/all/bsp_security.c b/bsp/renesas/ra8d1-vision-board/ra/fsp/src/bsp/mcu/all/bsp_security.c new file mode 100644 index 0000000000..4a11f38d1e --- /dev/null +++ b/bsp/renesas/ra8d1-vision-board/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/ra8d1-vision-board/ra/fsp/src/bsp/mcu/all/bsp_security.h b/bsp/renesas/ra8d1-vision-board/ra/fsp/src/bsp/mcu/all/bsp_security.h new file mode 100644 index 0000000000..fa938cb526 --- /dev/null +++ b/bsp/renesas/ra8d1-vision-board/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/ra8d1-vision-board/ra/fsp/src/bsp/mcu/all/bsp_tfu.h b/bsp/renesas/ra8d1-vision-board/ra/fsp/src/bsp/mcu/all/bsp_tfu.h new file mode 100644 index 0000000000..c0dc512312 --- /dev/null +++ b/bsp/renesas/ra8d1-vision-board/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/ra8d1-vision-board/ra/fsp/src/bsp/mcu/ra8d1/bsp_elc.h b/bsp/renesas/ra8d1-vision-board/ra/fsp/src/bsp/mcu/ra8d1/bsp_elc.h new file mode 100644 index 0000000000..420fc4a8a7 --- /dev/null +++ b/bsp/renesas/ra8d1-vision-board/ra/fsp/src/bsp/mcu/ra8d1/bsp_elc.h @@ -0,0 +1,376 @@ +/*********************************************************************************************************************** + * 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_RA8D1 + * @{ + **********************************************************************************************************************/ + +/** 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_ra8d1 +{ + 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_RSIP_TADI = (0x1BC), // RSIP tamper detect interrupt + ELC_EVENT_GLCDC_LINE_DETECT = (0x1CD), // Specified line + ELC_EVENT_GLCDC_UNDERFLOW_1 = (0x1CE), // Graphic 1 underflow + ELC_EVENT_GLCDC_UNDERFLOW_2 = (0x1CF), // Graphic 2 underflow + ELC_EVENT_DRW_INT = (0x1D0), // DRW interrupt + ELC_EVENT_MIPI_DSI_SEQ0 = (0x1D3), // Sequence operation channel 0 interrupt + ELC_EVENT_MIPI_DSI_SEQ1 = (0x1D4), // Sequence operation channel 1 interrupt + ELC_EVENT_MIPI_DSI_VIN1 = (0x1D5), // Video-Input operation channel1 interrupt + ELC_EVENT_MIPI_DSI_RCV = (0x1D6), // DSI packet receive interrupt + ELC_EVENT_MIPI_DSI_FERR = (0x1D7), // DSI fatal error interrupt + ELC_EVENT_MIPI_DSI_PPI = (0x1D8), // DSI D-PHY PPI interrupt + ELC_EVENT_CEU_CEUI = (0x1DA), // CEU interrupt +} elc_event_t; + +/** @} (end addtogroup BSP_MCU_RA8D1) */ + +#endif diff --git a/bsp/renesas/ra8d1-vision-board/ra/fsp/src/bsp/mcu/ra8d1/bsp_feature.h b/bsp/renesas/ra8d1-vision-board/ra/fsp/src/bsp/mcu/ra8d1/bsp_feature.h new file mode 100644 index 0000000000..d1d6ac70af --- /dev/null +++ b/bsp/renesas/ra8d1-vision-board/ra/fsp/src/bsp/mcu/ra8d1/bsp_feature.h @@ -0,0 +1,454 @@ +/*********************************************************************************************************************** + * 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 */ +#define CGC_MOMCR_RESERVED_MASK (0x8U) /* RA8 has reserved bit in MOMCR that must be 1. */ +#if (BSP_CFG_XTAL_HZ > (24000000)) + #define CGC_MAINCLOCK_DRIVE (0x05U | CGC_MOMCR_RESERVED_MASK) +#elif (BSP_CFG_XTAL_HZ > (8000000)) && (BSP_CFG_XTAL_HZ <= (24000000)) + #define CGC_MAINCLOCK_DRIVE (0x03U | CGC_MOMCR_RESERVED_MASK) +#else + #define CGC_MAINCLOCK_DRIVE (0x00U | CGC_MOMCR_RESERVED_MASK) +#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 RA8D1 +#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 (1) +#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 (1) +#define BSP_FEATURE_BSP_HAS_OCTASPI_CLOCK (1U) +#define BSP_FEATURE_BSP_HAS_OFS2 (1U) +#define BSP_FEATURE_BSP_HAS_OFS3 (0U) +#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) // RA8D1 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 RA8D1 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 (0x1EU) +#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 (0) +#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) // RA8D1 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_LPCSR (0U) +#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 (30U) // LVD1 operation stabilization time after LVD1 is enabled +#define BSP_FEATURE_LVD_MONITOR_2_STABILIZATION_TIME_US (30U) // 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_SCI_LIN_CHANNELS (0x3U) + +#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/ra8d1-vision-board/ra/fsp/src/bsp/mcu/ra8d1/bsp_mcu_info.h b/bsp/renesas/ra8d1-vision-board/ra/fsp/src/bsp/mcu/ra8d1/bsp_mcu_info.h new file mode 100644 index 0000000000..16f1bf4536 --- /dev/null +++ b/bsp/renesas/ra8d1-vision-board/ra/fsp/src/bsp/mcu/ra8d1/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_RA8D1 RA8D1 + * @includedoc config_bsp_ra8d1_fsp.html + * @{ + **********************************************************************************************************************/ + +/** @} (end defgroup BSP_MCU_RA8D1) */ + +#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/ra8d1-vision-board/ra/fsp/src/bsp/mcu/ra8d1/bsp_override.h b/bsp/renesas/ra8d1-vision-board/ra/fsp/src/bsp/mcu/ra8d1/bsp_override.h new file mode 100644 index 0000000000..9aeeb457c8 --- /dev/null +++ b/bsp/renesas/ra8d1-vision-board/ra/fsp/src/bsp/mcu/ra8d1/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_RA8D1 + * @{ + **********************************************************************************************************************/ + +/** @} (end addtogroup BSP_MCU_RA8D1) */ + +#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/ra8d1-vision-board/ra/fsp/src/r_ioport/r_ioport.c b/bsp/renesas/ra8d1-vision-board/ra/fsp/src/r_ioport/r_ioport.c new file mode 100644 index 0000000000..7a8cd8a520 --- /dev/null +++ b/bsp/renesas/ra8d1-vision-board/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/ra8d1-vision-board/ra/fsp/src/r_sci_b_uart/r_sci_b_uart.c b/bsp/renesas/ra8d1-vision-board/ra/fsp/src/r_sci_b_uart/r_sci_b_uart.c new file mode 100644 index 0000000000..67b43bf41d --- /dev/null +++ b/bsp/renesas/ra8d1-vision-board/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/ra8d1-vision-board/ra_cfg/SConscript b/bsp/renesas/ra8d1-vision-board/ra_cfg/SConscript new file mode 100644 index 0000000000..ff52ceb4fe --- /dev/null +++ b/bsp/renesas/ra8d1-vision-board/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/ra8d1-vision-board/ra_cfg/fsp_cfg/bsp/board_cfg.h b/bsp/renesas/ra8d1-vision-board/ra_cfg/fsp_cfg/bsp/board_cfg.h new file mode 100644 index 0000000000..02732917fc --- /dev/null +++ b/bsp/renesas/ra8d1-vision-board/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/ra8d1_ek/board.h" +#endif /* BOARD_CFG_H_ */ diff --git a/bsp/renesas/ra8d1-vision-board/ra_cfg/fsp_cfg/bsp/bsp_cfg.h b/bsp/renesas/ra8d1-vision-board/ra_cfg/fsp_cfg/bsp/bsp_cfg.h new file mode 100644 index 0000000000..858c8ef202 --- /dev/null +++ b/bsp/renesas/ra8d1-vision-board/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 (0x2000) + #define BSP_CFG_HEAP_BYTES (0x4000) + #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/ra8d1-vision-board/ra_cfg/fsp_cfg/bsp/bsp_mcu_device_cfg.h b/bsp/renesas/ra8d1-vision-board/ra_cfg/fsp_cfg/bsp/bsp_mcu_device_cfg.h new file mode 100644 index 0000000000..92e7ddcdb6 --- /dev/null +++ b/bsp/renesas/ra8d1-vision-board/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/ra8d1-vision-board/ra_cfg/fsp_cfg/bsp/bsp_mcu_device_pn_cfg.h b/bsp/renesas/ra8d1-vision-board/ra_cfg/fsp_cfg/bsp/bsp_mcu_device_pn_cfg.h new file mode 100644 index 0000000000..7ac2befc3d --- /dev/null +++ b/bsp/renesas/ra8d1-vision-board/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_R7FA8D1BHECBD + #define BSP_MCU_FEATURE_SET ('B') + #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/ra8d1-vision-board/ra_cfg/fsp_cfg/bsp/bsp_mcu_family_cfg.h b/bsp/renesas/ra8d1-vision-board/ra_cfg/fsp_cfg/bsp/bsp_mcu_family_cfg.h new file mode 100644 index 0000000000..ff077eaa46 --- /dev/null +++ b/bsp/renesas/ra8d1-vision-board/ra_cfg/fsp_cfg/bsp/bsp_mcu_family_cfg.h @@ -0,0 +1,560 @@ +/* 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/ra8d1/bsp_override.h" + #include "../../../ra/fsp/src/bsp/mcu/ra8d1/bsp_mcu_info.h" + #include "bsp_clock_cfg.h" + #define BSP_MCU_GROUP_RA8D1 (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_IDLE_SLEEP (0) + #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) << 15) /* GLCDC/MIPI-DSI/DRW */ | \ + (((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 + /* Power Gating Control Security Attribution Register */ +#ifndef BSP_TZ_CFG_PGCSAR +#define BSP_TZ_CFG_PGCSAR 0 +#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 (0 << 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/ra8d1-vision-board/ra_cfg/fsp_cfg/bsp/bsp_pin_cfg.h b/bsp/renesas/ra8d1-vision-board/ra_cfg/fsp_cfg/bsp/bsp_pin_cfg.h new file mode 100644 index 0000000000..5ef10c7c4b --- /dev/null +++ b/bsp/renesas/ra8d1-vision-board/ra_cfg/fsp_cfg/bsp/bsp_pin_cfg.h @@ -0,0 +1,174 @@ +/* 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 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_A3 (BSP_IO_PORT_00_PIN_11) +#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 SDRAM_CKE (BSP_IO_PORT_01_PIN_13) +#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 MIPI_DSI_TE (BSP_IO_PORT_02_PIN_06) +#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 DISP_BLEN (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 CAM_D12 (BSP_IO_PORT_04_PIN_15) +#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 MIKROBUS_RES (BSP_IO_PORT_05_PIN_07) +#define PMOD2_7_IRQ1 (BSP_IO_PORT_05_PIN_08) +#define ARDUINO_D3 (BSP_IO_PORT_05_PIN_09) +#define DISP_INT (BSP_IO_PORT_05_PIN_10) +#define GROVE2_IIC_SDA1 (BSP_IO_PORT_05_PIN_11) +#define GROVE2_IIC_SCL1 (BSP_IO_PORT_05_PIN_12) +#define LCD_TCON2 (BSP_IO_PORT_05_PIN_13) +#define LCD_EXTCLK (BSP_IO_PORT_05_PIN_14) +#define LCD_TCON3 (BSP_IO_PORT_05_PIN_15) +#define BOOT_KEY (BSP_IO_PORT_06_PIN_00) +#define SDRAM_D0 (BSP_IO_PORT_06_PIN_01) +#define ARDUINO_D6 (BSP_IO_PORT_06_PIN_02) +#define SDRAM_D2 (BSP_IO_PORT_06_PIN_03) +#define SDRAM_D3 (BSP_IO_PORT_06_PIN_04) +#define SDRAM_D4 (BSP_IO_PORT_06_PIN_05) +#define SDRAM_D5 (BSP_IO_PORT_06_PIN_06) +#define SDRAM_D6 (BSP_IO_PORT_06_PIN_07) +#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 LCD_DATA23 (BSP_IO_PORT_07_PIN_07) +#define CAM_CLK (BSP_IO_PORT_07_PIN_08) +#define CAM_HD (BSP_IO_PORT_07_PIN_09) +#define CAM_VD (BSP_IO_PORT_07_PIN_10) +#define I3C_SDA0_PULLUP (BSP_IO_PORT_07_PIN_11) +#define LCD_DATA11 (BSP_IO_PORT_07_PIN_12) +#define LCD_DATA12 (BSP_IO_PORT_07_PIN_13) +#define LCD_DATA13 (BSP_IO_PORT_07_PIN_14) +#define LCD_DATA14 (BSP_IO_PORT_07_PIN_15) +#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 LCD_TCON0 (BSP_IO_PORT_08_PIN_05) +#define LCD_CLK (BSP_IO_PORT_08_PIN_06) +#define LCD_TCON1 (BSP_IO_PORT_08_PIN_07) +#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_13) +#define USBFS_P (BSP_IO_PORT_08_PIN_14) +#define USBFS_N (BSP_IO_PORT_08_PIN_15) +#define LCD_DATA8 (BSP_IO_PORT_09_PIN_02) +#define LCD_DATA7 (BSP_IO_PORT_09_PIN_03) +#define LCD_DATA6 (BSP_IO_PORT_09_PIN_04) +#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 LCD_DATA2 (BSP_IO_PORT_09_PIN_10) +#define LCD_DATA3 (BSP_IO_PORT_09_PIN_11) +#define LCD_DATA4 (BSP_IO_PORT_09_PIN_12) +#define LCD_DATA5 (BSP_IO_PORT_09_PIN_13) +#define LCD_DATA0 (BSP_IO_PORT_09_PIN_14) +#define LCD_DATA1 (BSP_IO_PORT_09_PIN_15) +#define SDRAM_D7 (BSP_IO_PORT_10_PIN_00) +#define DISP_RST (BSP_IO_PORT_10_PIN_01) +#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 ARDUINO_D9 (BSP_IO_PORT_10_PIN_07) +#define PMOD1_8_RESET (BSP_IO_PORT_10_PIN_08) +#define SDRAM_SDCLK (BSP_IO_PORT_10_PIN_09) +#define SDRAM_DQM0 (BSP_IO_PORT_10_PIN_10) +#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) +#define LCD_DATA21 (BSP_IO_PORT_11_PIN_02) +#define LCD_DATA20 (BSP_IO_PORT_11_PIN_03) +#define LCD_DATA19 (BSP_IO_PORT_11_PIN_04) +#define LCD_DATA17 (BSP_IO_PORT_11_PIN_05) +#define LCD_DATA16 (BSP_IO_PORT_11_PIN_06) +#define LCD_DATA15 (BSP_IO_PORT_11_PIN_07) +extern const ioport_cfg_t g_bsp_pin_cfg; /* RTT-RA8D1 */ + +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/ra8d1-vision-board/ra_cfg/fsp_cfg/r_ioport_cfg.h b/bsp/renesas/ra8d1-vision-board/ra_cfg/fsp_cfg/r_ioport_cfg.h new file mode 100644 index 0000000000..d2688bf5ba --- /dev/null +++ b/bsp/renesas/ra8d1-vision-board/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/ra8d1-vision-board/ra_cfg/fsp_cfg/r_sci_b_uart_cfg.h b/bsp/renesas/ra8d1-vision-board/ra_cfg/fsp_cfg/r_sci_b_uart_cfg.h new file mode 100644 index 0000000000..d7a9235fcc --- /dev/null +++ b/bsp/renesas/ra8d1-vision-board/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/ra8d1-vision-board/ra_gen/SConscript b/bsp/renesas/ra8d1-vision-board/ra_gen/SConscript new file mode 100644 index 0000000000..6a52bcd615 --- /dev/null +++ b/bsp/renesas/ra8d1-vision-board/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/ra8d1-vision-board/ra_gen/bsp_clock_cfg.h b/bsp/renesas/ra8d1-vision-board/ra_gen/bsp_clock_cfg.h new file mode 100644 index 0000000000..e9b17d6588 --- /dev/null +++ b/bsp/renesas/ra8d1-vision-board/ra_gen/bsp_clock_cfg.h @@ -0,0 +1,58 @@ +/* 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_4) /* PLL1Q Div /4 */ +#define BSP_CFG_PLL1Q_FREQUENCY_HZ (240000000) /* PLL1Q 240000000Hz */ +#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_LCDCLK_SOURCE (BSP_CLOCKS_SOURCE_CLOCK_PLL1P) /* LCDCLK Src: PLL1P */ +#define BSP_CFG_I3CCLK_SOURCE (BSP_CLOCKS_CLOCK_DISABLED) /* I3CCLK Disabled */ +#define BSP_CFG_UCK_SOURCE (BSP_CLOCKS_SOURCE_CLOCK_PLL1Q) /* UCK Src: PLL1Q */ +#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_LCDCLK_DIV (BSP_CLOCKS_LCD_CLOCK_DIV_2) /* LCDCLK Div /2 */ +#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_USB60_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/ra8d1-vision-board/ra_gen/common_data.c b/bsp/renesas/ra8d1-vision-board/ra_gen/common_data.c new file mode 100644 index 0000000000..50036c0adc --- /dev/null +++ b/bsp/renesas/ra8d1-vision-board/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/ra8d1-vision-board/ra_gen/common_data.h b/bsp/renesas/ra8d1-vision-board/ra_gen/common_data.h new file mode 100644 index 0000000000..6a08cbee09 --- /dev/null +++ b/bsp/renesas/ra8d1-vision-board/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/ra8d1-vision-board/ra_gen/hal_data.c b/bsp/renesas/ra8d1-vision-board/ra_gen/hal_data.c new file mode 100644 index 0000000000..ba385e77aa --- /dev/null +++ b/bsp/renesas/ra8d1-vision-board/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/ra8d1-vision-board/ra_gen/hal_data.h b/bsp/renesas/ra8d1-vision-board/ra_gen/hal_data.h new file mode 100644 index 0000000000..c1913153ae --- /dev/null +++ b/bsp/renesas/ra8d1-vision-board/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/ra8d1-vision-board/ra_gen/main.c b/bsp/renesas/ra8d1-vision-board/ra_gen/main.c new file mode 100644 index 0000000000..42c5904834 --- /dev/null +++ b/bsp/renesas/ra8d1-vision-board/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/ra8d1-vision-board/ra_gen/pin_data.c b/bsp/renesas/ra8d1-vision-board/ra_gen/pin_data.c new file mode 100644 index 0000000000..b33c8f7568 --- /dev/null +++ b/bsp/renesas/ra8d1-vision-board/ra_gen/pin_data.c @@ -0,0 +1,512 @@ +/* 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_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_03, + .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_DRIVE_HIGH | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_OSPI) + }, + { + .pin = BSP_IO_PORT_01_PIN_12, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_HIGH | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_BUS) + }, + { + .pin = BSP_IO_PORT_01_PIN_13, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_HIGH | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_BUS) + }, + { + .pin = BSP_IO_PORT_01_PIN_14, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_HIGH | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_BUS) + }, + { + .pin = BSP_IO_PORT_01_PIN_15, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_HIGH | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_BUS) + }, + { + .pin = BSP_IO_PORT_02_PIN_06, + .pin_cfg = ((uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_MIPI) + }, + { + .pin = BSP_IO_PORT_02_PIN_07, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_MID | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_LCD_GRAPHICS) + }, + { + .pin = BSP_IO_PORT_02_PIN_08, + .pin_cfg = ((uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_SCI1_3_5_7_9) + }, + { + .pin = BSP_IO_PORT_02_PIN_09, + .pin_cfg = ((uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_SCI1_3_5_7_9) + }, + { + .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_DRIVE_HIGH | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_BUS) + }, + { + .pin = BSP_IO_PORT_03_PIN_01, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_HIGH | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_BUS) + }, + { + .pin = BSP_IO_PORT_03_PIN_02, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_HIGH | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_BUS) + }, + { + .pin = BSP_IO_PORT_03_PIN_03, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_HIGH | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_BUS) + }, + { + .pin = BSP_IO_PORT_03_PIN_04, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_HIGH | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_BUS) + }, + { + .pin = BSP_IO_PORT_03_PIN_05, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_HIGH | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_BUS) + }, + { + .pin = BSP_IO_PORT_03_PIN_06, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_HIGH | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_BUS) + }, + { + .pin = BSP_IO_PORT_03_PIN_07, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_HIGH | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_BUS) + }, + { + .pin = BSP_IO_PORT_03_PIN_08, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_HIGH | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_BUS) + }, + { + .pin = BSP_IO_PORT_03_PIN_09, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_HIGH | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_BUS) + }, + { + .pin = BSP_IO_PORT_03_PIN_10, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_HIGH | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_BUS) + }, + { + .pin = BSP_IO_PORT_03_PIN_11, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_HIGH | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_BUS) + }, + { + .pin = BSP_IO_PORT_03_PIN_12, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_HIGH | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_BUS) + }, + { + .pin = BSP_IO_PORT_04_PIN_00, + .pin_cfg = ((uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_CEU) + }, + { + .pin = BSP_IO_PORT_04_PIN_01, + .pin_cfg = ((uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_CEU) + }, + { + .pin = BSP_IO_PORT_04_PIN_05, + .pin_cfg = ((uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_CEU) + }, + { + .pin = BSP_IO_PORT_04_PIN_06, + .pin_cfg = ((uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_CFG_PULLUP_ENABLE | (uint32_t) IOPORT_PERIPHERAL_CEU) + }, + { + .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_SCI1_3_5_7_9) + }, + { + .pin = BSP_IO_PORT_04_PIN_09, + .pin_cfg = ((uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_SCI1_3_5_7_9) + }, + { + .pin = BSP_IO_PORT_05_PIN_00, + .pin_cfg = ((uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_SDHI_MMC) + }, + { + .pin = BSP_IO_PORT_05_PIN_01, + .pin_cfg = ((uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_SDHI_MMC) + }, + { + .pin = BSP_IO_PORT_05_PIN_02, + .pin_cfg = ((uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_SDHI_MMC) + }, + { + .pin = BSP_IO_PORT_05_PIN_03, + .pin_cfg = ((uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_SDHI_MMC) + }, + { + .pin = BSP_IO_PORT_05_PIN_04, + .pin_cfg = ((uint32_t) IOPORT_CFG_PORT_DIRECTION_INPUT) + }, + { + .pin = BSP_IO_PORT_05_PIN_05, + .pin_cfg = ((uint32_t) IOPORT_CFG_PORT_DIRECTION_INPUT) + }, + { + .pin = BSP_IO_PORT_05_PIN_06, + .pin_cfg = ((uint32_t) IOPORT_CFG_PORT_DIRECTION_INPUT) + }, + { + .pin = BSP_IO_PORT_05_PIN_15, + .pin_cfg = ((uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_LCD_GRAPHICS) + }, + { + .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_06_PIN_01, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_HIGH | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_BUS) + }, + { + .pin = BSP_IO_PORT_06_PIN_02, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_HIGH | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_BUS) + }, + { + .pin = BSP_IO_PORT_06_PIN_03, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_HIGH | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_BUS) + }, + { + .pin = BSP_IO_PORT_06_PIN_04, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_HIGH | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_BUS) + }, + { + .pin = BSP_IO_PORT_06_PIN_05, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_HIGH | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_BUS) + }, + { + .pin = BSP_IO_PORT_06_PIN_06, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_HIGH | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_BUS) + }, + { + .pin = BSP_IO_PORT_06_PIN_07, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_HIGH | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_BUS) + }, + { + .pin = BSP_IO_PORT_06_PIN_09, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_HIGH | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_BUS) + }, + { + .pin = BSP_IO_PORT_06_PIN_10, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_HIGH | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_BUS) + }, + { + .pin = BSP_IO_PORT_06_PIN_11, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_HIGH | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_BUS) + }, + { + .pin = BSP_IO_PORT_06_PIN_12, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_HIGH | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_BUS) + }, + { + .pin = BSP_IO_PORT_06_PIN_13, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_HIGH | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_BUS) + }, + { + .pin = BSP_IO_PORT_06_PIN_14, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_HIGH | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_BUS) + }, + { + .pin = BSP_IO_PORT_06_PIN_15, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_HIGH | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_BUS) + }, + { + .pin = BSP_IO_PORT_07_PIN_00, + .pin_cfg = ((uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_CEU) + }, + { + .pin = BSP_IO_PORT_07_PIN_01, + .pin_cfg = ((uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_CEU) + }, + { + .pin = BSP_IO_PORT_07_PIN_02, + .pin_cfg = ((uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_CEU) + }, + { + .pin = BSP_IO_PORT_07_PIN_03, + .pin_cfg = ((uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_CEU) + }, + { + .pin = BSP_IO_PORT_07_PIN_08, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_HIGH | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_CFG_PULLUP_ENABLE | (uint32_t) IOPORT_PERIPHERAL_CEU) + }, + { + .pin = BSP_IO_PORT_07_PIN_09, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_HIGH | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_CFG_PULLUP_ENABLE | (uint32_t) IOPORT_PERIPHERAL_CEU) + }, + { + .pin = BSP_IO_PORT_07_PIN_10, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_HIGH | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_CFG_PULLUP_ENABLE | (uint32_t) IOPORT_PERIPHERAL_CEU) + }, + { + .pin = BSP_IO_PORT_07_PIN_11, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_MID | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_LCD_GRAPHICS) + }, + { + .pin = BSP_IO_PORT_07_PIN_12, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_MID | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_LCD_GRAPHICS) + }, + { + .pin = BSP_IO_PORT_07_PIN_13, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_MID | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_LCD_GRAPHICS) + }, + { + .pin = BSP_IO_PORT_07_PIN_14, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_MID | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_LCD_GRAPHICS) + }, + { + .pin = BSP_IO_PORT_07_PIN_15, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_MID | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_LCD_GRAPHICS) + }, + { + .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_05, + .pin_cfg = ((uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_LCD_GRAPHICS) + }, + { + .pin = BSP_IO_PORT_08_PIN_06, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_HIGH | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_LCD_GRAPHICS) + }, + { + .pin = BSP_IO_PORT_08_PIN_07, + .pin_cfg = ((uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_LCD_GRAPHICS) + }, + { + .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_10, + .pin_cfg = ((uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_SDHI_MMC) + }, + { + .pin = BSP_IO_PORT_08_PIN_11, + .pin_cfg = ((uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_SDHI_MMC) + }, + { + .pin = BSP_IO_PORT_08_PIN_12, + .pin_cfg = ((uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_SDHI_MMC) + }, + { + .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_09_PIN_02, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_MID | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_LCD_GRAPHICS) + }, + { + .pin = BSP_IO_PORT_09_PIN_03, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_MID | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_LCD_GRAPHICS) + }, + { + .pin = BSP_IO_PORT_09_PIN_04, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_MID | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_LCD_GRAPHICS) + }, + { + .pin = BSP_IO_PORT_09_PIN_05, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_HIGH | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_BUS) + }, + { + .pin = BSP_IO_PORT_09_PIN_06, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_HIGH | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_BUS) + }, + { + .pin = BSP_IO_PORT_09_PIN_08, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_HIGH | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_BUS) + }, + { + .pin = BSP_IO_PORT_09_PIN_09, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_HIGH | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_BUS) + }, + { + .pin = BSP_IO_PORT_09_PIN_10, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_MID | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_LCD_GRAPHICS) + }, + { + .pin = BSP_IO_PORT_09_PIN_11, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_MID | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_LCD_GRAPHICS) + }, + { + .pin = BSP_IO_PORT_09_PIN_12, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_MID | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_LCD_GRAPHICS) + }, + { + .pin = BSP_IO_PORT_09_PIN_13, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_MID | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_LCD_GRAPHICS) + }, + { + .pin = BSP_IO_PORT_09_PIN_14, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_MID | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_LCD_GRAPHICS) + }, + { + .pin = BSP_IO_PORT_09_PIN_15, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_MID | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_LCD_GRAPHICS) + }, + { + .pin = BSP_IO_PORT_10_PIN_00, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_HIGH | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_BUS) + }, + { + .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_08, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_HIGH | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_BUS) + }, + { + .pin = BSP_IO_PORT_10_PIN_09, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_HS_HIGH | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_BUS) + }, + { + .pin = BSP_IO_PORT_10_PIN_10, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_HIGH | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_BUS) + }, + { + .pin = BSP_IO_PORT_10_PIN_11, + .pin_cfg = ((uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_GPT1) + }, + { + .pin = BSP_IO_PORT_10_PIN_13, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_HIGH | (uint32_t) IOPORT_CFG_PORT_DIRECTION_OUTPUT | (uint32_t) IOPORT_CFG_PORT_OUTPUT_HIGH) + }, + { + .pin = BSP_IO_PORT_11_PIN_01, + .pin_cfg = ((uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_USB_HS) + }, + { + .pin = BSP_IO_PORT_11_PIN_05, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_MID | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_LCD_GRAPHICS) + }, + { + .pin = BSP_IO_PORT_11_PIN_06, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_MID | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_LCD_GRAPHICS) + }, + { + .pin = BSP_IO_PORT_11_PIN_07, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_MID | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_LCD_GRAPHICS) + }, +}; + +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/ra8d1-vision-board/ra_gen/vector_data.c b/bsp/renesas/ra8d1-vision-board/ra_gen/vector_data.c new file mode 100644 index 0000000000..cac65f94c5 --- /dev/null +++ b/bsp/renesas/ra8d1-vision-board/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 diff --git a/bsp/renesas/ra8d1-vision-board/ra_gen/vector_data.h b/bsp/renesas/ra8d1-vision-board/ra_gen/vector_data.h new file mode 100644 index 0000000000..8f41b4bb15 --- /dev/null +++ b/bsp/renesas/ra8d1-vision-board/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 */ diff --git a/bsp/renesas/ra8d1-vision-board/rtconfig.h b/bsp/renesas/ra8d1-vision-board/rtconfig.h new file mode 100644 index 0000000000..c0543c6434 --- /dev/null +++ b/bsp/renesas/ra8d1-vision-board/rtconfig.h @@ -0,0 +1,266 @@ +#ifndef RT_CONFIG_H__ +#define RT_CONFIG_H__ + +/* Automatically generated file; DO NOT EDIT. */ +/* RT-Thread Configuration */ + +/* RT-Thread Kernel */ + +#define RT_NAME_MAX 12 +#define RT_CPUS_NR 1 +#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 + +/* 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_MEMPOOL +#define RT_USING_MEMHEAP +#define RT_MEMHEAP_FAST_MODE +#define RT_USING_MEMHEAP_AS_HEAP +#define RT_USING_MEMHEAP_AUTO_BINDING +#define RT_USING_HEAP +#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_BACKTRACE_LEVEL_MAX_NR 32 +#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 */ + + +/* Memory protection */ + + +/* Utilities */ + + +/* RT-Thread Utestcases */ + + +/* RT-Thread online packages */ + +/* IoT - internet of things */ + + +/* Wi-Fi */ + +/* Marvell WiFi */ + + +/* Wiced WiFi */ + + +/* CYW43012 WiFi */ + + +/* BL808 WiFi */ + + +/* CYW43439 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_R7FA8D1AH + +/* 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 +#define BSP_USING_SDRAM +#define BSP_USING_SDRAM_SIZE 0x2000000 + +#endif diff --git a/bsp/renesas/ra8d1-vision-board/rtconfig.py b/bsp/renesas/ra8d1-vision-board/rtconfig.py new file mode 100644 index 0000000000..51a4958c83 --- /dev/null +++ b/bsp/renesas/ra8d1-vision-board/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 = ' -march=armv8.1-m.main+mve.fp+fp.dp -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/ra8d1-vision-board/script/ac6/fsp_keep.via b/bsp/renesas/ra8d1-vision-board/script/ac6/fsp_keep.via new file mode 100644 index 0000000000..8b13789179 --- /dev/null +++ b/bsp/renesas/ra8d1-vision-board/script/ac6/fsp_keep.via @@ -0,0 +1 @@ + diff --git a/bsp/renesas/ra8d1-vision-board/script/fsp.ld b/bsp/renesas/ra8d1-vision-board/script/fsp.ld new file mode 100644 index 0000000000..96f57aabd7 --- /dev/null +++ b/bsp/renesas/ra8d1-vision-board/script/fsp.ld @@ -0,0 +1,794 @@ +/* + 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); + +ITCM_START = DEFINED(ITCM_START)? ITCM_START : 0; +ITCM_LENGTH = DEFINED(ITCM_LENGTH)? ITCM_LENGTH : 0; +DTCM_START = DEFINED(DTCM_START)? DTCM_START : 0; +DTCM_LENGTH = DEFINED(DTCM_LENGTH)? DTCM_LENGTH : 0; +NS_OFFSET_START = DEFINED(NS_OFFSET_START) ? NS_OFFSET_START : 0; +NS_IMAGE_OFFSET = DEFINED(PROJECT_NONSECURE) ? NS_OFFSET_START : 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 = DEFINED(PROJECT_NONSECURE) ? OPTION_SETTING_START : OPTION_SETTING_START + 0x80; + +/* 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) || DEFINED(PROJECT_SECURE)) && 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 +{ + ITCM (rx) : ORIGIN = ITCM_START + NS_IMAGE_OFFSET, LENGTH = ITCM_LENGTH + DTCM (rwx) : ORIGIN = DTCM_START + NS_IMAGE_OFFSET, LENGTH = DTCM_LENGTH + FLASH (rx) : ORIGIN = FLASH_ORIGIN + NS_IMAGE_OFFSET, LENGTH = LIMITED_FLASH_LENGTH + RAM (rwx) : ORIGIN = RAM_START + NS_IMAGE_OFFSET, LENGTH = RAM_LENGTH + DATA_FLASH (rx) : ORIGIN = DATA_FLASH_START + NS_IMAGE_OFFSET, 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 + NS_IMAGE_OFFSET, LENGTH = OPTION_SETTING_LENGTH + OPTION_SETTING_OFS (r) : ORIGIN = OPTION_SETTING_START + NS_IMAGE_OFFSET, LENGTH = 0x18 + OPTION_SETTING_SAS (r) : ORIGIN = OPTION_SETTING_START + NS_IMAGE_OFFSET + 0x34, LENGTH = OPTION_SETTING_LENGTH - 0x34 + OPTION_SETTING_S (r) : ORIGIN = OPTION_SETTING_S_START + NS_IMAGE_OFFSET, LENGTH = OPTION_SETTING_S_LENGTH + ID_CODE (rx) : ORIGIN = ID_CODE_START, LENGTH = ID_CODE_LENGTH +} + +/* Library configurations */ +GROUP(libc.a libm.a libnosys.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)) + + /* .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; + + . = .; + __itcm_data_pre_location = .; + + /* Initialized ITCM data. */ + /* Aligned to FCACHE2 for RA8. */ + .itcm_data : ALIGN(16) + { + /* Start of ITCM Secure Trustzone region. */ + __tz_ITCM_S = ABSOLUTE(ITCM_START); + + /* All ITCM data start */ + __itcm_data_start = .; + + KEEP(*(.itcm_data*)) + + /* Pad to eight byte alignment in case of ECC initialization. Fill zero. */ + . = ALIGN(8); + + /* All ITCM data end */ + __itcm_data_end = .; + + /* + * Start of the ITCM Non-Secure Trustzone region. + * ITCM_NS_START can be used to set a fixed address for non-secure ITCM in secure projects or flat projects. + */ + __tz_ITCM_N = DEFINED(ITCM_NS_START) ? ABSOLUTE(ITCM_NS_START) : ALIGN(__itcm_data_end, 8192); + } > ITCM AT > FLASH = 0x00 + + /* Addresses exported for ITCM initialization. */ + __itcm_data_init_start = LOADADDR(.itcm_data); + __itcm_data_init_end = LOADADDR(.itcm_data) + SIZEOF(.itcm_data); + + ASSERT(ORIGIN(ITCM) % 8 == 0, "ITCM memory region origin must be aligned to 8 bytes.") + ASSERT(LENGTH(ITCM) % 8 == 0, "ITCM memory region length must be a multiple of 8 bytes.") + ASSERT(LOADADDR(.itcm_data) % 16 == 0, ".itcm_data section must be aligned to 16 bytes.") + ASSERT(SIZEOF(.itcm_data) % 8 == 0, ".itcm_data section size must be a multiple of 8 bytes.") + + /* Restore location counter. */ + /* If ITCM is not present, this will be the address stored in '.' before ALIGN was attempted. */ + /* If ITCM is present, this will be the absolute address that follows the ITCM ROM location. */ + . = (SIZEOF(.itcm_data) > 0) ? __itcm_data_init_end : __itcm_data_pre_location; + + .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 + + . = .; + __dtcm_data_pre_location = LOADADDR(.data) + SIZEOF(.data); + + /* Initialized DTCM data. */ + /* Aligned to FCACHE2 for RA8. */ + .dtcm_data : ALIGN(16) + { + /* Start of DTCM Secure Trustzone region. */ + __tz_DTCM_S = ABSOLUTE(DTCM_START); + + /* Initialized DTCM data start */ + __dtcm_data_start = .; + + KEEP(*(.dtcm_data*)) + + /* Pad to eight byte alignment in case of ECC initialization. Fill zero. */ + . = ALIGN(8); + + /* Initialized DTCM data end */ + __dtcm_data_end = .; + } > DTCM AT > FLASH = 0x00 + + . = __dtcm_data_end; + /* Uninitialized DTCM data. */ + /* ALIGN appears on the left side of the colon because it is being used to assign the VMA directly, as opposed to a right side appearance which would control the LMA. */ + .dtcm_bss ALIGN(8) (NOLOAD) : + { + /* Uninitialized DTCM data start */ + __dtcm_bss_start = .; + + KEEP(*(.dtcm_bss*)) + + /* Pad to eight byte alignment in case of ECC initialization. No fill because of NOLOAD. */ + . = ALIGN(8); + + /* Uninitialized DTCM data end */ + __dtcm_bss_end = .; + + /* + * Start of the DTCM Non-Secure Trustzone region. + * DTCM_NS_START can be used to set a fixed address for non-secure DTCM in secure projects or flat projects. + */ + __tz_DTCM_N = DEFINED(DTCM_NS_START) ? ABSOLUTE(DTCM_NS_START) : ALIGN(__dtcm_bss_end, 8192); + } > DTCM + + /* Addresses exported for DTCM initialization. */ + __dtcm_data_init_start = LOADADDR(.dtcm_data); + __dtcm_data_init_end = LOADADDR(.dtcm_data) + SIZEOF(.dtcm_data); + + ASSERT(ORIGIN(DTCM) % 8 == 0, "DTCM memory region origin must be aligned to 8 bytes.") + ASSERT(LENGTH(DTCM) % 8 == 0, "DTCM memory region length must be a multiple of 8 bytes.") + ASSERT(LOADADDR(.dtcm_bss) == ADDR(.dtcm_bss), ".dtcm_bss has (VMA != LMA) but should be NOLOAD (VMA == LMA).") + ASSERT(LOADADDR(.dtcm_data) % 16 == 0, ".dtcm_data section must be aligned to 16 bytes.") + ASSERT(SIZEOF(.dtcm_data) % 8 == 0, ".dtcm_data section size must be a multiple of 8 bytes.") + ASSERT(LOADADDR(.dtcm_bss) % 8 == 0, ".dtcm_bss section must be aligned to 8 bytes.") + ASSERT(SIZEOF(.dtcm_bss) % 8 == 0, ".dtcm_bss section size must be a multiple of 8 bytes.") + ASSERT(__dtcm_bss_start == __dtcm_data_end, ".dtcm_bss section is not adjacent to .dtcm_data section.") + + /* Restore location counter. */ + /* If DTCM is not present, this will be the address stored in '.' before ALIGN was attempted. */ + /* If DTCM is present, this will be the absolute address that follows the DTCM ROM location. */ + . = (SIZEOF(.dtcm_data) > 0) ? __dtcm_data_init_end : __dtcm_data_pre_location; + + /* TrustZone Secure Gateway Stubs Section */ + + /* Store location counter for SPI non-retentive sections. */ + sgstubs_pre_location = .; + + /* Determine the secure gateway stubs address either by the provided linker variable or the next 1024-byte block. */ + SGSTUBS_LOC = (DEFINED(PROJECT_SECURE) && DEFINED(FLASH_NSC_START)) ? ABSOLUTE(FLASH_NSC_START) : ALIGN(1024); + .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__ = sgstubs_pre_location; + .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__ = sgstubs_pre_location + (SIZEOF(.qspi_non_retentive)); + .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__ = sgstubs_pre_location + (SIZEOF(.qspi_non_retentive) + SIZEOF(.ospi_device_0_non_retentive)); + .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 + + . = .; + __nocache_pre_location = .; + .nocache ALIGN(32) (NOLOAD): + { + __nocache_start = .; + + KEEP(*(.nocache)) + + . = ALIGN(32); + __nocache_end = .; + } > RAM + . = (SIZEOF(.nocache) > 0) ? __nocache_end : __nocache_pre_location; + + .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 - RAM_NS_BUFFER_BLOCK_LENGTH) : __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 - RAM_NS_BUFFER_BLOCK_LENGTH) : __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 + + . = .; + __nocache_sdram_pre_location = .; + .nocache_sdram ALIGN(32) (NOLOAD): + { + __nocache_sdram_start = .; + + KEEP(*(.nocache_sdram)) + + . = ALIGN(32); + __nocache_sdram_end = .; + } > SDRAM + . = (SIZEOF(.nocache_sdram) > 0) ? __nocache_sdram_end : __nocache_sdram_pre_location; + + /* 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); + + /* Note: There are no secure/non-secure boundaries for ID_CODE. These symbols are provided for the RA configuration tool. + * 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 = __tz_ID_CODE_S; + + .id_code : + { + __ID_Code_Start = .; + KEEP(*(.id_code*)) + __ID_Code_End = .; + } > ID_CODE + + + /* Symbol required for RA Configuration tool. */ + __tz_OPTION_SETTING_S = ORIGIN(OPTION_SETTING_OFS); + + .option_setting_ofs : + { + __OPTION_SETTING_OFS_Start = .; + KEEP(*(.option_setting_ofs0)) + . = PROJECT_SECURE_OR_FLAT ? __OPTION_SETTING_OFS_Start + 0x04 : __OPTION_SETTING_OFS_Start; + KEEP(*(.option_setting_ofs2)) + . = PROJECT_SECURE_OR_FLAT ? __OPTION_SETTING_OFS_Start + 0x10 : __OPTION_SETTING_OFS_Start; + KEEP(*(.option_setting_dualsel)) + __OPTION_SETTING_OFS_End = .; + } > OPTION_SETTING_OFS = 0xFF + + .option_setting_sas : + { + __OPTION_SETTING_SAS_Start = .; + KEEP(*(.option_setting_sas)) + __OPTION_SETTING_SAS_End = .; + } > OPTION_SETTING_SAS = 0xFF + + /* Symbol required for RA Configuration tool. */ + __tz_OPTION_SETTING_N = ABSOLUTE(OPTION_SETTING_START_NS); + + .option_setting_ns : + { + __OPTION_SETTING_NS_Start = .; + KEEP(*(.option_setting_ofs1)) + . = USE_OPTION_SETTING_NS ? __OPTION_SETTING_NS_Start + 0x04 : __OPTION_SETTING_NS_Start; + KEEP(*(.option_setting_ofs3)) + . = 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 + 0x4C : __OPTION_SETTING_NS_Start; + KEEP(*(.option_setting_bps3)) + . = 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)) + . = USE_OPTION_SETTING_NS ? __OPTION_SETTING_NS_Start + 0x6C : __OPTION_SETTING_NS_Start; + KEEP(*(.option_setting_pbps3)) + __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 + 0x04 : __OPTION_SETTING_S_Start; + KEEP(*(.option_setting_ofs3_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 + 0x4C : __OPTION_SETTING_S_Start; + KEEP(*(.option_setting_bps_sec3)) + . = 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 + 0x6C : __OPTION_SETTING_S_Start; + KEEP(*(.option_setting_pbps_sec3)) + . = 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 + 0x84 : __OPTION_SETTING_S_Start; + KEEP(*(.option_setting_ofs3_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)) + . = PROJECT_SECURE_OR_FLAT ? __OPTION_SETTING_S_Start + 0xCC : __OPTION_SETTING_S_Start; + KEEP(*(.option_setting_bps_sel3)) + __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/ra8d1-vision-board/script/fsp.scat b/bsp/renesas/ra8d1-vision-board/script/fsp.scat new file mode 100644 index 0000000000..e8cd0b0699 --- /dev/null +++ b/bsp/renesas/ra8d1-vision-board/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/ra8d1-vision-board/script/memory_regions.ld b/bsp/renesas/ra8d1-vision-board/script/memory_regions.ld new file mode 100644 index 0000000000..268ba3f0fd --- /dev/null +++ b/bsp/renesas/ra8d1-vision-board/script/memory_regions.ld @@ -0,0 +1,28 @@ +/* generated memory regions file - do not edit */ +RAM_START = 0x22000000; +RAM_LENGTH = 0xE0000; +FLASH_START = 0x02000000; +FLASH_LENGTH = 0x1F8000; +DATA_FLASH_START = 0x27000000; +DATA_FLASH_LENGTH = 0x3000; +OPTION_SETTING_START = 0x0300A100; +OPTION_SETTING_LENGTH = 0x100; +OPTION_SETTING_S_START = 0x0300A200; +OPTION_SETTING_S_LENGTH = 0x100; +ID_CODE_START = 0x00000000; +ID_CODE_LENGTH = 0x0; +SDRAM_START = 0x68000000; +SDRAM_LENGTH = 0x8000000; +QSPI_FLASH_START = 0x60000000; +QSPI_FLASH_LENGTH = 0x0; +OSPI_DEVICE_0_START = 0x80000000; +OSPI_DEVICE_0_LENGTH = 0x10000000; +OSPI_DEVICE_1_START = 0x90000000; +OSPI_DEVICE_1_LENGTH = 0x10000000; +ITCM_START = 0x00000000; +ITCM_LENGTH = 0x10000; +DTCM_START = 0x20000000; +DTCM_LENGTH = 0x10000; +NS_OFFSET_START = 0x10000000; +NS_OFFSET_LENGTH = 0x0; +RAM_NS_BUFFER_LENGTH = 0x3080; diff --git a/bsp/renesas/ra8d1-vision-board/src/hal_entry.c b/bsp/renesas/ra8d1-vision-board/src/hal_entry.c new file mode 100644 index 0000000000..d7dc394e9a --- /dev/null +++ b/bsp/renesas/ra8d1-vision-board/src/hal_entry.c @@ -0,0 +1,32 @@ +/* + * Copyright (c) 2006-2024, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2023-12-17 Rbb666 first version + */ + +#include +#include "hal_data.h" +#include + +#define DRV_DEBUG +#define LOG_TAG "main" +#include + +#define LED_PIN BSP_IO_PORT_01_PIN_02 /* 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/ra8d1-vision-board/template.uvoptx b/bsp/renesas/ra8d1-vision-board/template.uvoptx new file mode 100644 index 0000000000..8beeda12e3 --- /dev/null +++ b/bsp/renesas/ra8d1-vision-board/template.uvoptx @@ -0,0 +1,218 @@ + + + + 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 + 14 + + + + + + + + + + + BIN\CMSIS_AGDI_V8M.DLL + + + + 0 + CMSIS_AGDI_V8M + -X"Any" -UAny -O206 -S9 -C0 -P00000000 -N00("ARM CoreSight SW-DP") -D00(6BA02477) -L00(0) -TO65554 -TC10000000 -TT10000000 -TP20 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO11 -FD22000000 -FC2000 -FN3 -FF0RA8D1_2M.FLM -FS02000000 -FL01F8000 -FP0($$Device:R7FA8D1BH$Flash\RA8D1_2M.FLM) -FF1RA8D1_DATA_C2M.FLM -FS127000000 -FL13000 -FP1($$Device:R7FA8D1BH$Flash\RA8D1_DATA_C2M.FLM) -FF2RA8D1_CCONF.FLM -FS2300A100 -FL2200 -FP2($$Device:R7FA8D1BH$Flash\RA8D1_CCONF.FLM) + + + 0 + JL2CM3 + -U -O14 -S2 -ZTIFSpeedSel5000 -A0 -C0 -JU1 -JI127.0.0.1 -JP0 -RST0 -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -TB1 -TFE0 -FO15 -FD22000000 -FC2000 -FN3 -FF0RA8D1_2M.FLM -FS02000000 -FL01F8000 -FP0($$Device:R7FA8D1BH$Flash\RA8D1_2M.FLM) -FF1RA8D1_DATA_C2M.FLM -FS127000000 -FL13000 -FP1($$Device:R7FA8D1BH$Flash\RA8D1_DATA_C2M.FLM) -FF2RA8D1_CCONF.FLM -FS2300A100 -FL2200 -FP2($$Device:R7FA8D1BH$Flash\RA8D1_CCONF.FLM) + + + 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/ra8d1-vision-board/template.uvprojx b/bsp/renesas/ra8d1-vision-board/template.uvprojx new file mode 100644 index 0000000000..3167b58bcd --- /dev/null +++ b/bsp/renesas/ra8d1-vision-board/template.uvprojx @@ -0,0 +1,424 @@ + + + + 2.1 + +
    ### uVision Project, (C) Keil Software
    + + + + Target 1 + 0x4 + ARM-ADS + 6190000::V6.19::ARMCLANG + 1 + + + R7FA8D1BH + Renesas + Renesas.RA8_DFP.0.0.2 + https://www2.renesas.eu/Keil_MDK_Packs/ + IRAM(0x22000000,0xE0000) IRAM2(0x0,0x10000) IROM(0x02000000,0x001F8000) XRAM(0x20000000,0x10000) CPUTYPE("Cortex-M85") FPU3(DFPU) DSP TZ MVE(FP) PACBTI CLOCK(12000000) ELITTLE + + + UL2V8M(-S0 -C0 -P0 -FD22000000 -FC2000 -FN3 -FF0RA8D1_2M -FS02000000 -FL01F8000 -FF1RA8D1_DATA_C2M -FS127000000 -FL13000 -FF2RA8D1_CCONF -FS2300A100 -FL2200 -FP0($$Device:R7FA8D1BH$Flash\RA8D1_2M.FLM) -FP1($$Device:R7FA8D1BH$Flash\RA8D1_DATA_C2M.FLM) -FP2($$Device:R7FA8D1BH$Flash\RA8D1_CCONF.FLM)) + 0 + + + + + + + + + + + $$Device:R7FA8D1BH$SVD\R7FA8D1BH.svd + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\Objects\ + rtthread + 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 -MVE -PACBTI + TCM.DLL + -pCM85 + + + + 1 + 0 + 0 + 0 + 16 + + + + + 1 + 0 + 0 + 0 + 1 + 4102 + + 1 + BIN\UL2V8M.DLL + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M85" + + 0 + 0 + 0 + 1 + 1 + 1 + 0 + 3 + 2 + 0 + 0 + 1 + 0 + 8 + 0 + 0 + 0 + 0 + 3 + 4 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x22000000 + 0xe0000 + + + 1 + 0x2000000 + 0x1f8000 + + + 1 + 0x20000000 + 0x10000 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x2000000 + 0x1f8000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x10000 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x22000000 + 0xe0000 + + + 0 + 0x0 + 0x10000 + + + + + + 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 + + + + + + + + + + + + + + + + + + + + + + + + + +

    rDyZs15SGTlM&n|XD82>k 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 H!+`$-jqXdn literal 0 HcmV?d00001 diff --git a/bsp/renesas/ra8d1-vision-board/docs/picture/uvprojx.png b/bsp/renesas/ra8d1-vision-board/docs/picture/uvprojx.png new file mode 100644 index 0000000000000000000000000000000000000000..9603210252b211dfbc5f68f2e1845dd11e1c70f4 GIT binary patch literal 28165 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 KWGbYLgZ~FGqcphy literal 0 HcmV?d00001 diff --git a/bsp/renesas/ra8d1-vision-board/memory_regions.scat b/bsp/renesas/ra8d1-vision-board/memory_regions.scat new file mode 100644 index 0000000000..2993b52037 --- /dev/null +++ b/bsp/renesas/ra8d1-vision-board/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/ra8d1-vision-board/project.uvoptx b/bsp/renesas/ra8d1-vision-board/project.uvoptx new file mode 100644 index 0000000000..a83a397a72 --- /dev/null +++ b/bsp/renesas/ra8d1-vision-board/project.uvoptx @@ -0,0 +1,810 @@ + + + + 1.0 + +

  • %W-q4vQAHee}+mQ|g>-F;Ltc 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%0Dt-CJcFm+xdm!Sl=(UBV^t=UXmj0 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 z%0D&hDe|Acw_bkiHLeB}wy(AmD?Y!&uOB6e2n1lUuZ55*dmg2=x&5(EQK_GyU3?O0IJ_JB)DdcIB(0&4>ChCYUm30~O6nj0 z&qi|SZof$qlA3kw9P}n?&ek@jqs6-SvUfUk%#8;%Ek~Vmt|M(g5R=vC8ySB&F9IT^j{W^Hj;hP-ho**Eh`u{{afyT4PU9Qq9a&KE0E`2q@GfFf^u14dSf+0!?dgO&!JFGbk-5jHb%ZJCP zG8mM<>O2h8YJJaj^$9 zgLsUhlWo{cc4-5>r4sPIRXH!G*_p7BGfI(+zOdCg%)Hcs1!SfIuwlxd@2XQzqN_cn zMPk-?evxk$PA*PX2HG;^NVy5)%9t05@y;*K{Ie{AtJ&muIpmGBe`a0p*QDbJ2tYz_ zI(ruzqq3BY#xO-OL+MSW5!Vqzr}rYcsvo|sw*yWKMFM^eA~?$bWp?a z^Q)vYIYX!zG53=?zr?CVRONF9CzSr#f<)1t7vJxG0F1O z)Z-IEeJFvd{_2RFp?;m1N_JFzk)wsfEd zz0hhe(MFX@I$aUUFC7cmyg;{iMY}y3X%$yj*R>Nr3uA4X(i+C@I!5x6P)0ei#z633 z(J3~ML(t>Uo~{$SIeuZZDIF#ollI*$WqnTa&F>-!K4RG2!5VNuL~4iSQQ!uqo4s