From 2f9d3bfe207b1898793669a592d4a1d6bf440a13 Mon Sep 17 00:00:00 2001 From: Rbb666 Date: Wed, 19 Apr 2023 14:01:34 +0800 Subject: [PATCH] [Renesas]Add HMI-Board bsp --- .github/workflows/action.yml | 1 + bsp/renesas/ra6m3-hmi-board/.config | 756 + bsp/renesas/ra6m3-hmi-board/.cproject | 220 + bsp/renesas/ra6m3-hmi-board/.gitignore | 5 + .../ra6m3-hmi-board/.ignore_format.yml | 9 + bsp/renesas/ra6m3-hmi-board/.project | 28 + .../ra6m3-hmi-board/.settings/.rtmenus | Bin 0 -> 1696400 bytes .../.settings/language.settings.xml | 14 + .../.settings/org.eclipse.core.runtime.prefs | 3 + .../ra6m3-hmi-board/.settings/projcfg.ini | 19 + .../ra6m3-temp.JLink.Debug.rttlaunch | 90 + .../.settings/standalone.prefs | 19 + .../ra6m3-hmi-board/EventRecorderStub.scvd | 9 + bsp/renesas/ra6m3-hmi-board/JLinkLog.txt | 4220 ++ bsp/renesas/ra6m3-hmi-board/JLinkSettings.ini | 40 + bsp/renesas/ra6m3-hmi-board/Kconfig | 29 + .../ra6m3-hmi-board/R7FA6M3AH3CFC.pincfg | 36 + bsp/renesas/ra6m3-hmi-board/README.md | 145 + bsp/renesas/ra6m3-hmi-board/SConscript | 27 + bsp/renesas/ra6m3-hmi-board/SConstruct | 54 + bsp/renesas/ra6m3-hmi-board/board/Kconfig | 196 + bsp/renesas/ra6m3-hmi-board/board/SConscript | 16 + bsp/renesas/ra6m3-hmi-board/board/board.h | 38 + .../ra6m3-hmi-board/board/lvgl/SConscript | 16 + .../board/lvgl/demo/SConscript | 17 + .../ra6m3-hmi-board/board/lvgl/demo/lv_demo.c | 17 + .../ra6m3-hmi-board/board/lvgl/lv_conf.h | 48 + .../ra6m3-hmi-board/board/lvgl/lv_port_disp.c | 141 + .../board/lvgl/lv_port_indev.c | 15 + .../ra6m3-hmi-board/board/ports/SConscript | 16 + .../ra6m3-hmi-board/board/ports/gpio_cfg.h | 82 + .../ra6m3-hmi-board/board/ports/lcd_port.h | 34 + bsp/renesas/ra6m3-hmi-board/buildinfo.gpdsc | 159 + bsp/renesas/ra6m3-hmi-board/configuration.xml | 238 + .../ra6m3-hmi-board/docs/lvgl使用文档.md | 105 + .../ra6m3-hmi-board/docs/picture/lvgl/00.png | Bin 0 -> 3957 bytes .../ra6m3-hmi-board/docs/picture/lvgl/01.png | Bin 0 -> 17442 bytes .../ra6m3-hmi-board/docs/picture/lvgl/02.png | Bin 0 -> 21693 bytes .../ra6m3-hmi-board/docs/picture/lvgl/03.png | Bin 0 -> 3572 bytes .../ra6m3-hmi-board/docs/picture/lvgl/04.png | Bin 0 -> 11957 bytes .../ra6m3-hmi-board/docs/picture/lvgl/05.png | Bin 0 -> 28365 bytes .../ra6m3-hmi-board/docs/picture/lvgl/06.png | Bin 0 -> 14866 bytes .../ra6m3-hmi-board/docs/picture/lvgl/07.png | Bin 0 -> 11854 bytes .../ra6m3-hmi-board/docs/picture/lvgl/08.png | Bin 0 -> 54906 bytes .../ra6m3-hmi-board/docs/picture/lvgl/09.png | Bin 0 -> 23525 bytes .../ra6m3-hmi-board/docs/picture/lvgl/10.png | Bin 0 -> 6191 bytes .../ra6m3-hmi-board/docs/picture/lvgl/11.png | Bin 0 -> 4174 bytes .../ra6m3-hmi-board/docs/picture/lvgl/12.png | Bin 0 -> 18017 bytes .../ra6m3-hmi-board/docs/picture/lvgl/13.png | Bin 0 -> 11663 bytes .../ra6m3-hmi-board/docs/picture/lvgl/14.png | Bin 0 -> 12036 bytes .../ra6m3-hmi-board/docs/picture/lvgl/15.png | Bin 0 -> 18576 bytes .../ra6m3-hmi-board/docs/picture/lvgl/16.png | Bin 0 -> 4849 bytes .../docs/picture/lvgl/tft-pin.png | Bin 0 -> 5295 bytes .../ra6m3-hmi-board/project.uvguix.RTT | 3601 ++ bsp/renesas/ra6m3-hmi-board/project.uvoptx | 762 + bsp/renesas/ra6m3-hmi-board/project.uvprojx | 669 + bsp/renesas/ra6m3-hmi-board/ra/SConscript | 25 + .../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 | 4217 ++ .../CMSIS/Core/Include/core_armv8mbl.h | 2222 + .../CMSIS/Core/Include/core_armv8mml.h | 3197 ++ .../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 | 3265 ++ .../CMSIS_5/CMSIS/Core/Include/core_cm35p.h | 3265 ++ .../arm/CMSIS_5/CMSIS/Core/Include/core_cm4.h | 2129 + .../CMSIS_5/CMSIS/Core/Include/core_cm55.h | 4278 ++ .../arm/CMSIS_5/CMSIS/Core/Include/core_cm7.h | 2366 + .../CMSIS_5/CMSIS/Core/Include/core_sc000.h | 1030 + .../CMSIS_5/CMSIS/Core/Include/core_sc300.h | 1917 + .../CMSIS_5/CMSIS/Core/Include/mpu_armv7.h | 275 + .../CMSIS_5/CMSIS/Core/Include/mpu_armv8.h | 352 + .../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 + .../ra6m3-hmi-board/ra/board/ra6m3/board.h | 66 + .../ra/board/ra6m3/board_ethernet_phy.h | 60 + .../ra/board/ra6m3/board_init.c | 66 + .../ra/board/ra6m3/board_init.h | 63 + .../ra/board/ra6m3/board_leds.c | 74 + .../ra/board/ra6m3/board_leds.h | 75 + .../ra6m3-hmi-board/ra/fsp/inc/api/bsp_api.h | 107 + .../ra/fsp/inc/api/r_ioport_api.h | 384 + .../ra/fsp/inc/api/r_transfer_api.h | 371 + .../ra/fsp/inc/api/r_uart_api.h | 293 + .../ra/fsp/inc/fsp_common_api.h | 364 + .../ra6m3-hmi-board/ra/fsp/inc/fsp_features.h | 294 + .../ra6m3-hmi-board/ra/fsp/inc/fsp_version.h | 80 + .../ra/fsp/inc/instances/r_glcdc.h | 244 + .../ra/fsp/inc/instances/r_ioport.h | 359 + .../ra/fsp/inc/instances/r_sci_uart.h | 192 + .../Device/RENESAS/Include/base_addresses.h | 623 + .../cmsis/Device/RENESAS/Include/renesas.h | 46653 ++++++++++++++++ .../bsp/cmsis/Device/RENESAS/Include/system.h | 58 + .../bsp/cmsis/Device/RENESAS/Source/startup.c | 151 + .../bsp/cmsis/Device/RENESAS/Source/system.c | 458 + .../fsp/src/bsp/mcu/all/bsp_arm_exceptions.h | 50 + .../ra/fsp/src/bsp/mcu/all/bsp_clocks.c | 1566 + .../ra/fsp/src/bsp/mcu/all/bsp_clocks.h | 354 + .../ra/fsp/src/bsp/mcu/all/bsp_common.c | 195 + .../ra/fsp/src/bsp/mcu/all/bsp_common.h | 379 + .../src/bsp/mcu/all/bsp_compiler_support.h | 104 + .../ra/fsp/src/bsp/mcu/all/bsp_delay.c | 182 + .../ra/fsp/src/bsp/mcu/all/bsp_delay.h | 75 + .../ra/fsp/src/bsp/mcu/all/bsp_group_irq.c | 121 + .../ra/fsp/src/bsp/mcu/all/bsp_group_irq.h | 79 + .../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 | 112 + .../ra/fsp/src/bsp/mcu/all/bsp_irq.h | 219 + .../ra/fsp/src/bsp/mcu/all/bsp_mcu_api.h | 68 + .../ra/fsp/src/bsp/mcu/all/bsp_module_stop.h | 190 + .../src/bsp/mcu/all/bsp_register_protection.c | 125 + .../src/bsp/mcu/all/bsp_register_protection.h | 74 + .../fsp/src/bsp/mcu/all/bsp_rom_registers.c | 176 + .../ra/fsp/src/bsp/mcu/all/bsp_sbrk.c | 106 + .../ra/fsp/src/bsp/mcu/all/bsp_security.c | 336 + .../ra/fsp/src/bsp/mcu/all/bsp_security.h | 47 + .../ra/fsp/src/bsp/mcu/all/bsp_tfu.h | 228 + .../ra/fsp/src/bsp/mcu/ra6m3/bsp_elc.h | 410 + .../ra/fsp/src/bsp/mcu/ra6m3/bsp_feature.h | 340 + .../ra/fsp/src/bsp/mcu/ra6m3/bsp_mcu_info.h | 58 + .../ra/fsp/src/r_ioport/r_ioport.c | 878 + .../ra/fsp/src/r_sci_uart/r_sci_uart.c | 1846 + bsp/renesas/ra6m3-hmi-board/ra_cfg/SConscript | 19 + .../ra_cfg/fsp_cfg/bsp/board_cfg.h | 5 + .../ra_cfg/fsp_cfg/bsp/bsp_cfg.h | 52 + .../ra_cfg/fsp_cfg/bsp/bsp_mcu_device_cfg.h | 5 + .../fsp_cfg/bsp/bsp_mcu_device_pn_cfg.h | 10 + .../ra_cfg/fsp_cfg/bsp/bsp_mcu_family_cfg.h | 76 + .../ra_cfg/fsp_cfg/bsp/bsp_pin_cfg.h | 8 + .../ra_cfg/fsp_cfg/r_ioport_cfg.h | 5 + .../ra_cfg/fsp_cfg/r_sci_uart_cfg.h | 8 + bsp/renesas/ra6m3-hmi-board/ra_gen/SConscript | 19 + .../ra6m3-hmi-board/ra_gen/bsp_clock_cfg.h | 24 + .../ra6m3-hmi-board/ra_gen/common_data.c | 11 + .../ra6m3-hmi-board/ra_gen/common_data.h | 16 + bsp/renesas/ra6m3-hmi-board/ra_gen/hal_data.c | 83 + bsp/renesas/ra6m3-hmi-board/ra_gen/hal_data.h | 24 + bsp/renesas/ra6m3-hmi-board/ra_gen/main.c | 6 + bsp/renesas/ra6m3-hmi-board/ra_gen/pin_data.c | 63 + .../ra6m3-hmi-board/ra_gen/vector_data.c | 19 + .../ra6m3-hmi-board/ra_gen/vector_data.h | 23 + bsp/renesas/ra6m3-hmi-board/rasc_version.txt | 3 + bsp/renesas/ra6m3-hmi-board/rtconfig.h | 222 + bsp/renesas/ra6m3-hmi-board/rtconfig.py | 102 + .../ra6m3-hmi-board/script/ac6/fsp_keep.via | 33 + bsp/renesas/ra6m3-hmi-board/script/fsp.ld | 649 + bsp/renesas/ra6m3-hmi-board/script/fsp.scat | 670 + .../ra6m3-hmi-board/script/memory_regions.ld | 22 + .../script/memory_regions.scat | 22 + bsp/renesas/ra6m3-hmi-board/src/hal_entry.c | 28 + .../ra6m3-hmi-board/template.uvguix.RTT | 1860 + bsp/renesas/ra6m3-hmi-board/template.uvoptx | 218 + bsp/renesas/ra6m3-hmi-board/template.uvprojx | 422 + 167 files changed, 121255 insertions(+) create mode 100644 bsp/renesas/ra6m3-hmi-board/.config create mode 100644 bsp/renesas/ra6m3-hmi-board/.cproject create mode 100644 bsp/renesas/ra6m3-hmi-board/.gitignore create mode 100644 bsp/renesas/ra6m3-hmi-board/.ignore_format.yml create mode 100644 bsp/renesas/ra6m3-hmi-board/.project create mode 100644 bsp/renesas/ra6m3-hmi-board/.settings/.rtmenus create mode 100644 bsp/renesas/ra6m3-hmi-board/.settings/language.settings.xml create mode 100644 bsp/renesas/ra6m3-hmi-board/.settings/org.eclipse.core.runtime.prefs create mode 100644 bsp/renesas/ra6m3-hmi-board/.settings/projcfg.ini create mode 100644 bsp/renesas/ra6m3-hmi-board/.settings/ra6m3-temp.JLink.Debug.rttlaunch create mode 100644 bsp/renesas/ra6m3-hmi-board/.settings/standalone.prefs create mode 100644 bsp/renesas/ra6m3-hmi-board/EventRecorderStub.scvd create mode 100644 bsp/renesas/ra6m3-hmi-board/JLinkLog.txt create mode 100644 bsp/renesas/ra6m3-hmi-board/JLinkSettings.ini create mode 100644 bsp/renesas/ra6m3-hmi-board/Kconfig create mode 100644 bsp/renesas/ra6m3-hmi-board/R7FA6M3AH3CFC.pincfg create mode 100644 bsp/renesas/ra6m3-hmi-board/README.md create mode 100644 bsp/renesas/ra6m3-hmi-board/SConscript create mode 100644 bsp/renesas/ra6m3-hmi-board/SConstruct create mode 100644 bsp/renesas/ra6m3-hmi-board/board/Kconfig create mode 100644 bsp/renesas/ra6m3-hmi-board/board/SConscript create mode 100644 bsp/renesas/ra6m3-hmi-board/board/board.h create mode 100644 bsp/renesas/ra6m3-hmi-board/board/lvgl/SConscript create mode 100644 bsp/renesas/ra6m3-hmi-board/board/lvgl/demo/SConscript create mode 100644 bsp/renesas/ra6m3-hmi-board/board/lvgl/demo/lv_demo.c create mode 100644 bsp/renesas/ra6m3-hmi-board/board/lvgl/lv_conf.h create mode 100644 bsp/renesas/ra6m3-hmi-board/board/lvgl/lv_port_disp.c create mode 100644 bsp/renesas/ra6m3-hmi-board/board/lvgl/lv_port_indev.c create mode 100644 bsp/renesas/ra6m3-hmi-board/board/ports/SConscript create mode 100644 bsp/renesas/ra6m3-hmi-board/board/ports/gpio_cfg.h create mode 100644 bsp/renesas/ra6m3-hmi-board/board/ports/lcd_port.h create mode 100644 bsp/renesas/ra6m3-hmi-board/buildinfo.gpdsc create mode 100644 bsp/renesas/ra6m3-hmi-board/configuration.xml create mode 100644 bsp/renesas/ra6m3-hmi-board/docs/lvgl使用文档.md create mode 100644 bsp/renesas/ra6m3-hmi-board/docs/picture/lvgl/00.png create mode 100644 bsp/renesas/ra6m3-hmi-board/docs/picture/lvgl/01.png create mode 100644 bsp/renesas/ra6m3-hmi-board/docs/picture/lvgl/02.png create mode 100644 bsp/renesas/ra6m3-hmi-board/docs/picture/lvgl/03.png create mode 100644 bsp/renesas/ra6m3-hmi-board/docs/picture/lvgl/04.png create mode 100644 bsp/renesas/ra6m3-hmi-board/docs/picture/lvgl/05.png create mode 100644 bsp/renesas/ra6m3-hmi-board/docs/picture/lvgl/06.png create mode 100644 bsp/renesas/ra6m3-hmi-board/docs/picture/lvgl/07.png create mode 100644 bsp/renesas/ra6m3-hmi-board/docs/picture/lvgl/08.png create mode 100644 bsp/renesas/ra6m3-hmi-board/docs/picture/lvgl/09.png create mode 100644 bsp/renesas/ra6m3-hmi-board/docs/picture/lvgl/10.png create mode 100644 bsp/renesas/ra6m3-hmi-board/docs/picture/lvgl/11.png create mode 100644 bsp/renesas/ra6m3-hmi-board/docs/picture/lvgl/12.png create mode 100644 bsp/renesas/ra6m3-hmi-board/docs/picture/lvgl/13.png create mode 100644 bsp/renesas/ra6m3-hmi-board/docs/picture/lvgl/14.png create mode 100644 bsp/renesas/ra6m3-hmi-board/docs/picture/lvgl/15.png create mode 100644 bsp/renesas/ra6m3-hmi-board/docs/picture/lvgl/16.png create mode 100644 bsp/renesas/ra6m3-hmi-board/docs/picture/lvgl/tft-pin.png create mode 100644 bsp/renesas/ra6m3-hmi-board/project.uvguix.RTT create mode 100644 bsp/renesas/ra6m3-hmi-board/project.uvoptx create mode 100644 bsp/renesas/ra6m3-hmi-board/project.uvprojx create mode 100644 bsp/renesas/ra6m3-hmi-board/ra/SConscript create mode 100644 bsp/renesas/ra6m3-hmi-board/ra/arm/CMSIS_5/CMSIS/Core/Include/cachel1_armv7.h create mode 100644 bsp/renesas/ra6m3-hmi-board/ra/arm/CMSIS_5/CMSIS/Core/Include/cmsis_armcc.h create mode 100644 bsp/renesas/ra6m3-hmi-board/ra/arm/CMSIS_5/CMSIS/Core/Include/cmsis_armclang.h create mode 100644 bsp/renesas/ra6m3-hmi-board/ra/arm/CMSIS_5/CMSIS/Core/Include/cmsis_armclang_ltm.h create mode 100644 bsp/renesas/ra6m3-hmi-board/ra/arm/CMSIS_5/CMSIS/Core/Include/cmsis_compiler.h create mode 100644 bsp/renesas/ra6m3-hmi-board/ra/arm/CMSIS_5/CMSIS/Core/Include/cmsis_gcc.h create mode 100644 bsp/renesas/ra6m3-hmi-board/ra/arm/CMSIS_5/CMSIS/Core/Include/cmsis_iccarm.h create mode 100644 bsp/renesas/ra6m3-hmi-board/ra/arm/CMSIS_5/CMSIS/Core/Include/cmsis_version.h create mode 100644 bsp/renesas/ra6m3-hmi-board/ra/arm/CMSIS_5/CMSIS/Core/Include/core_armv81mml.h create mode 100644 bsp/renesas/ra6m3-hmi-board/ra/arm/CMSIS_5/CMSIS/Core/Include/core_armv8mbl.h create mode 100644 bsp/renesas/ra6m3-hmi-board/ra/arm/CMSIS_5/CMSIS/Core/Include/core_armv8mml.h create mode 100644 bsp/renesas/ra6m3-hmi-board/ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm0.h create mode 100644 bsp/renesas/ra6m3-hmi-board/ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm0plus.h create mode 100644 bsp/renesas/ra6m3-hmi-board/ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm1.h create mode 100644 bsp/renesas/ra6m3-hmi-board/ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm23.h create mode 100644 bsp/renesas/ra6m3-hmi-board/ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm3.h create mode 100644 bsp/renesas/ra6m3-hmi-board/ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm33.h create mode 100644 bsp/renesas/ra6m3-hmi-board/ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm35p.h create mode 100644 bsp/renesas/ra6m3-hmi-board/ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm4.h create mode 100644 bsp/renesas/ra6m3-hmi-board/ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm55.h create mode 100644 bsp/renesas/ra6m3-hmi-board/ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm7.h create mode 100644 bsp/renesas/ra6m3-hmi-board/ra/arm/CMSIS_5/CMSIS/Core/Include/core_sc000.h create mode 100644 bsp/renesas/ra6m3-hmi-board/ra/arm/CMSIS_5/CMSIS/Core/Include/core_sc300.h create mode 100644 bsp/renesas/ra6m3-hmi-board/ra/arm/CMSIS_5/CMSIS/Core/Include/mpu_armv7.h create mode 100644 bsp/renesas/ra6m3-hmi-board/ra/arm/CMSIS_5/CMSIS/Core/Include/mpu_armv8.h create mode 100644 bsp/renesas/ra6m3-hmi-board/ra/arm/CMSIS_5/CMSIS/Core/Include/pmu_armv8.h create mode 100644 bsp/renesas/ra6m3-hmi-board/ra/arm/CMSIS_5/CMSIS/Core/Include/tz_context.h create mode 100644 bsp/renesas/ra6m3-hmi-board/ra/arm/CMSIS_5/LICENSE.txt create mode 100644 bsp/renesas/ra6m3-hmi-board/ra/board/ra6m3/board.h create mode 100644 bsp/renesas/ra6m3-hmi-board/ra/board/ra6m3/board_ethernet_phy.h create mode 100644 bsp/renesas/ra6m3-hmi-board/ra/board/ra6m3/board_init.c create mode 100644 bsp/renesas/ra6m3-hmi-board/ra/board/ra6m3/board_init.h create mode 100644 bsp/renesas/ra6m3-hmi-board/ra/board/ra6m3/board_leds.c create mode 100644 bsp/renesas/ra6m3-hmi-board/ra/board/ra6m3/board_leds.h create mode 100644 bsp/renesas/ra6m3-hmi-board/ra/fsp/inc/api/bsp_api.h create mode 100644 bsp/renesas/ra6m3-hmi-board/ra/fsp/inc/api/r_ioport_api.h create mode 100644 bsp/renesas/ra6m3-hmi-board/ra/fsp/inc/api/r_transfer_api.h create mode 100644 bsp/renesas/ra6m3-hmi-board/ra/fsp/inc/api/r_uart_api.h create mode 100644 bsp/renesas/ra6m3-hmi-board/ra/fsp/inc/fsp_common_api.h create mode 100644 bsp/renesas/ra6m3-hmi-board/ra/fsp/inc/fsp_features.h create mode 100644 bsp/renesas/ra6m3-hmi-board/ra/fsp/inc/fsp_version.h create mode 100644 bsp/renesas/ra6m3-hmi-board/ra/fsp/inc/instances/r_glcdc.h create mode 100644 bsp/renesas/ra6m3-hmi-board/ra/fsp/inc/instances/r_ioport.h create mode 100644 bsp/renesas/ra6m3-hmi-board/ra/fsp/inc/instances/r_sci_uart.h create mode 100644 bsp/renesas/ra6m3-hmi-board/ra/fsp/src/bsp/cmsis/Device/RENESAS/Include/base_addresses.h create mode 100644 bsp/renesas/ra6m3-hmi-board/ra/fsp/src/bsp/cmsis/Device/RENESAS/Include/renesas.h create mode 100644 bsp/renesas/ra6m3-hmi-board/ra/fsp/src/bsp/cmsis/Device/RENESAS/Include/system.h create mode 100644 bsp/renesas/ra6m3-hmi-board/ra/fsp/src/bsp/cmsis/Device/RENESAS/Source/startup.c create mode 100644 bsp/renesas/ra6m3-hmi-board/ra/fsp/src/bsp/cmsis/Device/RENESAS/Source/system.c create mode 100644 bsp/renesas/ra6m3-hmi-board/ra/fsp/src/bsp/mcu/all/bsp_arm_exceptions.h create mode 100644 bsp/renesas/ra6m3-hmi-board/ra/fsp/src/bsp/mcu/all/bsp_clocks.c create mode 100644 bsp/renesas/ra6m3-hmi-board/ra/fsp/src/bsp/mcu/all/bsp_clocks.h create mode 100644 bsp/renesas/ra6m3-hmi-board/ra/fsp/src/bsp/mcu/all/bsp_common.c create mode 100644 bsp/renesas/ra6m3-hmi-board/ra/fsp/src/bsp/mcu/all/bsp_common.h create mode 100644 bsp/renesas/ra6m3-hmi-board/ra/fsp/src/bsp/mcu/all/bsp_compiler_support.h create mode 100644 bsp/renesas/ra6m3-hmi-board/ra/fsp/src/bsp/mcu/all/bsp_delay.c create mode 100644 bsp/renesas/ra6m3-hmi-board/ra/fsp/src/bsp/mcu/all/bsp_delay.h create mode 100644 bsp/renesas/ra6m3-hmi-board/ra/fsp/src/bsp/mcu/all/bsp_group_irq.c create mode 100644 bsp/renesas/ra6m3-hmi-board/ra/fsp/src/bsp/mcu/all/bsp_group_irq.h create mode 100644 bsp/renesas/ra6m3-hmi-board/ra/fsp/src/bsp/mcu/all/bsp_guard.c create mode 100644 bsp/renesas/ra6m3-hmi-board/ra/fsp/src/bsp/mcu/all/bsp_guard.h create mode 100644 bsp/renesas/ra6m3-hmi-board/ra/fsp/src/bsp/mcu/all/bsp_io.c create mode 100644 bsp/renesas/ra6m3-hmi-board/ra/fsp/src/bsp/mcu/all/bsp_io.h create mode 100644 bsp/renesas/ra6m3-hmi-board/ra/fsp/src/bsp/mcu/all/bsp_irq.c create mode 100644 bsp/renesas/ra6m3-hmi-board/ra/fsp/src/bsp/mcu/all/bsp_irq.h create mode 100644 bsp/renesas/ra6m3-hmi-board/ra/fsp/src/bsp/mcu/all/bsp_mcu_api.h create mode 100644 bsp/renesas/ra6m3-hmi-board/ra/fsp/src/bsp/mcu/all/bsp_module_stop.h create mode 100644 bsp/renesas/ra6m3-hmi-board/ra/fsp/src/bsp/mcu/all/bsp_register_protection.c create mode 100644 bsp/renesas/ra6m3-hmi-board/ra/fsp/src/bsp/mcu/all/bsp_register_protection.h create mode 100644 bsp/renesas/ra6m3-hmi-board/ra/fsp/src/bsp/mcu/all/bsp_rom_registers.c create mode 100644 bsp/renesas/ra6m3-hmi-board/ra/fsp/src/bsp/mcu/all/bsp_sbrk.c create mode 100644 bsp/renesas/ra6m3-hmi-board/ra/fsp/src/bsp/mcu/all/bsp_security.c create mode 100644 bsp/renesas/ra6m3-hmi-board/ra/fsp/src/bsp/mcu/all/bsp_security.h create mode 100644 bsp/renesas/ra6m3-hmi-board/ra/fsp/src/bsp/mcu/all/bsp_tfu.h create mode 100644 bsp/renesas/ra6m3-hmi-board/ra/fsp/src/bsp/mcu/ra6m3/bsp_elc.h create mode 100644 bsp/renesas/ra6m3-hmi-board/ra/fsp/src/bsp/mcu/ra6m3/bsp_feature.h create mode 100644 bsp/renesas/ra6m3-hmi-board/ra/fsp/src/bsp/mcu/ra6m3/bsp_mcu_info.h create mode 100644 bsp/renesas/ra6m3-hmi-board/ra/fsp/src/r_ioport/r_ioport.c create mode 100644 bsp/renesas/ra6m3-hmi-board/ra/fsp/src/r_sci_uart/r_sci_uart.c create mode 100644 bsp/renesas/ra6m3-hmi-board/ra_cfg/SConscript create mode 100644 bsp/renesas/ra6m3-hmi-board/ra_cfg/fsp_cfg/bsp/board_cfg.h create mode 100644 bsp/renesas/ra6m3-hmi-board/ra_cfg/fsp_cfg/bsp/bsp_cfg.h create mode 100644 bsp/renesas/ra6m3-hmi-board/ra_cfg/fsp_cfg/bsp/bsp_mcu_device_cfg.h create mode 100644 bsp/renesas/ra6m3-hmi-board/ra_cfg/fsp_cfg/bsp/bsp_mcu_device_pn_cfg.h create mode 100644 bsp/renesas/ra6m3-hmi-board/ra_cfg/fsp_cfg/bsp/bsp_mcu_family_cfg.h create mode 100644 bsp/renesas/ra6m3-hmi-board/ra_cfg/fsp_cfg/bsp/bsp_pin_cfg.h create mode 100644 bsp/renesas/ra6m3-hmi-board/ra_cfg/fsp_cfg/r_ioport_cfg.h create mode 100644 bsp/renesas/ra6m3-hmi-board/ra_cfg/fsp_cfg/r_sci_uart_cfg.h create mode 100644 bsp/renesas/ra6m3-hmi-board/ra_gen/SConscript create mode 100644 bsp/renesas/ra6m3-hmi-board/ra_gen/bsp_clock_cfg.h create mode 100644 bsp/renesas/ra6m3-hmi-board/ra_gen/common_data.c create mode 100644 bsp/renesas/ra6m3-hmi-board/ra_gen/common_data.h create mode 100644 bsp/renesas/ra6m3-hmi-board/ra_gen/hal_data.c create mode 100644 bsp/renesas/ra6m3-hmi-board/ra_gen/hal_data.h create mode 100644 bsp/renesas/ra6m3-hmi-board/ra_gen/main.c create mode 100644 bsp/renesas/ra6m3-hmi-board/ra_gen/pin_data.c create mode 100644 bsp/renesas/ra6m3-hmi-board/ra_gen/vector_data.c create mode 100644 bsp/renesas/ra6m3-hmi-board/ra_gen/vector_data.h create mode 100644 bsp/renesas/ra6m3-hmi-board/rasc_version.txt create mode 100644 bsp/renesas/ra6m3-hmi-board/rtconfig.h create mode 100644 bsp/renesas/ra6m3-hmi-board/rtconfig.py create mode 100644 bsp/renesas/ra6m3-hmi-board/script/ac6/fsp_keep.via create mode 100644 bsp/renesas/ra6m3-hmi-board/script/fsp.ld create mode 100644 bsp/renesas/ra6m3-hmi-board/script/fsp.scat create mode 100644 bsp/renesas/ra6m3-hmi-board/script/memory_regions.ld create mode 100644 bsp/renesas/ra6m3-hmi-board/script/memory_regions.scat create mode 100644 bsp/renesas/ra6m3-hmi-board/src/hal_entry.c create mode 100644 bsp/renesas/ra6m3-hmi-board/template.uvguix.RTT create mode 100644 bsp/renesas/ra6m3-hmi-board/template.uvoptx create mode 100644 bsp/renesas/ra6m3-hmi-board/template.uvprojx diff --git a/.github/workflows/action.yml b/.github/workflows/action.yml index 16bb754f74..42a7546fde 100644 --- a/.github/workflows/action.yml +++ b/.github/workflows/action.yml @@ -183,6 +183,7 @@ jobs: - "xplorer4330/M4" - "renesas/ra6m3-ek" - "renesas/ra6m4-cpk" + - "renesas/ra6m3-hmi-board" - RTT_BSP: "gd32_n32_apm32" RTT_TOOL_CHAIN: "sourcery-arm" SUB_RTT_BSP: diff --git a/bsp/renesas/ra6m3-hmi-board/.config b/bsp/renesas/ra6m3-hmi-board/.config new file mode 100644 index 0000000000..5f224c991f --- /dev/null +++ b/bsp/renesas/ra6m3-hmi-board/.config @@ -0,0 +1,756 @@ +# +# Automatically generated file; DO NOT EDIT. +# RT-Thread Configuration +# + +# +# RT-Thread Kernel +# +CONFIG_RT_NAME_MAX=8 +# CONFIG_RT_USING_ARCH_DATA_TYPE is not set +# CONFIG_RT_USING_SMART is not set +# CONFIG_RT_USING_SMP is not set +CONFIG_RT_ALIGN_SIZE=8 +# CONFIG_RT_THREAD_PRIORITY_8 is not set +CONFIG_RT_THREAD_PRIORITY_32=y +# CONFIG_RT_THREAD_PRIORITY_256 is not set +CONFIG_RT_THREAD_PRIORITY_MAX=32 +CONFIG_RT_TICK_PER_SECOND=1000 +CONFIG_RT_USING_OVERFLOW_CHECK=y +CONFIG_RT_USING_HOOK=y +CONFIG_RT_HOOK_USING_FUNC_PTR=y +CONFIG_RT_USING_IDLE_HOOK=y +CONFIG_RT_IDLE_HOOK_LIST_SIZE=4 +CONFIG_IDLE_THREAD_STACK_SIZE=256 +CONFIG_RT_USING_TIMER_SOFT=y +CONFIG_RT_TIMER_THREAD_PRIO=4 +CONFIG_RT_TIMER_THREAD_STACK_SIZE=512 + +# +# kservice optimization +# +# CONFIG_RT_KSERVICE_USING_STDLIB is not set +# CONFIG_RT_KSERVICE_USING_TINY_SIZE is not set +# CONFIG_RT_USING_TINY_FFS is not set +# CONFIG_RT_KPRINTF_USING_LONGLONG is not set +CONFIG_RT_DEBUG=y +CONFIG_RT_DEBUG_COLOR=y +# CONFIG_RT_DEBUG_INIT_CONFIG is not set +# CONFIG_RT_DEBUG_THREAD_CONFIG is not set +# CONFIG_RT_DEBUG_SCHEDULER_CONFIG is not set +# CONFIG_RT_DEBUG_IPC_CONFIG is not set +# CONFIG_RT_DEBUG_TIMER_CONFIG is not set +# CONFIG_RT_DEBUG_IRQ_CONFIG is not set +# CONFIG_RT_DEBUG_MEM_CONFIG is not set +# CONFIG_RT_DEBUG_SLAB_CONFIG is not set +# CONFIG_RT_DEBUG_MEMHEAP_CONFIG is not set +# CONFIG_RT_DEBUG_MODULE_CONFIG 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_SIGNALS is not set + +# +# Memory Management +# +CONFIG_RT_PAGE_MAX_ORDER=11 +# CONFIG_RT_USING_MEMPOOL is not set +CONFIG_RT_USING_SMALL_MEM=y +# CONFIG_RT_USING_SLAB is not set +# CONFIG_RT_USING_MEMHEAP is not set +CONFIG_RT_USING_SMALL_MEM_AS_HEAP=y +# CONFIG_RT_USING_MEMHEAP_AS_HEAP is not set +# CONFIG_RT_USING_SLAB_AS_HEAP is not set +# CONFIG_RT_USING_USERHEAP is not set +# CONFIG_RT_USING_NOHEAP is not set +# CONFIG_RT_USING_MEMTRACE is not set +# CONFIG_RT_USING_HEAP_ISR is not set +CONFIG_RT_USING_HEAP=y + +# +# Kernel Device Object +# +CONFIG_RT_USING_DEVICE=y +# CONFIG_RT_USING_DEVICE_OPS is not set +# CONFIG_RT_USING_DM is not set +# CONFIG_RT_USING_INTERRUPT_INFO is not set +CONFIG_RT_USING_CONSOLE=y +CONFIG_RT_CONSOLEBUF_SIZE=128 +CONFIG_RT_CONSOLE_DEVICE_NAME="uart9" +CONFIG_RT_VER_NUM=0x50001 +# CONFIG_RT_USING_STDC_ATOMIC is not set +# CONFIG_RT_USING_CACHE is not set +CONFIG_RT_USING_HW_ATOMIC=y +# CONFIG_ARCH_ARM_BOOTWITH_FLUSH_CACHE is not set +# CONFIG_ARCH_CPU_STACK_GROWS_UPWARD is not set +CONFIG_RT_USING_CPU_FFS=y +CONFIG_ARCH_ARM=y +CONFIG_ARCH_ARM_CORTEX_M=y +CONFIG_ARCH_ARM_CORTEX_M4=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 + +# +# DFS: device virtual file system +# +# CONFIG_RT_USING_DFS is not set +# CONFIG_RT_USING_FAL is not set + +# +# Device Drivers +# +CONFIG_RT_USING_DEVICE_IPC=y +CONFIG_RT_UNAMED_PIPE_NUMBER=64 +# CONFIG_RT_USING_SYSTEM_WORKQUEUE is not set +CONFIG_RT_USING_SERIAL=y +# CONFIG_RT_USING_SERIAL_V1 is not set +CONFIG_RT_USING_SERIAL_V2=y +CONFIG_RT_SERIAL_USING_DMA=y +# CONFIG_RT_USING_CAN is not set +# CONFIG_RT_USING_HWTIMER is not set +# CONFIG_RT_USING_CPUTIME is not set +# CONFIG_RT_USING_I2C is not set +# CONFIG_RT_USING_PHY is not set +CONFIG_RT_USING_PIN=y +# CONFIG_RT_USING_ADC is not set +# CONFIG_RT_USING_DAC is not set +# CONFIG_RT_USING_NULL is not set +# CONFIG_RT_USING_ZERO is not set +# CONFIG_RT_USING_RANDOM is not set +# CONFIG_RT_USING_PWM is not set +# CONFIG_RT_USING_MTD_NOR is not set +# CONFIG_RT_USING_MTD_NAND is not set +# CONFIG_RT_USING_PM is not set +# CONFIG_RT_USING_FDT is not set +# CONFIG_RT_USING_RTC is not set +# CONFIG_RT_USING_SDIO is not set +# CONFIG_RT_USING_SPI is not set +# CONFIG_RT_USING_WDT is not set +# CONFIG_RT_USING_AUDIO is not set +# CONFIG_RT_USING_SENSOR is not set +# CONFIG_RT_USING_TOUCH is not set +# CONFIG_RT_USING_LCD is not set +# CONFIG_RT_USING_HWCRYPTO is not set +# CONFIG_RT_USING_PULSE_ENCODER is not set +# CONFIG_RT_USING_INPUT_CAPTURE is not set +# CONFIG_RT_USING_DEV_BUS is not set +# CONFIG_RT_USING_WIFI is not set +# CONFIG_RT_USING_VIRTIO is not set + +# +# 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 +# +CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8 + +# +# POSIX (Portable Operating System Interface) layer +# +# CONFIG_RT_USING_POSIX_FS is not set +# CONFIG_RT_USING_POSIX_DELAY is not set +# CONFIG_RT_USING_POSIX_CLOCK is not set +# CONFIG_RT_USING_POSIX_TIMER is not set +# CONFIG_RT_USING_PTHREADS is not set +# CONFIG_RT_USING_MODULE is not set + +# +# Interprocess Communication (IPC) +# +# CONFIG_RT_USING_POSIX_PIPE is not set +# CONFIG_RT_USING_POSIX_MESSAGE_QUEUE is not set +# CONFIG_RT_USING_POSIX_MESSAGE_SEMAPHORE is not set + +# +# Socket is in the 'Network' category +# +# CONFIG_RT_USING_CPLUSPLUS is not set + +# +# Network +# +# CONFIG_RT_USING_SAL is not set +# CONFIG_RT_USING_NETDEV is not set +# CONFIG_RT_USING_LWIP is not set +# CONFIG_RT_USING_AT is not set + +# +# Utilities +# +# CONFIG_RT_USING_RYM is not set +# CONFIG_RT_USING_ULOG is not set +# CONFIG_RT_USING_UTEST is not set +# CONFIG_RT_USING_VAR_EXPORT is not set +# CONFIG_RT_USING_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_LIBMODBUS 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 +# CONFIG_PKG_USING_COAP is not set +# CONFIG_PKG_USING_NOPOLL is not set +# CONFIG_PKG_USING_NETUTILS is not set +# CONFIG_PKG_USING_CMUX is not set +# CONFIG_PKG_USING_PPP_DEVICE is not set +# CONFIG_PKG_USING_AT_DEVICE is not set +# CONFIG_PKG_USING_ATSRV_SOCKET is not set +# CONFIG_PKG_USING_WIZNET is not set +# CONFIG_PKG_USING_ZB_COORDINATOR is not set + +# +# IoT Cloud +# +# CONFIG_PKG_USING_ONENET is not set +# CONFIG_PKG_USING_GAGENT_CLOUD is not set +# CONFIG_PKG_USING_ALI_IOTKIT is not set +# CONFIG_PKG_USING_AZURE is not set +# CONFIG_PKG_USING_TENCENT_IOT_EXPLORER is not set +# CONFIG_PKG_USING_JIOT-C-SDK is not set +# CONFIG_PKG_USING_UCLOUD_IOT_SDK is not set +# CONFIG_PKG_USING_JOYLINK is not set +# CONFIG_PKG_USING_EZ_IOT_OS is not set +# CONFIG_PKG_USING_IOTSHARP_SDK is not set +# CONFIG_PKG_USING_NIMBLE is not set +# CONFIG_PKG_USING_LLSYNC_SDK_ADAPTER is not set +# CONFIG_PKG_USING_OTA_DOWNLOADER is not set +# CONFIG_PKG_USING_IPMSG is not set +# CONFIG_PKG_USING_LSSDP is not set +# CONFIG_PKG_USING_AIRKISS_OPEN is not set +# CONFIG_PKG_USING_LIBRWS is not set +# CONFIG_PKG_USING_TCPSERVER is not set +# CONFIG_PKG_USING_PROTOBUF_C is not set +# CONFIG_PKG_USING_DLT645 is not set +# CONFIG_PKG_USING_QXWZ is not set +# CONFIG_PKG_USING_SMTP_CLIENT is not set +# CONFIG_PKG_USING_ABUP_FOTA is not set +# CONFIG_PKG_USING_LIBCURL2RTT is not set +# CONFIG_PKG_USING_CAPNP is not set +# CONFIG_PKG_USING_AGILE_TELNET is not set +# CONFIG_PKG_USING_NMEALIB is not set +# CONFIG_PKG_USING_PDULIB is not set +# CONFIG_PKG_USING_BTSTACK is not set +# CONFIG_PKG_USING_LORAWAN_ED_STACK is not set +# CONFIG_PKG_USING_WAYZ_IOTKIT is not set +# CONFIG_PKG_USING_MAVLINK is not set +# CONFIG_PKG_USING_BSAL is not set +# CONFIG_PKG_USING_AGILE_MODBUS is not set +# CONFIG_PKG_USING_AGILE_FTP is not set +# CONFIG_PKG_USING_EMBEDDEDPROTO is not set +# CONFIG_PKG_USING_RT_LINK_HW is not set +# CONFIG_PKG_USING_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 + +# +# 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_LITTLEVGL2RTT 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 + +# +# PainterEngine: A cross-platform graphics application framework written in C language +# +# CONFIG_PKG_USING_PAINTERENGINE is not set +# CONFIG_PKG_USING_PAINTERENGINE_AUX 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_PERSIMMON 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_RDB is not set +# CONFIG_PKG_USING_ULOG_EASYFLASH is not set +# CONFIG_PKG_USING_ULOG_FILE 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_FIRE_PID_CURVE is not set +# CONFIG_PKG_USING_ARMV7M_DWT_TOOL is not set +# CONFIG_PKG_USING_VOFA_PLUS 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_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_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 + +# +# peripheral libraries and drivers +# +# CONFIG_PKG_USING_SENSORS_DRIVERS is not set +# CONFIG_PKG_USING_REALTEK_AMEBA is not set +# CONFIG_PKG_USING_SHT2X is not set +# CONFIG_PKG_USING_SHT3X is not set +# CONFIG_PKG_USING_ADT74XX is not set +# CONFIG_PKG_USING_AS7341 is not set +# CONFIG_PKG_USING_STM32_SDIO is not set +# CONFIG_PKG_USING_ESP_IDF is not set +# CONFIG_PKG_USING_ICM20608 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 +# CONFIG_PKG_USING_WM_LIBRARIES 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_ILI9341 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_AD7746 is not set +# CONFIG_PKG_USING_PCA9685 is not set +# CONFIG_PKG_USING_I2C_TOOLS is not set +# CONFIG_PKG_USING_NRF24L01 is not set +# CONFIG_PKG_USING_TOUCH_DRIVERS is not set +# CONFIG_PKG_USING_MAX17048 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_PAJ7620 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_BL_MCU_SDK is not set +# CONFIG_PKG_USING_SOFT_SERIAL is not set +# CONFIG_PKG_USING_MB85RS16 is not set +# CONFIG_PKG_USING_CW2015 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 + +# +# 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 + +# +# 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_LIBCSV is not set +# CONFIG_PKG_USING_OPTPARSE is not set +# CONFIG_PKG_USING_FASTLZ is not set +# CONFIG_PKG_USING_MINILZO is not set +# CONFIG_PKG_USING_QUICKLZ is not set +# CONFIG_PKG_USING_LZMA is not set +# CONFIG_PKG_USING_MULTIBUTTON is not set +# CONFIG_PKG_USING_FLEXIBLE_BUTTON is not set +# CONFIG_PKG_USING_CANFESTIVAL is not set +# CONFIG_PKG_USING_ZLIB is not set +# CONFIG_PKG_USING_MINIZIP is not set +# CONFIG_PKG_USING_HEATSHRINK is not set +# CONFIG_PKG_USING_DSTR is not set +# CONFIG_PKG_USING_TINYFRAME is not set +# CONFIG_PKG_USING_KENDRYTE_DEMO is not set +# CONFIG_PKG_USING_DIGITALCTRL 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_UKAL 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 + +# +# Arduino libraries +# +# CONFIG_PKG_USING_RTDUINO is not set + +# +# Sensor libraries +# +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SENSOR is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BUSIO is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_AHTX0 is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_BMP280 is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_LIS3DHTR is not set +# CONFIG_PKG_USING_ARDUINO_CAPACITIVESENSOR is not set + +# +# Display libraries +# +# CONFIG_PKG_USING_ARDUINO_U8G2 is not set + +# +# Timing libraries +# +# CONFIG_PKG_USING_ARDUINO_MSTIMER2 is not set + +# +# Project libraries +# +# CONFIG_PKG_USING_ARDUINO_ULTRASOUND_RADAR is not set +# CONFIG_PKG_USING_ARDUINO_SENSOR_KIT is not set +CONFIG_SOC_FAMILY_RENESAS=y +CONFIG_SOC_SERIES_R7FA6M3=y +# 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 + +# +# Hardware Drivers Config +# +CONFIG_SOC_R7FA6M4AF=y + +# +# Onboard Peripheral Drivers +# + +# +# On-chip Peripheral Drivers +# +CONFIG_BSP_USING_GPIO=y +# CONFIG_BSP_USING_ONCHIP_FLASH is not set +# CONFIG_BSP_USING_WDT is not set +# CONFIG_BSP_USING_ONCHIP_RTC is not set +CONFIG_BSP_USING_UART=y +# CONFIG_BSP_USING_UART4 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_SPI 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_LCD is not set +# CONFIG_BSP_USING_SPI_LCD is not set +# CONFIG_BSP_USING_G2D is not set +# CONFIG_BSP_USING_JPEG is not set +# CONFIG_BSP_USING_LVGL is not set + +# +# Board extended module Drivers +# diff --git a/bsp/renesas/ra6m3-hmi-board/.cproject b/bsp/renesas/ra6m3-hmi-board/.cproject new file mode 100644 index 0000000000..9e643ab073 --- /dev/null +++ b/bsp/renesas/ra6m3-hmi-board/.cproject @@ -0,0 +1,220 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/bsp/renesas/ra6m3-hmi-board/.gitignore b/bsp/renesas/ra6m3-hmi-board/.gitignore new file mode 100644 index 0000000000..9ac428c1b3 --- /dev/null +++ b/bsp/renesas/ra6m3-hmi-board/.gitignore @@ -0,0 +1,5 @@ +/RTE +/Listings +/Objects +ra_cfg.txt + diff --git a/bsp/renesas/ra6m3-hmi-board/.ignore_format.yml b/bsp/renesas/ra6m3-hmi-board/.ignore_format.yml new file mode 100644 index 0000000000..af51bf92aa --- /dev/null +++ b/bsp/renesas/ra6m3-hmi-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/ra6m3-hmi-board/.project b/bsp/renesas/ra6m3-hmi-board/.project new file mode 100644 index 0000000000..dbce321609 --- /dev/null +++ b/bsp/renesas/ra6m3-hmi-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/ra6m3-hmi-board/.settings/.rtmenus b/bsp/renesas/ra6m3-hmi-board/.settings/.rtmenus new file mode 100644 index 0000000000000000000000000000000000000000..bed57a56a0a5cc87f3e0f1b47d44308bcb5b7f5d GIT binary patch literal 1696400 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

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

#j|rodX+7$s$8>pomuLL{jk zIQm{y%MJ~mMnIYG@)?1!#rxNIc0BqKpM>)H=;#Z%Ysd4@d@m?TdyqP^?r@hAkd=Cm z^IdBE$*}b8h!~;eHW*HC`z=IyQf#zsELmSsX2}F?lun#tTS}`lcjpL4E)Fcmd|3I3Ro+HB^M% zt`6n~GH|P$oa__JDDQ~Kd9HVsv~jc3`05m=)hq`8*d!#G^yX?rV#mo41PdhTh+x%A z!R!JY1kIVaN~efauNtB~AlVMRi>cJ(nw;Bjk2~E8{13lo)O>t0dgYtSr*_E0H(hHd zeC8N57^$PhyXLp@!;49@iK-zdsUhE^Qt;G#b~D#>E$1^Y^(4;~hTCv2xZPH)&n8LW zs`20CiLscZajsZgOaZB^f|LNwIrq6;j+_%>%-^Gpi-p7@G#ZkbO^Dglhv*%YQn0io z;g!4ExU8cjIk~pBRP0^XYytYY#(z*gDgw(a7%43q(%Gyzyvivrp_YZ$ z?Pm-Sxg993NdFdoyLYXPLwGIx;az}N+}Fd$i3f5oDVm3Uy}YO6^nY4cW0NK#ZCjPU zx<4!;H_CkLa=XU&ZNSCFudWkH#ef|WS2l2=`m7I{;eF6l1wgH}g9tfgON%QxT!hST zOrWr|{Q~y^mcKR^%|F(g@frlM-2}XkuYo+NHlzP`6bg^5Ri<`A zuB9dlzGEb@muGGnfB+i133SRKhC511%EBp;0AG8~si$I2;Xqzk>jl*RCE~(io0)ue z&0YFG(#*%~H%?v5M(K6}bhi3soh^Jw=q&-5ZyS&z29Ap4cs&AMf;%|;>fH81mp>sH*IgQkz=W$D- zC_J@Huq)L)4zA$)5das}gzNGxSOlouV;)Bx-|NjpetQRMItf8PR80-;`qa%^C&Lio z2p0GY^0OITuO|!uJ4E0WGut=uTwkRbe;0=9JU*}mW9?={`uMVoxWG*AjHEJ!tU!u zROG94@7lKd)^Ox6!f-YDfrUGF-g7JsMg@Ax%wNWEM-*u`Ub)}8XVjkj-a?F7MF-2t zVzMFIf0TW!T?wy3sK$F&5ec&>q*&^xaj&tVYmwtu?jT?>SA4B^F>bH!mviuM3l!*b zNB~0zgAnTh%ImcLue@uT!2-N;n@exm1(!+bnc2$^rI39>@ZAAQO{+27N_IKwDB89aEF$9PL?zjG|0>1%novF_jsyem;)cFHyKt zKj^YN195h!C?11R{$2K?@7Rto)sFGPi_e#L7&q%iYI_vCDKkq)wd&sU572$onY8B? zj+NZ6OLBMYNg8r>#wXO>N@=yhl2tAh7|UB*wr#MQH(497wT9!B0{LgCHXGZMTNBZ@ zFqwP!c4NMoEV*bK_Z&wDGsP%$D!DgzeduE%G%7S18u*bn`_l9zoGk*mRpis_eg4FA z!dF|W)z|#1quY)6#a$$v5_(HQ#6(KK8PTm5VgeRkWVbVz*l|Ji45JBGJz&v~7<*=g z?%(grrm>6ykE=lLIdg`^>+;YWFS@=oNk8Fl`#O^%U2>0}l?!Psg-eAxf8on0V09rI zi{e;m?*ZsBkTb>u={C*|cZHKenN+Ha#+X~x9c;;)vL8f6t5P>RVkP|5zejH8QDdC%r`4oQTrCZ*CfmV$R>2fH!yW?FSSeOUy zRAGIFw}*?T%jsaKJImcqH;|@|@Z0p2^Jk+du6no6%UQ*%|ja7(yK@)f{ZEJuHVSFJ^ny$hY6$76JLhY<* zz;1$#accNRAE*W;HRjl_uv(EwTYSl9q4fTAtk({4-1CAHy5(#kk_KT5671r@%6TDI zI`nLoKrEH3%~__j0FP06#~HFwU2A`uE6UsjYo@(KH!IQZL<9ZXlwC4nFhFAemYyh> zQNx^EnV>Fg1^_>bxA$yCiSPS|O4mGvgywh6{H zE>G{;?0rA}XGzPi#Q?LQrXmPQYB{z(s9I$s`$n>ae5ypum`2{Lh^s*t2NW_X>RH_) z7XFfi@64-q9WOkMANsiuF|1A$NhU@(@tg{emGDFM1>Ica>)If9?iOilUgA)bv`J?m)Ds=2uS z3&8ycrOq0uq(wU2-v{lM7h>9l(t!vE3t4&xkz*z7v*q~?i@|Ar2AisBA;^R1OYh>S zLMyh`8&S1%UI2KEYV=s8#4}g<3;;~K&xTt_inOUHt&aMXU>S9K zrdb%4S_4{>NvFApoJG&tpBiIphuNeNXe)A)^|v!k^4cx4@H@cWm*A)lCmEG%!!x*< zR!$=z_sZCp5 zkO-36k;QGfj5Ds3!=4#u7-0w|vLNv3x~%wn=<^R@R!-1{SVe2KA)1P@^)gB!9Y8#P zJ}F%)NXiC4`ufAZH_cipY73;jYsz>+Jd}LFt3<5V4GAVA%_l~@Ipc2wJ0Ldn_}ZQ9 zq7^XcsQK4>L>R!kMGDmMGR`>Xp!F}e3j*o!CF0L5BZlmed6WOZL{Q=pCG^JJ6PIq&tg%sRD!=b(A zj-P*w6i}VoCF7>sG3yM5&bd1z2bEDYFTtonOLq9N2%c{V&iw(P5$kuK#_4INvf?v! zkokc4zWioyO-sZF)9`3~hr(Jc5H+ zpyD*m^KAoKMn)q6Yf}CO_FPQ~-Ri0RT+e9+g9~hkJ?rpsdARaEI0TLsF6QUOuh37h z%r{v@kGmmfYlT3_>R-x+*co+~f3v(VOz?Wz8Ln0eSD-&@8Ik|Sx+iWzzg>+x5h=-_uYGE#NA6bk+7W<5vbfR!Z!B(ViAM4!UdLT=iD2_ zS&)>rHK3WkDk{VBVqxa7x_7C~Lv%of54@XxK0CmWF@H@#oDRI^Iz^gCBgmaBJ4U&{ z?aTTrx*`9P)irndeTIJLw9Qv1>v>*5tcO^#zW3N+>m!y;p=uo)W<%yhWk2^A_l%! zVYY2W5jNx_d_)( zletHMG}WC3j63XJn@vruz%3jP!(Y8u1+d~MS!I>4f~05~0`K(pA_dDQMANwcg~Bhpspksk!^1H}VLV0Ph)A z&MVKh^8J9NP+gl6CP$U^*jtUh(j*^zEoyar&S5DuJ1` z9h8XTvXUV+Cmj&C$i`VBNhG{783)YK_yxJSZZ zmXY@2XhTyE17kRqzo2L%T~hj~lm^p{umyuA)U% zUKv)Hr@ws^bSkL$@KStwwkCNq^IthAV=Y&+m4(jxyFq}*19VJ9I2xbllnel3HESP? z%9f-uN!#D92Q47wk=#_*UQNCIEl_6aKu2r^WIZXz!nyhpMplt|779msu=O>&vC^L$ zVp_eDn0Nib8{6>^$`=&#)O3(Zgr-NtL{{nyL*xj}F$ zozjgJ34quFvB;j|n`yzQn>7BpIHJL#XMBH1_?nW|K?&a>vNITc(-XgA&Wn%H5qyYl z3E~DnqHWcx$uPJ5`|m4gQ7U@GB{r^nSrjq)-iDPsIsx zXphlwT~hsDRsPYIt!!Xk^aw>Q6=?{oqNa7)t|VYe#;V*ZWSsc3^dm?O<}KbsOOQb4|}IKHYqSGQNDTQdlu=ImuH# zk|ZA&c3v~0dUtbdf&T)&2GjF)%(RfZ`|%Byf#1bf%tBqzds(EWsw5;0eg(3|l?_ES zc=!V{MLg{5JbWL>j?I=3d906Rr;6vX3dz2k2k}yM*q9~lKRFFp7*UYjD#f4SS?%FR zbG@iQ^|dmb@7QPlRQARoMR{%Hf8PB0sKA>+Q>mOj*-j@9NsRnS;YV39<;A-NY7F4o z1{eL!|0gl-rWeVSE>=~%6Qqc2=d^x!*`n#kuMl1o6CYq%gJP5#mojsUQ}8=6NiINJTg@hqiIH1+ZXz)jMhLa~l(M(ZvOJnI2e(SeE_&Ii1g z(0QBN)90x=R>z8O-45JdH1i`xxfKmfCx3EgIc)J}?8@Ba_Vg8IfV)p)p!E`EnCy5x z8pAEvu3L*G<4%g5FsF(UgV>)-^fW8KL;F>?X^>0?%PAGy&J}ufoo>{1HBm_ET61aO zKhLmDE37&1Cba6c8e^ES<9CFrS*Wt@|Iq7R#sRxsg{Wo%ia@0J5y7%TiQERF7-oEW z;*B4m8#9O`+t+7k_h1f52XhnKOvu{06GC?IScFLfAsY0+9O}Td6}*>FExvnIZ>u2J zs!G#m^enw(StcRG=rDjODXUWd4E;uOlL)ke&H*x9Oi1f@U`cBmf#woG<0*_3^aZka zx`#U4GxkuWx1p&#*X2!tf(&Hf*T)Em>lT<1ho#>&85-)RV@qf4{5QquB9mpd_c9o+ z+nvPGjg6>v6-h^}UnIhhe_hYfq{?11Lx!GTixTXs)J?l-w2h&|oTPK>7g^rAcLKTe z!ab;8A$d`5^Wt{FhgOoa^BhK?sUv+;XnK(y8pkh3BjijfV*%7OJuzA!&$d`B&_t$^ zGCBL@3pwEo+Ix(Fh6!$5oM|etDxhzL_;AQtUwZMuvYxXPzO8X*yKmIE9Q2j6cOE7x zQr7X8S=2wb{E~{|sX}-=1c(s7HmN=Kv|38{pDb+XEX#ID*-9wAs}GyUZQO4D%I8U z=`0O%7B}4+dgW7rIC~G;xqF8PX#{Z{i5VuebghLUziV0v*2EKs@rV4&ZE(e!**Jn5 zd;TSEj6nq7IFB<4Gh5Lrl*V|&_v4s1vA-2mMRg1c1^MB+4ISK7i!2Ex%|UMbkZ?N~~nwtnsuS^$>h2_0ZgG55fqr*O8Cq zKTvZI%d=IAt%OK;t(>PX8Ef1JMJ1KQOK;{0k$fW@o$$6J$B>`w(=qqa0WZtgy8b)q zVVBUu{gF?_AChq9jO>0afZpSk$5j_WD~^x94QkGVm&(;Ntn&g zBBwTKXM^J0Xx}L}NhEMJUNMWEpxE~rmy2E<)CU@<1KO$;YGfb7v%Ng`r9(x1_)AV; zz{EJt#^_uiUa9L(<;wk$HZ0N(vAhqH)6}Ou z4U|Avx8Fc~Cg(05(}K9AVZ8PR6sLS2*N<-{`*+r%w>81pf-dZ&#U(oEt55sa2%*I` zYV6IP{z~2~+Wo6s>kDN*COsAz0nGgrO!NeM`s;PqJ&x89TBhE!EK0m9;nu+_JLg;T&@tS%YuZrO{YzsWO@<-dh&X4 zcx~H$C+e=qCRkb9MW>i$at3Z~I5^53v9#1yuk9Wc;gH-< z#jN+$eN)z}LQE2-`%wR=IIB*2RBNZ1e~f74&LLk_{Tizk(MKpV!Tik=(1CtDHFW8@ zrug&f2s7Ye$w46^Z4IEiU&^TmuI!3(7K^tzS)Yyp<&3Z%wl=AQfX9%B`S@sk0+Mq< zWNLU%mOv;-iY4~xSW&K7>!g&nFNW31m7ls4*)%b#Fdr>L3c{x1o#(d|Of<<0Y;^A#c-oi-&1K zsx0^gvGsv>t|0+Z2)?fqHumIb?iXkmLb!tV+fYmrsbkXfZv8w^oA5DytSC-}7On&` zz&a_v@%AC*A}ciI!_!qET#js3&|JJ7S_7qc$Gn6hOs7dUCtsh*_8UCK6Ip)xQwbb3 z=hFDws=C!gA1~jTs5yScS&5r-Gy2#CvLpn@2cquY^=7Y?BTyrZ%>%zf#`{k?`}(lMT? zwj9E%ZwOf-L;QL46;}c3rrbZ6el=fpAt{s;n~0g8aL9K_R<=tV1hh661%+e4tE=EO z`7AfLhTAa8k(qdpO}AA%6`7Ie1jQf~xQ>~VN?#t0iiJVP4lytciT!K4oFKT6zWP*lsV2**-B>Y#8K=?j@HuHct{qZs1&}i*;gfp@HCRQI#3yYp0Hhu* z#^*N~s6R$>arIe4Mp4K=u?&$jBs400oZvr^ZG}1bNS(K+K@1c2jkqg(Q!6qJi+89; zp65&9T0>S#x<@xq68y6flgioQA!CAp^?T9B*VnM=0?IiFm=3QQZ~9nsO`rjT{BIjR zb^dxq)ikgosEw_fj%5500duki@4d9FWp!&{7c8j7@NM43f!R7W-H|YGRGhE=-&41e z=~4Fp!5_)sFj`5_n;h0~F!tsmO?L0SKvm#RWw^wV*;L!>&V{r8A#OWDwKn8Gy{6sd zr)zelflF81M*<1lowo+AMJesyk=M_Lv|2l^)m6GIN7jxRNx zFzJ9P`%kciL$IPmVS2@_wSS*bthYbx9Qf+&OJXG+A@ntqWP5f(#YW()dzHQiLgn6} z;XIx~%}@Ov?fa#24}VY}v>!GW@mp9DzOwCh^{?g&KIuGd_MJb_=z>BOlW0(9&QAVT zB1Ss*FO^cgAo*%t<5!Z zmBB;oV@=XR7d>(4W}(rpS{Se1-yb|#J;dzcT(325`q__++R#I(;Wj4CxxFW@xq96@ z`h_RjIYVcwbX+M~*703h16Fh{q&<~9+@8IwXiVA)na=5~s4aBE| zPnDFZZzXhOn{I)eJFK1>;65j9yRV@o@5=G+;Z~hh0P-yk90jSpGBO0}V-R8g&rqX( zsbQS4IPGzW0(Zrt2iWz(a9J5^9^Ynd5lvreXZtBTOi^dB`XY}aTQD|c0JalTR@=6& z2Xf$&cTNs)A)0m7j{06zE-Ux%rT%#>uQh7f8Ff*ZmcH{aIWJm!3VL>fz}mYatb#B= zRPn1Wj4dOStayhzn7IUqJbRhwSviX&Lb(3>GRs1qKq5qyU8OKZ$_*$u-dW+*?JVL3 z=BnvT(Eq*7y7>CUy82$r2;=JPKZ7(X%K5=keoWNEntd;P8?*exZDHHIBUu*WKX+DY zBm#~Xqd<4vHv?C|nC(clE&rZtMQCtyvb_Pi|y=THOEtPc7Q(V@81-4 z@n|fWyq;(WMiYH_V7G9%^H`f2&3%zL)W7)}$u$@*8ov65 z<*pfj*oK)<@T#o&&$)%LOXQyJ z4}f;4y$ndYcH#{4U=@Iou}<$=RSSuAVNwJ{LbEKAh4YMEOM`I~yVo~gT zs>`tAPpIgrgJV4^TZY9r+mu5e!4KQCDD<9VJyuT11rteoV^IlQG$okP)Y{B_fOM{) zCn4vjddbwV>Jy&78Wx$Ec8a}Ub1|#0vaKOYd>LR3#@ifYY5IlsVGG@ZZ?GIJ-?jL> zo_AAbUq$k4NdOGShIHj7sY}UJ=4U^S>juEdAyQE6_E#Io_A#f#R#r;GBCjDMssPk( zANl>9xjCCbfH_@Ii9V*?om)gEPpCDJ9a@ckAaR%-=m@!;ftTL}srKt%nEW4S_>QxI zU{mhRVjbd90NSHx-1bME;nVKT5s?PHY8JSR-cdk93iFZ`?#xd&Yor;qND?CsA_E-n0Y{li;fYNOv@fowsK!|q2y90aK&{(Hs zPL&Qh;2)1LiaI(blA=UTA(l}eKR3dI%ZolIk}V}QY z&OHP?Q-n-{fB>bSyazL zzWVBW4@?GBpKqq{C_mWcfH~&2&uP;YH%DVH%Ad@{{rdkwoE{5$l_|Z|Mlh<5&p9T@ z-gc}+BQTuHxI9$STt3aD>72iDi`pBfA0J-9*q2Z}Lnyp!2lo8&SOG?F`h|_|5ssAg zR|jUZoC}w~qiv)*G-<`%dj=02d;pdeo^!JLPChP_@+ENVW$?VjwrnQNE&{M9iae&9 z4H`nI{icoK+c3HFcTVpXSyk6IAK0Hl!IQzTQEvtZ$#K2&gw&+6UvEZTs&5@w05F(x zt+dNMp0I=;_l1apLLoktXEHB=LuB4$EALony07VsY4pT?cHG6(XBS##1NNJe2@J#BQk;*=beublu$uOj*qRUupiw`df}{bQTBP z*w+woClh2j!M!hkBpjq&S9=TDtKv_#y0g`^jR!nEPr}q(6&THA>4Qx@CnFH(5lB4B zO@f+%lz|jfb7_;;UjALW1Z6uKN1lPE%|j{orjjFhQ~j5m%Rt#T72%|&QK`{%$y=|- zvPOVu8qUHjn-6}@5}^RD!L&D$^>G-fspuZfi6HSn|4NryWnXa0fWv+#Db8>bCk1f) zwsYsU#k2d_wzqJKJK78jxFDOgbm!J-4@{qz;fhw~Fa2!m(Sj_{xi39B)M6|!)>x(k zNmwW4OHv1Kvw*>#c?*~dGCxWe1%rLB4UM6Dhq0Yd8N;B-SW5Nq22iQH*sH zsOCf?TYc|a7F(gI^9n}#&Xz;0(LfrY$DX1Rocr_3Q97&LVEil5r~~w_h{+^VP<6QD zkVif+K0a`fitUZ{=vu2`$8Ui8zcNVuc|B*@7Efm zCu8*-YhTlZMHKF(lZq;Q`PijgG)IrytksNsoO^a(9YXZ$SojP}#wxsPT1apBB$mOo zp=QR{w%0HwYb_qo&{yKOcfmijI&aUj=}F(LDzYbOhRg{%!JpH%aDvk%@mOk&X!`>J zI^ET_cIU;%4?>C=$*+#g(K*A~0qV|W*9h`L0Hln`y-ezR^RPe?edy@OlNZYX4 zIwnF<@Om`PtUO0qE;gRU$qNixSpt?p68vE-|M7%0&Tef-QF)Oh%=S03LO>Jftv-5Q zw@z3@lMXu4uK!wxUV0C?!buFY+V}gByee^I?f}oF%1HHcu6AOjfLcj@v@!pmPrfk-l>_i0iwrmuC52p=TU!J`UQ21k%3%+$3UwH7EYcErc|^L0wMP=evzJh}qfp=xP+CcCcf--9 z%;BI3$b9@nw34zK!NJ+Y5UkYa%-J`HM<(>sz}U`FdEN25Ae>t+usaak@C+fTBtv`g zj14He;frg(J~$NLeUj5QBwJp0%qQW)V9hHwR3DVAeOgI%gHIQr{$(!y)si8Eaarw9 z*47O-`Kx?o%UU|ol%|K^0J(RBm5nP@eWJwRKJr7XVejs%6zQS(h*iJ^xEn4xyWRZO zwMmcot`AOjcowgPK$2J=j@Q06#sM_?NzTXfP_TMJN>?N04QVki+E;K$vgY#XKW=qPA1pKRXs6R! zB*3QcB^{Qp>Z!rlDrYb_cLdoSwz4s0e}Eb*`ZR?gs1M~2Wgvfm_GL0)h-oW@bEeAm z_Uy7y>|NSYh%xxiYv@hBh~#1-KbiHX!OMDNd3j>EKu|M1B3ZwSKvZ|GWdG?2CZs{s zYdZ0y!9E~-eE~+H-!YARhQS%ly1c2F9#fnM9i?+ht}j8IX1SA&6-}Px=7q8D8TIYm z27c1@#$0ZTb!u38+w_tJEnXoq_EN1QG=N`F6O3GNy2PFx>U)vy%H~Oul%}O5!EpnYf73*cN`Dl#@XpL>@~&3X9h6_%AHTq-K!^=w z?DBN@vocR+C+H6d=|UpC!wLahM?rc+M^>-iI531HRXLo@j95PH{?D1v0l}L=w^OYP zYk~<@&x*NmvkX4BcPtk*HBv9u>nEA=imRN+Rvw&Q*lJX`xM8BOoZ;SE$GuhJz+F-~ zmYC$bb}87Foe(oT?fU5GCx79^T?v&Pe80HC0~^ImILPIeh;3+AJM3S)H+#IO?@{@` z`Q-lH9E7RRcKZCORQh#UqNqosyDaWp7{nhhwB3C(%NRRWH-2 zeM$J9Q#8yw7rzYzhZv*RTLV8Wb0ihCC1d%`{-GjOQA1*HqK%@NN@0?@UESf6qR2E2 z4!$T@-quMTi=R1?*%#nhi8Ni)93Gt_*6olj+s{Vx1F2Cf1WzWCTnK?Xtyf97%87vtV5rK@M;wC=wOl<7Ww<^Z`g(`THRgxz=#i>!3e_^R=7DqX8T+Fm& zh`@Z4Qh`TL+e7k*=)OsKkW#5s_`*yJc-7)gqgRZtY){<7Z!`(|Mo}sTJSlyYd+pB_ z9+hAIJb{2Bi0=6U&w+>EDo38brZ0i)T2tl|%OqED?a+8Yrf|UC0BT!jJkmNMEZvrp zj$%F-X{SYk(=p=^qOd3|qZB;Ko5wSgaDgw0d%e-1+zmU<<%ozizuW|Oo{ERmfv$h6 z?O2oIRrHsWkdX#YO?b-~2vaHi9m_pz!=u2naw%m7kgbQ; z{akRUh*grIlP>I|g`GPn;)hyH_3E3) zapQ9YYs8oFd0J3?{e$RAt7C0 z5CUVJIg}7JRI=Q*9`_TVha`tI2^Lickyv${f8w0xB$FrVKmAh^5DlOecz#WTmyV`I zJA=KsB8g zbi(H8&dX%tSu16Wkiimw>Y}p;jxjb%dA7VT1*m!BS$3U0?ewJ<)56D68GmCRio4h# z!LDJL{-tiWUx=2Y%@un6FjVn>(YxEK_FwLm_s01Ppv@sQXq)>yt7SkAsy+fY|ayq2oF&stDq zc2s6Fjz^_)PU&(v*5hNbZMFA{Q9kCR;7uLVl(q{P8ZkJzEgjav(C2{O7$b=Y6GZ?s zM(mOnc<>P#1iV*3I!1AWw61 z*j{tzg7@#m=h=UG*w|FXT@Y^nLaPAEL`>F~ZA)a<75fWmZLRysW!@4f!V5>C=S;eH zY@4cUsiCCx9{J+*e-3p~Rw0M)QE*3Ql@Y~EZ~CYs$ay2S{e_#PDX^%wyblhuIn7(!9Jxu)8yFZt&vw6$7xRozY9Z=@`>BM5r1x00PZ)PY( z24ZO%j;wvl)gwUVAQYSWGWA42U+cp=hVtQr1#oQh)fWqt=>Fzl)2|b`it_@o@R*ta z3=> zv}}t_)i-DycY2Cd&9fcO9}ihrT&`a{du}i6;Th`GvkBwZ3D)dcV#RRL+{G~m8*-A{ zWrA@^cTs+hGO8(J%M!QB_lnc=FtrWGrg^`4z24hxDCc^(1GdXufqM*A)*9L4P>^#$ z6m@4Z#CeiF+EjJkC(&yrAuf;$rnLpZ4SP|&Uhm7gDC^`2p(B(!#oD^c4JD)61go3) z)KR^L4`(+^W38rtx&OVYLbgu`0KNgRnFp7{nPO8wseWO5gH?H0v7-<_v^3UUV`zS4 zpO#`pBI`Ys%(|Jb#@f_DVZ8Y+4^C644(u!jBFKbY;y%k@P3OUVgD0G{WE<(Q+9WZb*slE(6xFS=-C^cR z2K-}m1j@oPn&SoOEAs~b1LaKK!_E6k;1Ig`%usnPdIvO4v$!4K2gp(YJp+-i zGR3-Z2ZR&ir|9Y%5-@_0chZTdmE*VmygBa*;Z|bk=rOI}Fenpdfgw(}9EhM_64GtD zqSUx^eQaD;1EACCSOBpT)I-?+E$`#`$EP+`E`v>~!NA=zlb2;yi+d>PoXK3Nz1=?J zGk7l%5>T6%PZhRfJeABzTXYb-)G{$?E91sleB_KWN>s(?n*=ogrJ7lVeP&+#3X7_} zsmp$CL_`!Rn_ZZRgfxC#cLba;2%m44zc|t42L6;s@qmiE7n0~;qxUI(Q)A1Rj?Z)9 z3|A~*o-52X4-Rs*>4$%xmq6#Zp&cyZ-f>HX1&(4`vNjH?2zoZ~YAhQu8<#=0e@4Y3 zu+~LCXkm7)z%?@lcgP)weUXV!*}DtfABYL-GFv$_IBQaYKp z(mcK{#KliDhK6RKUg0@nVjClT4PfhvThKJBzK5brNom59SM>+gOX5QI;X1LT zw1Q|i;e^kw{lS|EctZ)|_^ayCmrxkmmuSmW66U9D9s^wUxQO!cYy@x}3MD+M`Qy9k zf@QEK1tbL0wb@3hon%!d`PCi$)PvL1e&1?MYi z=Qm?;H=;5&Dcjd_>QqS~w4(a}4u|EPi$KW3i>=9@^fL7=F=At`VU)U;Y!JTE;Ig~) z+y>d>pjuT<&R2WLl!IZA_e^5w!UOK-7JHfiQK8w8ETS2`W^O-T3H^L@xM2D5KyN}1d!p^e!h=*%b4>ki==GbAjku#+<~^Y zsQr)U*{w?b5BUiM2chKmyWVYKo9?r2<<$S<-%ZXPmpR5><7*0`BC-`kvAtDhpQNEw zhwQCXGZ>%C7$)4H)NHmzpfwmyHFJ~_B6ipRH3A#%E4ZAvSTIS`o`i$ybF@^DD{)z0 z5xweb&e?KbcK~DZt?cDkQ1rpqj{Cq;Ibg-RYyfQ^K(w;@O78LT`*z4~Un)Mi5o_L> zPyf7Uces7%Tp4HKYww&eGliC0;Bu{F#Y!24pQlk#qIdx^iCM2w<5lg zvHC0bwAMkAdgyWMV&ZCfl06krTJ*YN+Hq%C;`FNW@PsR2_^1q$8`@a>rw^9}L3joO ze*Mf9J6PbC3c}6f8;MxF#(f6qi58oY*si>ZcAxL7IIMBU?Ezempt&b1I7>N$AiVj` z^d&&(bMw9jU$(n6vg_U{X8M-A+0OXr-_$gfk3$0(`#hmx zIDOJ6@AjgY(0ud=RYqt7QAcxLZjR>G?*5XJc+6RZl3S1m~IfA!f@0( zdln|1JY>=!s6YXB?hLX*C_iZ_9ifYvX-pJ%oJGbyf{2yzR*unvr27V( zCfH-AQ&z7gy~JLgL&2N}_a^|4*0!LTK?~8P?Kx&3P6^j1ajbfyuaVQK-8)R6Z};2N z*tbf^=rwp+b-}m)!!j-CGAs>C92yu5qhBiv=qWRIa=4_t?Cmaql)U?(BkK z@{z|Q@%-6$y@dV6+;jjtK*YZRTWpf?jJUPXB_8Kor2J8q*yc-q$e*{8dKqw-VUxbJ zT~Q)<46ioT%WbiliK3qn^biAivNn?Eoy_s&OwHqzeO%J0-+=SN`2%0oxYS^CMrg&G zy!@suqx%m?`!U9d;c> ztBmr;wr}z}1{$%K#aLbIe-Li7;2CCCxDgo94eE6n$pIwX0i$i{0g`sTHT@Qx`&hH^Q3wpYC{bo^NEs@=>#rvCZysuSdT+GIsL^BX z(g02h6Mk%928sXk)`XUtZ{&9^*`%pOLt3}Jz%lj5%Ms(Yz6Z3BRB=2G3}qJtiL~_b zAZl2$+*_@_P`QYYi}sQD{&n{Gq)RtM2ZIw1JNkP)Yt|6BU*?c_`mxLQGN+QiOsW5coA)DY|X^X_!s!L zl?s2|rSlAVr%7XzN;T&yEvWcgQwesq&iUf|4aiTejOq?sJbyvze5=Nmy8uIX z2u&O~XAr-%6K=^yz4D>D?`DxcKbY}-UX~<$;TrH%^V2DjxgjR63zw&zzW1-e^19x! zSX|J0kiF9(;h0Vaf>mc0$6r0ujth>C z0zrdjaZ7|B{KbbqK?_Voj+LLC}&~VUMdESBpSR< zpCcbD<}{sm6>M9dPbVfCS}Ca$eWa{9j;;aj79r{*?qMYcegR%u6SJp6RXA_V<3om9 zux>vuNF{=;pE4L&Iw6kFEwsI5mJ#vb@1EN{imQ*-|LJ9C?aiO!lyE9-@3^Kf2w@lW zgwm;6n=5MV{Eji z*6$pAO{V1~7xsacBILk6>vXmCI-if%s>P-wTJi8Hx)pQ*caI*~)`!ouwZU%b+hr;- zbbc>-;3u8p&`5H6Ii@%3sxmPQs<_f2X6VOf&WXZo*!sQg+jH?^7VXk1RIXRp5?K$T zrUj?RBz(asi8ciLr#i6${OZ4tw_xoC4(PAYjbuRdjF+af6;GMJzap7O(BhD zyr#4#MiL=p1ldwzxIcQ3?MniO1nx<62$9K9)7d&G6=dNQX;H*n~B{E zs73tUMd@t*PZ~ofeZ=2H4txIL>J)_mAOh!f6^NJU2yV77Q6T3XIq>}CC{j1+u<5|^ z5Qu@Nwm%AqvcuD3IVciR*1}uwHfqkQN*3& z%*<~TKq1sN*^;0bo6>73c*istF}nZ>wAvJoz}UYlX6sPNaZ^;)m3OztzynYorK*yr zJgJjdr(qIi#ZKHcs2b{YPTIBVn1)&4686kBJA_B}6e{ln##aI5WnJFP+mF$0Gp#!O(6YL7pUvsgQKnshbXRLLDU>TSd{ zLo-ai_!Lc7W&{}@j`1S2QRXxZ}R z*R<_NA>Qva%M{VWO`H4d@zw}hmX~Nfg8~~>@oe}xT#Xz$o{`;e#=$h_{!^TgS6LSXq@Rvg3C4m3{!0!7h4|LwYL26+}xI(4px^ z^UI&g*q#UV&1w*I^jO8(hTQK3WMz?{Qn)Y8Kd$kcj7XU+F(E(ndUB6(>o__e|X*vY)hH3vPkw&cF{|JO<{s zBsQ9xXivS@knffiK()?rn^SIWY%WQujSLgGVq)9RAkC6!)q$(F_%aF zX12&3Krh6%kW9a(1OD-C0c9d1G>aeEY0eBDngi{8`r4xUYw}Mdg8F_hrLpc6G^v9N zJ;t=CF~Y}|*LV?Wg9!_lyNvZ3R$Zff;Aai{I}?dJ@y>w*s}u@sSRgO|d@}%n>U+oV z%(Ixvl`m{v&&eC6n>gkr|!gmb-(Ikdo--mJVv?KU{->RGRx z)}8U%YVZpA-b@$F8LAZKcC=H*mQMiUDJ0_A>$Gg_F@z)fw{$bP z+#+2}3_vt$$_78PAYEfufr*1}c2x{+O%QZV_@A1<*VjbG0S*wI;rZT(ugwcoFJAGG zgo?6D@i1ruJTef1$m9N|#qFei^DUl|i9zy>QK?KO_^W~cAAq<#-?GH9@Q3~G>SUQ` z&FKFhXC|k>)}eeP|EaKYr=_l%U~Q3j*HR#?=M&^qef?;*#RF2b6m6MK0jl6 zpLyK4V@sn@om6_GIi;X+(QkHY8pDPik^QMHgX7K^Dll-cjX*>WvZ-{7JM!TksDt(9 zy8Z$A9zKAEuxk0Qe*R51$N)IWeY=^LQ=MTs(6l@;`q%w$ugRG6tn}p>TpM?Q zqbrRfQd%LR2Ef#X#GoH_QT>-5mB$@yI=!1GSbYFn39J512mjO1SD|znoSp#=&|`I0 z{CDfOEMM+^Hl`PjK2mxTRsTMkppO*fCv|-Lsd#Bd&WsR2lXEM|Bj*kw3wY7L&^Je| zC8{6fP69kC%YB(_TRE#xQFZaL)JM?RhSwK5TY}Y^A7zLk)GN$i1undf5NTc|^2b*m zaMNXYJ~b0Q>F-SoZVdWvk$=ya$$aXDFRBC{42qL~DEC?0fD{JOwU6Nu581#VRgdaW zSUsWq%-K-ESV+B1W&3JcV)0}u7RJzS+*#r4!RD>Rm?2_l?KM{4UlRreWO)UF>gC=+ z&64~49RL~G&_(t_B3oHs?%iSDOAqTTD|EBU)))sBce}VajP-kXk|9D6qDam2o;(C# z2C(cGHO-OOtP8D-E!0s%6=epX!XSv?`%I-;vDpxKp10iI!Pw zDCQt57w~e0?ySgdw5sh33CQlY@vuHHBXenM@`jFJY^(qd!h8i#49cibUyydb$iKBr zHlTd<^+MLIqKsl!D;LBOvxnCis@Adlvm7IaZYwA<_>Tx?QZy&f6y=LMIyWZxCi}Vi zJ`$AQ3U`@OY7#@l0V~oktN`|ed7A>eD`+kB1Xf@Sw(C${od`j~sdO&-Mq5JQM+zBN zU%Vh*NX^lGk9qYWg-^I{O{$LnI4I++%*t82D_*i_P%tb=8p+mIW2HF+xWF}Il32J{ zeYPyUL9UO`HBV!;#68%gWsoDeGRKmUWpI#rns;TXWKKeV``*!|y7X@Hy3KLTL8da= zcPg3}C?K!Hl@Q=9ZIUcOLJLLYDfYW`yjzJ&?#p*no%~HOj1Kse=P>uG4sc?9rHL(e!5gT1#bpfjFmQo-{K8 z7yaNJBrrc^;29b<5))M1>UB0V`d+^hyX*{NgF6Srd3*!@#M+)jC;!qm{*FBI8qIx=K&^Kw(rUzN_jB67+ax%l)vj zRqWe}IGmieu(@WM9xsovK$9K6=)}+y5)22oh$C6vVMySI-<;5JSIcUe5>#Sp1ir>wfk~(E(*e%R6n=gfuf=y*%&f zz)9~soR`*9Jzc{nfmpd&(2Q*dyu4y2oB<~gCt9WT9Euu|I|L6*kay(ZgZk;~t(@+q zm4VS25uEdA$$3-551~Y;uHamUdcR+#Fy()uirFIL_ZH8Ku4B5? zIY4LTLDA{tX0{wsl4+qm-fcG>Dp+`Han`*pF@M~E>7g`av>>@7A+CnG10#WQ`Y<3& zDVBZtuaQIzkP^kvkt#5#%!WcE&e4kE*DdjFEPq;R?+gQO{XYZ zyFD2axJxsrV)M|7t0q_Obc_v!=j}Eu;Lds(;%rldf3v9UcG5-F2XMICoYM*Aj@zyJ zlG-jai_+DVil<8vO}T@3dv9S(St3)3DKGFLX4e3ckiU$`os?7omP4mbKbd{B+`c?gL@^V*Nc;e4 z$7z`opJP0+>-9roP2-Z|$Z)@ht4JmW~aY~)HGGXRKrzrCPB-CmgN=EmYbv$9F4bCt|$IvGScs2Yx z;^aB=hgneJmq4kB7BU|gm`QDv73gdN1I-~EQBUh)Gljrsf?^%G>!WuI1--|t<00|9 ze!@0!$+@m!%n*I(rZ~Ofmsw9X7m$Un+n#?-y+&&UHB(SVvEdS0;4uzR@W2&ofJ|vD z<X&&%`Z5nkaI=RRdHB!o!9ksfX^T*hQf)hVz17!2~QL${PRWmdzo zMF6i=AfluPR7}9~9d3vP0rVF8QOrbEL}Hzgl!&e_P5pE+B@{EUZlx4WP4xD?*P>qd z59f)7SZST6&3&%P_%fp>xPHAO0Srw9cqU?9(@A}`+2p=FU_OXI7-VgJ&lyY{U~&p2 z+KA7X_Mpcik7@x}Eoi`$25J9H#2kFe4UW>>$);L^J=C_~f4kj|K3ahiZq$MJTSAMt=@ zwL`-87}&f-4dLj!hnXBj!aYExn_IpIY&~OZSynTq@Qs7~g28Z*vRfZt*ozeU%$?Qp z52BzJbH~So>Hg}swFegYmwAg`%5@*BpK7fNG;9M&ANZ?R%Lop^<+*f(PF_k>}u%&!%NehbGlQ-Q)aPS4QmE(LO?2!2= zv+~@6EsJmvM>opx9kKLSrzeA{%}q| z(R{g8a<{}Ih!~S8%`UVSsmQy#+1f0&Gj_F`qYh{zUyEeV2p^3&u-{LPWn_^{PyIo#lqnv3j3jC~;$x~{P2p5lpF!qH z$Lv+nm%S=qBu+siy^7TaBjJZ}(Z8RhVdw8q{lewzpK>+RWE}btg>I9H+7hW$OY3fA zxPVsM;pb3t;yY$-7HwVTc`*ueh_Ap3CyfP`xE@1z%_#c1Sm%PU~S>l86*f@4FHMRpNcNM^PQUU`usvLRYu*ho;don=%8S z?n2bFz$O={OP10iZZLwxgbq>1^jHNPfL}#5SPP=@3mKy9q>Ruo0HZ<3> z#QS`tma0kM;e&uz6m(A2ef)i_&A-&1?18@4lm6apxJKS^!$~U6biyuPvwV1UY$65y zSqqcOXrc*}c7Q)jww@8G<8G~bj~AtQB$rwGsk@N&0dd(BfVRJ{>!QvArnoO_dsuC0 z!*U3&`4T+m7D{7GFp&Z7lrMtTCMR7GzB$QdI8$vnoxsF zW*nH(J7FXekRnf)w5MAycMNBvnx&#l8@gf67{gMoZoq_3P!6AeEI zg|6G!=^5g+!AQG&O+BT12Kn>@;x9C8KpB0#yl01Lx)!Y%ZYt#Up5T22bGl3RSKmRc zjq)0>DKIb3AaSeZQ)gvGUaObQV6eU_tT0zj)d0|(V1x>vu*z3n z7_=!zG19Bh;&Bqs0~3^pY(s%k_DY82DnJH;IZs;`wFvD?;}4qZGrhOP?B0~eaEg+v zTIt*`(X8;%!QY)`KtILTS%c1Fc%{8|?nrEsVthODZs3pBn0RieLP_a&P`{r@lLx@`htHE*rk_s#hnFSGi2xwV?ZZrHq7 zn0%7kS;v4ede|X;N|u#gv55NE17 zPnnJh^OXO4;zf2yC2^RsF1W#l6ne5;cFE{@+i_cjfP)bbl!F1txy=0rDD8&AqbHW~ z_*s@eTZ3n#fxv5nj=OwNwo%mgsys2)sft@N8uR#>C1HFDWXfW@=-=&g{kF{~$Tik0 zjV$@;0`V!PGWWhoe{h+^igf@~s2wOd@t+|4c;rqY);09$@;TbS_O*<7{fljfH#iumVj@gg^sIhp1F~Onq}?GKvo3aFA`9(8(w>cAu+e}<6EUYw`FqY&n!sgfW7WHL8COpAQ*fyWHsg)XZPGmr!GOAgr`5f@OxU+ z<}^^F7q7H82Q|Rs4>*CH`*5D-upP@|nbU!0DpXwG({6XHMpm%TDjV-)nKp&KB`L@w zaB!{f6M9LO@!vk}rS>FWD1yd+8nq%}Fu=Uic)wg36%=MbnFv}6ph?9cvLvdnjjaa> zBAuePm8+qRdQNn-oWGC0fS=uF5!xlMc|{A0)$cMgQFMf>PXuUN|&Vt4oBj!*{ByCjgh! z2Bs0hK@1AsE-{AN3puzlLuWNsxmovhCaPWqi|G5cK#_Ud>B@NWw>PlfiXhA;n>Wlj z9;etJ0+9qWzLex%IyQ`9(XeGZ@e+^7_b`22jwq4)!)njpYPMFWh?Bw#Mun|WaB%(; zZ@M|7rnr*jEp7ma3)F_u^dy?8sY2TaP6 zCbvyV!@nSHz~ln0 z)m6E>G0*mVCd!UbKj@Z(N(C;f2`^Vil@2Zw@&<_i=YSmvH>+jleU}33K5bS1ulfA+ z*(jxH#t`b)4L*w-Ss2M7@BNtbBKoc5X3H~%VCJ#sSOMA_jnv%H7=uRZZJiqAQD zZlfv4ZSD#63lTl7!P4lL` zGY-#tj60Zk5(8K*1zUiUp_;FU+)0J)LbW>zbR-9U>ee|R4l=4Q)&v{t?#uZrRmTC| zn|b|XZ-OZLdO}Zp^pS0|VnpX6y-#WhUaEYY3`68$+1^q0h}=W1JWizy9LBB_^${lw z$Bj|rXft3p;XRHKcSP)JR?hvEr5NOWdM*8d=yvh>;M%BtsLaV0n*s}@%p@HgAIzhv;HUAAJFRi-AJgD$kV3lNuPfJ;USbwlnM)#eA3o&HR2P=(*FZjn_ZQz_j&h@NJ z+T2bK465c3<3e0zeaN~e(s~`>c-ip;!i@KwyKgy$MyGEbTRtD|jCD>GHrJ6(7KwfO zEQ*X*w`UlMkL52__>{pH?4IeI(|c;ixm1wL8TGp|HeA3pYAhg~XkEqM4JT<+*cf8N zL3^CgNn?jX$m6Atg3R-5Zfn!nr6+Q*Hk(~rifsBUQ>5tkJH~+#0G>7bh~BKqV?(G7j|dwIXWK&M zhNk1p<^?u$q~xbU3L#wa60bkprIlyuR-eA%bUQK`f-?ls-*0QYSF%V z%3W4z5J4MMEPbk`;wnHyYhzfP*KoSNh|-KzaIe(UA^x$HOgyl2QX4{4NPGUCi*XGW z869AFDPMJR|B1`f#Q6gJbSGHa5$%83*ijhfTcmLbZq&=3forVVUVetk!-O1kb<#WH-{JgAVcvCMG1=z; zm0}*?u&95EG##0VUKf>hVO8L>zo45H`he^dSg~9DoX~T;n^+aVDuB|1Cw^y{fgnNa| zD59}vp+nom1J`@e_5hye&8+RAu<*j~pl?9Vx%g6?PY2{3Qt6ts=GJos8axc=JWPp} z0T!af;`OWU+L<~z?jch|$NZevydHfJjU)hq>`?FM3Q=ebT~NfJQ~yS!Eue0O#CNr( zN}8cPAY&b9M}Q~RV2mYZC5NU9AeywLNHS?P@p7TM^-kOjH4MQzVaZYs z3Bbxc;3yNazR#YO+@f8fL*PGkO@RmY!j$&D{AxWoqls^G8|3iE*Cd}qmmMO8PC;Y6 zNyh|M+wPv^x=stX`wwWYz-T%J`FOrqPkU1axgy(ZNb<~Rye7+F1S_))KZf?NxqIg!k?MQ`>NjejB?IA6d;aer>?&JA!=I!ao6CWNB~&GSg42QJ z3>I%((0e30tv1rHIMFu+RBH?)zE zW)vwGiIj4XF%&}}P-j0nA=wN@G!_Shp37)&ZYw(h@|aNK2N}%*CqV^&#ffK?h%#37 z(54e%$lVBqZnvnO^`bazDTDtl8X=?IrvT7F1ki}TXD{D;?qO6;HJd>3d}OmvG14LK zCSv~H?0y37zYD6Mrs}oXW^K~vz*HYH*#WwBP@W8i*ssa3)B_nyea52rfta>&qa`q7 zB9KUm|{wi*n6(9LXhLLgeJndTr*;6YBk$X#zHRr>@U79P+xGI{+a8u-FxC6p* zFx+bpZUFY+?xCgNf+xltL*62jPU+^$*gHo3+L1}D+{QUi$T{r0>Tjn=3b#O`w}C(` zznN^9(LMh!m?+ku(UcBrx`@|kbZdbD9hJmZD6!qaEl;d)pq%&02I1gUIwVh$IHGdJ zL3~c{f41p4oh|cwcwS&Cq|3i4`Svy;ZR7yQ1PiAnE|v7#_Abl6uL3`y8T?c@7p5lFmv)cBDR;@01F14a-NNDjoU2AF@ueD%k{hnC8u6i z0`HRB`R=b(Jy&=C-tKWSaFCkqvg_)BZ2r$X`|23Hq1kbtTV@8tuYe@~ym>6r>5eE( z>6&ByC65Ax72y?jy8mg^IF-yvMUA)}594_KyKGjD9ghGO9I;@>gNZ?Wf&QJs4ISg4 z73}j=Eto8{mY7RqgVfT+MHi4>6B(lZ$8??0XF;z< z>)w%-B;de9hx&m!+}(J24+uzJX8D%Q6An~cM<)q7eC*p>Jj+7Q1N5lP9yFmx*`04L zj!0lQq3j{PX5&v*F1{MlY1x64$wo%Oj8Wr=A^Vi1#%#NJuiN_ssYh+?gU@;evQD#+ zxu9EPT@RdLXbX2o#2(k;siPl^FfRT}WXloDRTxDKm!?~h0b&w-YX!xhb6_bKy9`~&`)Vw8imfA2P3P(w2utPhS-W5zwgwo z-1l@P5$#SE_5RKL=4?5@huSJgD*oE#&kqsd^@e$yvtqgGkUjwngT8V8XpX8#Vn(qq zIj97Ji9LTtf`OA*2aw5!%}AB07veGoL57gMk{_!=!i~U3E`kpoJ}TByQ22V*>_42| zb_m%L(kFb}_q75~jSyInteZ=D+42~SmjUxB8pcFy$dn!wZ+72Z(x^E~yYFgQreng= zfw!#%(2=f=DuO+aR@^8<`9B0SZc?UnI(Hexj0?*9P%_+Y6M!JYsAXmNJT9AC(JrF@ZXyIET8s!-b}4jKqZ?%#j^9o~>XEZxsJ! zT?N{roXu&QEcXP8;Rk4kKpy=PYDVIuO{sK_WOV78C#$dd*iHjw-K$`BeHQOtY5`G! znlWPBirlavdo2|W#4`NNOPrdw?SJsFlpoHIU_+^_Ff{AhQ0({h&#hd={Bm$G%gMVt zNB(;bY;$kUiK;1P7;f}~twQF+4zYM@g{um5J0y{wX(E4eoCDusq#p1?Bt0&h^y?U8 z%Jv{dp+mBEniCva{5m>V8Ma{vlp4YOCRdS79=CX0f<4_-@z_FA)zy<8keG78{KvkL z6?fe}Jd6vj{3H#2oe4YUM$MM9UEWs4@vk@7KbzGuw4na@wiHkQseqmWR@~^dxCy7^ z^mcujl8I}Yb{wB+E=FPolnEBm7e^<_G>S&P)_3KHIo9>}&_flSWV+ z2UfsoY8>4Qv<1&x`exF-?-KpxlsN+?`We)A!rs#^SlqiHK7|Jf2>Huc_yg`TDo&%O znQ#j%@UESF&5IPY9J1)YAX|IeP;?=;(~foO^?iM@VZTuBqF49I|@UVzRJ7zrLyfu7@D!Dzg0mTWI&KMG~y;cqf_W;&;9_v{yLvv$> z34&g@;f2Zm^GA*Q&}R5$VC5%-(%P5O_^<(0eB9*1h08T44#9tFhHVMlwF7`k@THu& z@uMY@r;fME5$NwDM)0Xx$5}l+Zt^2b$RHU3pqxR?+M!^wi+a!bjbXbEaG^#@d{3aDP#ZO;0MTf6cdFsNh%`{4A&9F&>7K3 zjM!!f@s{Hu6E2|PK_I@2=#V|p3))Ca6zX!5#X`Lug|)7tZ*(lbC-yaSKS-<*c3YJ( zm^M;GGfp{Pm+7&MT@%X%W-dzDQ5(7b6HR*Eae(#TTb0?t3xjty&Yn5sIW=k;K*w?U zIk)n2vUAjEFPlBToX#{tKl~-plmz;5{-aKJ<|s2Sk?5Pl7!!NzOk;pg$Cdjj$l)uE zYI!;ug+w|qX%O}~-GE!z1On{{OY7?O=46rH=@b&h?3v0CWuG{Cw|H8ZJ+Pw2!YNcSyH*5RKL}qU+L8+s~;@ zZf!(DeIZAB$Y4d?|H4B_VOa*$VMU9DWNg&6z$r9wb?u|3@In|+0JnAyk9jT}?Bxo~ zz1=r{^Zp*n?#<$=V{)MBD@}k?L;$WZSgBT2&Fx@Xj+Azx{Uo68-YZ)n!8ZZI801^% zp_pz)1Ywr1e}sPgjHY)g)xD>4Lfv!%94*ov%=&f(Ou?E7ntDaCLh0P1QZhT%NXJ4i zui$0(JX{1EEFO9227rbi+IeC9*lt_w1c;wT5B6FF+o zqsrTy zC7criEffqDGjGyuuI=cTK}FWYoGLn09ke4whZc3(ug*d0HuZ1kX9y0+a@Yr=-_Y4K~r#k@$HI#E=t7lb$=eB=|-+;0HofS04 zD3|I&T=r|bzCo%#;UZ%-v6HEvywJ2l$ zO3~8y^j0Kot8nL2RD{=%>`RZxF`Eo9s3^TaX~t%Ru8D7unypKri&O< z5{>pVWI?87gelsKLo8k>eb^G;t~C3gAy>0*Ct~Wa8HGo|4_&beT1Bm5WA;uPNr8@N zW%OS6{h@Wq_(OosZCmy%h({?nehBBb0iG(K;mW+?RrIb~Hi<|eSwo?_3GeKhK0rmG z;BmY?sH+m54fM|@5C1?EfI`#mQBAye5h}&HtvRGcUL*BA-88VroX{{EK-}R0YI2nj3U1UO4N3z+CAnkyu zdie{@m7Zu)2K`+ZY=pK@~a zs0sXQCTdFe4wKhx#>h3h$inms9`m8;1cv>WTe_MQUwu!3{x)Q!!J@<*P|Utnb-W^K zoNY^bA+SB%06TdjqkEacC*Yswq(Ljh@uN(Y)U_W)Q4b~?v`2gEfFE>x2!m`Cue7h1 zxnZIE#zCAr!%tjnq(FFQ*Cjp&A%C$i&<6Yr7zeQu6@?V%aE0qO*)j|VYTVvokdv<$ zNT@@l1EF}sPsBtAV;7HFqe-5-hi>k|mx^O;MQ8(~J%yo0oJtPQXWHPbAy!lLJsPKU zWzU%aYjGnqB5W_p^&^bz4?Pw+1TkE4q-iT}evziajEgsYF)^0O( zQxlx}+L4!s!+IGXl5gN0oSmVC&Amdb~IM$mjkjwp{bd%jS;V60y8jsP;gZ&c$jV19!nwSyN zMOzg;0FB6vr=O=3+9KfK3UD$szOgJo_ZcbDZe)u#2|#$Dv8NKQ<+y4COw-Mj?*oIA zDjV03+UkPyMf%`H`Y#mc={{^tQ~J59^~^PoC?TNIa5-O(zqrDglpP1vySord@i1_K z1x+aBq=Fre*bR;*na|xP_jsgEr1a+7)T$yx)tN^q( zof*T{c%<<$RLg14hoo_6jd*8XJF=!;5DUH7snTKM_yHDuV+Aq+8fL3pfxtWT7OoD+Z zzwOu14TcYU6Bnfk07f|;PoQEQsHwW@gl%t_*Y`V#D!Uv!Es@^fjGwFGV2HM^{&9GM)$Z!I71%#-|I5}=0 zDa09k`=oNPmd3jjvuWemC7Ot9)sI>L&cLUdE|(@&aNHvTnJ~H?4Q`76M0B5^DhfPj zg2(c(Ks0%pb{zT;V9VF_4^ot1^V8KnphZey;yd@K`S)Pixp|QJeC@K3=7h5pB1N$% zrdC*`OL|*~08WDPHO;l~JL$Xcg7$Yqg|KNtyW}u+mZjqk@ACYGBWk|Y;Q<3*Tf)M} z9(&EBUZ4@@aF!j$IBn5!zt>M{#GT?V=!q7vNxqVCU+%eoO1c6k#>+12*zvl5gVKPW3|@)98Vse}vXX zQ;jL0lu-yt1OzjVt`P$;aPZ$-t=pJvB1eZ;aO0$IU=ltDY5djUK6P*RH@pJeMW#4i zI&$GwJ=Pe-0Sq`xUK?)eEvWf2!NQ_Xh+MS_dqb}$Ah~EgdEN0~%tLy(QE%2CB4bn| zSuKXSeE}*h#goB~y+n+3lt6`v#JbiP)apQ3mksby9~DeuISpOF=Ry(%#U`QC3R3fg zh1QYvJvHr-p4!iBfSJh)KngRw>PSF9B{AjsC$NGDPO2kJ`?}e%mc1hpd6dNmUBOhY z-KSiR#XeKHBhF)dGj+F3o1fD-hL!%$47Pd~7fvMq2#Nao2$uLU;e^)Y_pQpS-!6}WY1e|{e3_IB!a*@crB!9#*qL@;86}w*d*kxKp;#%VjejDL>xjsErWvc$ z4ZJKnfQ-a=8nHeKcbt^5;k=YA8xXwLX1CMC?wOpw9-tYQ*2F&~h_8FpH*pm<^6j<> zsu2#K0MTrD0It*9_;O&|M0&^tnqSzrcsF3uy=mCNmA-|F=CI=72tyS^S&!+*pa;FE z)82)i`=3AnX8UE|>D2>q5$i9s~PS=B*>8%sWDp z=z_TlBzo$|+o}og;b}Wt{pvgonJkJ~eT>Drz4oo1T4p3m+r%x(`yeS)AmMn1&+1Je z^`={K!R)qhR#E;KMT{{H*a!pO%GeE%)hQWvQvuYE?r*$4aeOts$! zAiSeW1PDDhN8bhnFmYT+TeI(}b0fOcX@%ufMIwsqf+!}@j3Tio@ztodusld9|Ac5B zZ(Th{E3xpbof$i!kPUH3pFqjo$FN1W7E!aqelB@;&HQs@_2*Cp$xFc{AejL3GCQh! z4l_;A4b|ktB5hoz(&bq~gMjOGL+u?sqyUJkia|r#4NH5mXe<@@H87SQg*rOxun@fxU^%sI)l>%v+L!_f)>zY#? zb5Cj3B7F}p{U1Wld?->t+Jo1H z{dEPeJ#8TZ^oG2H=?;fL_M}X6MPrP!bo@C#vF^d2OMb<_vVSOeWXG=Z9us2F55q(h zw6h&+PhDg3%ZYooJi!={Yebl&q!ofZMR-2|t#wwt)(zZAuoB=&bir7M&5ye)bCr>a z>x|+J$2%;0=TG*_nQ^Jh`6pMoOysWAQ{U9)0|xKiGYxgvJPtaM7cq?ry-B4GN!`N5iriFxp^~J$aum~xB%hCHVogdL%z62i_I?DjzZO}3vW7;z$BI?yx^um7-=eaeofLg_t4KkAA`-HUXiE* zJ%qi&erpKLwO-5WxDVh;46E=09^#U*aMLxf30R0*Zc5?(PE$-hZtdJMi`$fKn5OhT zPkaCKwM7Cyt9xLZ*M&TM;1;gh&u&3lh=%D2O5u!Mpv|kgUl-e7P<8*pF@=EcZ5z_1 z`Jv>-3e|3frv?9`h*#ExUFIvRgpYRrs4^$r74_VvHxC;?9vU^h3sUKxw(`_wm~N#n zl)5)Ht))}%Sc-Ja0X4_Tj#R<(nVdffj<=5xY_S}rEktz+-#>qFX3S zo`%#7m(S`LirwzWSD&8hmhVQDP(tP7*(4!>So^H`7)l&1b@qql#sr{F*jCA?Ex-#C zTHB9CMfuVKQMtL19zjKTBwO0ue0VT*S*2fp#Rvazbyu@NttidE77Ek&N<59|^MR22 zg;}%&mJG{%@I?N|s6{)AXi?qv6=o?(im^!y1NpOF&l1eP?&g4>QLuEZGEEDdqYOzT;{;D>|GOi-XVnb1683K_gU2AOLkqh5}CRUHt841opvJxMM2Ux8iXrW{$& zJp5X!S)BAethr9qY(0XugASNTp%|ROfdw}}H)8%LmX!(e4WxGQV0&IW-3JSm43rL^3hzV$>V@&-X_bizPz345 z2rN(xCj3e$hse{@&l>TS=&(@~wc;}|!eUf+8-k$50E!>0QodN(TdhT?K5Y$ zqCFQ6yw!w+bXHXf!jU_WxPv^F6?Skmyq1GyT;XGD0&V_gNUAY&G>Mch<21IjfU~R6 zive2GYz?3scqdE|ndTXzy45(k34kzP6O7vd*d@s~&uHCeHh9Z_^$EVd! z(wSO%A2ImRg5B>PzH6|c&qc(V9MPQbnc3-VZ{@Q>5eTlmY8Kiy8>-;EgxDe`GThic zNhVRP;z$JbB7AH!_yfx!X#@-v6){#oU#Jvzq2-r6$5e+nrh9WVpXt+s z!7ukdB0=mVvR70+{MLdXwMZ?r6;@_=U^UR(D!GnrfPE89qW2ACQGKPwZU&N?S@n}6>A+OEmDRaU=`E}%6QB9Oec&Dg*c59 zJOYEp-+ydaYKgDPx#bNa$$f^rX}^8g1j)~`M=V<5uO5Mt*gY+Aj45I>jX$7DGrt4* zAVbS&x+X}9I3dvK#c_`mW3{GHFSc<&&jF(9VqWGinKYVAV(WG|PW1(3VI~MZ;=gTe zoELMm&1oxp1ay^ey}{UeA@2Fi_HI_ISaZmK>ANz{New&bluuE zg7lD0*${r~6RV>`u?GY4YmX}al*q`b@#GF10J@htN10&4SPV$a^>V^TajU zt%GApEW}t3&O!OvZTnDd{ok=WCgm|j(A4uz7EU4jm=^Lv7%BltS_AF@V;t?_HI~ z5Hdki_XU6dyVL>rhV373tz|~QE=%~v6{rOr1ZZ97a85NnC5N->)fV&gPaFMg7nWB8 z`P>1JsbJ;Ly3G81%ffR_qBiOSvnwCNQYx`HDM^r!CRNiHTx2YR-X8T&H$8*uSHC6g zWzKG=1|2#2S-)ipW(ju27Qhtq5^B+(CTIDgH=&}n&NfV00SZKcmptGgy)9bTGBXeo zl~lIuw(XCH>x#Gfy!^03Z*F+!jpL%r^k}>YNE1_hT!RGvUhbFpjrwzF9dMpDox&|i zEkC<5uR+t+y0SVrlxm_nLorbnc;=|!?g+!&9)E7g7=l6Ka1ojoiw9^C&fe`{0$;YO zDmFoh)=w^H_4%blygaW$6{X`NYmJQw+yxSx))6}014MY6V|65o(&C7u0Y zCf#?utWrv6&bNor+8(v-0qMPR1BxZ%AGYU~8DKX8rs0#jA)8AAmBDK8i0#rb3jsZA zT}Gb(X7}>t$jV8aUY%yXtiS$6Kr3_{K<0^QKnb*|JI>S3qSrKB5?K@hIu|F4ysP;6 zppT-?r)pSTtRQO=Pz~6dg`U;X9>1YM0VSTR?W$pBd>ipEuCZpLzz}EmZ7fAOr+**( z_J|~fVx`1u!mg1WURI82Q}W-v*3jNc1!hD2rvTgQab@M@l|9|gL7c^urqh5!?Voq6jSI~*@A1(t{Dknks^b~$ED;a^d?6e=uC{|-_XO;*_a z>5*WhF?O4HH?@x1UL(WRaHGbtF6s}wAi|ZJhX7k9rIn9!=9}iZY0T0L0B^7;0fwL^ zmznSiZ9LnUl|_SiAKTjYDRqN%AI@Zo z7g^2~Af5gG0YjfmAL(Eo;5T~t0l`v1ItFJ-XffBzu*YE4fn8oCNp*&AEBYzR)|J*i zvnZMT^E4~Bp%!OA7NahBQI^TgipA2b1^9e2KH4bgzCRsm>>;MTcDm>y8Ix*M&3sdV z16l9MBoHTjj`qH?XEs{3+HU;Hpro#OdKE$V{2JUfLiv#B-|xnA=8IZMAk*~G za6)Y+rHb>r{Pb)u@hz;|INrB^XHo}LQR60g0@Fa3upk#0SYtn3>4Qw3<-e>ZA_byUg6sylp#OSrN4CN@ROc|Sq1Z*dm1 z10fW#T3FZSU8%-21D<}4Mn;rFs+ydK)5Xg#os+(;kfQqhq~p3)re^2;o#Y6hbmO#EfBUmnM)L;>a7ax)FL9EPkh7Tkc7(D z5=^}fcR;Iz{n)%04&HiN!&xPlK*MDUd8C7~RoAm_RXaEs2@@xp+1t)G7n znov9cK)dW}Fx`@t6Lc-wKa{aPBeLY5BFQ+$cUuN3gZf5@% z)-J#MA=91o`aid5+sQC4;l8?IKK}EyDE2$c_}lr5FPM=Sq~6#<93y4H%vpIpbTp=5 z*6gHx2=HcG)@j_}($g<~X>+f`3w?tiNyP3E*-#tk>J}swH@Fv**G`Rck}JSxzh+xT zt@vd1SPLty8>C-@u1vX)f8e&6>tk=2AIP7qE6sW-=B9&GWE(Qm<=DDW1 z27cfyAhLB~cWsCEO^|-%i_hgH)dQq0T@7`oL*QA<81{}Y;c@H(cq$+d^gi$<%41bi z@@^#fuuW;e@?>I+fIw8Tll1;~ks6%G|SvJo}uptxr8u?mHOJG0o; zkBGyIxUZW0RSc=B$D3V>uwAm9ytu*=D)(Af2-__-Lpu4$7k`##1BVtdNzbTspRdo9t%}5{jDu zTLRs-PKoIW@bCCJm`GI1Ue=8|J^;oIR1V+hf*1ySXwFv^$_BiA9Z_&y7PB#}x#p;Y zcJe4+&||bIg6Ab73bO`IsD9HR4Tyc*2~GsuDp+mx_lfaF;MYJ-G#~oGg4hm|d{1M8 zOvlvn8;mqulyNVt02@%Qlw+A6sc&Wui&IyJYESu{l=7?QQ7Pes^5t62w=UWR*~o9( zU&|d=AKurob&Zyog72w(v?$)oCq6@#i=%51?R5Z;TuSJ@)Isq7M)zl580qOO3Owoh+C3H?+g_IE0)0GtH0(YuksuCW%{80&@6k)`BV^ty<(%0y9jwAgac{1M^ zpD|3pZr_I3gQ;T@|4l*07DD0Fr9t31tr7lFO+dbEHsAj8P52NW84P48CY527^TG5d zKtylI@x7E$-qQ#_KcS|<`v^{}x>$ED{9^2tmhS}o4Um_de|O@`6ZbIGyCoZiElZ;p zcv&jcoWYvs14#=bCsmb3W3rth88IgOI|7)nQ2S(<(hhun_M)L>pAQ(_Wx|@7U?h_` zp6OYpf9Ba(A0oT?Z4@Aor9EwO#ezz%TQ&Hk;8ko;uPq&Go25(q?N5B6gyIWk#m~TW z)CtrYlBuCaeoi6T#l^ohGHtss5kzeH=dmw+ep5ZfL|UH8`{zHFK;V;hYwWzu%4i8plTZxi2GMswwR(pQU|A#{IV0mM3sA_vlBGpZzFpi zwu=20q~o6$vFdQaMBYZ;{Z!8f+g9PZldhCd{Jt*{w^$>^v-adG%fpBKuTs%cDPBnf z_|)dRxAu)l&Z;3=tEor0lh9kVWzVP{E`^wSfq_7_AMEDz-`W-NyINR?4Eb;KPg$>? zo=e%siX*h3yaCi@>y^UtnmH0~kp#98{>O4ZOCqA@R)+0z`+y@?*uQFN|1-@Kxp~^e z#{7t3m`T)%#c1CbQQ|Vx_7DLJ242y|%8Mchg@S z1u~K_(4=7?4h;Je!92cv`~J#V--}rKljesq3tBv=EXs)@bQTQ2i;%-c^U$XzgUA79 zApAI*<^2YV(N?Edvd17s=DStyXHwIUErzWN|4W=8oX|es@B5y*j)wn~FdYZSD&{8LM6D5{1Kr(SjpA1`Yj(wS6eCcZ+>YsdL_& z;|qYaJVSx^Y=U*gP#%t(_?_D;8{_cvE@1<6n-dXQ6u&Z;rMg;g{@Jy0L9S;`ehTEK zrW9mYQk@qE6`3SR8y*N$ijqpj?Sia!A1O$G(CziIsq(&s`hBI6X=@$S5$I<7Dq~(n zSv8{mF+#w2UWo6qv^XDpEblyfrrqX7P;6atVAW9;y!$2 znp2hNhTn?<+sKzGx7)oPJK2S3E8~2iIP)_+j}JKhF)XepXVE>YE=)gi(*V?nju6DH z#BKoO07_fADbnfsAeP;e%mH%}r2e(F(a3+= z#s=}_Rkk7Tf*bMP_A5oo{o89O#SO0+^yDT~b0Qb9%LYOvGKuj93Th$WvBaq=s|6dR zE8=V^_ZqFv&9tpb1i3krGCHw!?&NkVCx$f?D1raBh*jI!R>POjD5_z(IuLFn`TbvWdg6dhI z231ux(Cq~bM+0`5UbIdA!fU3i6rvfJ-)P<}qwh4&#?uwF+EJaAI9D7*5{a*@Md1;| zk5>lEa1l8N>T|N~xdX#*o0bR%m#u93VkzjjbNwTSO8jN-!w0y(kmXDf;~Eg7K{60# zC;m0Q88iS+8rBmg{frW@;?Ih9LVW6J=at}$Md7;4&O9CX9R?`rB zj!xljxrz0eG@M3!x%_f>QY11$R&seT#D>g2nm*`10}l#Y@(+~)<78tPSFLos^i-k}$R4jZB;r)GhT751mVMfDxu+Ktdu zom)Kcg|dzxeBL4oMq66xqW*h-CV2jqSY|Zd39UFL`wTd2K`N`RA8|*-4k-k@Ccv zJl>bd@7BJ;lR>O5s*KaFldHO)Rjdh+dbPS_5P*Ii+Vz~`?c{VG#JRg;PUPt#(p0@= zpH2%444zbcI;X4SQ9fm%%kA8x7J`b>%zJKy$Oj~~E@mD-=!Is+)Wzr&aaPVaSAHhU zW2ptPr@Fb`x{D5jt4^E<>|;u6zf*AB@}392;dP}hl0}+!J5yrsS<_E%)Qz}L&u3{l zV$zszj|4j4j!<8?3zd+rA`U&~L^!nk!F1mi>+aQA%WM)5mcokiyya4~Y-3S)-=Nw- z3FV)wsN17K7q7itAX6p98?tjI zyb=1I?<|HR1~OD@PNRFL&BXm5)@j(7+-GD^lNgV;ceN0#OJ@sIFbngBR(HZC%}P-Y z?m)URIwXkvn3@(ZRCoiu2)LDgU`Fb;tuVYp%e z7zQP>PqhMmNqL+-v#-yUviui8IM$5T7&cp0)qHsU>Hdq?_q5~K;Ghv56vaL3n@=L^ zkb{KC!<_A*bCiEQtT&4L`Hm`9)a8Rc%N2@!`WzzqdA4L<(!Q(L*oq(S=BIea$u&MT{K~613Gcu7vRow^FbrC%gU8LMU*-V!%$tU zLH(C;w5T#6nzV@jF-FuwmI0e(MJ5a6*}VPEOzea^Qz%et*1u%%2uaDHj+MDQ<%vG)LU@}cN5WA1 z^#h`q6G*DLzl@o-m-6<;r@N33+hK$fpqfATgr?r;WdW!IRnfhuwE5KMW<&mHda8yV zZjgA;M@z9BX(IEZxen;kmlyT#EO5p*bvYNQZF|l zG&V*MeQu)r{6Srr6N9a0z`xG9PUbs@uS>653RHH+Qi#K`6%dMu4`E&XXGu$R6^|K^ zvN2-L9us%Ukyb_TVDj_NxweqZXs;n&w#U73guOi!Hn$BOlwPZA<=lF16`#^{w-nlU zv;FM~b%~?`F;3Ah-tftt##DYy2QF&R9=J&OUN=5aan+T<5n4(qcu}xHKcsA41lM%8 zNtJCc;zfXHp#dD60WceZWED%5a+&n1RpfXHA0amqi<=5hzzO z&M1u}UVbE>GzwNs(7NpX)!Hyrl0$YZmL|PMMqS-u^qCiR9BP8492U#Ci|&u5mK#NsiS3klgw0S$HyY zm+BePZ9;X0ZTqc@b6;+P>_Ne$fuc`05ax{})Rgqe|B9H8RZ%F{TBO2A2FdMN%j;lU zo6OSFui`UIgK#7TSD>r+MtP-rZt|T^&$W#8no_nnL<_pch1?N@! zix`~8$}bBTwS4OxW5aJ2nNH?DrS2#xTVN4pD1=zIujO3_viLb2FbYk%w@hsc{K%ma zl{y|rr-fkIwv^19UzVt*>iRAtGcp;d+f$ihl04%}G<-|cyZEvi3)$s4+wD$_D%ehL zhzE3bo^Oz42QGnEyo%OvR8>F#**>t>4;hrDJy3YcgJ=aJg&heMq}!`7NX^j*78y7y ztIy-tf?iNd0%Yfj_U(I&9^A2!;F1bmW~#9Mv&S43u1Oc}wZvqMdVnWb9Jed*xekr4PX$@e6(Ctg=*zhdBILD4^ z84h4qIBU8y{#mc(_8LeTN|P*l^jZhD^qh`S^rl6o#7>bTR3siTbjIz}h_0K=<1e0v zfm#j0Hc28z5{?RD$Uhd4-R+%6MGFNfkxAYsm+o755^pw3E8d($Nd&UjYq=%iy$^+Y zdKC3Du4s`M7pF4RFwXi-ADP8)#5RYIzVgeFZpEzLj-{beWhK4%E-vQy^BJZC|6U|0 z1RCk@!QfIvKpJ3y*5(~ZCnrtv#7xL-SWLX?*NQ8o%!?jR?4Oil#Wt#OcADd9jR7nI z?$#JZyNe{DAINgUdxX($TW!ozbbNA|C^0Ln2*Zbes~+SzNy8QuLC>e1(Cq)zn;DS@ zyjto}XdR}d@$+&k z9h1lJnlwrrDW~LR!WE59Hs~h^7cN=5i6ft$wbPQWl#O#D1aB3Dv`@I2)mFA^3CLCD7D6^-SLl#;0&u>%Cs83=&%OQ?f+9k&@9y0j?FPpSlSO9xR8;s zR69m$n0^bw^SxfdT-Yu{c?Kj5QyzZeM$B0J(m71I&@j1ZhVD=PGX;b-_dk+v@^Fhg^QvBAlc5EyX4^0l54~n*E z;J32jq{J_sUVYEFJmv5vDasZgHFQ7Na0$_qz>~Ajp1HMVyO*T|H?68@d?uF?k z&%iX16P<25{A{o5AH9*wXzBVl?v(mH29o5>s+K(j(*tQWFB=`EMWP!`q?;Igiv@n^ zWW}F&rq;0aFW%@c;_rMhHv8}nM%-pl@IkVL5b*Rd+v&8Nv|S{zlCN zwg+EfPP4SudvbNSldJ5x;(Mwsq1F?4vSfY>W-G&H-n5Uuj zkh2P}3oa=8jE$(b#SI+D+bNcX}ep-y6xx!*qC75zW}cZeMdkp3;8Ld`0*@Yn zp7*<`oqCZBiH9)vAd^K@!O^+p5(!ne5r%C#3)7gN&2Pq_#v2%s6lug`(7uZbTuxl^v!j~g$~eGSXy>ofLo zS-$}Wo?b)knTEQ#5Bh%0RTrb-T2LF>RAZV{nNWEw;OAG1ZTPRYVyg?oh#gKcI zU=9*nU0n#(cSCis;&;ax?8DHIE9KNO!d9x^;8uEv&OcKu3&G40(U0aZwvF6Y)NnZm6X|il~$m~k~7m><#0A9{m6Ps+d50u64^i6dV zFcKY#aI*NB3o69X2kQ=O_*gcgwmG3=Dtqji@W%X6{Hi-d=)n)fk>AwOJUzk4J%Q6) z*eAI!l3-?%EsOC}8M1PVB1ps`XkwJl6NuPXs!qJHF%?IKO0|LJ-w7xH7fSDa9EO>n zNj92+|T+Pga)s7T~ed2bBZBXN5DeAk>R;)=!xMiFlR zt(g6AmGYc4=~Za+mG_&o%|<@8?E&zqyMgk(0PaYwQ>?Ip$pWC=*~xO~hgIka;jeu$ zx*O*@F6YX7Z>7QG62PLc6kf=5=qMl;f)e45%dZtTHA^8Qg8{9`Yp~WW56=yA*DOR@ z@}4N|UweDUz=CvruNh2VVk8<_bEKd-q~5~pg4O1^91v<5%Q9D}9;CT(yPOTT6>d=HzLlN_Q&Ef{Ul1USSH4=lIQ zi`gAkGY+scZfjf`EAYHfRUuY0wHm3@1q_RRj{fbv)#p)V!#e98DT)e~Cg+M@iMVfy ztS&o{49`rFiEalo)SG$z5WCG#FdXvSO9Q0JU|DSC6v}-~HTBcF26RIv$6Wu3-?S#m zb--cZ{Ig0P6d>ZJK>lbvupg)bs=Nob?yWK+ZG8@wPRGYfCXB);<gY$5g#b5j&15wW1uyTb)@rNif9UE1fYXU6H5BzXBnFnX%kKUd1f>mO z6_B!>{Elbn-D$@dru1z4SzHY5>lg+ADXK4aiKI{z)9nVXWi!#zs#`r0AMBX&!wB1RxAJSD{Ky&yf_Gcs!w2C z7Q^}-Ip=rtEh|RXiy!b(58);k=key-!)gC$B5tOLr8O(mn?to>qsbee4_CCxBLwtD zy)i?chnq)7EZ{&t4QN{v3GrX&WUA9|zz!$BK4Uz78o6DmNyd(hDvGm`E0~GWEJ;!m z4pSe-e+K-@vOAkknzzu8EFB5lUl>kgimhr9c2hvHf43f-V-$d@9IUh>eD>Abas{0q zY*8J`ag+B@eHMYu;X%pAXr2RSowAZi^5u&-_p`LeZrk(t{1<2M+$=R#&IAp}DUUM@ z{)k>DNHqL6%n*Bp)g_KtYj`a^&&4t)nP3{k;lP4Zr^7v4f?p#Fh3DU=#LDOeNOgp1 zyhd;zaxQZKuk1JVINn`EsrUmuxA@(XhcpD!F0ws4^o0t1kLp={Zj?OI$0v~E&(j>| ziygxR+)aE!u$_U1xXDGk5cLS-Tn56)1&Xx_B;Gp#8t1}O+F53~ zq;@Fp>o<+b_gE=4*)kWf!sp$5Q|5xEqk&qs*mJSvTBBmeL;`MO%ocJDD|76coTDN} zVbBv?sUMer4Qwd7I=sq|n-Ii`_ceb;z>7C=NmKb(iXzpT zL1MVEpO|R&BLCUr;obi*wPe2DZl1+KY$d8=F^qM~Fg?y4prj$67;yUHQoU5OWA)SJ zkVL|maDB_2pkY#J(Kz~3i4i*2p_T3=3lz3w39EnEb5kEu^u-5&!}=<+g6F)>BZull zF7$M0JR5jXN4xmqUaIn48Qw2ZTB&}-Kt8jtuDQ^*CLn8IYy3V39kbIXkOj3Hw{x(` zxC!2v)45hq5!!^VXq$w)w-+)V1E~V`AZ(%Z=k=$^P9a@;3yV|JadqIGjy0R(erAt8i7WCTMh0e#*8{(x9I@->;H)Rp+C72QFm9oqkOk^I#(4K{I#BmEsY|_Hi<4+%x zz;BmHZ*VkuN1f44an{O}wU;;eBMQv4}dPU^#RRts%?d2CG3mD#^{vcH1Nh5&u}P3H~FF2(x3Lesy{-gJ35gdd}5WKoM#1Eg)m&VN^J zgqdMXI|kVd02@3=cPJ$wKjw-+l%%t`lqpwD(cz-xm-2{lxfP0w;%i3ve|}Kf^{>mm5%eL&#*uv$^n2f; zm!cD$io{d3rS3WGMb&sl`SEsrAarA4CmOy$Zok2^$~nC|tdmcF+#?OW`Iw|!eb8$l z$sGkrRh)$7$8H_X6Lwl&?kb$d<96e-r)se#DxoJVw#trTLYM{B8;dKmD{lmF$-&=i z=Rt{k{II`V`CY7eI4}M7bF1ocs;AgRytyF3W2l_iVIoM&am|HhTW0O28R=X+G2^0zj*pRyJYwXS{K~XsH$)3WLB?g}TLsU{G z@3ATu3Y0EK<(2Wr+BlR(q{z-4b1wkx2!}m3RFfGUamT4xPp=tD;bEj1p@7V*tgTJi z7XUIjIFTlVyz=!2GWe}%2d`042mTK^$3bm<;8>u`+@Vliy@cqDW=^a+Xi8a=d0Euf1n#23G@iqAr?#K!dAqxNKrLMAt-}v-y zdN)>XWC~UfbE^6&_9@SGCv&9j!jEZt-n1onaxaBUr)r~+A$(x84Ig`pN0Bfu^Z5=- zBOg>M+_e;X?Q(c*mSIC@-aD%3F>@K5swRAkJSvzSnK)npk8CTclWZ|gY`nVkY3QKQ z5(t#s$wi1EEuHiD*pK3{h;Rc@rr*36G#|RVx}%B+Gu~J z%$vsYcOhRYYI4WQUKjqZVDM&{K>K~Klrs9O1|E;h0`Mfp;_Yn=aGr1lFai!Ychh`M zFUB@M8JCJ*AXxg*68feX zasQoHFDoq;sq>(xGr>K!)1(=;Yow)iwXamag{j|3`{(f6{&!Dss{uH>)@$6hHs;#= z3COVWuB$Fv;#^l%z@jiv;v?+6=VwCh?u)9iDdN|3=#5D(fnPB~yXHyy6`X}ZiVL6; zKOWF(K)!gBE7x>K$HJ#*yEqFk<$mKA1H7zaMp1$ zJUK@@cW>_7O1jeNElD|l*4J(S+3DliPO5DM}_$ zKsmQIejayPdfROYOT5mj#kQ5cf>2KjG}AArb>n$FZC3WP@nKt@gU%xm!Pq6?!gaI} zqX5SJY7L+<3?F^FvqDq;0`#1aw0=)g%b5yHT#(Bp_@@ZiQwTOB-%LY$ zm0H@SGHnd#Qo@cPdFVQwgM(sW#ux{ON>eBxU+@`Bw=B-PD$j56m^R+qO*FarBfipe zeNX~ML_dP81<#AA3n^S#nB&W*g3Dak74L}!*_XNQj(N7VFY07@!xsdAUknexeC4*P z>}U5rkvzt9TS~98?E`bnMebzCtqtp%sg1Z1V=%rGRV`Uf27gy6UCrf)(`3xk46Gg0 z>9x%_GrQxh1M8A7h}^_UCP8Bw193$2DuB5B4IiL1q=8IJm|c4}-p>#lG(ed#uNI=6 z%N=4B;QGCP5w|L0-$>#el5|~!%Z$>V)Rf&0rB&Nd1=+``KBiMGFfBWk8NkNuceT|@ z)|Ma?n^QXi8z{H~qlCdY=6f60ZZLIeG|w(xspqy@(#&>&DNM+hna&r1XJ@*;x%! z14BNX0d7lfk25>RO+%R89u~X0?Po*xUq5!pqI_UCkLhb#-BXYtK@y?0#84!ip zbG+lML}|COJmtjSs7$Q2Yvd~-wd^-M7~%>mChqeJwIS4^gf>p(Gzy^K(WZKTrUNvE z?hBC`{F4DF;)Paj*we>%o-fDkb_h*!lvt$%@1%3!>^P5FPwe|2rBEOg3hAbRe&07k zO_}%Gq#VFHbr;JBald7Uy3Zz;x1t2PTzGx^)-?ok(F>HPL!fhPok8nn}zf$5XlG#w+U&^W;vhLeA+5z zYrEQ*+7SE$gGs9DU5n90%Gn#KHY9E-F&6=Lj+-7~9zmn5%TphI$>K%K2`L%bDExU3E0? zp)y{drb=h7q;YP0=PzrBy7u;?P2cG-1LfeQbFx+ZTy8~^`GX!n`I4r42sJRn7uugp zQahU+|D3& z8EpHkN73q@Y;&mWfMNbvA? zToVo1fNi>BTNe(BY7RV$DL__$sOgFy=H)ovUyDR^=U>*5yk&ySM&TZSf7{}Y7oQ~4 zU2~L(rD4`Rnxg+#%IE$r(UIPYa;Ml~O>&q(GFuvcu(@;2T9invCJmDNF1YnFl%y@7 zgV9L@DXmYNJBiTR98~wB4%^h7Gr@<5QI@I=%!!}dnE+C8K(V+I=bWT>?Dv!JzUEWx z&FquDd}2m8Bq-)z*}_-{^Q}UWXb5cg(`At11Giu5-TPdB{6toUbaS{)^Bz9YfB*Yc zBf34I!Vt6Ac-x&wuX)G%_35WH} zJ;E|z#{aLa`x%lG5fVnE8rkhuZ zvSA>(FwxpE%RF#sC5{i0)xPd_-z7Em#XnQNPpvutAN)ckpXM3#9y_(6ZqCm(wQ09q z=f`3YgJo*K)hhjDdhpl31|H$wWxJB2_G=MNC#%GA4{Y=wA$-LABPv3U%-B&}N>QFG zqXwAmwYDsBuERe+wx@U`S$$?b(EDmgtNkPzcC+UYo9J+^@5kwe4xE6}$C%hP&uuFm zbvjj8r+Jibh{8gsF17SKcvCj3%v-UNyZF54+<0Tp(RAi%-RYVquo!(K}I$RCzRajfP6YhWW&=DEVrm6rzP_-#f?x zG$^tUO2LWTI8BvSjJN5^>)qRcew9;I3!JNQNj;WDuMQuD#(q^(tg*OLb=w|4|B;WJ zB`vQB^`VR93L2%P$EJE&OgV~IW`CH~WLXkQ%7F88GQ^;Eis~)?M@V7FCiuvG->bvp z{KN6aEJ2e;Qw)%Uw$a9FA&))=%}WssC3Uh_6ZZlr{sHuNHVC)VuooFEwFy1ylBWBT zkqTEEZNcq~ch+CzvB$P0eu|4_D7wU?A{qi+1timI^IDW6l2uUs;TDRCtXAK z)p!X-zbs?$;_XursS_^TiazNU^36fe8zDR}^_P#ICAGOiz+);n5*ObSwj`+YD~7a_ zc<0cZUy`$*P#s)Zi)XjZ^Ts$20#|gC`3u>YmhGzzMpmTzx8F=CUjo%RAyrEG8{^$W zN*iRXY5*>#hGUnW;IiutEqLiA40zvCoNQdWNW~WCnl%Jlno$yT49N~mJ@W+HU?Xxs zaf}G3p=nnQ=O!jhBpNFko(6nEiP{q9o=GV89`&lR-CbK1F-kj&dQ=U$L7{gQ3D$WT zc*7$i`rW;mhQc5f21$%&JZLn)9NRblyTrzjaL_i}%s1=juJGCX1n*=fNa1w)z!3>t zPa9p4wuz(s*zKNq9!5LCUer2s(xA$g=zBg;@2URmGqR?Va<*ttlvY_&pLW%n4X(=z z?cRBjhJ{NZX287aBA8=^@Z0An9x6C6W~c2wAL*WNHv*C;Q@q13X}~QjyPU|?I3#g7tioZ!?SQ+$mFdDS~(h4EWZGR_Gj7^E?O zI^iz?8q}aHRZ*B!9ZBf%+?gTlox=x9KMH$~jy;x%AP@Bu9j<@))2R9L=S(uT?c>LZ zeFxbQ0ED63UTI&gNlv264(mJ8a_YJ*hE}@!&V=22(Vf|m=Kpnbe_tcG%$R;gE6Jrd zz<3n;Zc(kclQ>{-SI_Wc$41ePZyJap4nIv!jZKZl)Q!eE^6mIIy+;lyt6^?P(xVdq z)FYs0Y{Su#@=9@4eOj@XZQfR|vZ{)WoW=wwjVRUM#-l8T;A`CVUG|h7ls#SNqig1H zYRl}n;qz3K7m-hy_y?*slsz#gYpXo_6STDuDiTC;hL3Sv+tHm8GVI0o#E65VM`o{O zh#j-$4x3nprc~$h#N%QKg-)M0!7GI>kJdP-q^>|aeK@>px}l}HsQcs>t!h;=ltLIl zZ-~M64Hy2ZhnYwc@XbTiPg*hk`>)^r(C7* zLTW0-?<4(rJm_q82t4$3Fw(%HF05kP&96Fok-kcZ5#xD#aQZ0I&5i@iOy=0X4`{L0p36h%pk%HbtX` zLENpgkBh#~T(ewK$9e`ESTFZ87{iiA!NT|Q`r;K`wBa3k(G8A>mP{i5h3~`Cb?GK8 zLJF3;*^0Bk^g^b`nJQC%hVVT#0Gh{HbGNX9fPYotvEKS;PBBju(X3@LVvX&>J1%w` zK#fw?Gr6+fcr*D2P8yH0P!_Kqx~5A-6!#kX8%Og;{D)9pUzonneoe1Yf40`T41xLv@{86`9vBSagTBOCc%}Dj6li7V-j+5F zK$i`5wVP{LYX0$nwRx>wppaUxY?$?tmL4_MYjrW3X3;%*-G-PDV7^P_8#e_{C1XZ~ z<(|iW1mxTh|4!wV$DBY)PaCbRRuyu`W`z#k=BkbRB#3xaN#X`G*6CY{@*2wCW2P%-_ z05L$$zmA7qRqQ)BzjnfZWZ?0e**iUOW_{FXy%8^NP^hZTSGT=ujIg-fqBmcIoL zFWA6wNP15gJ7ByRDa-Pb#6ao(L%Zn)CcOZnY?MbMS^wMKIPSt;|5E5I@aR}C zo(!`^)M>3!a`x&Y#u4D|M*3XH|mx?#~}+lKkd_$69vW-)$rfLDQOlt|<&gIz#`XpDz++ysKfU!!;( zt3dxp26VN!8D_?cqyg#jD_F>+Swe=8ml$fy?lwuYVwam7*elU03rsZBvTCq04G<;5 ztAA%-^Zlz0u4Rg5@A&X2y|Dq#3U~#>ZOk_V7)aLE(U*Oj9v*a?;_TlSlLbVZ7*i=B zkdE#E@A4+whKLTUirG&|^g^`qY3bm>35zVwg2yx?fBygPCYBkQbV;`DY6nknc#FI< zEZkp>YmAx!W?KDww=H|CTPB$PBUVJMi#DgmS}Lq6@}Je^j{IceIMV(IWH>|D_rp9? zc%cH8YhdvqZb-T9DRB$wL5xZW{I+%)y@;Zm0aIEgriU5zeWElrRX#~s)8Cd zfqQ;gQ6XDbT25St&#wTZhz%Pn#p91QTLUb-xNM!=TDPnMkuJSmP~}Z@#Y{zYo4<$C zC1GIqNzIcHVZ~W@Ks}vAw|?!M$gXPr5-_@x4QM4gtHnb(j%g`{>e$J{MhXdz!Pvum z`JXZ1FO07!SSA6mjGD9^D`N#@KpqZ^@_f>KSC zzc~)cs_y8k^3PWpb>Vs>0d6BC3aMOHR8WudZiS=wQznotd+8HJM4<39NN$Ssxq{C@ zFSTs>HE4_$FvC-Y8uhmn42gjB(g@*MtMlTHkM`e$4&EAZK%@wGuq+Pvaq6A;Q>NjJ zy6(%~%g$<3NN>}A&y=;nWNE+SL&U98wbjy$4=^ia4@>d(CTE+^G_ zX4XMtX9kj~Bqha=1H)<-WcfATbp6?*#ZSXJ6Vp1R*=b|X~*|NTJU0yCUHSq4x!B5n1&W#6-bt9Xz27F4W5 zN=*n6yQp}8M@dHIP+!EVK*?A@m#XxK&Kw7%MV6NKPYKELY#Vt?4eqNo&a%?CQir=x zOr^*jno7M`&ZHIj2mAIxsAjO)>z1_WMammq+$=A6YD8x95J(=#VNnAr_{{>)vbKVl zZ%M-38MhO!**C~^Q{($jt-gbtAqXLCqsM?e9>x~hej7ex6Nr@f#1D4xjx-m~`zeA; zqcUdW@RH=@wv?t=H#z{@H|FSp4^Gt34MjGPPWJbsF5!RW>4(8+RS+(7i^v6oO~C}p zztenrIhah6G@L|yr2CO{4ihS|>u8$+A6C!3wNkY;j&$d>;ulKlUI1cT_y| zMY?wdUJ+Z@4=wsIbMejn#}33`sW z8{zgtezKfxUISaQ|C6vpR>v;5_cUC8n@zgVix&C&iN5G;0nuhtR(_-|(rI*KokFyy z62itA&?mK8%;VHy#%u`kg4$qGxz$1<`tcPhI~VFq4B#xadhXIQ5kXp1BPMf3dmp=m z!8MREBz+jCp)j3b4qD42qGu9VVtbCIukESozppXG$u!Zcl(TlYAbYx~O&HQ^oML_j z24SGzGx^$-sY+2JvMI86dTHSJ+uq@^J^O~IyJ=tNxZD<&}GJF-wZ=(=@1tP1RVz3#iKH3{QQZHpuIMc_ALvR6dFKR}@ zvOY*m1I1XQ8+2u*{o{~Cn*W*U6KQ}slWmF>uoM3v&ldCnWa}ToiayPC7mleFPgFNK zc!y`;j+hI8WU|5GWeNVlDXAIES{FVd0eeYfsY4LPCnxb&$RLnp@2U-`gAa!n0%D)@ zYyI+vvdIO#U|m_tv9XMMWes$d9%reXVGc182H)z36k{&UMnLJcq=o{N>~LfsIp_VE zm7KE-TGP|Jg}iX`JBXb0jHQaNt(MsQ1(cU)d+StChE0{IW=0G3p_g?CE+-6kI+iLe zXeF~Ava((RU*u{*!G)57UXo@)2Fyg&kAne{;l0sgM1^RH2MeMWO-cDypzacs@IVC4{vpUr+0cL3<85&k=?@a zdPK$NS@S0<51bw8dnev6%JZj5DJ|+1%T&LXBT5lhVtU;YXD;u$JKoZE@g@N!=zv1f zn_aJ3W-fDrjGn!Oy~Hf~)u*rSzpW%|pIMW+r?CLWSs>V{30a zrhP0kwLO1quCNR*&e+Dq1>;Ta^dQ?^BP3zn{g0KaxJ_x;vHzY4p>fN{XQq1+pQX`B z|3ozOfMap0_5tD^uC?1Flf~jg$nnedXbEwQ9&%VgcDohSycG>Ro=>3)IKiO7g$IbU zPmt!>b}iYm4s=Q{>OrF9wg}IgRQnAB(!9RuIY2INsF!?k?v_)}VRL--fO% zcnqGz_ga2bG}Wa|-K!L9$m_kCr@If~IP&inf=?6&PfX{b=z6%Hf?v5X49pJS4@_1N z%n!|VDN--cF|4oUF1Sc@Pfvd0nD>i>Yu6_Bw7e;C+mZeuW5$se8ukoJQ*I8AlnlzM|m z1XmePvO?-Tht<_x|#r3dvqvf)sJ7!jyN99_1(wtwFIOEv_a(E2FC0r=6%f)AM9eq zm^HH0tLq*>W;Wu@KP=uhO78M$IU009G0RjDm!@w8c|R`Iq4dSlE{31br?z(fkXB|% z{b7&~)L8b!g&=7BI?1J2+!Z>;^d9q(ujfBFw=QoQyu+5$Gz@#uzV`O_teu5Zv@JVJ z@OZisQF9Q;R!ugBPT(7G?`Hl1+TF)*oZ|ksA@a;je#at^_!C*40NfgDg*o+Ru0b+5 zs%5@3dAqmKFrxR>u}|*HjYCkSOOCme+}yLJE=A`5TyY4@=+a-2h5T@!zvw?QW?Nb= zJ1>GNLKgxw>_)4-?yNM;;WmMR4i2uR$J64yeyFz8x8Zz5XiIa~-)^?JM*R=3G%hE3 z;dy;(CBST7R9y=HX>?!Sx`b@ejmcY;9s+ed2TbQyzAtHbb*%5^j)`BY>7m{)%QDa+ zm&~K(@NY`R4RB9jXZ)h;X!KEX6ytaiBfI;6b+i^SF65O?xZ20=bvnAxw?-iKuL~;> zi(Y7rxZWr|)LWIX{j-?A%{?uNsPA!NQk;cBT9KC2GZ%Uk7Q`KttXkZ~e-b2^7qi^{ z?a5Di?;i5=tnq)|CYLGJ33;LktpUke1t8YtIsqwds{AKc8 zpg^(QN+?=5=j zJWa7JbLcYZCT)RV#)<)(mkD4bQzTxsK}iq7p9(r3p*fy5e4M5rdbTQo&HNL3yeI!w zOGF)Yp&}Tx#Z(OnDK3#^Gw8$4gSH8=b2RkSoSB;u=sR41?Sb4r_A!2-DpcJ60D!si zvN79uzoRgoV6h;!3qOOszGh!%Q1@}?QWcT7C-njwHhnfi8SfEMIy0J+O(7j8QfJFW z(=iiQGLjy0pMZ3{VtGH;vz!$A&OeRowTze3qa};2G5+a)7oURBA~ORrg6x&bSGqAc zNmute0_>c0mQdBPTJW%$(8ZFw_Og4F4-4Rw*gC=4QpkoM63y=v@2>GR`O4!K|T!ls#iJk^nmnZY4w#djb8;!oBs--U1y>}g1@B0rga z19I$J47I!$M^(EF(F>JNP168xS5+$Z;#{=v2qBZrxn||`(JS{l-!SbXys27qz7go8 zR`lTN`#U31$dY`3{ij!fB5_TTe+<;m&5zzrDB__049~1bS@07z+U5n|bs~+AQ*GDm z%upWv@}Lgohk4MNfbtdHE6*xGoRa1>HW=R-Tvzw-&mRrrcr-U+2`U0 zzdW4_fP9gRJ(Wd2qTe{@@jjooLIVP!XEMoOE<-!nUkt>It!!SojF`~1cHRC`r@z(( zQD~b3fWghLHdV~CA9U_z8)fZHssw|<2Kr!&vK}<*fAV&Y=1_i?G(7WOWcr_sUyS{I zRrJY$;Avxu?4{?fG zA}C4778#`7Nf!@22T~(e6ssm-a}8q6i*$x=-9w6t6hZR=$XYdI&KV|0`S|^^v5Enz zlW{ZI+_5@R4?($#GPYVBxD32aAcp&nhShEd5sB=saH5@ zTtS(N;Wq6+Xr|6R-tp)8)z6fG5!Z|%TzfqwtZ}rp#9HYRToR(;tKq)fCIt#yXwxCV z2uWTOwbphN{fq|n+Au}vIC_!=MhI2->TmEm!PQ=)@6rEilo)$0z~;k6_3$GEpv?Hc z99thH`EFASx6t5^wM3F@9Esa-0bPywlx9ou0b$ADegp)kr1sYV7opv-0tL)rDSzSP z4MluHB>a7)jCwt@EHqr7Vx(hlgr2g%QrVtP76Ej`OAqy)vdP+poKBup159ndo%!A^&jL#$wMspQ|?4bcK$Mo528 zt81v+jRU>q{-s{;B(YqB_e#Ug9D=A2ka#_f&^v#!&<#olP6@uW(y=s)g~!>-y;7)7 zF}-NEtbTZ>QrTu=8JTaNap`^tys*l-s<5o!=i?M4C|^0aFAarwrh_P)aP|NZQ*}`Z z5~(l#1<87b?9!Z!hOaICqtD8@UZT^9ED|2M#d>jA#;*vmqtJLg<1C5jj`FEJyZVsl zg@{p&AVoOMEjty!!64tkX{cn={_H_^Xjze>;>#h!HjBbRh)9maS64N)e~k zNvDA*F>u*80!K(iG|8b9Xq-QX-&#QhgOYJ5=rG1e-nOjEvT4;xeen zUa*vJ>lhbjzNorU_U$Lz%;n9LA`uyQAa|5Eua`bDS0NLz;GAyJIj{01BKulC3_&Dg z9;SH!voE9r6fVB1-jp7EvvvpEr_lU2STRD)%zCs|C6Q>}vhg=f7!Z_w?fG@>l|a1+ zo}ZkO$BaW4ddY#yVi;h-r}~e>G1&KStmW?3Cy@<(hP0cnlZXyP^6=Caa7lc zUXn%)MffyC4>B=gyb~#iB$6CDpYBCny|-xj0;b*@z1s0xK!|Gg{pHTBJa^@*u!&9L z;vz21O7BK=TTOx8kfV5bf%KM2ZG-Sku8vh|-RP-b5B`$`T_Es3HctPA#;}_6M@S@~ zmAMSnC@*mugCc~*S%;r;zzGYoK`-rJW0z68xv2lQ-b>VCK|K|O32LZiGw8yY9 zZnhLJ{}W4g6|SzKN{me;8FY-dVKFBc*20sdfhDk23imqlKzj;Eu2;e zBW56ZZrW`LrJ`dZ@=gafPd3pX1(prhw4#rx0g95{C(1kf&7=jSUIPy<(?S#pWS`&v zZgjgV4b#axr$(dKNr135g;yP1k_y&MCVUp%W+rsq23sB`p>!NG+8y_ROyRm^H^ z*&7?_nWyR>oZQ~Ep~}ZT0tJ`qN_ekO-*U)?fR8*;G>Pai70Sh^zb4Ud4(YbAmb(8S zGY4-W-Z0L55UVz6|4rkr?V0#`$F$v@bxhmEaLeYHfSo)L3bn2|n-YtS{}LOYOpR$h z4Ep7+{@b9t{$fV!eu6yL@r#|v1q*gQp+;Ud8E>t{@dV`@ylofxlj%?n67%G#2<^}R zjHp6VV>KlnJB2}988I;>f=oCaA>X7WD?1Oc#)kM#G7nj=p`EcSkBl)QZwjQxuH`5G z93-;Q^sG^kkKWL~X+_plrpkMKi@%JdM^AZp0bIiTfWw;soEOh-KI0&B05|QS6gMa1&Wk;s2Tn_9!%zj4LL;4`Qlo8r4P z%-B&E+(Zr>UX_>tqfb)+`$Hmw%7ENOU-RJtL-oh}V_fa({?ym%PyH01KNI5HHF4sN zozze^N2kv;Wa*!0hl8<;wP;N==}kCnDzvLw#eXNyq{zpVhGOTy*{mY7+dp>g5#~g; z_CXIg0|Gia=JuM%SJkV;ckJWJv6}f1akHAP5P9!A(4r5-tTDr@rasDx2bR7pI3d~aT z)e7F-J8ERPHdz{uv;2{P7k8I0ExkD8M zai|@ln3&l+$0Fi#ad4xerBOm=nETXO4R!bp;>1h(?q_LQ3@V=|j+l+u&dW>obrsb| zuzb!Nxm0EN=$@&|=HJt}0{)(ANan7F%{(ti6?lIKuxKG;Cy5R2S%V_VURI|v#$vlv za#TV?AZSfAiRNZ4`3pdjTz@^*TPHH0_^2>j*p&DRKm*r9*QwX^S+4fWNKD0F?occ@ z{&n=dHg^Hanagf8(6qLJ2+hlzv+X0gfe-IVi_|?3hwxMl)NWaz5V*RyM8}wf_FMOx zHL$xVX69;w$dB7`G#XmK?CUw#WF4j>uGJugHudlx92Qb_C)L8lNYQx-l={5%T3zqV z%ZW|{ovWfj&!dgqO1KR(pEbxM_0@^b-*jEdu7LX|uec(bB!)9V+251$6d=@=C4~x> zEG9V|9O^vFjjG~CT22_yyKV?LBU39Kf5t8Mmuf-27SS1bw0Ezln}i$R?l!OHq07%` zr&!RQ#N3KQA;3Nd{J(<{z3W3aC{1ZcAIvFd^PB`Qh**``TBEfHuE|kYJLD17XcZ~w z=6oA3uy`wGUrgRE_jpYXI!9xxDHqwbBm6}4XUi4mk$isfNK78dnmdBYrWYIT_`wzz z?xe&uK5$pX0wAIVxzE~}M-0qW0ipX8dmx($q0fc@N~-5NU<~P$_zyLvVkc@hYUS&- zG0JKGR;+RBeQGE)ovje^xJe%pAgz<3`+2w2d#2(cEg(XqQIm$Erj6xeQv!|$FSM-s zObz_z;iTqBqKg?d9bwJJ@u@t9LLZ3buN=c-l`YYXZ)x{5U+Id4;3$H;!UJ}uN@QzJ z?jyxnjm|1HbKW0Q9BE*u$46tfGEFIe-c*mT(H+qJhy8ZU3E#+9;H}kq^8%k zz8UfC-75Z5f1Wv&pau6Mqo;Scp!{ZsJ=jaonoS2B43n{*4!@oOr>jd9Y;?Bn0qoO* zyu#sdOOqj1&MWzKF?X2wW|Rzb=B>5}7iL+h=@ES7aF^umG@9KUxdK^Z^s{*| zO3yyG%>4|v5+~D;^JW3~2vN+rLKYeI!gwsi42`O=Xi9{*7Su^y zv~m>D9p$>oD=pKIAOMxjJ_aOgXCrGtL3X6R>}>NjF-rH(QDG;9l$=9>ouE)YiCjm8 z9;nQ}&J{OzM7oX@twZZ7w2{0QsPQ(t-3O-wc79MZY9jmxxu26{Ldtz;Jy35BTQ>`! z0?p}OiohJD>7ViJBgKW$uAHOp|zvi^z|>U8a7mR zaT|Q_tf6NYj+|E(D$^ms zn&m`0SNd9HC8yS9fAgSjhH zPG@x6stGU6ko!QYA1d4q9NiD{C|>cen4W-maq%f8FT9w1A!B|s%Seqk%s}9hFJLL? zkolN$Se?z|L%6>+N)Bw;eG)ujVIG?+^fHuRPYK-nRrL~9zoC?K9h!6uzhu=o&&DP} zGPqm40nGPD*&H56jqyv~5Oc|kxBYh6jWJ7MPamZ9R-ug%t&nAD#tLDITi8}5UsO9S zaT<5+D_lt-XY5yU&o2`ruCP3taJbpYJpEp`2*Yf0r+@0JCyIBMFPaiv+CzyEn zfR5+pAu(h{&-vrY~Z zKF|V`ykF^Zq7T72gsT_^5H4B6aoxO=Bv%xXEEM8o>x2mbBO#L;01^q>eIoRMUn6Tb zNVPPAxaAvEQ9}Cs%7Ch(zr*tV|Ls`7W=mm_=a}ZyV*oz?l0Vp0q4rN@AN+pcu=)Ad zP19Pr^`B1vd;VOT$&TSTaIH9NPHr%IALMw#n0O(7?5<|bVj3;;m;Ftg2np#1&MM=# z@_l;r!&Rk8-rqptis?12{dL5i_!~Yc_jJrl3jQ%E-PM+_lV0sC5;DTMdW{RxJJ9^B z19gxAx7i$Jt~sK83lZseVZ)^4$455|&kyF)HfSU4!ZF+=pGSu*UE~3l4i?G>-)fa3 z6{R))L)huj2U@mR^8I9Fq}z-+XBk^Olz&oaKzpMMB(xF8pY=ArRVbp~fL!^>PbmC_ ztsyAHF!#2>eooJ>TI&I_r!taG`U}Vog8`cl;j3K-(iS06B8g8vZ!A_6(ixs~Xbp%3 z`!9{9b(_#`7n!1&e^JJ^y{5J)Phu6c=e}D&WCF(@*}3iB-qD0=UiMnDwZ?@_E!Gi1 ziX(H&G|KLp*jpFNpIFubxtQxks_*Irm9w{`Qc-CxFauts?iGQ(xc9u+ zbOLS#W>r1ZnNUMv`NU%tbS}vSDcG=Fxoh>(;``O^*_s<6B5-@ZDXP^R9n-xyD!fZX z8_tPPP8DjMH{+5+tv*DL$BR%^nX@%G>f(^uz(tdkj31{2g|=&$ELfP92CWm>yuu!3 zAqYBf2fXMg*?q+~1{By6F_WizP-n=01FKk$810+oR+s;`w zyka$fVedeh9rqO4?d<}{aX6gDpZJ;rO+;3K()w9@Ls`f5qogx0XzJE10x_qdfu6&@(#7YQI*KvIz}PNFT*VPqF5jaWDSzQP z!D1@PE>GOyms@raJA`isQIFQW&;wgfcmu*``^od(1+B_U8?3bJT{t+=(}PoKKgPmO zuI236=GB)>&9;SV6z^-6-e~z?ppLB^PGWoVF^25Nell1A8q>6Yq-=R`NKP?n-XbXN zMgO^m^QU(*m^)tb(Tgl~Am5B6fxJt;V&_H?QUg<&5LJ5k$zAWL>Kc7ff}Fa>%v)f4 zC3(@)@?6%K9nW8J1GAZoCXZZiY42uUFpc>?(7}I6BMMOc>P$`qa`az|W(*4Y^?lI3&~;3*xdUSABrWtT zr>-E`fA*%kXL}Z%|GA(xZTeWZtDOJ1F>3A4XUPcW8y$kiUT|cr4(gJvB;<}%w$|og z5#R$Y|BpQvd95JZPMq4gq&ubOai(N{Dp&9^WnC@1Fn8;};$UmgAO+U8@D|h`(nNe6 zP|n3D1NF@2Rf7SGt;e4=_F*w+!S-v`)xm8=RVrwO`*86Z5rE5PSq;r&&FlYt?xv#^H z_Ss~qhW);n`p9GrEN{Z~I&(&$S!6>?w7zjY5eG`czjqkW%71r;$9cvszY{)sYE|+S zEN=sB%rSkQc<*y74n1SpHAa1k`(#;OVEB(>u*gHS5LAtbZ8J;I#@M;zV527Pb!VJ; zr|g)xwDWQbK2AeapqK_^WS8GWDnaqbW2+?)uga>ATayI?uaxK%geDIaHYLfcP98i1)*{xy5r(s{Rcpt2*W9KLw43eEscsmGEMz*kkwO;?;g>K05^tolvXTxy zs*9WN_|;gL!v~cVw%rPfH`8;wRswP??~+D5k-KB)SfvSi(K#B?{q6z6sxtd}D!ft) zsjckaUl2q>(61fOG!a9c6j;Rq9Hz@vP`ITnY|1d!?^TcG2(aoE*?ny!rk>h!@=2~` zNjfy+iUQCg7%ICKB!}1n2K{%84|#yx_3?M~W6=@9q;#7wV)+H7sR4fVcQrce2yyJH zRymgN?-vqpT=?qO2}OJ+fUpbHxrsscQ2cXgj-F$P+776N>6VR~!#v!VZYsNj+1}@3 zGR*Fgcz_g53nkekW~KZ)Hj=`=T^Lkr1DeSw-X9S%MzMY;-l>?Go9>}i zL2(Iig*$~9RiOSc0H|9(qNVerU4I;eo-3*F(}We)JWSaT@_Vs-#b5@`&wNbSSG*oh z8Ld<<=;O3_k0*%Y!U`0n6FjBAZ2dt5diH8H%OAfNO7UiXQ-uWCkk$J)7nF~iKw{@~7BKVOl z?@lEqk?3VwZfZZ)DNyGkY${kiXMXXU^Em=1Rx;}eX?Uf4U+GeuM=qML1l)dN=dpfx^ z1MC;&{kSs*Te=rsiI~k-u24#tMv-XP@uK5vUtTGJiQ7G3Q|Ht%L#RvUCcv>ufd>SOoj_L0*$uL>&Jk z4`b|C00Z8;G=u4~0pVg7Jbe5lNi}CBIr*5Gl3z_iEN&@ITlf@Q+xb&5xIc8@NP&Jl zMfd7%z8QY;<;(&P>f<)nvUTY?KQyj8FlT!+Tf?x}HeDfB24oRE+@K}B(87`Goah`% z(4-+(s-k7z;bqZH1K6>8CsL*52b-yLZM+eJ>M4c7OTvQYgM?SbSooN4bU?kjQFNUi zY{-V(?DfnUVA^NjL3LpF88l|L$|vF$lS=K6a)gNs4s0}znC`ZxmTzxP(}{e^T=K6d zsrSx=&NCTtCx;?~xRAC(3v8ci^RrR1sDdOpOVN~GOV<9hmsa^siZXMpJe3jbTs9LI zB<7qGMvU{m54I@jQ?-|i7dM&>lCcKYS747$)^_o4BWP4WCgKx!+vsw6^YXQl2AN?o zw$ebeBT*kiS`-OlYfZQD2iW?aDAxH(Kbdo?kdwTa*_W_Sf&}%=si39_9})FGS1X7^ z5|?4NRkn1*8d6HTuc*#jLh?s-w;ps*Wx-G|!?<1dq{FXg{lYQ^ZSZ+Yi*rzj+=P!c zp5rIeziB916l~2@Vn$Z?;PlxbB{Rm&f(5q)t9D%;CAp(OJ+>_;vh(@0W-H!pxToTf zWiVGU_>zP)t+Dt20YQbSeM1UfBY@k&PXD3VQWmqX5(R+o6qpWIi`t?PU|&EUA^Bb< z(HEj#mb9C$v%|>>3<<+@Pb8<*UNJQs++&WBHp}`edw+7a`3HXbE`Rp3X^!3ZUN(wC;7J8RQR6 zLor@isT_D7z|pr~axK$~aFZ=yakGs0QL$)ga>uO;qQQCHP$|@vIu}_&0{X1+Q#pzL z;uCw3o&ruamS?xG{p-h~w?}Z9YRg@TI79{f{{a8`;l}i#((TI<8J{33kf!E#T>f5K z%x{C(hiGJMwIQ>@t1F?SZt$+@4do>tcU2Ho16?Dr79{Lr-4!n(w|MiRBm@60-+R)q zW>0u&8;ztlS?FpyY`cxc3K-g~u=4a!vnjd?pfR@$9^FVT#H9sDi3MSpn2`xTh!Fx24etgv1asB?IfE|DTj?QvB>njCq+$-3anQ!rmqX@H}vKITR6YgAm;!)~xp=bT&);_OKLblwx_o z8?E;GD*8ctHnvzbW-@%2cFT8QU~aPe3~LGF&zZ9O{X9lsTZNB?TtKLQF8{>G&~cXB z#zgk{bwK<->usfiZ8wE^!|Nxs&7B-XCktu4Zb2n@1Su}yH3%&6FK{*6&_L&as3PkOz0d`&Q*a4ZsW zfU`xo2ZTY0I&u{%dOY=sdZwGac1X=ht#)1TBdx8A)Pttpgb)7U3h@QF$PQ6#bL#Y1 zFV;M1v_vx+D|#tpRzs4iJ*x)UcS8@aysrZIs8F*q>)L=FUauUYV!flcfA==^Eavd< zHdVn~JIxEOR6YtYVl>;pJ0%Z%;dS`=VwEeGzJG`;%Vt+piiOl}<%CXm&!a=@wZPhu}hU(M9Qg1z8rO|$ZDFW9jjxNtX4-;tf^CqS)$+N za;xQ-=)rRpj11jW$xuh0-kxVwhvS-lkimRN`SmWwd9TJEk)M^JDpM1mf`BWCuz%Z_ z21TB1aEvND!f2>?G%k%!LmNEZxuP6-aXi>f)~Q+nIo}3}%x->|9?5Hir}H5$cZ{0e zVJPqG-a7f6bL425zi&XmY&WY-Tr8G2QfrcZ{-Y8F<#50`kOzNn+*n!$V31%hf;Q}s z|Cgi-o;Op+jmA3{h#uX239|>NeTw8+`QYNT8Bmd2*>@4Zl#QP2d;E^aT?v2`FNNtH z3wvGLg#1&X!EK=JBDBM>zps$}nK8X-JZ7rJi@Ny*&iUG{jriLcv*#wc*a;KIJu7hz zhhu6zSwLj|dJ;qcMCgMQ&X`G$*6FSB_AP_V3uEu;zeVZgXm@)kxX?>5nOZgMciRgo&09XoK)EQ z3gBn^mL{d5G9X^T*)7H8=4}rd|B=W{ro5X?>x@DhBJOf;_&~vAADo`Kcws8=nDVO; zLc(FA>dfpo8U#Yd-8|rQDX6Qg95*!|l1}c^(kRH^bfE_e5)2xY+Xo$y?;Z(f`V`KF8h@ne+ zqNYX{zt1#UrHhojyXVz=VF%3hyflXQnUUaYrm%H%Q4l+pZK3^dcgU5wR=JR>u-6uF95Qc=5nLIedsuH3C*MD-4}~O_}Ys zGiICKQ`Cw^yJ}HI^Ng*Jf_;O8sa1@tK9_|&sRWU~%D-H2VX8SW<&;a<0035aG1I_5 zEnpg%pW%sP=zUk!F3QfRxFaaP@-y0swmhQ38N8A#xn8S1i>uNZQT(h307tG$skDLcR` zi)gZLK0O;b6sfyh#(qXM@mk{Z4)EUXVo@V9`5=gJNqoyzDu12Rmb`9#{YnCP`Af_>7+woJ(8J2=B_2orB3a6Jpc z$dXTS-TaUn6$0vxV)eFjo;iwIhh#yp4kkI6G)T;CbLbfWAR;@N?Q6C4v_Bg$IVXd$ zNg#&eIxKJO2&LtS+aGR+Ls@GBcCo(Z57+nzCKZe{@D?{^Z$vTRUXy3;jV%Fr;$nQSvb>}Q1hW<-SmTtWI-Op(H7;g&# za@5v^x;!n#?UGT#W$|%5F35r4$IS|q{w0l(^9_`KS(Giy+L{Hov$q6PM|=JvijZ?! zmaB*LHx+Jy;y8K*b?qnu!l^iqB@f1s)gIUpU^Upys>*2=>eJq+}oA9>q>S6pLfgwZTTZZ~QHWdS0{ ztNMKVOB*FWnF(>oumD(7W}iZ9$Vv|AYsATV;H~O@JGH3n!X65|BL1)%>Cg;-A!1V~ zKad{Mqm{bm9ZY766oE&PHk53DVyP3?_^pl(p5`_6Ub_}-wql{1;h=T7crM%cgN;IE z(*UpfK{IaGT|n6G=<}fE5qU<8>0r%UHVk*%=ZbL%X_*xmAz(Y;X#3mOZV;Q)j(lkh zKI(HzcM8H9PGOqy-4I*x@3FYEnqh8EzU>|fTN22}y(Mpiy4!w33zGHk?Y%*ORp?px zbQNH?cz?4_``5r33R)F;pTBe!*By`&y&~S$f4gMR9}$D;rBT1{Z~r6%2*^yE&bB}x zEh&b6P31mXRQc+NZ-ipt2UJqC18WPBfO0nj$)C_M3(HSRDR zf5xjR(LP(z>o;v5aN5QzCK24FS=PaU^u@@J5&*5J?X;WE@v#i5io8M_?k_3N ztb|lEvLuXFNGykK=7!XQ{C}dyU^N&Ibw_q=c}#tVjru{kuUmjid$h{#L3`|_D(KR6Q-I08V7 z9?AGt(@dHkvEyXAK+Ons@lJ#ix>xKyqVM&cvk9`N#O&dta$F+7EmRpaC@B5wSs zJ*6i%2eQ@V{!2u~rf%&+YG|e3;G161&Yya7eX~`ivECYyMRwHyJjT-d93md8qE9Q;yyM;Zepq9JjezgDXJyai zpoCVto>W#9_V~veS!BDY6T*UWI7u*|$;BU2g;&)VkPk_m`6N-k6s!1Bu1IG;P2}{M zsJ#}yiVO};)gIUlW$hH4R54mW8O3L6M1ypuYV_@G*9^d!iC)iX}=j|-$#JeAR9a^v2*T@mJ0XYjoW0YcmZB5p&q~ZB>HXka4LtAaG zuFuesII7C=tOUdJ2GyVa36)qd57Q;44@*$7E2uBDwiR-K*YfHvR7n`NRiRFY#9BbZ z&$8JW0ABz{K)AmRJx;I}5Ir?RVFUDV8tw;hYr7fz&YuuX|G5q$i}%FTVIPBhJKc5- zkLZad``x)jU}8EkFgyn) zyR=xI6xk&x!(~S>N-$vV-?837#QhfM7z;x1K-M+AYf;f;ACD@hILb{KIeGLf6Vkdm z!atR^&YC~A5I?5?gcxsdWVTrgZSPU;#g{6ud&*^9~H*7 zUfeDQaX^A?hhzoK1~rEzBNu}hm^B%ySa&|=+@#%y@9y(KzvzPe7?DxP?uwR4H)5;A z)|&<#^Cz@gP>Du4iT6@IKuNF^5rYY8-k)+07u45WBvA{W_>3$WrWo=Rv)R@6AUI#9 z-%%RMHdRUpY{5?^$3+v;8|Wz9JF{JY41AHq<*mi)B8tRw(MjF*zp_RbkUYL)Y2(qk z%Mb=AVUrrG@~1)jc)Av};JDLAl%ZBt>_Mi>0*%7*Ryom;-LOz5CGTqazXjPy1}*$5 z6@c0I`83QK5xhtuLxi#R)r$3&ipVNo7+c5iQAdL^s*a6`>W0BIls%#LGJxT@RPU=_ zbtD80i*kBr@MoY%S| zHZd0*zKji?6HI#?#iXdN|3r9EI(*kuTYrG60TP*6H)47?7#D?;t?V*;>Tu9sGn#e? z&xCb{68gzE^(@8`;vIQkO_MQy)IPWvZPAn7%^d{wl2G--Q$Kf|tqdQG=_HD@?|oT{ zlGq6gV~8n0ZR&aiK#YgTkI;|_CJx{@r7g%gA7k`jQDtaoOL%ah6E{mviIv<+PvYar ze*&6h&UD#h?I7r1>092gdsb+c1%7`KdCIN|hV`y5N$ z{@x5$Sw+ey=~F*q*{(#9n}}qA6&WwA|ACMc?VOwOn=x2`k4uI+9`d-9%df^PJWSgg zev1?CeJbb}LVQ**cg$YeomoH zdu?a1LUu5_^ZJNQqFb`|d-hM}XHm8ScbUv5OFTP*w0N6L!dNT*2Ms8>dcJJLxF*F>O=31CjS=N!TiZa9foyU{ zi`ze#dE1rR@tetD@6RuGfj}l&wFTK1;gcP3F=0~CH%_~T_?|w}&1*|}kn&(<9B!o_ z-KLO0T!UTgkFr0WLSn_y`MW{!mH7^GooW2 zW-3gdITy!V8%gY#8Jm?fQYn7f(=+RtAlEvaR;po#w}6Gu=vGsRd7W!J5(z=H>D_vD zZ4-ad{}<_=cK{XBO!IkSPs6gzI~w$E@gw^zyjxs5jNolJzQVm0Yd#%By?4c}#8(u} z)-(KI7P+d#5!76|+O$u>EO_#cR&!kg9^B?c%oYz!3q6#YL_B|2bA!GqGF%t{$(kcdtme*O85MbDFvf5h&5g?l0ad8-p>Q;yJJ((Xrny&*^Is=Nz_H7O*H zemlj}2#4axIFit_z6`0}3=P6UQeI>YN1aMg~tX3dU+>q0fEyYbFoZZ12yAe>gO zfUVd7TiO!3K`g{^Km8X&Q&LL|1WxvBJFdtSPJRn%V?~({au<~f2MpK_!DEwMO`o6t zUV5K>hS8-7`o80)V+b{KmFono1q(J(s)QfI7W5kQ<}+e?E2Jbhk75Q=@Xt>yYd|C0pS z=%CQ##qt%K89ULT?l79B)onp}NAH!KLaF?`{va#WIZ$vrZM(IYFafgErF^mgB!}+d zq}Gly=Q#FKiP*XfZn<5_`qdVSpy*E7WS>O}pUyn2;L-HzqA@E?TB}$RYJPkvS-*r0 zbRfA5!ecs2$?3p?k@84zlw%ceGOve-$=YjjoY`^S3jQ3nA2C{7txpfx914Zd1WbXN z46{uD_kG0KvzW`NA^LG9-fWdnruL`?x7tP-FONHd4>#s|SomvB@Wch;t-NPclwky@ z2F>x$9aVx6AJj3-^2)YB%~oBI|GN}j69>J&7E&{mja$1`(-t4sK@N!cu}oaL<>+dB z5?JD@$iP|r7ytzr9%EclGf7mFX?gguElZ*q6DI+cRDvqI#H#SV zjUJUZ;esSqYKfw=AYmU#p5kjaXdY+eA@|vPoB@qK2zN2l$DvvFHdqBTmR7;K>s zwg`f$BMlJtyLo{_(DmlH28G$#>U^S~xKDz;j&m)nVqnWn<8FL!!#N}?kcR21RL%!l zBZR0IrtHp$*ze>4B880+&H_Ttty@a?2kWh7#!3%Gp+zj@tT@dCF|aIwQpTEa;^Ltt zR#3b@n9Vw>g_1Z1h+~q(NLc?SL*>T=eW%jGEDny;XTJe0BYF0L+kh2F>clL&34s^` z4Bde^bP;UN7+rec>xHHYu}<76(~{nrWCJ8A_;?yRvwnhyEd`bqfvwJf*^{ZzlZ zb4MRC+^l+q6hTmzu{BJQWT1>T$UjS6v9v)OH*RW9Mc-IdXj_-3E}L=$sz^Zhwo4N2 zY{gAV>1Tm7)sp`Z7FZ(!plj|_wgKn95_nG0qW$gTVvYdsKY>Nca5>S)*wm49_t5K1 z3hMTUzxZ4gmU`@WVJUol%QY!s~2<}1xbxyG+jegz++axa6O z(lugUQUA%5N#*}ies~+6&C~o5{JM}Q7fm4-rYkuvfORI{$6+BSDC&c!~()5NKwpRSJNsO>yS#9%&-&R7OO@vf}FzZeU zgN8AVrFXafTB#^$tesnfyUcM zeqFufAp_+Obu3YR3?B<4w|aeW-y7&T14~KZfMUS_87I1}aQ>gKyE}2Jmbjl?ZC*fV zb37}e-m&|N>EN3o=)9`-3nuOGRWzA#5$KQGafnZS zkU>CtgVUuSiu)I}ih7?tlN&0wIUKf~J8E18`&$%`4C!+Bu|HfiA0b zu*WcDk5Tv88hDx&ONKV*>-YX~j4m%9)#vZhrQl0g%f4F-k0#(uP3Sg1S8W1J-!<_YEkd3vx#}ryfKos+b8O$ml^^kFFZO`1T#NSo@jw&V& zsy4}%nQTg$C@-rBD)AYKPEj8xW?hjTJ2CER4Ym|km??Q@VpqB0xxqlI! z(<>Z=zGPZrESH)Fw{pY7gm&xdwUT&Xt*H^l4RQ6zOUAQ!^xV6DQc{0*f@v6$??3GJ zA6A0qPt5L-O0nNiXsWM}PB!;O8zI`^0$o<0P+7+?^BZ6Uz)99UM#UG>`_YfrWLf(Z zV!vyTRv*`z48_K%}fP}{xX$Qtg)}~K?!i%0~Lx~Y~)|07EL1XiG{_gTW z!S(yr1P?kBro3(=;j_34b3ZthEG2)46ec%)?wxz}>59gf@5-erkXb_<8y8d``>RA# zl@PDcHiIo!*j<~oe|8bT9DMz1&FX?RXf_b~-gzKfMWr6$mwJB&94v>t8S#E=dp?QmpYOqQ3gCc*0Io}T! zH=$hZNic4*VGE|<$9^4X)z@UcVn<3*&K-!8S!~2#$gCj~lDe)+vWoMi&IYF*iY0ss zH3qn0ZG2&meZpsa?&b$ChoPboqlGkxXBdHsmPWC!Zh9WU{#`}cNASO?suiR=C?KAJC0y(@QH}W01$EI~?9-IqK*Y`vC93xHYkCZ%vM=Ul zg4Jd}@nztVopkkc+Cwp^^0wIFh;=wJO?1E_Pq>JPJb>&bQyTY(to+Us%}~p_#i5XcSsL>Sj9)x zGi@xFxQcV%i3>myDc3ZS)J@q#&j#!6q4xOFS@B;b$srbW?*mdn#DuW~VohxXGy~Gh z(>vKvB$TeTKTqe~uD?^&_%aUO9}QmFZPhh9xHdg4KoaO}#yG37E79A|>Z{1!n6r8| z(X|9zTSG8kFDYgXok=vuk%GR->H>j|e0NdgQuB%!4pinxTm!W}Jqi1w2@}iWg1>x}{ z(xP{3{h|5f>YH4+#Q4AtO260%<_ZNWw5cPA{kk1jd-suMNqr!{&(rL;QkL4=uH|}qXM$o zq9{E%O;&$vSg(t}4e=u$%#3oW8(@p)xlIJ`%7x-@nS z2DOWOO+!EJQ0W)PsIRB6iFtc-S|=_kU!s55-9p@#M!0DMyWCLjw-4l)vj%TXk$JTX z0;2D>h^u^(RLA^fWLx=%A$|_!ax@91-`sc4EoiE?zXh7nix$WeCn_&NoV8c&h~jNV zqS)Q(b(y;ViSF^^TRn)%fy8KYm1}ueS6N=3U(*$BiV$53g9{Hzti=YzkjM+0#z*vM zW*|%T5>0_Mn6A}w;J}tVj}u^Xh#RZVqdOrXDRh<-?}WXhUigTd3t;BFkfUziV6i3m zXcJ)Ii!vpAt>x6I*vnUaHN;V5zlfNm|HgvEfH_E^nE_UtL#$`v?ym*Ds>SZ4#4AAt zaI9t^IT4s9!2qTJ+a-(aja>ONA&?5U5bFRKkZ+|)x6Av_D*k95@>AehHWi%Q$9@`N<-zYdqBAlJSp-Xy z4Y#%SW3uN_`6>rhFV_bzVzq2P4=vYDISZyl3*CbW<-W<4SGsiAwI=O~3F; zJNcfxM_ndF#CuMAdt?w^V@cgtxRa23 zP-stJuj?(GlkUAMG*0(VC5jl7W?jz}Nc!)WO~Q<;ihY^3EJ|tn+LOjD>uAQ?T;d=? zU%NQ_aFHxkiis0zic08c?`To4A++C}#a(KyxitlwN#eJhRq)g7jOVN<6X?#nscgb4 z()UfnSfbY_RV!*i;=MYKcUV|osjR$Iq&=5HL9&&-BXHapPxQ_eXU(|XqSai`FCIhHnNwI1sHI+TNte8_*-|Z= zn4hao6C`STZ)$uFUl(Ky0^3?Nr9 z^Dy5^_7`OZvpf>S2h98;6_+Ny#qyqcjB(jm%QI>W-D7jZj}0e>$%L1{aPMBEa`qXl zXYahSBZjlhcVgZEbsE_L9*lKxt5g(Bu0ZFndYM7(G)AZ2TGh z=sAGw=IOL>p0N(FS;~Ch-T@c~!PT>o&fYa5Xk1v%-omr3ciWFBWmZjT0tL#}?I*ll zJ-be-m1ocmj@WZv1+_)RN$Mb6k>tVyPo#V=Us7jzRAhX;0@#&q{k+L*< z)yn(HE1n$8MTdp0)=K5uE$CK|mRvNO4I0N@`2X>|9|2cD?NqTek6VUvG|!NsB=VfI z?ZX-=$@orcBN;icqhTWh+C#>NS(=dK!;uM1sM})G6oPQWUt0^PA8dp@_AfF8I#0Fg zuF_|t_@*T|Rva1?39R^>3M==HO&k2e^Iw-6r5As*7dty*RByta0uV^_Amr7mo0VB# z)yo4?5}Q09Hts@OtED1TE9ZZdXo5T?kNhbuU)P~%p5S^L-ann-TI8aYA8$R9Tuj;} zn;Ea+jYN&I7lH2pbB8R}jx3~`=@uNLV`2#>6AhNqe$I4*1^0(_2XU$2KsS@ufuGnm z>9`HGQFQ(lIvRbRz@Q1#>VaEDqfNPnTV2ZvRUY`+7WUsQYFfn+XW|&`$lQa znMf$9t%8u+J{e~IEBenoL)Xw%Rr86See7F@lunWgog1ficzLfZr%_Dy*gWsG`kD8*-WGJ4DQ zgGxbKddhk$-NmN&CsCxArlN%01(LGj(iWHxSNh$U1vIH}w6^qkI)V&~BLe&y7fvR$ zb2;rb^=CY}H)h0^&6nnbdX^s(pgVy6Iy>4o@^IS=7!0c?TN5qAvvtub%{}l13LZ$s ze{4S+I3

xae43bjafanyq$RFr)Bpppo%Tb-irct=cM}5p@B?!pO_Lmx0X@4sCzG zzuwSLbAiQxZT=)+<0^BsDzbkWSRL+~e2!)OcyP-%f>QvcVH#rLyY+Tyh*nK94&vq3 zBi?&}O@q>pb0hndUv7v6L8e_WCDsik&IjvzIC%}uVZOg zMo{(>I!~nkvNs_|A7ODTA^;-lwk74EY2>r19rnHqNAYkIJpEvN)pw++>4_$a5jy+C z|18@~>4b-hZfey60!X48+_;A!+Nfsrn|l4%vBfP-YLfGsZ~FRJ%tDG&yqXD_oW=ls z1NpDeayEjmyw5tRK(?i#Et!KHJ`--MzM$8K1{{MV;w;SW{u$`x6d0fh71;ds2+*1- zE1LiX(P=zI;c^`-M~RQP(APl;Twne1O%%K8r4CIm?ge*oeGjO`-jy{?S5;uD z1XOlyNs0N32!q=TIUq83qTcPj)|=SLBgS!5*&u6nJ^+z9@w5i_h`l^A`>{Z!(N~IX zC5g;zlf#$S&wXM+Unv?3asw9K<6G3HKTK=VF%9S!SlPh6WB(1RyV?nY7#xjQ+k5!( z1#`&gkkNo6?9OI09`@WbNQ3sDIqXKMva!_wRJ#pfwL_aG6WExGQvS%2dRp)eSqz(yvpT}9)%sF2}xd#z086$6;3JgIZ(7$ zpDdc zN4XNWT1$@#5YExhUBV?RhuUq%-=ZDEK5A--rPYISYQ2!RhFI}mh%MKDpJPDB{`%~H zn;4er1NIxmo($zmBuO5N> zgYW;hlVt#5=8318GQ=5W@-9E_lNiD8FCU0}KNIxN9lZ#`^*h{x!prCKPw>>p)l2W5X zAdla%G_Ps-io&a{Z6=a8ZB~!A?+AJ2D;A&qoy=!_1`fJht0_zcqONFAKjs_3|CSrL zWj?rV%LP?q-|l@T<}Rg!W&)eLUyk@mNQvVIF4s?{?y_7|g9%Wj-ZyqDcg5*#wALaRNafN>WBm7BJM9;Az%=?V@Y zk0;c;@l{_;vKt%rZNu}>JoX#+w()~^Xq|J_u;!QOBh#0FA34P`{7l^@A+rHpi0wda%CZmP-h_F$^B~Tk7?WyCUtoSCR;DAWmYV9| z^%O3uAYF-tAXUjM7(P!iSD4Uy3&4@5$@nIm#vw)mK$imyBBSG=;=kpmeYmT8JDN7! zD@-Uy^oKxQq4P`)P6ysy0nK)U)KGx73)Y<40U5@jCEsg%uo)(lzv-R}h~PB{495O2 zXiMue`_xr&`7%;sv`3gG`C7yJGitVQO90T!Tt5?>KsH2r8dsEt*V2W9`U>v<6p=t^ z!Sdg#|8-WKU9pZ9PMjvou}4Le;`3F?7!%`xv2GYLC$y$;d}ERZtITpi;8xum*-24V zJ_-kN5Ke)A_I+vAD;NRoa=>V7h>P;5mrN}ewi3)!N2C}G!?@solt(H`zsoeDbOozK z2=hI-0EU_Me$CJbPml^CrauB64F%i?*IaqQXyyM7 z`6o2;ksNmue;R0-XBh8BFIDWE@FLO1iwxzc^Z!W@5F1Zc{U0w4tc$2RHP5Fd@xuAU zxJ`uAcvD||xl|D3Xm%$MOs`6BH(0sAmBFh8dwRFVu>Cnj+yoJ|EDF0aQ6jp{kRKP^ zR2DQZA8&0g^3BZ8B}pf+PppmDyn*2qz`lwu^Cbv=W}L=mU#Tm_e%CE6CtnGSSJGI- zI~gAu^{+0F5@mh7hW@nGT9k2xSpsn(5T@$Gd7qOZ$pHtb$myszm`6>aEn1P+u-MJV zojso!2KCSB{s-EXKPq)YG&$dk8|Vuu-Bk7NY8#>DJTc14*0n7lPpOy0uk)aK{rEvI zw4LbK?lDt&iw0dmu_hyJ7^HX|dg+MV4tRZZcCB*n8z}J2qF9I@u7_wFGg?A78jyP5 z#U=wg#HYTnko*hU#JiD3jXzq8Oi-(#0T{FetxQp5s6HbG-X8l5^u@(Bup2VVOFX3! z^!C=kPb`X&)hBUwH~)W9=_m%F0;dg15N7?DA?bQ!=nH2H+h%7q2vs0G?ys^0uzsHV zzU5rnv)v)!o&TKu$jt}Mqy28gIX3)j9$%pFImFGOv~kQcaK=_HC&{{Q-~Ze8rUKf6 zfcPBpx2Qdl)eV5U4ZqP?xUAs+UuKo4kKACBmMQgH8MawyKodP4Y%U+x!vOk=W z!R>*32-iE~=hn43s|wrgUTEu@f4Rpx7j!CEYmGN#&_^?+#6D4s6N5BVE}hg=b%3ts z{EOHQXB&YK?o2=Cy>3O@ z7sA%Jvs3LpNCH7vK+`#916N=yiNBLDdlD((#va zHE!`Q2WR58m_4ethM{)y({k2vA%mzVU$7dwh4vTlOqG1SJ{$eOPUYYiafWZtuj+7? zMdb?46)l1e4WT_`=`J)s0z7qbs_#yj{(^i9w;~TR>}y25fi5}?K-etvCcKbT2y(%7 z`R^>XZi+QBk-M{!2ycgk@-lo;C5}hEStBm#Q{|)ImkS&2vBInvE{Yk{zVrHM|$iP)#b&ooyFP5vWA@b2jCUMz##|01Iq?fdZo6zMX79{nIf zJNQdQVDQ%ph(cih%LR{slo|{}TPthw!c1*Je#rL_(^OqM1c_hu<676u4eE zpcHZHP*aZ4x`@Qj4;w&gCeJaVTGxyj4cZ`TE{KsB|8R(E#v1+FVSwNa7KQAF$@f#| zAri{aY;igvR5)yFV19+m71&;hr{6|j8WJ*R1E9b;xk*wI&UInI?i)0vEiF1W8h>8J zpiP?QElT6kpqvGk++;to%a)W88&sJyb+r_oEj+#ar$4SOTh*p})cT)mpP0-C%fL=S z$oX*e#Pj>HE0DE!;Fj-08}}lN5h44!1&8%oX57mBW`rfpb(;gR%TY1q?!`rjfLD+i zU4}srayl;r7Ex{_PJs(JXNvFs&k#2p8SY}mFW`X}V#ew(($*BK~kDawC`pj}Mz40sroy{I@Qpi5%xIRVV7W z@~Q`2zH}(3w5C0Qe!01oJq73imh=waMq;B_FN50YS==^evsR`PHj0#Zk?{8<0a$cLh zbu#^Bmx7q`20F<4mGs0-Dcx@;fA|Y6|HVw@MUAsnkYzz&!(hk%FH?Vwyo0y{MDFZZ z{sd!kHQWjd-?hiDPm;5n<)NbGI=2kJu4V`9`L0fss?ofKENMePLZ7B|2|v9~QWPBp zAZ))~e*7=j(@GG>qUVyGC^KXMMCG@JW%`ygW~J8K=|l#PC&VyAwQnJw{7!xzE)MX~ z-aZn{!&l9mvc;SD{)Qm+1VXnL;|7Rqfo~DF{HbHXR7aOj4XsioJ2Sivj-!mXWmn4% z1ZWg)GV?4$V~&oYT1U-AuN$S}&l(25h#}~e5wrR*LGDk%J$S}kUT#~NlO~I|n50Nj zkLcqEWUD}bo9GdkWE^HoR$UXU881liF#b(?@!;B|81=9(m^flG!!Lco6fDPRx~`Rb%89P=2e7F5qiDZx$DZkuoX)(g)zyUW)b zKzm+Wwx*2;9oYaK{3&{#>K~|_k^r0=&=c3o|F-N@!J3%(wTf9`N)tokMTX?%VtL&V z14H?A7HS~|ai2&`=UIkKvcgN@K%#hNdh8_^T2Jg$fJ{`;S5U%Bu^OCNVH)148;-lk zNbiLmL>&oa z1YPaohm0vKjnVCg#aDYSg*BJNq$g{f5e0K$`6O{^&XS# zZZrf_*gS4%6nP9*i0e6eH|zb&1o##SS_UTDt8t(uGcd1Z+sEydPlM7@2%_2?v%IM( zQ~^kkHlfA<-G(}Xk7w-aaU8A2vwVqI@@S>(eW*)$Shi^XzJ&gbpob7l;9|huT7Aa_ z8}8S1C9ve9rCff7>x;b}BXqzLG4k=jlYJ=5n*z4XWcYwPnRQ+o!&z_t}i4+QBi{he)K41sY(&JY9c!yUf zJ2AG#wu3QXVLx#LLPO^UzPYx=7^BD|MiUUwx_O^A4ZS~Xk?rr~_by0F>BQ0drS6KB z5DxmTfj*&|b+$D}3fGqqEd$~SL{x8V<^NHk6S*X1yFIzq4)bDi-Y@=CzX5UU-AqW9 z{%2}8DCt+dgBKL}W*)d9Wr??)w7nMhXIet6$|N^8dAveF5mLDtOtFYsGIc;};!H?V zN2<+m4Y1;zcmNEA4*iA0e!JQz*4A~RQ4NDLd@Ad}40xanq498Zpb9_V%+i}pWCAxp z69@VZvq!=AOu$()#PMIJ`kML>CLsx(^~F8-d)zq40(`TL)F3#^Nq{WP53B3qXx^$d zKd7^WGQH_wFw_muK+}O4_S8f-Mw&nGHX0(V6{W7nY%OK8#*rY&&By6?EkZt?cyAUU zbIPo?f~%$qp*fV?)BvSh9Ew*up42oh`UinkB7TRuOOc>8Jq~$&an-mWFCvZiC;*Rf zfVDi^kH$H(vl5Fu`9hw9PQEJ@D;A6Qvtk&^w20~) z@#Boa*uQ0TpHY5LiV}kJcEYEb71nWn{*rp+}9RlSpc;Q1{;6urCg&mI+ zY2xWKiItL*8ajkjU(UiFQQ(zZceb610B9dLFf!dJH15WmXT!1=c=fP@BEe$Y;O0_Z zkfX%pT!tNLtJky^*Ab0DPDR*HCOUlH;i zW&bx6Q#zmsR6O&UTG@@8Ix;L2PkNv=Oa^%< zIBr06o9s?QxxYYksO;8hYvqNO|a)$F!fIkgbsAgpp{$m5e85ZP;=rb9R`GkND(yt0e1s#YQ^EOPOh#18+}& zzIYHJqkedPyX}>>QNxV=z<~d@$Z!j^S-EPm0jnXIl)z8;n2>CF(%myR0iMx=9Vgd! z)fVk?eEYHwADr6CD~KS@>whr$ES8}&1q7vTezQU`33_1VyHR9VvTHjMwrSe4uXhDg zR!vQ-tLZE#{5+~<;0|b@YsuOuEAH|m^2USx`=$*-uGVX8F3p$J)i}S z_+973`v;F0C}B>;mN&-;w2wbEbHZ?KJjzu3RUal2kQo~A%lp~kO|1zpc(&hQO)v!| zJdcK@lgw7Y&!^DR4@}>79R}_N2+gL1TE+-->TW;ryQVM5bZ!zNib>1!FyuM4(9`d` zoB(!5<8`W22%Jp?L*R{7gf#}HL{jM;=*>-=(nFwv>&nj`XO&X-G zu87&{LX+a43(OIXLtbL`+nG?kPPN4SVMe!3z13V86XAu)p%&mlX#Alzp*z( zdr!J=zbm;1TaZ00VYGb@;$ooF0x@P9?v@%=InpHT;ONek)ObGaoIpS|D?q}7=3DG= zB_Id!d{|?%QgiR5XoSG=k)N&A47DtU;mZe(DgCkWM8peEdg3gn!-@c9qW_(lJCu(N zW|iX7BzJuJAR54U#+Qtz>?OtU%ezG0+pwIKn8i2_@}W$GbqIS%E+3K=Xj;x zNngWOMuk(SegSX>UBd78Hq-%#>Rl_PZG-z^#eBCd($-nOJ+m?a8w`HK`s>KO#$Xt` zK%!;upmY&U_eMbmbHyb~-c@can57jEx=kz1452SC%~R_7TEX}ztMn=cLp+5pB^jF+C5Z20v((nFTKtq+0v)BM zSh+Hd(|DhvdS;F$O3fIXZeGEHJ?GJS9r^Xb>=YXlX!zb&nk@PA*`5=dpJz|GH^6CL z7n&YK@XNknpxKJS-^IZe(LtoBdRebT0pKd(iirp?Bv4KP4{nZcjU?^8X)Onn(S;kM zZ;3|ncvM~eB|Q;W#=uw$nAlozK`5(sl8^i?lnYarA#K#qQG8Oc?D|UGJ+#Nq$m?+T zkVStp|4V0evbc@smgj%g>)hA~L120)Uz;zZtdAd8REikMjT5->Uz4vYB{mj(=)F@H z4|7U;F28vDjn-B&i$AXWA8h^m29Rmg#v8cc5Ahgs!p|r*y^oB2$X@wfe%o zXeSblUTs(98gNOn4~pG3*?q=6ZhK?33Qj|xxAV4b;xw=?9cO+6`yL4#hz8=2Nlcra zk3lnNba6eh-8M!kVn79k@$Rv>`;{wTKjhU6Lw!HOKOZ;VQMv!E6qWv(oE z7?x3I8H88>5seGriYQ@fCD;%VmE40U9#!Gh3=)MZ>Dy}a#sB+dM@|d?;!opph{=~g@j0@` zgJFKqp$B0^J;2Q^V@H#kEI`fc z5|80X^C08;x6*Hat$Ip5Jf`1z2Xlpe^3b;VIR0C)dJQ9s+ke!F)4^gA*K-_ik3=kW z4zCvwzjR`ajp>58d^_jA$;S2wvLTwuYS!N_d{KDKhairiO=R-S>x{ErM9jQL_JS_m z+?gKH2@)bBR6^zK!H681B$i7jpxU+Z?bcmgeJ=@+)%*#(evAO!RR|d7qQG!->BIG8ESAB_n*_#QzNn8Nhb-nT&j^P3(GU{QIL+!M z6w_9B2x@9(cUFb(`ioRGYftQIhBwlH>&JwVp%lv+tC^OEJcAotV zBJ(;w<#wP}@XFv}Keknj00g4lJR-MP!)rldx2~#_Gd9bviZ7pqiMiZE!DLdfC|m;< zOZw59AQ9_0LFewag;}EOiqXU>tO4RW&O(K}x&D=Gh7RFNC+gwg-1dsrD%pvrJgM2g=4MsZZD{R#+ z)lN9A(;g;|J%>%AVt&r4TGkl0=zgh|+sNb=hV2W*7CKf`@85IV$e5{vqN`DIawHS} zDr}8{FjAb1X%tbj>{`wawtRN`5fIxuOO6!LIXuP>tZ?QW&?x-F*OIzkwX!W+m_sM% zuis?|1FdKZ($X?RN$-JQ13ZYqQ$)|H)OR6?;l*WV;>?{|X6V*wKVmE%pzc=jE+TUK z15k0msIfv)b~)Nue~RCGl^YemJ>L=N|7lfaVKsRF2mt^?K)k;$AdtNWy`^r%gTU~i z?$ER*b#E>-BkB(FtAMYwfT&MqvXy&AXqJ1W5!MQe7rzz0oUb0rJK7cJW1^Y%cti!{ z-5@zG^eThW^QnNL>xVW+btE!A?*Kn6ufE!Yf$EE&OJ*YbA${JRy6F+%DOtA@o+<4i6Kt z4>X6)3E?V3)0bC9Yk9S6w`1+n!!jW*fX_Rgc_pF4DbhU|E}#_!;R>~^oVztd3P3}Q zU*^>{+z1B>*+Wps?*@St) z1l~0IF$Fe#S0Z4}Oda)x6%Un^Fb0jOgl&TS-ERflgHCJcr5EFdiSO4)Jw036sqsM} z0>;-F_HmvjgI-xy-QofWk+^k0RhgZ-N!;I!qiXD@V;6r@y*5=Cf2blzoD zA5dXhOiYOt+muyp=nu@=-w=HT(6;)`b8j!bC4IIynuyAu%BGafU8J8A;4(U83nDE@ zgly8)9gNZpgu3zJZ$#uogxt5uMKXK2SF12%jV7P3{}ek*V2J9rlTcoT_&`J6`L>%O zG7xn4nb}xhfy!dG&O51}K=-e*frxCO2LptFWif^);0M^DG{<-34U$b6;w+si#%8fO1Bl2e<`M0O0X_Fk^c4x)q zo^G)>s}0fzEFP|kEOyf(UYa5X?GM~L^qy+)q}+AMB1U`qJ%zc4}KHB(Gn2LF|ju_LRea-(=D8+s{UE+ zUc$CUER#P3nrPC&r6ncspd1>ZMO<*@OuVX7Ys5Syx{hk0K1~&s)h+l zxyQoFAH@*o?9&~^nD_gWjO7|+Oy84@ufwb2aM+?56nfqUE(r<9xxwiU+m?JB zgbsXvYwYb=jK?EBwJVj|!g4g;jY(&4!=l*b-L{zWk0I417Bs=sb zM4e>udC&n{pX?zEG5ijfXe6LCtU^z{GWx%ejmUalgmGV?Go7<#yGMw%iWBX{hhJ2?8*m#}S|G>|zEb&Q-z*SX*h+D} zq+mfJL%}Z$ldK60(~sa$lnBXe`l+mMzGeR}fLC{ScW>+K%oo|`m9b)OHM79%|L;{w zW5jf#zsP1+&jdK|msf|(1Lh%v;XKTD2;soMxRquEv&~@mnmQCpTxW4@$lIOKj^Voe zb_GJI{!eE1(E7Y`Yma2a=ZU!)wYEfNx)QeF@wBg*)#Jn*)+40eLx|FvQ`)KFPyRso z=3$sWk4pdj?LK+IL)gJ!PaoybGK3AC8$u39bE`4vx4#~JF2NgoNTtiF9Krv6is7=v zOf7Hl>WYq^k7tBjar3W@v;DcWW$9~;>G7OuV*#KzN zIv)iGZ<{LdN#+~(LE{Y-AWxNeBHk_{?$MlYFIrXe{G zr?~qMFUS5S?InM_$n}^fg(nW?drUsRO4h6){bPsw=q+FfZb~8jR+U*DKbghCaVs^Nm{*^6KPRWGA>I7eMOt)fWZKpiEEgthpa zAUxC%7ep(t#$Y1My|EEhG`*U}(aK#+*hbVL!LjGr0kG>{bSDUY1xUAD&KCYVy?8te zljUZBT%7(iiPEMjcQX;i*whk#MTOQTxA=@;!ZDg%H73;8@k7K+7&tJAG~9k*b@sL* zYbp3p>yLY}}yDi~oh)NX`TRgjM?fRuHoS>t#?>G;)z7(ga>l%bp*qTPMh z%ynR~)zcl3s_)QXB(@8^@?}8fou?9&`C+8Iu`0_e(`)q?j{tz(aVB-XLt0zzOPC{x zJUBB_UCb!^H7og_P)P3#BIuUi+xqCuXBt7UV7e4u<_g73S1gX;cp3koBKBh)gV5?W z&QFEN9GV$O>5r3fJnNe_W)FseIi&{$=fD5^wp*M*9GJ ztq2d?Hg=Q4Na}V7H+D0Oy zh}XH&WN3ogVwcZFP)>5;orGbsTRi5p*K4bys#aYxt}KC#cv0Jlo6sjcm~I!pgIQ;k zC>M0w27}KzDR25`R3G%UFl?wFP21>i#26jYpOOovxu;~V42_aqeU*RkLpgXAWu~D? z7%NZ7d6R!4*RFgYE?H{y8{g3+g)+w)r#3BD;nM|ODktwW$*$dPWV`biA-mp1;mA|P(|&SK7_3CT6ySTxg}YHi<=9UBTHRB5CC4{Z9jEpPPm4}eb(3I;CRt$rWOj=bybwY%6!;Vw(~E~byYA#-?iE^7nS)B*sh7*S`4XWitcjxweoP&vVDfAjxP&D_PSf*UAdo)bNRFd0 zF7>-{?hnRzaE>&KhA5tg0ZeBf(aoZntXv9AvlIpt9y*^uVbae&0W*X+6+~aD5fVjJ z=%Ea{UKiTbo7U*Ayh~z~3?gmty(rVIE>V@UUd5_1!kYl;1maNE`NQucfcIxnONowQ zHBUFttkFxD6`#Gw46#S-!FoO60bdQYWqlK7O4hPt7NdR^$?#%>!!@tsV>ah4XaN~P0B5XL z>G!SY>Ir*M3Ih@BNV-aswrkXw6z~P|0d5?g$}tG6>0JdgB4#R_mu8xUxy^kyd$6=6 zy<%WVh1=oQOMRE>2xBOQ1Xap+!C8!dS87^-N>jDId!7?y8eNFu#0Lfr#Ku8i#Mjps zneWQ;VZ&PPMf8d&f#_iWVWpv}?oS?ma_w8-&cLHd=!Tm(;Wj3!0_bMzirS<*5GwG+ zE3;Y;>MANxgErtT?g5yX=zL?XjMobXdh)gd%|g8Lky8>V1;17^`kr$^bVYB|V~4M5 z=95Qi*Q!W5!vt9zQlF-DLQh%%0niMsHR0OTHwp05-Zy!&`JXKcIqsj@i&Wi%>``EJ2iH|D~ zB~)(koI%cm-|Ar9R(j)}dB(W``AhulO}Zk#U{^}j=u20F^kYZmL>o)NPb&(L@Liqr zZ&8txi@01VP*LW@_|JmnAm_u!ENk?Hx~H$vWItr-0vmLlu`q=tqiA}(UjBakIl}^1 zAdAn7 zAoW+z5G*E7?O<`hmIq@*mx8-6e$_PW#k(J#fG?*3So0}^j~*h#N2YSi`$9Q(#k#96)AY~$OZ z8|`l3V57Ugxy}>>JAb~Dwk6Jt8SH9JAh0pOqslcaK+^)FNc{1|b9F7rgrQ3Kys*hx z=fdbvjA&!y>T?;!KTdFxp?8t}K9Oux_*(O?V>Pk!$IS}RI6y3*nt}GsgX4K8f z{tdg1Ljl4|Mzj6icFPj5*YP9=Ry{9DdLBIK2=X8R9oMVD zi-`%tMTiGQK`qPKVgri$qGUDz86$wugP71#GN`&F+%c;xdWS<6;eXhyX0T;Nt2cS! z3C`q5@6qeN6>&Z6uP(m(c|=G#e4-P4ex9C)4y=#UAt;BPw(M+^djM%DARVKGGtGdG zcF5&E)&{A<`UB6{Jhon16pSysxSb%VAUY0_L9R$VUdRm4xJg>`SxChJEuB#z4Ge_D zQlG*4Mjk|tYHp&G_aXF1d|p)Gd6J9oMfeEDu$N02bH>04J;XsYg%tFnqD=an3qpc1 zNtCBPPZK@&pU(NwK!t1D-5H=AHvY%bxXqZvt;y={3F$5_q&L8JSa6x$!Z%%ZOWq%x zLQ5)H!=q>TEj?x-`R3FsjXODPD`<+y*^c&8x<*F>ud`;hZc`Bx3X23J} z_|*88g)EANAf)wh6f2xl!d_8RTn35P!I}7sN zvPKlbDs@R~zV4r0!ah7oF(Ri)_KJ>&iza+mauYk-@xqYg2`~Uj+OGD1$_|?N&L$ch z)UtiZP-)u)S)24yk^cvOQo({a=gRbwp7iI5ljT9`wadz>mUNRjCe+>TvkN1DiY>P| zf7PtCOGCM%>`NvoK(yLw#{W>%C7dGc=;beSYpZjv8 zUw3P%*A3g{)+0Nz162UGB^GF;;m9nz8(p;BoZVZ_)lkO?e~~zXPy;?)tcB17W&6v% zBG1$HK0r2fg(fIxkS?h&7}yi+D?cU?p);lG8m^9XPy@^RIT?u=K*H$MF}8obmD{#)zEyJlx2_}s&zz+@Avxjw0f?&WMY|H%H! zkV8S8#>bB@5nO|@r z^Ve~QvwL+JhLqd$fXV~{_jtv)4W1ve^lcp!piBr8^QE+g4DAb&!^EvMSA~ZPH_n;3 z-A{ZqsF^SBDyaDfS?r!&wYa47)L?u@+UK9+nRXpkUToafLl)_coY3oQ;T6pRonQ=2 z94+iC6t;TWl>nJBqlTwbW*}fw`+4ILBf5M3do;S9-{k#_LuH?{Vg+qk?Rd^QHtCS+ zy>6b5j=Y14+VJ<~O&qSGE4g-B$SYv?0+0@Tz!=bGdOTm#0&sShMJJBq@KB{M5ju!H z6*Ie642=`MG%O;h(Mbkdo--+^sdtdYnqj(%!>#QO`(Hqpb(Su73dGT$;x~!W9jG0e zw@Q9q@Bpwa&fZ=R(ULk)PNju|s~P}~hG*8RvJh*+ok0E+&2DB6D6nQmLSqKLmdjU} zC{8qHxC%OtFN^2NZUO&+)!M~C5@W~Z12bfbU5whxIVH|n@bnzTS9DERQ|mdJ#ON=xxeMCWW+`fmG|vB`DHiyTYPMPI~z88#qD9*`SI zi&#L96X~-RYULw789;+i&H!L_HWSXxsA~IwVcv;f>z0ddE;M-MUmkY0t<2sEGsNg& z+$tO<`{GkL)4l<*A>Z^v5PjUK&M){AC#U5iKe+{#xyk_AkWjctoy{6cy0PCC2q7DlnK zqoEAXP!{n?`e2ijA?UHMkgX1G!IIx+_+~!L-0$#5t%v2I1N3iQQAo~69W%du%nq0i zZW$(J75GJ6oZpY6En_(J~TrxZj9h_?lrZdt{)8!(% zB-LJv{*B96`BUn&!q3`dij;rw_y}UTJuBV&iP!Z%9~YRzk}BQ+_{&ZAE9{W)PwtH; zZtTIK(nI0Q-GW#5zv-eZSe{%~Tb8p9D0ukh_xX4^#C8iG{I2d9j4gGK6qo7;YFw6q z3C7W^_~bSqj{#?E4v`&Tt{1>GE?dc$5)YvaXZ(u*%ZDx~t+mP?7lwtxeE}kF{z&r- zO;3<1(I^ls8>v*`{c?O#kCO&L(()*9dD;+2Ot_ls6B9j~!U@L=|Ku3h8)K~kHPR`s zMV$sw@yAXTZ)XzN;@(@)CY)$+7zn)3;rsO*^!;Gb<~{`jUg5HE;%8y$S^gW5{QP}s z@BuP`>k;2$DPiIGwp7LfA?%#B%6M9ck==SdUL?++$l8&d=P`jxXG1=KRtD zuHB1V!G05_{F}{<*?8dOP0~Z+h-3;~+0iR=Fx$*UtQ2#FJf{yB;(=uaAno0@0<|y;0`)nXr-^D<^{fyRQTR%f-sZ@)ABnm(yla>b}dw$;HOpjnEz~ml$ z0V1@+_<=Z?H|jRESz!XhY{`M#r19n3lWlp|N&0j{Encd9KKFOuzf)~)^Xn_+!>KMl zP*IR{nef4o>SYx6u6iTf8EU6=YGcz9$diZwgs;Gw9~ydf4U9yI>vv>sXk@wAmoRu; zTf^*D9jwo^ARk`vi}zgUCZRuCa%OtLoxU`&W6FKWzLr?eEiK{>F?6xBEaG}3%qorK zpDA$Uc@Fnu#>;)VVrbJ{+v?Dt$lG~@b9V-dB(xy zg;*Q;d2=$7S{$C_b#e+Zd`CMf_GxXKiU%-QM9^jq$5xWJ$7!g!2IrT^srv#mwi=(+{TF0l!5?l&dI8! zIv{{pt;#^cku833w@i>W2t?`$#WqUy=ej>2baC?0WoN)pxtS<&@6p=Oww@FKS8@$I zClXem?BJ>U&!b6}9cR?Cp9|1Xny6Gin(q~TsSR#Gt&PQ1WrFZGhq?$zYWSMhzebMV zM>BY}FLQ?5Rn@u@Gyc9Hj&xmVW7)=2+8_w>$PFf)mF@j zSx@Fwr6VKI1A$E_tqh4LDpPDw4O*T)6sQ=hIh;)9WirJ^kjA0D@Wy(25Ljw0drzk& ziWO}Es4pEKA7*Voq!9$j)HQc3@9&&y!#b-47amsnwGSDMMx8uQscGvlf6(M`wk_-# zkDUX_cHAJC^5fYRAa0ulYjHxPw?jFfeBMfLbxryleL-ow}!*$Sr%-4 zQO+M^b=sCgr$+oGieNcF-v@f2F^PgZjnECaWxI9?)aO7^YI3_pN!Bo3HY9};0>ZL&p8PI-W7%c_~kSzMMx+dG?+E6 zY~WxQD&|J|o}E$;5M?&IHi9toMw0w+6mC0yW7*WIo4z@7VP%8ZP@Qc182)1AGl*>v z3+%dmbKLAqS8JU!Z1BF}&^A8)gPuUvVWF^)OnmvMr@#5v;EoIjpbRO$D8QB7ssw^t zB{pHDRx!7ZcMhoxNSpx}M&fS|FfCJV&=L4=BGFi^liVPi4nBS$b?{;>DXh#XLLJ(o z*smGYabiX9G{sIz#Yy@SqaJ@kvqCD-F_D~>-ygz4?W|^qgUd-(?*4bNe7=o@OX}OC zFAU&um_Qcr%7^vqHgU(Jh(TKs=;qYHeH;1Kj9;o-JRxkAbV+dnc(8nkk= zZ}rwnnCrX@fORwZ>ccz71)+z zy7`x6$mLZ@Ef>E*2?ZIx6;M-|%LBOI%d{RCfeCY~6y9kbjwej1zrBg`7?g<$9_>jk z*}I0B2r%)Fl%U~Nzt>D9Mq$zGpf*9#+NQBVNTefINk3;g>W5P(G#OA5$dF1UZ+HC} zUQAc6QJv%KoiPcNHPx2lQI)o0X@2t}pRg~^fD?&FpEWwX8II3FaUl|;^{yCx1Cg5G z2s@_$-1FW*%9$aXsuN(ew@x3HaDoxuDks=B+!;@Pn$YoD7gq8Y#q|sy*&vt+f2p;j z37K_szy|DL30|}wkhD%>ruUm%PfCeoqXdiiNZ|zrZ$_84hDb-OwnFwqukPv4%-R=< z3f(*Up%_OdbtcZ^hNCrni-N?S+J57bL1sWeC!qCkezL2gIaC%9;#)#rEq@6mtFPG| zI8zpfDb2wri3k7t-=1EA@+7|mR@9Zgqw|}S_{(K2n_+gK{t$JoGkOP9{T3DFZ6Y#B zU1+b1>M!d4b(+VHf=O(xSa-q#TFb$U)3Fz^q8BUVBM79_L$e|GOA7T+_xj-Vb57m{ z#et@jR`>4P3RhDhMmPJ|hPbiMB2d+-d6yXsv$PX9S7@=@Ze+k#SLe-5S~URI$O^P1 zCh7O8YTF|RDdz~gO_s`X44m6OtgjHuJQj^ulM^C}PQukEA9T;hSLX~2%y9egq&Ze< z@KC*BxtM5v_ICMyiSSo(D;AFX(_wVY+7)d-GXWh|m)=CO{nRlpNKnlR2`$`6bjDX8 z?Rijn;>>M16LiB_8dfDkWV4mC*JAX=b^~(YYw0lg(U(KW$)V=IoN$}}iq)%P{4z7TK2&vJ8efWT|pk!F0JS{wM{2`eB zcd+EIuX9Djo`T!1*(w#|?rk3`FyPqXul-sMU)O{$;qxK!92!^BnJK6=`Nh$e@&jt1( z;gF)C0sj66^o<8wIYgtFFh{SD?;r<5KasK!j(_rFE4D_&t4rzD4#8*ekJ(~;$CnUm z8}aMI5FyDMtEYB>@1v-lSkG?lv-6P-+dQ58J8lwLk*XYBHBQwe;HZ^L`aZZpYkp+H z9JbD!aZO&UBu=%~PugGIorq8Cpow847Ds?b6cv|maW@Kg*+BT~Q9TNz3zIPQoOwl} z801GWQelPoc!RT61xj4ELv6=J7kVg!hb7P4chN&Y1{y9_M!<&OgGaBe5@(sEaV1Qn zM&RyFjOhOB<^aFSV*AfbFpcz~Q&Tgy>r#X137}ubF^lK8)lOM30+t1qoi5w@a+8cw zDscmPS?NDO->Sn|QxH~VCTKQ{$u-Ay-aru~A=B>B)lFjsXc$Zr=oNB`<`+4stia*7 z5$G7tZoZ;=X*!Y>jJtq7mPJUMQy&s2E%@ZcETb%}WIpX){D593 z!;z{;Z3;)1zzg1ow&<_<{AWW0#$BGIt& z$?!9}?fL}G4*ziGV^^F;Tvk}FS{Se?53pf+20qfE=oeg^!WeV=tb|H*UXpe63FhF8 z_af10IF5V{jCrz2v&qdod=dBFTf?sxhD9$5f3tHPeeMY1P*?hyE!7if!BF1cCloRf zOsAxQ1sQtk5t)SswsC^08B+M5lL@bq+tEg~;WZ_Pko&iM3+hcG3r_3!;w~M|H<@=F zAmKu5QY~UZzglNiWrltyg?~tU7+C#SGs@2BT$Ec|$WLsZe7v)qoOw-i5ouBB_b4vG zUecGn(r-Flqe*p zg#NESh`WEx>$Nu~6CJuxYpb$KZK!QvL+E-t!_?bYf~X3lG$V+dVR_nP4R_jZG< zaP&gA)Xo+R$tZF&U~w_e3HzdPVU;}fFEupbmx+C=Y9KQyd%Y^~HEwCf8{UyJHtsn5 z=lBQJj`T%uvUV)7KncrOwtF04;F;Eu`%T^Tt)JZCi+iOk;do&he}p_PV~e|#}ZxwoOv`5i$t6Ye1IMj6m0w5vcs0C*Qb7!po&{- zDyJ9Pl|(;#;Y5|pU@XzvUJ+e>em@$rKb=1-T$R)k_kd@J({ZkYw1lk>6Ls`4B$&a= zhAv_7wvf0SYp@{v2@Vz`bk{M!xG{-UPpE3?kG;FRIhycqIU(IX;CY1>&H>qLhz6FMA#mdjp+Sb-)C(c+VY+o>u z>T0M05y@p>hhqMPy{^9jy`zU4(&cG{%JQ3HPlBBT;l<^~YkM3MUYPl81a7!xTNIi$ zO#|B7(pZ&l6$u(hcO`RA>lS0n1VlGU<*mHRM3l1-qxLpai3HE#_2gx`@#kzq7$dy) ze6&kVM7+__z};iISVNK+cxGX|`&RK^LXd8bvf=N}rH~-DtU8-IRT#1!UpIbl&+i}O zDwRCLuoYGIpbf#cL=_hHvf$;a7*XIg=<4vX-a523z(X4)HQcpM^cXEx5)o3ykP@yR zR-NEgP!qtPE}9ilGE5xeQ%Y7>g~B)@>(QoWa3YX%=IaPb;ncZ4c3B`vyTQpAVvk}< zY4QQvEDwZ>MTZS2+f3(+_2$E%pcxT!kbN1iR|6__GFup zGfn|I`rx`Ur11A^3JdBwcK~#p>=HPnb-Z_rM~o>q8smP4?X~I-oU8rCvEtmHh`#Qm z`x^++$axzkZ2j`^p8mELN$xHv9*l6-l;fStO__LHHm@%D{UvmpyfngL)>#~5*rTLe z+oV{dk2l^SR^Iouz67`im-?NG~?4oA<18K@Br5RK;_w9Vzwf;U&S zJW6Z2OU-1rc8GQa<0c2++6rgb9I@!8ubJo%UjDHEkG+>sa zY^OSa!bTcH0ef<`P|39eV+(_H_z2#?wk`{b>Bb#}X_7%5sS&bE^l}J0HC2M{Vs_V; zY(={O!z844%;p2suJ>d-gYp*9T9Qm`HHm2Y|JU#=@8roQt{u*{Q_JN@hLy|{M}W{} zhxCzuO3!)1=d5#F(5(|0U-fzBu;}2X$+0BUtE7RtWa74HO98+g`)qoi*%pqrzxMZr^Ftckv5PKH>sk_109!;wLAVTVIxuqC#AAQwn$h{N%w^8 zBRcVsoQ&_vymSrIAGrLGWU%aktgqQ2pWQ?I!VEtu{I%G0s+Q#IZj!ydqeGfwbMk4o zKD_1pL*=S06d7ITv1B+I-3NN-K?kF2D$R3mU@Jk$BGB%*b~xk85txwt_sDxsENVMd zmkKR?tacON&j4*tZV!{}lo$GR;OxE9vT_e8M#(pY*-i<#?1}p;MdspamTVQTVmn7i zp!1S1tIz7G4gpgzq4%d3*x=9nslW?PWg@3cSnkvW434d)KbEwC`ke-MHCDIS%?4G* zicGw%@gs6Eh3PCsAE=i$7mR&6wwv9o#vEjz)%+v#XH5&O;$bFm*L_(mwYIC&41#^O z@GEXf7y`ByBQpm5fW!QC^|Pjpi+zhOK4nn3u#L8QN<5NhE~as8Y^ygxVIE~ttrqZ1 z@@YH`)UyCb%#5GBh2D=J_q_=4%5r{%U#=yc=DIv*uto>f4S<-X+p+)LV+;=+itjHl zLFH6S>mAXLGfA2cDPMk$`R8PbGxlMQ70!;mTb1wJKgJrV^4${~!ZS-2L*BMha0#O( z_0kB$Ya%#;Z^Xn$pkJE3KrgMsKTP$0xDeBm-L1+;qmZG4P+KB*0T8|--6EYVC(Ya= zixt#SWgn`8d7O&$_W|e$lErtl*>gGhk{;pM(TV?{ckrQ{d{6G8RTP+~kaP2c! zpZYx|6{pOG{gk0L*22f|_3e+wfy*Af|$8AIJf4F^`L#wfL%{lR9mhd`k;lt|WlxSXRq`9l-zGU5rW0&!*ZbTYJ4B#|0 za8?{~ojYdCZ=e~pIE;^?MAa+};m}&w4T7xyS1}pPEysLzoKS+4XFg%QkFHQDx?BcZ zTu_Ao^08D>)D=7irZn8R^ht07_cD1IEU937Y0l?gBN#do z#FQz4x;-JW%YF`uLj4`)R5|S5gs{H-A#mYiAJaApDlWM7AVE|84m+0qna$) zS1q$-?;eea4w-ajsSdfo%aeUHe?AE*7uHkCA5;xWWs2UEZnEwpmiRstyxe=y`Zzh< z_u?cQO-j~`@;Hjl>8l*8=y6V@LSGa^dUG7LzsLzk+sfTGdmDq{PwX>ed8T z$vgVq^0BtHFf7lXW(qFk<-&pI*&4?Y?}_j;!~Nv%SSHdq?JlmJZdY9d9nF>8h z4NKksSQ5|Pq%@OyigIDFxXis?a9 zYXeXL>cXPw1mbpO_m16$D4*cIO!_pTNgpyy<0Mp0YIcDE3NZl}t!nKWjt1gIG~1H? zAU9;fP(OJO>)XOeR8V|4!jKT%&mt%+hzVCtnaLxa#4)%oo{hjoq>2ll7FE;EbJG$e zyU3b%QJDK=3u=+X#v>X8XDvwwItltB8O*MrpNJh!iJ!{0Y}n*ANP=*kH*9}>)91ZA zmKuSTeGvA6WZ8$um)o`9vJ<>#=}a%wkj;RT{=cwiV;(6XFWGpK7 zzGxQ{h#QZ*#9!*VaBk4_I1Bg+&XY*I;m)+ucH3mzJ-OD1>9r8d_$bd^hUQNai3WS3HY*x=B9Jv1EL4vYj0b^|EEAS#K}7k7Gr^Jc|cI*Q0T9)E@&}wX{vMF**|E z{U)1^R<+Pxh=z+Rz4HJ#NrwwUqqXo$KsUABF=uj=#z@6>>2LaI100!1`0qE>@|aIk z>`L&528pJ$wcT_gZ^hM{Mo_(Z#&Ns2u@2UVe<1QYK-6sF+9TrFvjaUuwbOq%0mYn` zyu1|FX{!VZN}KlH6-L&W&h2bN&Avh+29O)4ZicetEU^-rq=y|9;9G9I&B4Q{_G|Ksa_(ym|UNI$8$b=SFta2jcjdH&lC;3yPAj|fb6WiKw6~vmDsYg}Q z!o((1pE(%F`=;~QTmHV2xx9x>@T=P;;8!46c}U~-w62JOJ4OyCi9dlFS=kZc*=3F! zs$Jcp-TuC7Qh6=n3$2+HtaxU>rpy?fTP2ipzr?9l$haPR$pbJmVYr1l-X1g9@n*YW zl%+soU>#dIKHsCZZM_hdH@2TLD{+cih!d);I8hpdu-_|zOpYH(wd3t=;Y^DFVB+$_ z0=om#ZI)(SEGs7XFl54^^AjOiuj`Z{@PAkVbo*)so!XtKZE*AGxDBfIm^gk?=4}@2Ix#unn7`rY@R?7 z1)bMw*txE;;aGGSm8 z5-OSElO$x3#mg0=S+Yp=g@5%na2>GIaJx*?NEo6nD)D&>SMVLM`cmcvvC_1(<~9fA zVTY_(w@U|J`fvKq-JoF8Q*Q2k1+5Qw8b_y>K!B&`zmj!W6hAw-r^t2 z*px)<3}VB!2419uf)L2DEnd!RH5n%3;=_9x2eUq(9^O&tczw(_Sd2%Hes_{CKF4~T zK~AsSux}SSM36D<6y^9ij#S*z5@$KTHRr#+%@YvyhGMFm!~I>^x}OqkU`w*O!jY^c z-S(~0>0>A$qvX+<>1Y28B;I*bF*yOpZ^rd*Ou7qnw?)XDJ1XQPF~jy=zS9 zt(Y)UcRncXpN5i^Z6m23emK*UU7a*;B5gC~F5(12G7qGa4~hnU;PSK_>}Ld`@G)m6 zjmg*kF9vvDn+*>#V!+a?eSVQ7kt$dZ;!&c~I5+mN`aEHD?p)^nc$Ka)gRxp~@O9N- zqpo1y4tAGE|&zm-@g!{-r>F~wYE;E*R?Pn%|g7UqvF!7&H?wy7JK_|K1Q zyVcU7aKn{gdGFIh0b-b^QnIf&5vX1PR|(|knZBy(tE15T!xt^=%6|}1{+O6h1QRj>9_(*q9UoI z0&!hqhjC~C;dZ*d1=NgK@ja?@I(Wu_75$d5Yt$=}jbpf({iCHbikKt_j~)goJz|!r zC(j{}ObZY|3W5U40edc1vU7t-Lec$}Rp&a3Sr@uTNsR`YG&nGavTM|CLm4tr%tqce zvOUpA;?j2MYisYPAz);0$t`?Co~SU^pc>}mFA+r4j3jWPv1qfDE^ii#TQ;3tE8KM~ z?@*)Z!#zWbSf3UoQwB{1@E+jGjE;yet*L}nskKHtshtWRB>YcLwX#1;eKns@9)Xf9i@BNd{$So6E z22~&Q(3AlA++!uWkiO=U07n6Br!j=$?MISg-r@HxmHYt;dA@ldlxch zSRpYJMT{lUigYewf=rk(VygXO1<6_RY&FehnCvL`WZ?gv0;KUw4Wj%o$7!YqT?`St z&}QlGjbjx3`Go6y!6nw$xK(e}QvQxj0<4NZ3Wu$2Kuhd`RIUM1OSP4lV5-Ve%IfUv z7eI|+ph>B)%#>;yWwv>);2}Bnm&kfL{fbn5B`(1e)?-3`a)c`07=dQT2}PKror$A< zGRpg`_@!A{Ff38q13rII`Su>kN=2e`TWf{s@o?Nld#F(_lP<$e(=|%+5vdnqUUJWg zTxaKSGY)f?a`t8q;;{Z9=3K%UR-&q1>w|@GWoy{C~p77??3~cQ}RZsoS_f)4g4A3aJyJJ zfQt1YGIJN=GAx^)C1tlA$qJ{8+%l}NKrthiJjQ)C7RI+l8UjoLKbc{6Hj4mHkaIm0ct^d?vp`IhxhBxda|jjO z_$#w8=+P-#fo(USjEfhwJtHzf-t<8-Hx07t;W zetaEE_W~za-{k+VFKgQ7}>`6ES&%kf^mA;Lbl1z}3!S}nREH6Xzvd!K@5jpK)pAu{2 z6~Yu4IVZ9R%Li1g+g;C+PVgzHaF`q;s}Ny~&g3x@U}DDYAmN7tcdVqCT;^}xfxfYho& zUzM*nd%FZKAqr^CNG8W|CRJOe66ZC4cThqrM1dxHp-LZu^0qN;hQ}niQ z=5B?T{j=j}DhWw&ox{@S3Xj+eR%R79c!oDZrX>VyY!h_suZVs3Smu}igk)-o_ikLp zaXKgQz{_(`S!}Y}9S3HJ1m>(KXT@Pu^vFj_sCX!`{DRI3r+&G5kbNi1vJXlwc%O80 z%7P=KCyoF~K(@b;I*7+|?S)kiMvdt66!kNDeNrHxPBtYwZn|@?i4bB0*rRZD3PSWH#7mbyvJGaed6PijM=}qC$1A& z#-Ya0mziPxDfHT((t$`b`QfFlRd?xu_swL?PUgP5XM_M`C$h-27p{!4X3_`ut-ZHU zqjfjDK=-vbh0%R>-_Ng93(is^n3QAuHAfy`ixenrQ_pMifM*OJA5j?DiLXKb2@_># z*N$V8B`i{R_WPERKctq^vxN42m!@K4yYL3BXpx}Ew7IZb1D12X;Ha~${oFGpf#5fm zlNK7{4Z8WUCFGF>`jucYRmEyGc{#W(_@^JEI$$et&3!9^Z^4z}x6q1#eq0 zZQ`F*5Z#@S`q~~m9hQ8D-DvL(V@RJGdKA=T<*l`~6`QE(*+kbJ4T2(z4rPsPH>!tE z79*(wP=?+MP$WzMe+J?GE_ztZQdn80dmZ4x#7QEA*~Wu706=L!BcdXGySv>nd;xD1 z+;BAe_~Fwo@FhQYD;qNMf^zKz@zgnv(r|(#8hwu;$0VKSCl(6YS+&d+URR}nT10mi z#9|fFVc|X~3GrV;qRHcj2vQy~)zn~n?pOtugk_YYj!85Xs?t{!5nOWh%Xn=in(Z+Z z6DleycKxGC$>*StL1_TSznbkrI0in1cT1lG9j9G}i4{Bhm*<{yktaTkubu!j|BPEN zq>#yJYMb1>(M`p9?3C22PomWmfB|C^Q({{m4ob6VCsh6qz7I$z*%&5JKHJ(w?#J&+ z>aft(HFe2!U%{)PPgL^+rc|ZULEVw(%y*N-z@~#(RiywCPCYPN4Sq==Q9Z$yGF-b) z@liFd;O7Uhvm&75}t$S7(6rhSSn`al`}C9$&Hn&U;bt zK$&3Y0!s3QLM&<)S=BdQ?AnzOF>e}8V+R(y8!*ZmtC0ZEILD|PV6!QfhMg-ITtwSs z5of4i~CuPz?W2U;6iyH32KgkqUp)B>S~4@`+xgEZnnT-n9D z@W~(0!erztduk4JcsZ`T;G&?>yp16?l<>2hHeY3#)YUobhxJ_(c8Pt{RP(W^lM7X^ zG7^7WhkDJqyVVm$Gj_c9zfYcL5ALa)?hT1KF=fQr&4o-^uJ5=vr}_+qw>CfY}Ql%B|I?QavmL8_r}oO846dpOCDbr`O;-(H*Q^ z(0#Xde+M({1F>92BpA2pFb33#C&+{4dQM&5c&!ew=6#2q0r^vNG(4o

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

&PaDx))Qq4E-3ctu({= zi9tuk3E30=8jy^O+3}tGL@Zo6T%f>f+l+WTrxn1mwLpY*AS9w6`~{a4kPmxO><9!o zr79rz-sD!yw?ouMq@mSjfKa*1_c zxTPoOET}8Tj2%qBwe%7|i!fbF>DrII<7G7sW%6y^h&7hOZ1;=#LswO`BSu+K(5?tp z{2xivV{psmhr?ip^qj5?_9AQ=obEo@EGbv+-H{ISmIlnPG+Z!NXtWc|wEyDMlmo0t zi7&})$1L^_UJI1AM0{;T2js{*4?u%r7Uxf} z%Dc$Vz}2NFGJezO1r4`=H{+id;>`qhBi+A>y@O>&m?)Ro?<^oQ^>BJRz3#QgwawGE zmyr^x0-^3_ffE};8Dbfq88V?w*5*)B_+(^owFT|EV#*k$qMahkvFzw?qI6^Y{;Hu& zrcRW^UfMoqKfD;CHr1hN8LeZ<75Shbw_DXB3{ zx7$3UAXm<`Ej!3;E3GY{^mAfGr)^fQHvf@!)&*$zq5L|u$q0j6P#CuS6)q% zw#vFc@V7w&z2};Z)sM173TUScGPJV@KF^O7?-ulm$AN`$&~qxB-63leC3Ls$BGt2!5#&2=(njdLU!MCr1>Yc!*;8M+ zwa|lSI>(#8FObadH?yhbk5PDQ@ZX0^CGKLmqP;TY7EyNFmrCEe^wSZUCPt4G_a!F0 ztSd`O@u^3sN>k#(MFR>tNBEs&g^9dIgFPq;+rQAr%tlK+d~g)Ue>tdanB2OJle(iH zNS74A%`-=dm-C)lqoTR0pKVS3?G-D`1s(p0kEb zNmHBO)=@Q$qodhLktxI_i3O_ed=TFXAQy8%H{fv+<+tP3v7u(4VdJsz85wd{0PzAd zNlxTRk9!S-qIN`U)%>E5k!`QFsZD8{TTfX{-{gaDzVUGmVVYq@bGIXw`BbMl3U;bN z*4U@!B+ITH1)uqjau%!o2wLZ-!hE`~%&47DgDq_acj=XZU|#IV=vC##@u z9POwRd7e0&d~mSXVSmAH#O(T-BQ^^VkCB88=N}ZnSH$9coc16orA&TW1N6oD*Ps8Q<5gk>J~LkZZ4qFoHM9)Wi`CHHCx) zkr9lxGk*-`R4WeZv0mE(ig5bVp9l+xg-(x*KhKfO{2=pfg)K=p( z?pbNp`NS_%lb~MX=`Y|xStZJ5?Cdd?QzwFiHtjUgxL417B(u38C@p3s{rb;|hn*>< ziXFQPu$-CDP+WvCt-vqJx-e11-i-{i&sr5;1(n=3tMC5kBCv z=9390Blf2cNR*{9?zg3*ecMadiCZxR*^Ri?*={^L2I;hYvKy`Rv<2q`cam+# z6`=Vz@Wruj@|xK5lz^A35UBElu+k3~mP4v(XWl`ND*tNJ0AR2H#*A&cRAGeHwzdGK zJSDi^)l=Hz{rTg{m7tC@b(9{yzYqtt=-^il=DO z63x+J-Da-ir;Ao#Qtj5sg5+y2a)H$MKv0pC8rlD#*WxLEz_VX|^CyF@V!I3tY zyz?fh--ffep~I!j?I55P1Q<-hulA2&wOK$H9*CPDO;p9G#qX@Y_`h%(-r5;FBghQ!pd`?%Z$(VuG*fi-whJ^1L;B~i$Ek9=<3@ur*zt-vYM%UhEJZ( zI!Xvwqpj-{n?&@tStpy!)9I#BK?RZstVhFQL+C|9&wM*_uUOOuXR?y7nrraKn0QmM zYXb9|JBpo_xwv9YUoSg8^~0guOtK=<$eNk62qJUTHb^WZdnAU%FZ=gCkUWT#00-d$ zMz|?;FZ9aI^>BpsNb9V}%%}v?Ov*9WM`fjLJALgs&^;l~9aN{s5N~lXuq92&?&L7$ zcom}utb_sI)F>Hseu*T94RjQ#-wp8Y`gc8D$e)};r{iP7S^wIi8oY#3R|(2)oleiK zSEwk6He8f=_uA`;B)f=;m52>kUz)pkYM3T4d6xoOGYN-09q+hu05ddm%6Kl@p)5C| zK4k@r5KB~2Oa;5Z=_toD37*J^&!N5npC380pH5-&Ot%nO#dP*vC zEok=>zN+&|AN``-mxvPLm4qS`p){!K*_`xAnV6_Nf34l|Iz2u$wnf|FLH=y+u2umn z#|5oRi1$Vf(lqF9CMM=!v?s$az08Vi+-JtUQ_U1Ye?sIf*SOp5lKB#v$JfpE1x01K zVAE|M>_FJ`^7<^w5W7Z_QfI3_&oRBD+jg)^8vcy|DCEvmzKP4L4*rFSiZ#S9mMETZsBYqF*1MByeKldnh)Ap zVorR&&$N4AQ5rkAB;b!%bYd|0EQu#4D@hS)ATBC5R$Fq$^{XhLX*8^to5`9vMQ8YB z0O>^E!Of&^^P1zx%HpU!TFy;OT{hnRg3)zvT6-P+k+ZlOyNaH?U76~_)MO`089Sfl zYs@VVSUvXd+lYn@RRC$}moF1m^iOc&@8j13=yXAxcNg9zR+FmcXl7MNciY^nev0u$ zwAhs>x#LB1U@vOe0DMibg~O6t)fNo4kf^T`d>dhp*IT$XP%77JaVOPG<;JBi5X;^? zH=E1{}bsr4vHYz-c7nsoYqMko`BMd1T++`^0jZim+(xrO1ojC9ATneaa_)L8#XAwk^p z6SHoi%j`4VN@ov*It=NH&_H&L$Q(d^*eH+jWs~}~Z#_2esPF=A{90+i4#IWce7%>& z6S&I=oVx`poi^qWxf#oY(e@&xX&T|b9E6a`R82&?J(hfD@#!sDd#-lAi=2Yt;)y{f zFXy;%{V_6qN92LSmMXKJF!5uC+59xf(x|kg@!K4O+`9qA!ot|i;+H?nZ5(+_l8ahE+0=nGtOPBr!R`BBo>G8TsP<`{c_dDQ}oAZ}N z0@Z54`!|MZI0h(;4<8rU2B_PkL@GUe5iiR%48opnOtZg->k?~ETIW%x58Q0#X?alA zdc-2N1VDmue)h-VMb`rQqG_}>V-#dRU%^^D*fA&FIkKiL^Ki0>IWh*t0}BHZ23K~j zXh8#{@(z(s{0BA=39z?T(26xvawE!--$z?E_m7qnR{M(f;=4tsDj41}t7G+*Xunt$ z_Y$D(nyx>~ur(~S!feiDbZmIose4$zd&Z#{WB+TBC${s>N7VZ?U7_=r#f2Iw0#a^Y zT2EdU!oBH@LrtC`(5~*TV-#XIj|~Y`PTvPC`Xw!dZKZ%Avc3r3L95l~8Sy#Z&d7rD z;2ewQ^~;V?RF}|@j_p}w0DOpH1(kLO!|qD~+lAar)W>L+gctBIz`*Dp;pMTo4-`vb{Iw zl%I8PVa$}|#o;N$FWSt8L{<UmOM`31(LkwbG zD6{%E1EIW>aWIV@4^hCchc8ZE5 zjoiLy75@&#hYQkk?M>i;uM%zAnd`G7Dmhq%O`!iCW*cxr?JU$68U@@&sY zAa?GMsp5@0{Go*s2$YDx#l{mX0Z(_Ybe`CZ%Jh6${xu@|Ti~~g;VC~Yc#Za&oFc-u~YFrSld|A%o1nN)C zpu2Y*sN#}mkRnOMPH5Lq2qIpcu0C$*a{eM@j)z+bPGoXlHaHo27tpN$Cm;aU77Q8H zbK*lf{RYFOax!wO$dtMEADKbAB1oFC7udTpm0IO1aN^{4c{2A>mS}d}1ptpMa;PGN zqj^Oi@V5^Wl%UF3;l8E=A!KKT;>N* zq`u9xx;z_nX~(@gT?9UHEHv)2c&FLvj`%{MEtkFf%K+|tg!b0=^FLnx#f|Mtopq7T zHL2W`VLJeQBN8o^DinuBKzdkP8NcN3p^K~-xcHz`u(t{hTc6PQ(HIh`9xWO4Mn+x4rExSQp&4@L^C;J8dqa1m)CF)d|^p1f^3v}Pfd}k7MboD<&!Nz^Ay<(L*YMPordy3E$PpyJ@(>!5CIvVo^l_v7vkf$DhL2nh#iPpfAt)S`6$OGz)4YG6~nY&QXfJG0|zg{2%Jz}S=K;q|W zexLICi0;?@Snv^6$oAuvFUmq^nOnE=HGEmX`Q3b0pxd9vTJJ=% zWj1}N!+X_?>E!>)P#N_I)MdJ|?)u2*441VW^-^B}^|svL+&G1y?u#8#BH3Hm|XTp!K1XcJ&m%X>RQF z9>6trvReJ6n*380{ZnUIxD132c9wi0$u<4`J5p-zLYR*b#b%oA&@c&zoIZ&D8uX53 z=^5EcucB#bz@iUh5gs9Wqfd4!#3Qd!JS(2gc_@#X2|`92C5s zMPgzT*>lFgQ4}c+@K@bGW71`iX1t?TZ2=5{kG||c)={8$dQG?4a?wV`-%xI^;o_vV zyiJg>OU!HW+CP(~oOH;wQ2ybP&wiwcOsJubjBKamv$6l$Ca@cHem`Fio%4Zev`Gsg zy3#lXx6uKr(n92>T!uOY0eNB&L@gmGYON6WaX03lsEw8X^ooIxhdViG!L0wzu$hN7z@fozD^qsh7onRSNZL5SmXoWF;q^>CE zqR7X- zgCov{VNw2|-yLWYX!PCB#hxz$##G)At?>8roy45Z^$sV)UMsdW9xR_j+Fu?8<%31y zNA`UhGts4kA)=t}qy8e?`=Kr3O~m@{(iAB>zVU0YxW=+g=jm{wDD=PmTcg**-9M1q z-*NhUPJu+ea`rfukFb}F#g_OXct8jKhq&Z%%#I~CMu5l>oDo_^30TR%lNW1uOAz)7 z!Mq208N(}E3(up%1m2rI>@lSi>A}QGL;gyk8n|LlVBluOOw;VZTF%;7#IJZo6SQ6> zd_7Ip4yuvK_83`Njb}uOPTw^zVTT+4i)+hq9@~>w@D~#dVQslVsO=KJ`Uk0eLgT>( zI+ohyRqO6AEq8ZOX$`dZZ80OMz!c{d320^w6aC zIoE|ji^0nG-d%3x&*QKh%tMq^DvM`K^FXFzOplUrACtY_`cRny^o6k>?9jy{5Eudc zie7J9Kj0Vk{&^&{Rr9Z^7b7AHE%JXQQSJp=|>eRbm@KGf8TWN$wOHL zLgoL#@d~7=3#)dZI2+(D-4&oK1)ruhR|R-))3xJK*bUE~CQ(dy7#nT+ltz3?65%pV z_}2W_Z^>myJTD~)!5I5pjYROegF>~0KvZgA%@F+1GKc8IsxatIqaKe)*NXOz>%AAm z*o=GLt}&Y{B&j>B#V5}Djg|DbV2v!}@(lG(RWuseHa|uLti@5;c({_Qyxl?31e7M# z>kFL<+pe&zQ9M}qXt$!vMX=Yq;#~lNr?^gOtid5<|81uTI?QEAGdk?*fdhKR$P;+w z^}f~kBYf1V@_YKDr~>h4_JBLN|8i;9w6Z{D5Lw)$VcIFO>JiD<5@8gK7dxz)Hu}w+ zGil~)^Rod0=Y0!L%_5yWqnAIdt?5bl@z4Q)hPqO_ zu98nJeb@xS^pUkVZC53xZ$jkk2u4Adea535BM#?@9adXOk_gf~>zuRXgoA0b5bYtd zy2@ru?OYZQvgFfifFe^Hbhfqy9WEMzRZ_vIl?_v6!9zMu#r;Fn?s1gq(8lM}$Kb?+ zG7VD~&vj0R`s4%SlF7_{18`Gb0*orJW`yMVde%iN>6%LToa1IY_HCi*b2&cF$?6_>d#!6?}mOrXs z1`xCx4kp9!8YoDpwXGm$xNm;G`||MC-x^)PsecT&JRuGyN_)sWi(`f^=?V(GODsfZ zIoy4@H2)8YrMh(CVocS6eus(y{o)S6->SJ7`KN!*inBcBMBxoSQ9_WuL^Eio1&b&I znC@Q3rM8d?cFwwABIbtXHxQLT&mSK3?Su=P_6W2QmzxX}PWhUV9>06*U0yRcug};Z z;ffWg$aL1MdVc3X4HkFOS3VU$Bw9+06%;q4;z|wW!=MYqM+bHakP^*joVRVx7Ghw& z7oZBGdz(i%RZvE9oocc!J>t002zIc)wy0Ji8C9s@@t8#L6GU@n)`JnqhD~WpuX>hZ z6TUcT^y4LH%FPVNg^+V&DQz4Y`MK&>Jpt%jq^=01aE2R~FU(_oEq>M`#;65WYl1=g z7Nr49*YWJ!yIg-i*_9PL(iuL2R}o)N-8>J=}et!wMA>M z(E>V76bmu#yk?xW-qes%XmTOm?rF9)^G;`Z49ApF!S2Sy%<#Ir)b+}0)*4A)lB z6ZAM!YM=^l4dj}s-t!X<)Cz!VpIN=iOeBqYkzKdN)2!unm;Cs4m&xvFNr(sa7Xncn zOf%&8{Wx8CTwA5`Yd+0t5_0X;nX>wKLxFimHhzQ`t0Eij_JkQA16{CI@Pl|~8;gQL z+Yb=Y{U%=gwzni8E_abIo$L9@Zq$xx9O^!V_hb|rmSHF1-@aQxnw@@jF}m$i8Nv2D z*N*_V!C!uF#KEy^%0-+$f|(#w3Jl|Js##z3jy4=smO}zTGofTt{7j3JQ~gk#yvmIw z7Y_a^*LWkxU17G#`S@?;;RYhtvEv0s=r6|`2LL@l!oLXsI7+r&oTlZeLURH%4zAqq z-P{!3^GntE3Xd$EH_Jt4MOQ-#@}c_0%!2^m*O9f66|Mkz!Rf+(J7(ZtkC&xgQDK%U z#0Z*5{@JJ%<1V2FRlKvp$VZSlQwGS+MN{f${gW#qo|%Mkv@DB?^q=H+x3Klh1JZCW z61+0}Fl+FYeqY=-?tA8S8T?Wsx9)|=f=)T$<(HtbuV8}qnf$tl7rzLkiH1X2KKxla zA<#R@;ouY^#RNb|zGoN1yj`Tu0a))1vBijlN-2ewTXLPVb;c4(>NtocSlCs@xS4u( za*I)?Au4ZtMwO4r%c-L`lxw}mOD}nh9?L#@$uY6tE>jS7>^m8|Us@9L2>zDGw8(C#QMrv2 z>NajbbXB!;+V^It|12H2okJR9!1k`=cD!-SFGG%+3aS8R3x)VM!6;Xv!uX?-@upEm zutn+Yh*M$gt1ujiAQs#KuNT|2R#cTAdC-Yprlm>+fDRyO^6Kh^`nn_oGD;JcI6w1P zT#IC82oao;LMAq$P*;3Qi32bhx5&g9k4J$f5cpsRw;$*s6++t?U*gDcfqxtt^iYJ5 z*aV(s>00FAA|ej7~`4xiM5f`v|>_I3^)IfVb?BiHi)T85zQfjm>1s5-N^m zj8#{;^)c5v60l?_a$#ZOXmzR9Myba>K2Ae`dMBK~ZAXsM?MA|B9!ZC+UqE@zuJwsf zgvZM%^Q#XD)l&C^gefT3fjGl9p#+tS5Y|FL0RA0Is$2TUK>~=EITcYAYoTdd(TAn5 z?&d%-)oR)~%@{|ck5CQe0Z}mw%RIs&8i0lhHqgWz)Q0p)y>wn_c?Y! z8)++!w?SglF6xnbm6*o;V;-YXdGrUr2QjuCHD%&Xj-~>HC4aiSNl66&K}$I_biI0n z*aWTr(?c)@c7h_GG0w(b__Ts!=fPMo0tWclU=~*mzi|L&-W7IiGArw+FcRZn8%E?w zg`Fz>q|pMd(2(dbT1DF8r=o#Me&KC5EKmvr^?ZJvh3@~D?To@;+#laKV`wk0vqY{*2ie!$(tTk_hM$zxP8-(XmU zq@B1=zeKM64~)AYv%-%HU!krKkW_ixZ}|2d?V;J|iI;CtcMaJtbmd-H=_=F9zT0LC8!0` zWTG`w|FHI6ta;F1a6)f}4F$uy1!8z8Uf5SVwly*567*MRxVtr4Xy|yWd&pH1-BOJO z%AA2zcOccu;YmDv8I4lSjgr-C-EV-~UfIMTHIoL5=Elo`gsW@auBTW#!rbxv*o>N2 zyBq+|6^)c=t&}SlGIC?Xm*PNQXQ>V580qN3BwXH%c=epq(@od$=|oF~COQmqxeSW% zEwCb|0+&wJp%v$a&x||4(6)-3Bh|_oVnF%%ghix*z+~-yYx|vnU#8)f+M2DES`w@0 z8>owDa^D(380IV?^p*2h9UF2mJ$H=fXX?v$E9S0n?%%Dc2D*W5CIvq7Q@1q9{{RsGpeg9ta08Bf^jMnJ1)Kgz?bKa z`MVFF!BTmF!?o;gc|;-yVB?20=puVxe~5lpH6qEUXYVa=3VEG(!pr(o*U^-3nQ-Ya z{Z>jxhMxj{k;1)pq)Ju{6+uCEUkDO)qIQ5P9G*bo(b0)VY~Ar;fL53^ zD{}qva8l}_W{JAg+N<4pIh2ZtJR)_-2 zFsp|OJT?)lS9O^GAyvn&2va6S_uc)w=UflX&vBCKXR?iFM`GbZ}sM2W#~vVZLsuJ}Pyvx9F z?qD_r%gDjW+Lhq3jrNg82ROr#DZ8qF7dL{4LkFO<=<{U(PyneL(G1^5Ge-_(Wjwp1 zywH4BsHOptTj;)f<5`d>3v=iNK&O}EV@($L2rR{1KmQ`i@XcAm=Ue^|lLo`d&bCHe zg_}*brS4s8h2C9;nulC%6aJ3Kqx+?S0|v^5s#iNZx5_ym!DTSr39x5!EE`L?G;V>$ zpu{$2$~o8W49Pr+$6_r4SjV38!@KWSY>!X}Zl^_7GDHbQmGQTAT=yk3*8=;f!bG=6 z&`O+|^z5$0L|FDLjt@WkVvWtmpc52;>wOca;>1g`kPYyQ5H}^q$21UPU^0-*jnJUa z$(fuBj-=#V2ma7NIWp+A@U$K15!j6WE-Toz@Rx@m|RJ7@5 zq`CKApI=fFF#!wOu*%vtaXt6CyAXJ1ZyyYQa`+F3gfZZg1>o6y&bY64#7i|v9nn%n z4TP=Uw{rq~H$9ZCZ0J!&888=9xSAUN4~zUEGp>&gCp-s02SAUx_A- zk(>idLGqSn(^7NfpB4VpuF|}Aa(>;$e|j>Mk|1`sMAs^zuxKI zWTXU))`o(|J-*ak?{Ggo&~m%)aFl(WSZq*KPLzT4q;OvL(dykUraa`D4#Snvs^^% zRQ9!uCLEsEa|0)CIIC=TZhgSMScfu`l~I;`#Ba|rgp|JTzv%#B@-c$8Z_4l9`v~L( zwT7Xb{m=>wX~j;6AEpwNgISGN4qGHM6wauDRC1~()LeXu1^t3u{>bIDKyrN*2-F@T z`8XeC7P7}RSPCkk-c%$t702P;gHAwio@PaPP|Oof4Nq3IqwMwB!&3O3{W&k*BX5TN zm+_tVM)n;vpSN(KBiD!4WGdvlQpe%j&hC&X2t}lSyy)wiGLdD0^&P16Nb3~H zxC=3z+w8}84k6>{g25?GJpIQF2t2yU%VHFTE%H85@g3VmFPG`>xa}MUX6-&i{n!x=Evlf z%mTdnpR)$p`h}TU-qjG3*RYiV_!~9IpSxix1oOb>$Ma{6@?$q>hj!F)aq~x#G?2hj zE*X)ePN0|z2RPV1J{qndj-x)SvX?>!GGj~_%q_8ceMLF`u1FYs6 zt*JFE#@jkBi;Y%P*9WO_5ri&XI1@Qr*_eT52*|FZ0k|y=MVGW60^MZ~Ccq96N1#%o zm`2~rxU(yt9yHKl>4x5@3yP&5Ls6xf5kBM-M}r!pYZ?%P6H?1=Iy*xR{j11m?sum^E*|%Tm~{~n&PBd1W>Cnc z8;F6!Nla1S8D$n{#?|mM{(FvEni@+4BX^ft6dzV&S&JV^AbQV=e8#;N75x5pgD!T= zy3dHGClVu=rNh4JIRZfvN~$$!ezs&=IHye66;Yv6BlwYX&DCtzyxB+7&d={__`{EQ zCi@A?(O+Y&dSB}yWYmRGU*_BvT4ubzN<9u}b(+{isH z@yH1nFbbN3Q3X?Ytn^f!s+%n7WW>u69ahMOYeyXj@RtP~0j+1qHxmG0z`MiG&s=NWjsvdSE=x9%C`9zGb4JC;M~+5!9y6{7Zl1lG83Fk< z665GCx`3d<0GblSRmA3A1ecr-4&_BvM-Y-IvZ1Ag#f7+C^g9j@O!-LoBuLeVc8 z@1hBe=9B|eln5iri2QB1FQnRqZKE9r!1?rxT^{Dqi;?K`i30%p)EEcO(lCAbz;O<$ zJvq@<3|EnWp}1e}!Fat*2@<6-ynv zjOhE;%ZYC-M@($dD8kqvdJ_23BNNJb$#R>MKMEMvM}_7WKtikQx0WJX3 zMZV6+nG-AWXnUiR`!2w#Ee}Ezeo{CdCo4 z$27s4SKH*|6NjnXC&Ip&^cHE?Q<)P-!k?{d*Rm=|WHnAQt)s{DxmF0Rfw)4r{_9PZ z$%X+q7A20Y?lMy_TXS^%lK2Y-Z-Ch3&r$}l(ovG-=!lp)F&kK_aIZ#luCbb+a7EH+ zPbUs&Q^^lrCUrd26$e={7g+pQ&OhEjUKM?aVE>b?SbH8 zQKoRk@$BkHBS3wH;Ht;$?OF)k-CgpGzLZbu zN0FDIAeC3~Gwpv8L6Vk(>CYbPK9VeKE(v=FQ->7z8Wc~+QM@{6yzvm2LRetk8Eb(6 zn>ebL-}WkpgKeWXeSF=po-vRh-9p07XDH|3kR}%|lJb0VL)mc})c7(`^;-$v^oQEs zG7I-?Mb|2olY#SeLA2B73syT2K6KvGrEGT;3^T#nXt?ygAZIpQ`6^r~YVVE2DmjLu z!9~8o9q6>0q()A9Hb1_q^J%)Uhw)2wCUZt7b55C#B-~uRkBJ&#-3v8M;%(p<5=b6v zPz*o!YcRjqrbY0&O2BR;HjA%QNOsnC^*?4OyE#_2nHDm>E4yB=FjatPytTi+=0{uK z1g*_+N=t2(uyVVE-0@o+N!MF%F+^hGmtNO*<5ka^}f;j!G={!j#1>|_7 zzdjZA$OK46q5_qDFTeAK+=19b&Ss&)C^v>d$ay%k-B$1}DuytV3#2{+x1Rz5G2S@6 zgG2ZSYlaZ?dyb6+yLJ78}Z-mWus^DrJ1t3}h zhMJ%?sC>iu{Wt1B^t@ie(oeSQAv+rytr2DlDw!nHP!~Q-H1rHjmY>uN9%eM-vzuzW z#Wcs9j^ZTjmgF|$F}3*F?u_9f+UE2#HNnt-%EIDnpZ!VY#<*&!Uc}d8fC9#*X($E1=A0mv?Nu{Z1B1Y^R_H+Obw39YjnbrkO*4WU zJY6eXXE|S#q`nCT=ZEgbd`3;lQq2R+lig=by@zqs&iSqdjkx*F@H?!_HuS7k5OG*s+uT>b(12kE$>m ze}%Vw$S9|ZqPM38Ag6RnB>L7{eiD`*mIJQo$VfuaEb`J$Hn78yZ^3rsqBtfSch%Fgox12e3BTOO zXUfx?31ul7lmx~0P>*n*AT)$f0QcuG$dORuzZa>N&a+7VJSn+e1Kq!3JX$<%4&&woI%1TihY>_#?tOaEVV$vOpq4K zENjD!SoI z4eP7E6W;yMyxBkxtUyCnAQOs zHm`?NO&RvuybC^~1)-&J=HRJ5AhC?#S33f0!j;O-a6{Jvr6?I=OlvAdx@P3mN;+3# zmrCo7DmqNP=HjV4)?6X6Om%H7Y8)UhkS$R$3YqEB%2Qr-jS7^TSxmw`Kgq$ObBQhL zVPckUz!PFDIy-pzKi%)1MI(%`LmK8VxEHvYSJmyHZE=D68ZxM&%MKA|h@OlnvoPB} zDXS%>a}V%*0-2F4dSxf#kx#L{*y&TB=4HrS_$OD8?_0E=VY2$3Nuzbt4}8xF94eYrS(arY0gWlJZPD z%53xf^1qj2OxuVTPULTDw374l@wPxx1q(PMp4U0mFw!V}^pF_#CAD?b#mi4{bBrrG zj`n6|8X&j-$GPgVSlUE}m9TT~P>?*)aY=g2fGA4M&U?XT;l)Qh6P1(*#)(6k2ae=!a+-Q8`i;< zRSpuYk2Qx#lC&)cLg-Mw75E?WL ziSP`ET6Rw=$IxBLRzVJZ2zVr3B};w^p?i_Hi97>yvy($;#76iNCrHJo`C%{h{z*TY z#H*QT_BExQGC!wwOEQI9yT*jhxR({+Qd#{PWHy*t9q7FXxm_&cV)qo4VQQRN6Xq;- z{cWyM!p*q8wV_auj^CmOKJYWz2K*(Qxe4Q&6(1VlUmqmz(+e4>G#|piB)s>443`@f z%4qiT$#M8Yz&{AC#TMB&p3+_NRa}e}!)cRZT&yJx8@MrZ{y4U@?g_t?#qa02B1PgH z?|>A8NgQh6Eu9-(c$iL|lTUH~tvu?Qh{dJ{k{UJqE1oS6Sde9?PHyjH9Myzd37~ts zM0z!?kBAdps>P5B8&j%L<34c?J{yHwAT`?)*#U0GoQbzbBn;qolgFRgFNIBO&kMG| zfEpbYj9A$Za5pP>>VYa-5d#d1jZ>pP-`}q_`a5u944X;(R zEJ`n39^`snIM1(ZGCi9C_(jGk@7?Q--XK@H#;R~++Eb~g_Z1CDJ_~Q~#>P$y^stCu zWb_;;02uz;>>cD`GUsz8WL9W#2?e%ZUaV1>K4>5Rxl zPlW}#jUeF;+}!flyP)g-D7Ls4nd!6Im8Bo1I$Z9W!K$gHUrqyZMGiax!NGFSjJP+@ zu9pi{XFTdU=aLuiPEakJtpXRbr%#q0CF-eC1Dp8gx9Ha=?sqnIAAP(P=&FI5#z8h@ zmU)+K9};w(1CAU*2=GU|RdGbAy9s-$)bUmxcLDuS^CEFi*W#>^*nJq+-#XNcn&`_u zifUc!p2u+yZ#D(u@+?0wo4pA~YaPK9i5m&^;BogdT~$SV+VX*W0tH#Vh9^D8MIx&z}s?se{!eV2y>` zMnRbR|CVnpvDeR|3xoR;T12~gf{7gqd+R{~PTRfN8_Et$AVcd;X)%^1x^*KWPLFXT6ZHq%l}ws(5ir}k_uq(k8x0$nN3 z+g@wj0D2@zdB0@?dWtd-!ZnM7rK$vLo8c962O`5JMFtoyewJ}ZZQa>cH}zo0CfStQ z;hS3H+rpmV5cs1Qd4C;FItN>~tL+O>*CgFArG5Wh(Eg^M5TV3bg`32Z!!c+AszF6} z<_V0o?}%maJMf8c=D(b@4*&)1p4cYI3BI!WQ7J8c zEN2vVK9folb(^xdg!UMT!VnU@1KG{BZs3zCN(^I3{~y8(y#w48 z6&;>##dn9BEaHh|?q-S>`2?ulp})? zJLIA@Aaf)JyqoLK(11IxNfZiAG1%BHb9a5@)w;NZrWmf>xsz^0JzHZXUEmMHC2q8E zX)9DhKE9P3H}yYbS1FWk(;gc+D`?k44B^)eS#0=y-$}u^b9`VIwh$k^v6yrLWcMt( zfW{;{%Kkdsr1v%Dj*RWJHJe*>1f=WjTs@=GqWcFHsV~L6`|@!sCl^y1D5-@Wf}&u{ z#2^7`#f~u35{?_$loOvGnoB66@Ga>2jpPBi6<0HN@FYsSph}ASW9t^wa^Zf^NiBK} zN_HulFx$Zs%C1Q9uDBLmbZpFM=!XKp90?igDWtVU@m~=VIaAwJ_1)nYZ?W4AF)2Lq z=oSvx3t6CosPQPoBP;FR?71yBF?iMiyS>ZD@&S~Wcy*MD!zHfdKIww>qRqpA9+S7e zf(=s;u(O;+a4s3QXoOmmz-x`M9~X^X)ksxV7(0lz)j`tSY7W^Ujdy1+0U+l-PF6OD z4wTFnv)QO86%`)`{L+xJcG$v(bz>D52kxy)H`~9=R~;AuLJEVbt%xbW#IpTanVD)% zSWfJA?(u8*nowudj;1D2MVAKRQ5jz6}q)0!ohZM$2{cCbb*N z4rHP|UcpAJ`{C-)u1~STg893`^1}gn!(7gkf`#jP2OGQ>oWu#6e&l>%wasS8;-bx?84tz6Ov~4GO_V{GuAxo^T}50sQTbdxUbs7%h6Tslf&2zd zz^0X9n&)7jGpayu;H#lQTcL-G6wui<7sVXjVulNiXK6=5j#Z-=DnQs7>vp>mUFC1s zou2uU3Nq$E`RRZ3tzdcOALSrPdg02bIO-nV`SD$Ovyd)&jGXP>ZQ0a~=dkU-WXF zT2@m7gadlPwB_k=IDhPetqT`W;M|fc-4XQy|JpU+?l=rTUK3vVD!jIruU}4f19YSs zz6RE`zBYUevBXMM`-9+hzT4X#bzrVDuPXsk#tcJSp)q+fDWpTt>B+A&&G{iv+`I5i zIFk$1rxu@}b&rHuYvp$p%eNa6{UH*ax7j;lc$d5K%QaQAt@c6mNHFQKNmqBLBqOGk zYGnL|;(vXf-WsT<5oHZ>J@ZQlJTE5sPvlEwiYBYSdD&_Gsy-Myvzdh4Cve(AyN;A^ zKWu6@roVQnVxQ7tKoQ%D7Hcsh3CNncTITF=;N1fN3gj#!khh3zu5FpV7k!`4t?|}l zs?#PITWSxGsAUwN4WUkb+>B~PocXZq>S)yYJQ0%fk2>BQrs=Y?B@5Iv?8>Im_(foN z0g^m0_5~*9wN)Kc3j|f?T?WK$YjNgd5waK1WqK1>A5nipxN(82XP=_kj;y#INNQ8f z%tbh6lfciso9#~K3}fLc2!o7*ijH4q-(Mt4>WmOgO#DO;K7PA8xpN=hqzvVHJN*VT zLi+28c_E9nDB+}0Z8sGq!RK$06GODYm4@5zKaPCW)`Z4w|B!^B$AtolB1m_2qyysp zU~?iU_o6hga7Y?j-~7uF_{_*u2d+HoDH{3cLXLs63Xq5dK9BH*qEIB1`Rbq6qt@&Q z-eHF_TX@=h4cRdh`a`k|^Ld=WYmq|WS#WLmlBpk55PM2pTwH#6f&9-LV3dAE`KrmzJNO8r38>E@1Ik!WS0?^hru=hqEnv- zRUG9Zn}J1L$GzE`j4?Ru-|pjiJn*2AvZuNNcnpdx#I)$GB(ep~%<_(r-~bliqJn4J zr%SE2L~h$;lw=ZYN%Vwhb+>5|oI=OHl^7kmP4)No5e=1s6-cTro|&eX zsUf}LFJzpk>KYGQZ7zgi!+S)o3<*QkL0P+!eZl9vCk%>&-}S-O-PjsUMp#9yemZ)T zVEqsg89QMNAwaqk$5tj-vm_Tz)LX}j4KVH2J1ngM4~$4ft?i-*FU@CX53HGXhNGOt z__HM>xodNXOuCN`A_*#3*Ga@NBUmw|Q1{x}z?VTuw%sp2SEYy*aR>S}B`V$)u!g+k zu7}+n0;Hw4xYY}iwd)lP#awR0AdLpjbs>t9nx>~Ck^lq%8O?*|q zT#6ZwP`j}phHsO0cpqIQV8_WfI4?DNk$|G65mxb`;)itCoOf>9-aWmoy-r8VXw~8* zF=I_Cqpo}~u<-Ai$s|nph;+;AJ5_B3+s~5wAl@EzOr7~2zaFRhWIX$!W9G2JuA<;) zT_zCnLi3n&5|n_>s~+Qy@*Y;t={9Y9XOF4s!Jq3>GsNj8h-3Bf5?ZP#)iveiM_@(6 z(>xUK);JoW8gaR!JCnp8nBtH3rjF#KaqMcaHt!iCy|4xR&I6t;v>`0*c`^-y9o+at zg9VRUw2gy~a6MVP0@;Qd z2{Rp7ewGWUp}Rdow70@))f_NPEPxm^k6H>gieX`yMA`*v1=PO5x<6j5@lV&d#m8#u zK_JX4NyAdiM?!)#h`x67Dz2R*lQox<2ezt*QV8TPUFpDF+E6!F`c!0e455v^)?9S6 z_o?E+SlL0@%0EuY$iUN9d5`f=VLO1W?nX^Bxa<#I=9?HdEznHmN zlYAK*mb;u2KI?fP4?+t;Qr-8+AhJfh5z8JmD%D-~m;Cbm`y4Whg{s3EC;!{_iVQrY zUHgWi1~H_3H}X8VJa8)e_(Ht*1O}=f42^r}{CgZrX!)cMgBfciHo|0A#l6JDyC-uT zKUg1yYjs&96Q+bzbjE#ZKT)n%D$(z8LhDMXjKLbiiyhCd??zw6rVdk~z<>_mIqzpu zRsT@%SmWbI_R>=PlI!Wbak$pR0%Nd@HXyrT4K#r&zMpMJ4m+NWy=$b4WzYm!a4V4N(ZS;oC*0&zw;BIS}me#zO+MCZ8{C zF{94X<oZN`O}oOTFplrl}}z)KoxQV z#5hy0`h}vmK&GF7;peI1KG6n6O>}eK%%E);2;O^d0wIS$WX z?v*WJfZtjZUWDYNGlzg&Yc7oqNA*Z?k&=~Pk;jkQ5rLb}*Ef@Wssj-G_pC!Z(H#2u zk!FoCv{5CHH{_doX&g z`guWc;(=aY%Gieq*vrCJ&S-(ryOUI|ieARw?TZb|4lKwW$E9d=`^t_yR zcuxQ!ln5XmJk7mS*O-^cPY;6hS78)UW0Li{kq$1AAomwp0A2}UxXqO4Da}ogZn_gD zI6-svOU8NWs;LQ0$R$VGuv>?AK95==>iIXbJ1qq(3&&8wWha9R>5%24^C*Sw(*z*4 zbaJB#B*b>^(@t$zwY~*PdlZl9A%3fcu4#4Z?fiEhtY}M3*C<()q|zva8GrnoHK@$> zK$8bH`m=i>6zM0G$DDAbU!y7tUxBF`TQpi?!KVnYQTe=z2on0pgtYNSb}3f0vzC;7 z2Dqr@S@LEM5jUhzIt-3bBq@ZVUxlMCzZO@-HZTV3@a} zBfI!`8_?XLew?*1OF_ z_S}t*Bjq4%{Kw|=osKUVWqHbL8A=4*D(YahvbQTIj z4KfLFO4>GSRG_7N}uK(+e3uDTm*sh$Dh&)reE+VsDN7b(p55NLx}Afq z;$QV2+KcBN3z8vB39z+=HJuyj8dwVMaD~n=W zIc+C7j@td4%%`o7fL|O4#rJ8G(lmrjt*l!Y@pGe$8~ZE}jK8fwEM=&LhosqeG`tD@IVt9(Lx z07GKFPyTkmovV^$WzmSnF=4{tT^APd@Ryxb!LMa&7B z(1`AyqWm8);LjF;uco^WZ3ETZH)hZaQBa?+fa^QT*F+q9X2A!>&rZ*3(-_wMsj!?T zf+YoZuK8WwbxV-2k_z}16iO+#s#lt2_*U_xWHAT$e|>wWP% z(d(ia_5&+<*Vt%E$E%Y3iWkS|yoIQ7itA~M27)_i^?4-&_AUx`hTs16SO@ihxvI_L zb6Uqsm{(!?Py09nCXXCMCEm}cwmdxIza@1wwkT7}qM$+bkPUoD{MEw^O%+?dLsxFG z?7XDRMP;(O{DDPiXN8#m1UE8ZGL0ak^s=Y-njYTWqmzP?7OCg_|HSc;Q>i#U5IJh~ z;hvYM>S$)u3`>Np;V-_mv%beh_TzmrY=iZwI}prN`~Q30bU_vUp;L*C9Gwb!V(E)A z@-Ho-DF3NQ?wyX^ONZRK|3`Jp*!?)&-9w0!_>77aLH!J)J-8Ni9zwPq@=wDJzI%ly zt8UptMCgt_>Q>-0U~xc%+Xt(>v-wNM(;?-BuuklqRR4QGh&$skkP{n_1z z&!!&&ucBV|+=Mr9v}7{3&Ir#~&s?@Mnd1=Rq0M10HA*eUvF`X=UVJs27;?a z%Nv+Jbm7aC)?qfjTLJo716>o6Q)hJ$Td(*Umznp#SvVko6jkQ)RMUi12>@sJwuAuu znH%pYK^~6uC`~wHvNp^(+jBE1l_<4>5$2yQgI1cll&7JlPhekX4Y{pFS;%EaOlVP3 zH>$0vE0Pl`M%oruaiKXGhT^#M-|Mb?)(hRr10>S9DFf-e!gS6lC*%}NpX1!JVs9cg z`V3^fzM|*-L^3>E1FMzbQTJHREo&*r6ItJTw|mut&3dt7!7$6~T3ddg;;Azgqj^3} zJ$N}NIR$J(l*`;aTT&t*v{8_Cb&1(_6a4b%-anCzgMO}sc<%dl)o6WA@gIyjMj(9} z9PRVh0b6rZ>2UB$R*fcIPUiFPx+kZD&(t)CfrNVnKcmFymmsu3OfG#&wKp{#jzy)n z4|iKo_*x40#F+O_00#*wA5P{Bb)D%ZgHu1UeM39le26etD!iW}hYdk`Q0sSr)$bL0 zWXU)Uy|AT9$De^3>kI82jT?X z7cXD8NKSPPVp_evw@~mUgsn3;pP|GCcY;<`q)nusG+D+fi;x`~GCq-x5(wCGy+Hvq zgH68nJBsRo>niO<^Wi7r-Su#}n>#=k;N;}>RF9_B+(pFQ)^}Ns!ZpsxkPXhl|+#qURUbi$p;|gZ6qHhMiwG%Q^=y z@^wURh9 zE^-s^E@%TWeGg~ZWKwPY*8P>ZZ(HlkQ7nR;sSb_3O z%SvIS(h@Ctc)&!1NNSEYa9vf?Gcypy&K>5zg}Qh;DG1?1y#qhT2~?2cdG-TW_z?ss z3neWC0m^vTWljcv1!4Fm$|8t!YD=v9f0a6>6qxqx#igeqL|rp)XU=h{pa*g2f*%;0 z@dw32z^jas<=w=b zx0u+*vt?(&b`{+2Z@`(Nx`HwYdl3YnI9dRspBRdl_(6D&BA`1PG-g_(Ufvp}QJ=bXm%Wo9IUrB;_T3<=?H$uZSE5AY056aG<`U z*+3|z8WbK(l22-aMn1VcX?c_kLxx-2Qm)Vs)h}>e-#W}#aGa4`>=-0^@2F2I3#LAlGGRNB#HEV=#Qz0x6WBB~)NO zI>Fr@xs{_?(5=bV?AD>o`8XbaSH45)e#s?gYUds_c2MX#i6J-M#vW-f#-OAkj^ zUZfIMe`}=2@g4k_!Cs1LWcL@*&h2i6n9HDAT|K>FvkU=v{eMkI6-xqi*12K1Ib zk%0q1e%Mu28+XOYwPWH09n&(5ikkIs(OGKo9cPs@z;`R8gA~#Ap{7Y1(N$rN3 zAy@J-W^%gmRQ>Kb)oG7loBC>&3p+M1-}w=g*TXsJ0zM+lO-ESjufpcFXHc;;_VS#^ zH6v$VhHYVc=eP1b`*$SH$XmerC5{}8Z|MS4MIfNOIa4PuA)sF9>KidRFL#6JUpB}emSZKQw9(W zT(wpaU>!zy#)`X0(1JEt1_uyt-|6V|a7)tt!cQl_2uF3?s0NO@-U_5C84X)4!f@); z=OxiTVQZz}W6a}DG=``S$HUwMowb3^P1#MFaaVT6K9(MP4&p&ibhR?y-Nae>)D_`Y z`NA4QWbFNAU%zC7XU2#kOu{46Wv}ci5D&2t%8*!j zG+CMLT-teHb1bqUVnVnw=ThMo@E*fL_e2AGL?TK3JWpK+q*#zN)O1+^Ko)^%gVCjwaE{#~5BM@K84M<9sg?okk1G%|<#V@-1X=RipY^+Il%8#e8 zk+LyTGviN(Z#ZLkK80_v+Fo}qhU2tV4jRa1uVuCi701#PtLRjZJPBCXQ@qq@&Ypym zQdU{`4|Zx2qiSOP{UpAnn;EeyTP0PP#w($z6>%us+RwIJ%+x(t%WPN<;UTZCV3kW1EhaR8 zOqtE#*ZQ!+)VDcpNdmbHg$grtjlqd^ll0FX7$-@b5RM`gefxJU&~D*1^e{&W7B-J` z7~WzvujaS4wknS?yvnEBLyZwYpI!;_gSy2PF!d8ZhmXgr+BLd7!X4%~+P*^o+wKV0 zBwyt~SST}PWbOQIHG21ZK=;+QrPkfh-}p|#0%Pwo8@L&H$~GZTZ}6KN!;ckwXi^QU z&>{NVCrwom@OMAH`k_#3?ex&;>QZFg6b_Z%YiZ_6+vfi;1oFvcG^)`A9*;>N<6fh# z_2XrtKEwNvfbc-Bd4_jMGfZerm-Z86D()k?aX-iLCArvXDTgJo!Lh`>vj_^{7eP5U zzyA>-lqPw{yrx(QOI!)__<&o^CQKXVE=9fYuZ=mR8<%C+7gCwFxQbg10*LtlH9*S0 z`oz9q1wlH%yhm8!*@_&W$(gVQ=`ymCxjP=tSBNmIz6Hu}s-u`yd^DJ#`}p3FoEs2l zBRy_Ek`pDqfs#c=`Bv+s>!<#TPMK3=L0B;ssAVdBn`&(fw=-&@OVf)oo6@U2MbcAb z_)9fhCq4Qh6dh93!3=<{*a%YGs|Dw0ZnuQhYAwo;*3WAM5@z6Dq$z>>)^ttXVPaEm z3xefkCXd&F{IvRdKtMHs1K3xx-1FgMstM?}!?<9x*2dY7L8)%9GtNunK<4U&Yayej z-5Gg7b7qpB4oOfg0!Uq%-@FJFrdSa2BcXzLZOewK!O_p%rxBCy8t zA67KQet%LSYm0Olw6+$0*Pf|kv#3_=r=>EA6hn29uB`%4j4p-t>HE}jkf-PaF+G^C zN6t3@|2q=5>j(JZSfK}@r$PD%J0ouSC^_#Q6A8Z7EC_&Mpmr`?Y}Wi(7pNF5K`&F#;=8hT zO!+S4eS)bD@iL@IS`D;5JMIF>9P$ln)KQc(H_t_F-`>GCP3ic|RF2J2htW~uaxA!N zw}G|)&rwkXodkJ9mrLySdw&Mr@XMPF4s8i`o}JGT4&}W0*~1Xk`6EvB5c4=Oo+BiW zMlQHHwNcLZ5gc_%9M1#LM)~>D%LmzH!y;!F8{f)rAK5XAenwxwNJIRnL>kSYJRNuG;UObLP=bMfb zc1Kv97->Jo#^uPr>~whf369+BtlMKLr&YKYjK`Qi9L;n$m8C~jPBbWpIJzBlott}G zvq8E-bR5dBgx&wbTep`;a5G`RQFuq6s6T?@*19pS!#vtY&{V+cC^R|MXsY0=UEfa| znrTm2*3GQtWxk2*d?Wee!Vz#RS54$c3GcI+ri_((ZVc(MVUn zy4&fvTP;IlE`wu4scL7JaYXw^k8XyA_Kj0q4uH?PVYSiaAYFjm5gage>qMJ#X9Y#h zr65x3TkRYmQdCg<#Sj4ewW45XS+lFe7+?2D`w)hl)nGAvfGmIfW?Z2JVF<|oSm!># zf*R|;!;gxp8dUPB;}|xp?0!R?HL7{(*Jn1{Uf>j^uyjNIZOPy|Z99v-pfdgTA!uA4 z1Kb$#v{RkBspGjw+U&i;oM*?moEcOYD>Jgf+4y?*Z2K@yF1$HO0`QNKjq4zJ+;#w# z5=xF{v;1{PM)WZ`jZ;7uyritd&0M+OLrt~Yj70Jq0;hQ;F!ktllrNR7Ay)TN7#JeX zc~@1PcT4vcW;Uh$5&)6uW%5k}YO3S)7Yshc-i4Cz5!r2*_eUa~cItD-xW1)|=e+iY z>}Wz5AOqLc`sWS%jEYZ~urWoUNig%kkZZw8`XuC_)ro;miy> z=hUQe%iI#^L<9#A%t5of!)1i)hV2ECccX7?O3X+ASGk`0ihf14l|z*IG*ZpMuN;lv zmJuMA`x_R76~H9t^&V`>HgRz@v}{-Y=&bGfk@=MG_!d453+08*3br%#S+)pEx(WL{ za2HtA?9xYX8~IZMCY;`kC_3VOJ+Da7y;L@gl{U55$}P+3j;O8}G3X)2>j8j^pVqlo z>YLd}F@YPW(q*M=y!b58E4Xkwi2D9f77EaAd+{NK#B;$l{M`w>j{x(l*9)K zuM$2&2R?MCDEC{~&eFb7y@FpVei{jpG~q2=?%p=YxsntMCeix;39g283@ zX|N%dcnW%invM@8jn)+@_k4ii`Gr(i*8SBYF5tBr!>bq(V5vW0&$rg)v~-msZ?mNo zbz4=n*9|OoB5P)gCD)+kp9J|}fJ8n4O%8S?qbQe;%YLyCU)b!UUz@-CmI{fenWOc7WI|HtG~^?7!0w$Yop2!KYTVTQMSOWBpgKyGY&BYQ_T$hQ92D~ z6^9OGcu6fN@Y#ms@Ed9(z}iOAXZvA?F4E+&L2P%4|JmyT8c;z0rx$lVxGn`VXJYA! znUzCHsSRY*=DhLW8A|X0J^BC)>W1M;&U&~--x$M0I^>d@YaSv`5jTfMQLpa`C~CK5 zJdU!hS%_$xSge3&K2~iWF$}CEsI6Fj4_UmyvPNvEB(?9G%>7d%7nr3^tZ-OVJ zk!(i|>EEUf^0P1{2=t}9lK!z>3Cp&~vDJf@E%MA?BB zT0#CLK6mJD!xVZqio|I4aA^OkO2pPVZ{SFEvfA`i9^1GDM7PV% zGXi#M4HkiCN4T{-Tl2(-8Zp^PKCTrgR2q1hZSu{fr~+X2Dh3q>YqK#Ritw+Hg)!Bw zmJzbVyaZ3AcJrb!ZXrG-vX0FwTugFL#b2#J<7kGUYKsM%g9aflTG>r*u6Sv1u4A5* zekiUo9{6JuV1gq&Xp~sLOBglzPk~i|<>_k-Snw&+kTS0E+c>R`A`K$vE)7G@lo({s z!va5^nD*DLI+fTTH@olE84no%6KhkMx5^D=`5syVR2I$+RJs?(b+~jWd&Yx$1^(J=xpbChO1X@fZzQwR-2f ztYN$>Hb{T(!bpl?!}4*#mA9dLbGUJX-OE;>I+0gjxkgqhuVOhLAw>Ui9rW>CG06W8 zXh8C{S_GX2{TU~2eSLvW@NOKjU8A_(lXlT`#-txR@S02x6wBd!3%9q6{%4s##&#qz zH0whXOrrs{O#34$yEjcN3b}R$4qGk!l1_Lq6KrMB2J%Oucj?|6LSG=HU^Y3O%oiuD z{o;reAcjKfPAiS?4-`-zb!3#Z%{jAhF^E62T*c!nnv9hakaCDS?u$!);=JP}S8py4 zuq0u-;vsn0KiUbsHz^M%aoSveomlOHoYfad6jMAbSr(Sh*h2wWPY1xJ)dmhax3Un8 zl-#64GnUPd!$BFf$?OjqBm`65MVfbh7M84~BH-E^tmW9rz(Hp!rpx-KB zlq_EPCez;Cj(O_ow&TeK6>y`|gO>P^V9zollf+B$HJaT$=By)vq%A zGRKvtiIm7#Y!{s9iAqIj1gZsrF43vxF{gKu`!=|4Tkha`a^v~f1DkW4=Jh_2vD(=i>Bt>mp^PM!*?Wc%u0=LB zr*jM^JX`W*1opB%!Yd6dw{-B1!$@b(!VP-6y z6D!(?pwmG3D@#6tyBS}y@M}#*y{^#8U)x0$REnw=>sm19xmp=?uTmn`S z((CnOHzllm(iyqOVA6&l=z7u_LKn9A6v?4!a)-i>iy7lWb#aWd7&5(W40CD|WQbz{ zrF8#CM`zuwdmnXx-_ae+)WiUpg9`hvlF9u6;)=BfBwlB2Q`?*cBfT8svlhC{*Lkyu=Y-DBU> zUqY24$#m=A{DVe{2Va|QfeWddT!yL$-s$1SfFgA#N zmWZ3Qu<7DgD)j?d{w4$x_fzYJJ+njYiToJtH zMi~E$Rqvg9!S#zIfEu@9y)H$PGD&u$FYCwEB<{*?O+*Ecq#U z(qR}wZkI;;u+k0kIIPq8-*pi0nDG&TWnGGmH~cdD4%(05V_4{1+t;l%Wt7c6%kmvZ z?b1Sf=NHQ9CVXUWJX;}^yS3!l3+OO#N^3-%7kT zTS4{!TpOW@$D!Y!c;hg8?5O%k7wV?8I5r9L_{*eCWH(?X0KJ1)nzU>z_)(q)+oT2= zYHS!dDu8V{%UBhkH-e?Z**CPe&!}M=7BS=2CL^UZHceYFTHA-xI6$-b9+onF7&Y}j zs5EbWYaYGUp(HNI45?bhgwqXXn*sG_*K@MKoh?|V5Fr>gqvO`!%M*EJTBr z&^#|4Y!H%uhM~GnLG_X9R|^Pe9^4(mTq+eJ9VH4UM- zw-5bHT&XmC^uIds9NN*@UyckBg9tmC#*rk(ys)*j&K=j|RmRBnLo(GhIk-M0uf;MW z_*I2RAxBtZ#)GFT8`or;Tt zo@P3gvg*3ERB);Yv6WO`rIDJvKa|4yj}F{RzEzm|ab1F_<_huJr!vX$qSE@2Wmssj zmFz9~5HhU40Ju#i^@rw}IZ&m+3>E718e3JT3ieAYxp3A)Us9}jhq?MY<6Ft$sNZ-- zRm#|4oNT<8H7H$Cdk^u8Lh(<6q`xt_J{jR{z$Jdh z?dF4tCVS;y4`}>Qd-ItSl~U9c+X2)1tSDNRCNxhZ9HDKK^L@7%!!E+vKUBBd59>J% z;Ez`~n}}5T6B&TOTvV({2~@+>$%nI?N|4-lyvsHupEzRWDtk)jVr)}hed3=RL}oRt zb+OHgu+1@Z$mPrL#nrZ;k3)xTGvCY_KV~vGKcnvB>5ol*OR*hanYXA>4Z?Xw1j{J9 zY82sOsI$5uH?4N+a?%KGT(gmQ1OxoXx(;GBS7oehxR|O(;E!Tx?OYbDX0i&wx=bn? z`Fkz!CRXS!Q^LogFTki4v8HXmnBF!lHnl{nhOek7AHmcv3dGYP8}eP{lAMx2LM;-& z{8~nYyQRFq3{)m#I`MkK@h3?BHFW){K<5q5A`L(XNn2Gvy;${E*Ee-^SSlg)i%axk z;P3IM{B3>}ew4%Ff3cjH4zsxx*jEtc1~g_ko}9@s1P~i-DPDZW(B=}gh+~szA=u^H zrBl9`aBF~n|`gStlDuwub z3`GiK7-B){3cUbsn7-$8RvIjuw)`*ducPN5tz1zkR*fvUQ4JzW*DNbH?-69UeD?i2 zk*MnuN)1^~=Ae0qwC!?nEpVTUt+}auZgme#w2mGLbuQVXj+|8KKzGZWlq`z0%1T42 z{MYuPaCr$DMDqtnQNpk!jQhhbL3sK!!<4Hl?Gr;nNX>>ts2u~5J)2;StV9-T0Pl9|H(wG?wUke)-aA5GnI@9MEC?t z55>|Pg8fBv6T{b~6;%|?JUC>b`>bx6fX(T{C`V9v97z>yn$%!ZfI(1hc>in;EJCRs zx6ymq1u}R54f-bWc-wD_3_vuTfAjmP4=Lf;DNpMy!Qai&_TMJJ_f`F%2k_%nL zc4N~;8Ea?DoHisJdm&Wx*{VF=At%E%0erN>Z}BQSmZ!Ts$Fus;H&P^1XKc~U z3a)i-zV65m6{BFs6nkK663OKITJcXOi|z`y9bcBTd(w%jI8}{TC95eB*YAlcLekK# zW9k!!TH53rPYx%RdAQ(ohBwG-bwh!vfx!o$z*@gFnw%$WCPi_Qe@}x`l8e zb8plB^yZwR8C*xvU+>zxob{|zD;2b3>J7GQidB9QIe$kOG0iQ?HX}ert`)gf{$_{D z)YcLt%l%+wzbyS&857iFztXNK2boeU@W>nkw4kL+!5dM<#Uo)%5u!Owx)PkFC^Xvq zid0I)z92th&F@@io;b@a{uY|{#Q0W#W+NF9JssoFx3~fU$wl@<8K7lxL3j{?Zg~Na z#|%RT@fw*CYR0c+pv4v-cj|~WlfFT!*GXkJD+A;SmU>xg=VT7NRmOQ&Jz|>Mbk47z zO!NChbhx~j#TEYw!m=7yh>-lFw9)vLTzH}Nc1IIpBPPYZE=;b^r{is@Wu{f^>s+oI z%5-HE8-*8N@Aj)R2L^EquV0t`@rb1?xU-#0WQ~ljPV0vPKc< zk$E(_nY8&z`MwTPfYdDcZ#b&iazviFUMxu$)`hA>kzc+yPDMkl(n*oe2>$$qA2E@S z3>uC93JM}^sU`QYb1SY5am6U*m5~ZTOGm`3#Y%fou21LQ!kFlF0!UqD3o{8Ddw2cL zQiYbJ;OtTKfT`za1iS?kq!HU)?1`mQiK}$5q6f?ScdMh00>YGxSA$aWFghDZQw(jV zKA(MwO?zAPyVXe?aJ;hwEfag7Jvb{y-^qeS{=W z?2_gt??I!ypT6lpP*NbvVuAETD&UJiEUP*CoJt-;0q87@C711{h66=E2!#C&O9Igb zsmQ=?kA%LqqX}~Wf`MQ`GgZqy)+8?w0XTgX}sx}o~ht9kup~LQ=*SoNO#W7$9u8tY1 z$W#j9@Bp&fu>#m@Gv8ovYF#rWiR z>>LBy^f)}!T1g%<%%ntVqbQCKTV{O}IZp~sm1dEhH>kldT*5>^4Kd za!>}YI8LRNX-*`M@}RR%zLvyHI18_h5xl~BQXDOe@X z?;7ijM9(*{X4hFU@!&{p_6H(!T6FJcxk*%Wj zabygIo?b5*ijOrz^+;g+7^IeKEnKgBsY&93v(Aw?*owdZ$5E4cFk!1J-cj}I#V}Qiy*FQ zcfs;vM&@gwg%y-xt1tF-V)wcyZ9+yuFh;{-(cP(#V5Y*K9#ZV`&7wCX4w(S7QWTs6 z3=As6!khgk6SkT;Va$n}I%LMzu>Y{JO%!jxj{s&o4CeFG#N=L0vUt0EX{$)}JB)I% z*TTJGYPxiY^#;7*eo1P=KwEC|VS4E!`P)q#p8m|eV=1NG*TN=Cfjq;1&Q@wOTNes# z8omy5ZjOSkG3iamo_3x}wlZGxtq9}ZH1v2YVazUA`;2ECF9Rf3;rxCff-_r$GGHup zaWkhrbk#@&MAHERC@CkR(eL)R6~4>9wr#uDu0o|+=6rAXNX?Zdl3&WnLa(}~wlof> z2A0h?O-NaV|6U(eOw1p z+QT&7a&d}t8INpbZ8^GhqD+P#<5dktB}K9c07}nMOmO2ckNYcA(0c!^ke9-MEdd6rL}`E4(U97}3+a(Lha;$iv*qhRBg+eSjYv zx~`S|HTQDR?I-AAhbFnt=JTO=q_A$?;SLat(olxIyo7KoKI4%^6o>D`Z$klB)W@~{KV*pxI z6h#s{QV4Eqn_Wvl78I_?ATT8~W=9{fK+ZMjz#tZt_MeSCy*H@>{(qY5t*vA$E-@b_ zK=_NJj@B{l;|EKK2>crz2bJ1D9HAlL;p&SWg$3+SPDc|54^=#Q+hvxse_sT~+hA$n z%H?Bh`=Na(I`Fonvc7SWTyqU`oE=eQk+*%UYzH|X-I)$D?#Vcvk_W4Vv#zAScF0WA za7+>HspKEssRu}K_oJ?V7(jUE2?9~n@VIo-KQGM#3Mhe!sRCnTf!Z-gtA`lHJdB~Z4!MnlZ=jf? z;=yhZcX{>kYHtUq9|puC=U)k47~ra7Nx{7A%+iL=3s!5e2UI3|)jt`Vyw~Ex9+pT# zX`3HUU_>u85|2%byz<|}&@QhvmaBg5UWuQG;i;#@%XMHU+_n&9xg5p6ZFp67(OxZ= zu*aItf_t&|7#X+)OlbCIaAY_vb)$z{7oY~(YK!k?X%-Ti%!aTfofe@FP04qr5`k9{_(`T?vM5WCpET6FxIA#O?-J1PrhXN&vZ>kr< zI?dq-zTpeTnRMVtv7Jd}BJT+-fYX=LDr>_WZieo&8vwZI6X?FePc8sxKe>l-RJBQc zRrY8ijI$Jn{Xxg+Qp0ufG3P%F@&H83s>cMJIChL;susHJzuu%P#~6=W;-$jDEzj7ssZw> z*zm6igdUM_8@mZAn?BC-)mw_Nk46XxB0MP{DJx$v zVMSKANSCcM=EJ!hGx8w6s&H<{6MO}>qL-NnWHTU@<4#q=$3vEyUxOX_2TQpfp=rut zr!u)0;E6OvsB6A+eusEE-&4P%QQR!MK|+WgjTNC*8$`v&^te+z_O%YRtEDe!kUqbf zabzccE`Z#1er`W1Z>O9P=rx9l6Wc8}(@nf47{fh+q>D{X$#)*c6wW4Q+tL>Phepy!Mew)Kyz>wF-KZux|7dws*gZkI2x7y=5{QYC% zH$0G2DMoxqW&WB7xC)h#e)K`}!k>O* zB-OeMq-bfb!jEgMt9Z@l<)x`K5fBZAa)7>qkmmj*h7p)=e643p$r&TqEjt!g6DK6*VKcxoA{ z^X5O2oGb%Q6d;^k?~N@q2(-&br0FgjCW47p*U}Ftu!>kYs+4?pRn@~CG9;^6Sh9qj z?e{3j_;4a<;2S!25q*ja>aksGZceUIXlK>%@q3WMJtvkuJn9x=8y|Q#r33E;iHd5u z_S)p6t9E9uykHP0g+MC87%QoP>yvPB1HcK z^UOxhg;o=or6NpI=0f`zu&JxK`n+bs)CfTX*|hDUiy#7%SXl=5hx;dM`H9=P|G)d#~1Z_2IEcuYLXb76R2pn?g_q?%cf>gly#^ZU~@jILf`Na{^>#WSl`jCy4yh zJEs3@H-PuuxPfMdtZXB&SmR*7bC;*H5s>U-|3+w<`)@uTj&FF=B6T6Tvq_uuJQ*FA zHC01XF6+3pu$|ma%9*?uAEM1!s;O!?|FRho^7@TK9>l?FYjddD_NCBJtETW(9`UGZ zBXAO(+ka#y5&|poGy}pR4DL&S=8okqJphO2?S?w0o_&eoT2u`YhyO$oe}5UZkGx=~ zWI49C@Fc}WTq7fgX@;yZZy|B@=ooh8R@`aSh!P zZ*qtA8cyd{Dl-DGd>Ci#jMY~?JZ|!YfNVwml$U~z`ZI;Nn=7(;Vtw<;56J_@#8t;s z%1-?P+u0o}W6UFi64HKj3tFonSI)dn>ir!(M|{ zDtHZcJb%rneqoJ3nRw+x%*+I}2~zayB%-GJ#jKMhbDY zB@Q2LX|!UXHhu!?iOcouh67oa`|s)Q|2)z71<5Y-$TB?r33nbrAhp$ga5pgbO~{8E zmPCW*zf4&pr^B^y3H^>0f8CFYEqvR&zbPOM)p7V!9bTX5(iwd;Gy*|9?8+piS+l9Swbbps%Edyj&b<#sv0mrB-Eg)FQ>aCzRnWzm zo-dmpMUUOs7b>SX{KAD!B23R9Rk*?K2Nq|^Vas~U$v0e5&YHg}C&TA-3Y!?ZmpiMh zc8K2tZMYA_&8&c#;hq64F;6znp!^$O;J7_;=v*MMbl`Q~*2{13lg9*$8*wc79Ny0G zLd1t?vFzrTlv3!k!rGbI#mF}yRXjBB$Zs5Vl-||CK5}#QwHwd{sU5U+q3wxBCE~9$ zSlAiHU?MmNW}dEOIY8?;){C4BEZ=1;?4X#J*o zQH@^ZWp;XUpvb3p+}MHQS;#OopP;Y5-*muE1qcQ=HD>AvIVTbZDL8@0v|iq!ClD3e zfVQal-&*|HkY;bKq`>sBb}R7enUK8GHs-N->oB|Nwwt#1YND}Ga#F_+j&-Rkm;F#} zN7@iB35B|B*LqYKtV1zA*Av)_fPdo$XA*dct#iT}I{TDY{F7EJ6T+u`eRYokj5S?g zoe^P0`ujs?IEKhh(s=ObncmoP@hAgII?f{n3%FQ(uhZMHj3NeYy&R$P@s}CTo`&qL ze(f&X+M}1X)J3Ga;avMia5rEgMv8k7vfGcNjg;Be!%@WFE+F2Tv^(-4vAk1T_z( zB=P@<0vmZkm-A}$0S{;uEZ*uNHgoRL*f7^tgM#kd8)H1saIf%h~cJa6Mv&j?) zh>lEu;gt9TYNrvqEE&t86=-1oa#l~2*Kmlf?3y-nNR^9M@RN+x)asX&mrc)nG`dDe z*ZMThA2s{g0Y9xzpK5+Kr3AMb?EPn6vsM8@o-Ga=>*Q-lSIg*$mB@JL9S!QF(R4p# znBDWuqS$d|HpxF?s~}jU=Ihxx_fA$`kHwH{O2m4l#*%2n@I^xmf0U{gYbJb%S^k#2 zgnkxwdSQiUpU-9`l?XT$U`eElGTnRPCH}>jy*1s%aT)Hh7Z#{#~#fqhcpjLW1XXoZxaoMtOw z)rUfH0rAO;ro|mrq~$n%O| z{`SmY>8>2!hE{>W=;(a(g5Y2FUUef^&s*->T#g?kgCL9gI#6Wk_08vvpV!P^#mRZ7 zK-rGfJ4Dmx;?GW?Ah{Qz`*=-t$FV3w^}{9m)tWEIHjtfTGMEMqYLTtF>Gd_Xwc+- zF`2->pccTW5wH!8Fm_7Gul>yTeZv_GHT?T0xDx+>XiB?3Euo+;N}KnOA1|D=b&~81 ztRAsk>5VGA6JEN?Yl@jy-oP82j)udJAA|C=l*3Snt=O~iGF8kq2-}P)hdDX>+T6s6 zPQZMaLvwtV7G2AJD(aiHh{6PxUAh6E4d-!y>a7zc# zn^|v6I&xH3qFLH@UfWr+VYB&C$gdzfnY&CJ=FXd80LFw!n9YAk>#SU#!2LnMd@*jo zz86(1u;hSvyBV{e$67Ouza={C7WjP>GvsRCtb(U_1XjPECy|%#Yjo)Xoog%e2-L&; zW7+fsRCKW~CeNaGoMR2ixwEm(Cl;PhY{kq+56uL4qsK)j#)(uuR!rjVh}`m5BYvMK zZa~u_WVcQ83IsxReI(M&!gq#`E+u1`$`<8$x#BCjVMT{m>vz~^o*vTOqwexBdDjDl zfmvx?lQUhY{0G*gtM4Ym1&`p4-kw?n@0pMzB5jd}#sO%Yof1$)j)E*w&Wu@w*{_dE z3Iu_;TR^>T#e0tVkJ^b2@}`tIyOXNTAufk4?h$s}|f>7nAi{7&j=zTEP2 zuCgcCc%`CVFS-xJ$tlM;b)Z>a_#|3ZCs4YIi_hU4redpNiZYQy3^zaa`_Htt0!@<$ zXwz#sgBKz?^##f{H=ZO{(6Au_Kuu5?*H1Tgjoi!EQ{tDH^hD$t!cQv{fYP=5Qgh&T zD%r^rclqj39N~DO*|e62L0qJn zDeFIBPzexLMspPuXsGeq#C&4l_ImVJ%R3UEPOsN6oF0Yz6EX)qEm12x4g6%| z9bZ_%M*2p{N-1B znV&(xUKG6ayhme5Z{;psFC37W+oY%qI>HZ!$0%2a#oI|m@;5%d#XmE3pU^+LJw?k@ z*p1M8$N|k6BMNEH!+}y53nv7eKHo0SPx4+Rl7HQ4nkRy;&OwSwFC=h$R|3e^bI9hy zFUwtz1;Xy%B0WI72@58*g4Ce<+b)feL9hoz9Oge|VG_-F#z<-J4dbjwex zVR@ld>qS89_7Ti7Ya}^vwhu`E=U(@#DY>gby!8u@g0%JU;%eG?GU#K-1Z^}xrEpD) zVjw1e5Ji-_;EIQEw z?%6n-o;Qh)&;H&M!ayiGBMU|o1sZ0s6jY`-H}~()b|+l8m!3bzmT1nA!4D6&`PCo_ zj~cH?26&)^Q(?!c`Gl|nZ5bH#{~TdEZ{ne?+&E>Q>9B_^pfv4QR`MMoj|)94j0NX1 zA00XiZSOzCt~-O~d(k3Ot5oj~VA|3hW9UKsz_qO#85U zWiLxS3^LJXJwjtA>sq`g9;Bo3dm;!yvzCZ1K z_Tw|+Fue;@Hv}1F10+v-3WweXD&@7C%xH>+)a}19n9v(_6BX}_;%94{9G3W3P<$Jh zqjtoopAD{R{lz<5yNBhgAEbKNvXb1)LX9~)`|C4tYI9`CxHRBdc8q?D@jBZ?mt4_S z!lU(NAN_!YOw=esN~G$2Z}U6BsXe4gsM4vU?E90~C)&G(v6enr#>ndvhV z7THnZ90RVEf==dWUyC{8C~1%^rKrqkB#@47rX*$O6|P~pozQi&h@PAnR8Ds_42FSs z>rT8ac^s@p$+l0VfdCkFa9C=*W zW}`EnVslX`cV88(c8G4-n&~z{ftCgn)toh9qLEzgDm23ly)(4F(KlSOz`|g zF?8~{xfGXOCs*mpP4eQPs}7uT?Shl`N$;(SPOHdPf!dZGDepb`GMfX&pvQ9mkV-Q8FB zPbA&z_nOF%vIy{F-c@0i%{IDG&rh3yu!@_{>A=UFJ6l6Q#y4RMMK};6vcWL$S(8}F=I5)5P+J9G{+rooOdV*&F-`R7$V>4`%Ut?g3dX_x_ZXxP6z4>WTDtF=pFieu zkaSneMu&sM53U)5=p+s}$IVLj`Leg3${dw{}x|NKeYy_ZG8S0DV%!PiMPMwxHv<7qfV?FuYlH#X*(havP2E{{#=YlEK&Q z;64_U?dsWd5JO0FtkJ7uWNDq(_?U@ZE`?i#d8F<$v!1vXU|Jb7_7*KonH!?rF1uR| zT}3AYGw#kcZ$D3)32@4J{@`1tgWkE23P>Hsn>j<@YMo$ChP{>4S6i3YNFA zyvrCbsg8-zKqa$u6yyt~YKBoGiDH;W6;1lfK=d~idkOKgAFQ~z>gNDfD8iiVI%lRc z{W`;NQGcaX=_#?111poxO-R6@6i>m)c-sSbEk}gm09px|u=QJ4z)TtPTxmxn#TM0` zKwN_GHVlNXR%=Aq6)jgO-O(EOR!J!8b9pGK1H~cIFOd0qj-XI_vjF4{^MbQD1CIJt zs#%^4NAF)x~zSudN6c1hf-f7 zzBb3iopFheadp{vI2i1ke-zOg#yo#0r2Chv46!4L(3({f)Y8GS$J1Z_k$6a?G^U~Z zA2B@yX{C>Fm<%`0*oLa~j6pmPnE&EsvI=ORcsa+l>A~Pb>|{KsQwP`;R8A<0TcAm7+s$7ACE{({>__SyHjLOJceYg)L&e+sZ(kQJ?GzAYV82sY(?^SCwm!Y^BATN( zgoh`1a&l+MD0uvRMvrFF!0~cGa)4(-ya_>F+>XA+m`zO)*7O+Pg;k?=4{8fMlBla6 z5kd21U#Rg9Nn*gLk!J1KCdO6%#@D|wfz*jjVFtu|1zzofwl&69z*o4jR&Bx`!Zv9O zB5U2xXWm7^H5{*xO1uu<9fPMnkE8Nqvz5QyU@pC#Db6(GBUb3qIYOHW)&^EG04_mb!W=+ zyqdGoOnu>_!a70WB@mhJ;?5%jb4d!4{UNno(aaR{F*_~4DwZ1aO`8}t2i+~|Xce2N zId{^Fu=h@6%gsE+YO-4#vx+WTT0@RcX~-7at7lH_45jo3y)X)sx@vWCnH-2^E;?>I z18}sremn?r>wqp%x-@H>)i$pk-WAv~rKUaXhW(rCdH!5)t(4o4w$@lqa2D02U7r|S z@attS8j?9$G2g_@Y`EBVHLSA8J@GYZ&2|@E`)%p1#4*&@=gzP)i4;bjp=z%~5*v_o zTQs0%dr+d#*~0$>t<|}%7w$U~MqRLyl_nYGu2wXx-6@=45^6Zo!?L!9DU+IJbyFVSE>RA z#f?mr8-F4va^eY!-Kx>gSsE_VuXk%PWxf+`TV%t$A^@@~laytTga+@^xwXx!$Oe>}B+(2NUC#8+(+%z9s$Ivpuzb7QL-opK`aQfD>G5JR;M zi6B{M?ixRuR>SJal-=WlS00^!Zhx%7_u$-0AEg`X<_qZf$Vqr5 zXz#va(K3h~J$>TPlL?5p8kn41*YDQa?SDJ{Z?=ZraN1D5w~7LoNy~dR^YE2Q9g9z0 zFi&Z)WlDgD>8S0AyA=wJ94Imd#WSTbXgZ4xu1Y@zQ~O}lsG)~5FzU~lRR;kx{k$|S zB@*)2$*2m+;J`?6&0NkYj&cJ|| zW}|Y+Nez~iR8>?g6@51$yB;a zDi;EpJ-pbHBkB!vjHwx~=pk{7TvB7VB2+ow$lh|fmUI>~MQRgnd0<%FQoT4a#docQ z1{3Uk2+V8KT8q=XtOvB~|9{+{YIN^;H2MZB5C&;tJbdR!tly$cd z1S{Cj!Td4m49GfVt#kwaW@edal8G1lUd<^2?*6lQB48>F68LuBKz;$NMZ!YwipHQI zk9k4>i{CfLz3#fB<=j_ocCYX&_dA|Sd8NYLaMl;2hUcRV5C7jcYENkloNY$x@rU}Q ziY#~e0zb#TsRF7_rifOlV66wdzSt6eeInA>G-#g&G2Zy|rA)~;)-p4$M=pNRSMh@K zFE;Ttw?4o?{PT$fgYHSQ#2*X|#GcY1OPi+14%}s*MH~`+KK@lV60+!eYBWZmZAamp}6z7>DeJCs?9#7h48u2;`19(R!Nf*@5Z$r6JJ%b#=s~} z_EC@%skHSj7=wlBlu!#e^j`=+(XD@bamIS5+Mgk z`9)kILjeJ9lJuY$+aiuDd6_^i?AY#Fm0WoF_%eLYnRz{57R|=|(mKs;k`h`=Tf=o{}72=~~L9k3L^80kR;%XVkELB{r7zMazT9~`0C6z2$i$RIv zluSpilaJwXrKuzhV^9T+`kKXLmx6s}#bZ!8X9QhO%W!&Z->Z)A0zO_u^&l;zCeQn| zxgJJ5mStJLG8I}R7$>MF&4a2>9 z!{)I=dW~J)U4sbWgkjH6AlzAF3GMtFjM3+5&;U0MdmvI~@R1^;Jx05E;uQ@;XN;!> z9bDls?(MGVp9tCws8BZuMF1Ced}X!y7>`JRN_c*f3eQolX9x4JHE;0zKqmO-FX&vf zGr>u?W}aC^>Mq3J2bPuKhJ3FhyRi?1w=8tveQJ`s7z63nXG3$W^kGfetHTF%m z#4ncibO1p>zQ2c$}Wmqo`;-SrT~mfq|R^;LaHP zi2NjzzE?^B0h<=tDj4GbjT#_a7_>DC#7s$$uEI2>kUVkW7SlEB{sVIl*VAnmQvF3% zIjCf&X)JtP3`KmfG%V_RKlxHJ?X*$w_3n*owJF-c1`0`Exb>W&1QSro62^WUWZALy{ z2_)r?xggGe2^uJ37VyIIWeY<&XuDvcG!6b9P?#+G>DdAkdyXu2o9t=$(YAHX2+Rini(_Y5$I#GVS9?inm&+=hTsHFWN2)w+VR z#MC_3&<$gmkn`rRLr<;Ce+%4%pdItACXO3C=>JL&k@oiU>7MoPf&2UUC=;^#uPdae zYtt=099}BDk$6Ku5||Z2{UPyUW^`l<@La^MFI;x1N^seHeWQr?rxFzU+Dt0^mhkoX zZuFXmCxEU@K%dY>KVjVVeyXI3^YJMWSV7>!T$~g0V&4wVT(=|$52evrDTF2{o(q4s z^L?j|LYzQCS@@tyYI}}79@6{>#|+{e*z>HSPJ;`!+9u{t!f0iJ?oe!>D3L+^v{-C& zcBl|ET&JV`TRDRI^X)jJXoL<2{3>ONI3sB1^R7IUr#}e!N+yyO#(SF8x9DZo^%YNf zHf@QG+IUMP-lOguS*1h*Pt=QlR8^F3onLsBU=K}^qPec{b!!uJSr+HHjyma=gE`LL zQll{xR}2IG(CxV7!!2ED80cM#%m3+bw5w|!uXz6;ss>}%HV8#J|Eyq0kK}NW!@;Ow zwYn{M^aDwJbLw$tBXR!qsIQt!DNr9rM7-al3v_d+Lz-k%mN-7N-H((HIr_I)z=iRAyC)}uIL*yx60+N2kqt6oy;ZOS_eZ0Ts+J&Omr z%{Yx`soFaQ%JJRV!ZvRvsev|<`L3ZOu`Tqu^DYXv!~?r|Q*N(`dm~0sXt2hK&dL)P z*5@z|WY7&exIX4Hma!E?2k^ZNGY8a(jTQKdPueT^9;uoG&ZazwT}|(5gC9fv-kk15 zKTTeyzqNjpP8g@~0G=Y9s}N+S6f{lp8G8@H7W=q{=8BU+v%j3FmssgC^Rz9rlqXV0 z83^y0uj4oRrrOA}X{@t&T z$|VjnFPYSSW%)tBOGVrQA6pZxBIeJ?HQ|2q!uHz78^<0?SbfIFRklH^(V+KLV+O;f z`n~-)hbvpttMoyomh`Y@#6c>Qd~Uya1SzO7CVudcDc@n}FCg1PwY!tKi|jiv+D?bS z%wAd=ENep+cFIiNdoXvdUU**k#N13a2gY2_!`VQoE#UQF}!l|L)By!~=L_l}(%Q1dlL`}aUT_M>~Qq(<_PZa*@u zT=KrG9)y$CKuyFz5)*HV=49ikJCE0fHs2;+(mKJ2mmPD2I}PC}wl@dd(%PUDQ|ALF z#5wBs-^Wt4CHgumtHthJgSn78e=Cs75>id98rYCCnPcm$s@q`F0Hj?j>ak@A6yhT? zi+GvGk5xuWcfh8iBc))9a~hx-&2N1|w4yJWN5Y0W-*YIe-Pm%oU6^6^Bw7g6_di~W z+I@}Z7-Lc7E;(IUdLwJAK+zgD| zyJG$`1Sj`0cO%d5Z~ju<-kn`5cT05CkX_4`H4Su8#(=c}99Pe={pu>1C0Epi8_4-< ze8afmaI{9C1$wTpDwkBtHxeuT(66u~&Z=9mJk5w`h5*xXj2q=r=22uJ{EFE15|(ww^|vF7#0c++#f)w-6|m~!;@U82$J@a zqaO^0krs{NOJ3+1BU$qTXLCjzBivZ93dfTTq+E7Db23yF zc1c!Nk*3IQRr!ksU$w?iPXoIBLZLq+N>V%|=Zk4tb%cy0P($ESIv54u3`|*BpDLux z4MsmaUK2P^q1KO4W>@BKQnp~b{)pve8r{CRl=8olU9M97bC#tVrZ)yC=mlt_eToJ! zLruZsSGkMct5%d*nh-j95?O~3K4#09;xE!g79FpU9aWivK>O5VbW8u5Wyiu2hS{C2PDQ~t>aDGhrb0w9;8h|;soPW>{>hkPt zZAU0qjL{KnsdiOQg?@y$ADU9{CRadm7)e0SIm{&o-AC`ylgxBVR&modTCjvKq<_P< zd;|+E^lauk($hF=+csQ4Iz6y6G0)tn$hlJTbjsfoh399Dvx*P>&sr4*y&q2x>bklp z$$$TsdQxy?PTT@sPTKW@#u)keH7K2qIJ=nI?ma z^>35-%u_?CUEk2ltqBg{BKAH9zZ_cxh&8@LH(niHI!Yc zSOMbgWGS$q!?QtH%8Z9cDYW;*U(GJ_N759YN}o9);w2p&syae$bQ1Z?veRfU>9&~M z2|b^({z&raBm0ssjv4@f;d7+Ud6QK8(#5vN|C#az^Jd=p6Czh(zd-!CLUN zuBCr~9CWt{+mC!>AT~mGS79}^sFFwD>P4w61wv0AA@sJkFk%k_mPn>-s zkifjUw!rys>BI3jZm}BriQ_l~`$ri_5sp=#6E(Cz%`&hvZcS8qkf(L^O(yUK-<=kY zftFRQwin@qRr&7VQbs!&;UcnRn8R!JJ4BZFXko43aWKNM+VE-qI*w!X$bL%ZV(!t= zm{DBUy-TV1n>tIn__PY1MbNL-2X_JbDZh?(YB_nj9SHE} zSG9@3bgSQ!VTqkkP%1}@`o3VO-gbxO#v_)y>m-hb_g&_&P2*#N6A^g8n@E6Rqgt4s zL4uD?+HZ9_u6Ij+*|d%vvn`dcerbfX^|aK*(XtWgEcs56WO8 zvLIo~P4f-X_@<%>tJByl@w2GW3`L3y z%F_DbpM@LYL~zdO2ji-KQ-fJ29l~VD>jrA=4l7`TJyd0>;EZmHQpZee!FVbC zw5z!k{I9jUc)KDQaFWBm*tfkoM~8HNqKbz3`QG^-by$0ap+N94GZ`!%jX9vaZb)AS z%Q(ZG;*WFNtMv*EC~elH?|$}(licGP+R#Ggt+PPY8F{+U7-5SWwXe<%hJxoc`1gcU z2Ws6goGk;+MAe=HD4?>Zkei$wI>mC*rk=bVm) zROA9Kgx2hFELUFjOT}zCcQ$iPYZ=&x37UQ3E=3S>Oks?5pShC^Dpg}_U&g|Qok9Eq znRa+8G0S~3=kc%*4VBs>GZo`S$Hg&|bO2*IN_QgM>VLur9pSRi&k8g)NlL^+P|Sxb zaIN?UUoR!yJ7--s=NDr8ko!t6gDyOpa+M{P>=;V-kFD#$-3}1jVo_&=+ufBbb??H2 zevAulvRw944U6A_K`tay*L^&NdGEM9dWd-yCm--L#*=yzDaWnTh;re0NbkTWjI__z zMI-{+K(S|5U{Mp}*SYV@M&x3z7X`5gq|J(dD@L#Q(T)znruG;Y!O2V|ix>&|cP@w=J1)M-hb5z8uRQV#iFZp>HFcYmLl^xcT|j!3Vy zls0sVSN}qctizY`))iL4MWF>%#k8z%`pDBvb+-~9qH(|Nq7u5?Yu-w^Ke~qzD7db@ zuD|`s%eJl)O!x-gYQ$6T<<4YIfmP)Wkx@LI{B=u^HbE+ z6yPOnL(Ia}HNuyv3_oylcCqlYRh==7(YtU zdB<3W!yR<#ap}&&iV&SX8GPHWU%?UWF8{&e~{1!VQYIy7d+^~ z+yBn#cy4kthM;I>#1GsbI{Y2apz^~R8~4F6V3EF~Z7uGVNtsmNy}DmX?QMOcjepe| z!~WNPL|h=uqUE&WrN`V+{rADX3q~~w@co9S4~_4>x?g!$D=!BrJ^v>^g2U;e&V*0<2InI@ z5nDlZWq2UZ&_HqH%%L3hd32IO7v;+uPcUYpQ)`ejlka)#`-6E}VKxz4^0S~D^Svk` z#NjJkmL{67YH%Y^`I_vMDia?E#r=G=4dNq8)h3n<%O+xPsiFA$UL``2P{A z>D`#Hl47nwe)ArEtI9&TDv6;X-nGGefU6b%0OEc)leI?@q#GJZ36`IWx_59r%2?fB z>>61Ti6G#>bV!EjTQbM%;>eZUel56VtwZ@169tX+-OkF>#oVRhl`KRAQVZzCSLFk0 zAa>6=sx=66Dap(%!((&8gK#6nR|;esO0@IDi2o|!zO`%63S=M4`X3rw`Rd=L{6&#r z{zNeNcb8~V(`ewO*L$AMG7PNbJ?R?}3TwNLPEZfm=l|gPwN_nPj;^%3N0kVg?}R6c z<$Dx3>byoG?5kD1-r!lL!%e+E4KhYTS2W59BSI4YH^U4_HZ&_e`s+Nh=~r5=JmI6d zZs7c}b%7&vteDjC!7V`o*(Yn!)`Z9`O4XRTG4qxhB&Aj2%4T_XOiRuca^~imvOHT4 z(M)oZtD`~+lVspT@l)Y2!}(NyE7AZRRU=e^o0$@4Laq|jI=PR?dC z=)NL)1H9H$=q=qY4Nd@^)y)NXoqp(@no#4!IH?2&A#W7W2(GTjD4_7UBB}N7vbqYG z19WYa`d?fKm{pp}hQi79k)(KMT7d!{@&spXLsv%>WVZCIzmeH8{523(*So08uIx8+ zZ{9UakRNT`t3aH1KjMTx9P$AL@m(yqy}%CJs%MZKU91u-Ngu>3IWkktM}2hK6tu-A zW&g8vkZatC7heOM`X=CJoX%zLzAr_YxP9TmD^xLZbBZpLhJw6GempA0Dzi zqisVGf0$Z*)z;ny-qtC3j~D#7pWZ1sykaNW&L74O>Tm$mM2@glpiUaq0u^kzyCO|f zz4-xytQ+r1rd#dy+3yCIi1?M(+K0=3Jn4hUWX>N> z{ASS^g2BPB8azBBTSrYl+atE^nxDJ56blr*9QU_6l&S9&U==geAZwAEXPBnJ;a#R; z`@>uZw2)k#Ud4M@L(+T#$UM$8E6al2ec8UbwKUH%J4V~ijeWlo@7S`V`1n7DiAcuZycSjtPUdu1v;24CE`zl0Q@i+HNni^?m{Kmv;m%>m(uTk!i3 zc|GLS!dUrOG%{<4UVpim4kkiU`|Yj>GPAQgjK#^#FO4D+7=RMXZ8`q=i<=1&ZQDGl z>Us#Ufi%y`(f33#yIE82Z0(v-PN!oWHxxi5I=j90=k%`Xb*Hb}w8Ow-CL+6H$&gj9 z(b#Z(o#FjG>{H!i4q!~4vMg#9+?`5aC|yH`ZiPl)$ag*(-Zl)(wRX*yorDPX)cW%9 zqc3VPTb?R}W*OJ|gIn<>t^6X%^VO>Of4rKuSxue6I5uyi#xbo#6cQMqQjo+alV#(> zBTwlLu6Iv=_BDyVMD1am7P{6GIwt3l{cE3%1vnK%)<5gX?mzQOVW=#v9ur|H^xhy9 zMal44+1D{&y#x2yZ3b3LnA$+~w0P>dwE?fUuxy60X?Nti$L9!3ME%r+)6=(DqgAKk zyAO_z3IwaNE?vU|(NX8x|~ z$!w?O1JYuz_>z#enolatDN%+8#2tFg3-&9jRzqO-O|t3f7Orm$s+%FYzJ!bE77ms_ zE8?a7IR$cX=Z1bFYk6=ML-ZnfZ*rK4pT;$aWonD=-~|7_qNhs7<_ht8xO$dx>4imT zCy#Z6|m^kGyap`Y7DmivYlR<*rL7YJA_FX1fx7;eP zb|5+A#gT%jy+M1Ke<;tqz?`*RW=LUg3DxKmhLqXx3sW0-Zd2`hh9-{J9v5@a^Bul^ z5ddPPd20e!bwV8&J3_kYqRj--afB_hROxi2`(NpLmQdCQY^DcS0P5yLMh>sM>;zgD z3ZaM^LR!DM&b!9!7#5!sJldsUVY_SDoP1h$M@@d|pfMkQS^$oQnsI$noZJ0CZ0}IB$^O1A(tlw9;HM|X7RZ;jh0CsZ- zb_0ve>ymuLb|f=Rk%S!*6g4A*p(v`3i)W0N(zGUPj{7D96pt4%fqK&X(e!3>Ic%k) z!d$FGKPU8NWq=;T$8Q2lF}ZT#w$?xh!P^lB!V+v%*sEp4=c2RgclZ&jJZV`HiI2C8n4C}v4XY2Y;ml($NNyG z2U|BeO9AmuV4`yriPLPU6@Cw(0-lgy>w z#73BFo1Ox`x@~EEy!7P(I#&qumuP~bpmnu|e^NI?y2&d}QSPbybM*xp-;RuZFXG+< z-C72Y^o*)8%b~<_LP1?nU){+r*@}T1x_*(G6-}vKeU>=hU4;BjaGh|AuqHI#3((%G zT((x(mJIpZZ~5**f=+42Dt07!EMj3zc_T#Xc?lJ=3DeYAFO;$6qZ%*FnO*j-IxgniDCpNAQsZMbu^c<)BGuN@awqQmN`=MgBCBEcPVo-w~n z)Odc5vK#f7Q|6u-$xqr9C}2^10XL9O48P|(kwH;3wB_E4eXE{U(Cri=rrFshqby+{ zrTwB&m~*ZT{WVGUEbq$>wP42``myEYPke!!F(|K>JqaQW<%k2x0Mh{jrQnPX(^%=f%hy}<( z6|Zk?PXJ7P`;0yV%*!^y`u&h#GYfOA!>ut+$1xy5V*Hg19JHE`znw~y78gjre(v(dljH#t6s z$an!u0#6i*_trw(+-=J7YNC)5+I&Y>f7{IYd^M$;)pe-Y|21HNx3FXVpx1{$#^Itj zTZyS^A{ck&=du%><^w6qT*%te$oddD!m-H{{{(Dp?abjA;+l$5R?%>R3=9iP)iA-= zw(?P{#KVhY%R~=e0Du#}B7%rZ^RuKx$;2Ige8hM}wkbpIpyXDXp`xoHtXD zeO&j~$eYTbl3=T~-F`dd_l(Nd|I`Ka_h26i+QI{ixThl|n?q`mDjZg2!y`btJd_qP}Lw#)k_+i`F~Z)vVagF9 zOl98+x7rOV=daLYfrAkX6`As_9Ea~stn>A;sdt*;0oWqU+tTqoXz6{dqOREfB^!=i zkUey`S_#NSSTtH$PSw(ft`#lwafj}pzuKeArRv zy#Dg!N_0<3hTv53s=qAp*k}?iQ8kvw>{hXVV@nw120z0X`zvWK4(c!f4eI;3Y%2Vsbv}VAC{V1lmZVds3?ZVqlM+lH zOUAgyS0kYMYAJ_8#dz?Aq2*f?2HxA2uINVsa_*^yVZ*-UCwywo1?ip*e`dzHd${;~ znd^()WaB!GR8*Y5g#Ur~_i2caFi3MALJwtM9$UA0S7J~IJN7=jkTq?~(bCKz&yRr- z^PVxLUY6qq8J%3QYrrq6M3x&ML68Q1ug4! zjD_;|Loqz=Dta1dMxJGmo3Yn5oH+SgwF{y!Wp9s|lR|~&)Nx4V1wZLWgvnx5X|!^M z=M0*zg|2DqxDg40AT&X@Jp|wLB{>8>4p~dWNR}z7qmKJ4N)}N4d39pWkDCM&+en=~ zMToqn_w#chCmrIMSJ5G-1DcBmt2*mi0uOq!!~dNj-A6tE~JnSiRdK&87I-g>Q5eE6H&c zx&@=u?DXnW#^+~dX_uDXpRGdT?;n_$n5VF+s=*@g8T!J(NxEvTC8mJ_+q@WmW1}oG zi<>cd;#YY|bGc;CyvcLGCJnxzGU-GN8eu@-cWQ+m9-Em{CP*@aGY0-c ztq-(NQNTrt4^b#F7YzWskqhkfR?Vpnu1r1~c?di-J5W7;$n{n}SymZ%x zK!}dtvMFbj(}H~ovyg|20feQY?-z!NwtRX^VB-2?@vjtJ=@JstYFL_Bs7t;Ous^x+SJre!R?Er z;!0t)b8ng3%aN?8N78qBe)}Ypbet0kA-PXvQq0yq=!pOaQ0f8YlV4`Z&%C%&^7_CO z9^QA=-1m}mz1n|JX(ceLvEX}9#Gkyis7nQM=)E2u zgATO`jlNKN&I#j+H3AEWraYDJR-)Vwoqb+bY_#CmQp2B0s`L>y5_f(t_-bnHAyk;9 zfm^243?~9BNxc2`RpqI|%PYlS6zCq9DYthM#fFxyXhDOf44)MH=c-s4dsr+k?-J1-Jq34W<{w0 z3}J{LQZmF1qWMtgmx95|W2|`O)+e#aAG4fo;^;OKz*nETtBkNGX8<>RwB*Vn2$Dot zTiho>6;65v5|VQnO-~xm%j7;CA{l5I|xB!ZmYUr$vvE-{S+C!qi&je|l|5vb4 zgHhMdvWs)<4oM*{@!7V0Sq>3ijlv}P^ei*4k|0l|<9m@m4Qb=9>$7^k&gvpL)evb2!M>oiK*z3m>4;0epC zF0-09{D%*35(z;?FKo1&hQt03*dV!P15(<9qGQLPD`N5uS^F$nDM3iDKV4X@Hv>16 zWyhCkH?pYk1zLIcym;B6vBIb?^mAQ8XW=7`hG2oeumK$ck-hrPvs0C2(qXjEC?jgM zC;W=${@F>k*r+D8wrx&ye(Gp8@SV9!G>!L4WnO?r@RH#U9?}p~Rt-1T@r+c=Ym~2S zzU>Y}#S$vQ_IqIb-0rtm=eloVb9$5p zl8kYVESOc#`Tyr z+ZTz5_bZ@$nidOuB!?^p*l0b0GieRhL>!xvHmB`ktot1kocAZJNS8d(jUx`w^}zM- zy94bWx=U1Sk7chAVFL{^_dtmhM_?*J)s-wa!ILd-{iyj0;t+%lN02s(!2<|4y}W`X zG;+CSWZgTFzu3Zj86O>}ioIGV$z=_XpfYPOjNlEehI0KG`gr#-WnyX6lC8cE-ORJS zhS5&;c&3pPF|L6`o(;_m0y~}j=K(rx4_rFOjC67m`?zI08MlA~)AJBS{510+C*#YZ z8YDAdqZV-EBjW%Neu-xHG89ACO1WLVpkPJ!BsvlB3_6it6DpZnp10Jmj8m6yj!NG6O&ypgpMWr9;ZzT3ENXzRGw5pvnVx!Q3Men+lBiizz zm{fjzMcr&?F_K*BGVafBjnE2&E*WBKn+;O}cMn!MKo3gdq(*chT!SPPOKZRUQRx2q zAWOJlx}$?fbhL#;^*uG`4De(<#O)1c1~L@^^6NR};1d9txj~fjBhfyG_vm-(xKIBR zM)uop)z4ymE#8V2xmu$E64Y0mT5VOuykcM#yL=~d?B0xd&dx;b@DH*l*RMs4m9iap z^cVt;+X*uW>?_zDgg#C!T=?A{t@+L`e`a;!J#f|_%;}stp#RI-T1FK9b$O1wcjf5- zkY8=0<*f*5P)US?JiIv5<Trw9-m_JE0aF1CrKt3dbZ7@jL(Vw1z%p2q<#(G%D9x`VRA!b^`LsWU z3&De0WR+$56qbKwWIZ-5b$SLTiuv1LEg8v$Wfu;42RXLPXT(H4L@SD>_^#<4Sx}pa zcal}K6=8`-C73Rx65!u@3WZ6~FAs$Uq=PiyWkQ9H1sjL80fi-(H)m(~x?;FZyAZ>RdE7HvjzytWz~#91X9l{t$R5DAa&-x9Vp z2ycn-tp3$HH8_CO2)M^WRc3c~way=PhPVIpmJ39WdW6ak? znlMCSn%}^Anf(ah29dLlos=&a-vXzpPr-0GGDtXN$poy#A0v7Ef8(1F-} zT)qcxhOeyw0lrjDw-xR?reTVYpFWtUY$hI6ZOYIkV2_UWeZkJ%6oXsXXG-UN9R~DA z-DJH@V!!uvkX_x9S;-TC4dn2tk=MxX3=KRMsCx70A!E56Hm@u67PagT%mS{Ti7i%i z_e@+kp!Y{@R)@8@laA^k=Utb^V*jk3W4^d#&jvZfXdgXa@sTBuwj!#G-XU<^7yG(0 zAg5Y2KlnL9NI%YPfP)UcDHDn?9v^**V7?BFzf8Mpj*c}Fd9fU!-;82spWX{u(LFbF zc@7FB^-D>tpQW$T0+`wV341gS1(~ei6qCy*BTfQ^yPb2`WApRjZG6lPw&u#V%6DWA zM$_R%sqY|@6G1o-gXhtb)u~7J(78zFz!5(8OhG0BbqtkqIue8hu3M?5vz@zidYsI~!3swYt=ao#4 z96k}id;PK$Bupg>^qetM{oop4-0pL8Zjcu#M6qE7pgi8slh#juI$vsLzFR}D^`Zb` z{t5~Ln<2myRp0$W&7_YW;=x-5Mfo_=Mg#Z}E6_h#M}@ouCFwvD=?6;G1(A&*8`*2h z-UH;iOGw1mWTE|p3KdDTBq!wQz^qi>u1c$@IwEWao!WCsZc3ltkn_nqAewt=y>4Kb z!yif^_vXeG;U(=trq(i*uRL|8ZDMn zyVk}aGm~O0XPAljJ2CyrcHzNjnd+Px^`BaBo!;ii|APvaYTRfB0JB!M*M$TGKev5T zx-^VY@as?S`~1mKDopgtU%wH0hgCRIqgJUL(27Fj(Iq6Eo5|f*PrvAZU`{tTRN_tR zT5E2wVPdg!)43+h zw{gK3>bPd@NWK_YWDeeqy*;Hw8>4?}5@`G+#j{f*2bS7#3N1ED>=q+mMt`Ei=d10Y z%rmGn@73>Wvx(~~EA=lEPl0>Pc{L%RZp)T0ZAPV=nVo){0aS7wtje7f30%1L4>Oa` zQs(P{8p$!yX(Odb-lX*EXIpXT3o2FDscMWw`JRS7;7mXzb)=%FDv|mRX!+16!%2m33JscQVzG#_1DagRE!HkZ}RmA_lTsx@&xF3Sp4J zk?-o)fgNHC*ocp+0$OtD3)cS;O)tj+Dr3`)A zwB9hqS(wJ!$Yl}eI`KG66Bg`A@0hmHGKUYWy1Ox+FauDFUzvMI`#9LuWM;}aaIBSc z+{nZP=LP&MnDXLJ;;-$yb_pFaF%mPtEdUZ5)Yb%xy-n^?$U^%PYb?Y;o`nA!k9hj4 zG+paYRfZwA`Sj6HPt`HlI0QJ)`g~kW@UV&;qWVwmWM^2N6Gv}55$vsEBpn%NJgzgW z9YE%%+axB_w8u_|5m4h%He@}QU-*2Hq`OU9x+7X6`nLzUX7ouu>dV^L=|xVhFj`4; z0wjt=6mgQFxZjC^%R{z;#2yl%f3y|5E8(w1m)GhS01y3goNh!1qbfU?1T<-t72(6U zhOKw&=qOVDtlbh2=zmLWXKw)nv!xGEB&Nm1hAwHSk$TGFsLsqh5lHje{cKO-0o#aJ zN|N5x(FsoSnW*~{_8v$vS-Y~AkwmK z_JNF=lCniXVkSoby6osOk;8uJEBUOZ_(w(?Jz|kLq>@xL<`gB1&ZZb!f>kIH8K@wl zda`d@7H7@R)P!S@m3IvL{zC(3k5u!g`GcMu?^dR;VP`_Wq0a`2@rd79o_!z0ZLUEi zsHUhGeJZVzhl)*rJ-L1V4RX2@_-q^(ydUKcq-SL(l#n@i!KaSbb$|?0)~W}xZPa%W zcKPvL2gnL^$(h`T3r@aHzrZ_!vLr#aHAblt9>4=9h*oDdN*Kc#<=OLVveOt?{IhkY z6~Y=5gG2!e`zOcvU!YNMo~j!UAm9*w{KACuS+NM@QPjcHA@-PQQD+M(K-D{FHwNLu zi!K=d5z`!=t801k%v=u{?O%G87lJMKVdipu1d0(YI!3}zw}i`)+1x9XvM;|Qtq{$2 zw^yH22SL?hRQAQ+W7#?vZqXg7ltP6mM`Q#{lhW9v-Uf;9*3{u%^hJFr-*UPK?i4K; z1ulM4a~7>g1PMUZ{b7_Eb>U23xunz42Cr(lV7qup&@WUo%d|KWO*9%eC3bNj6iGGn z(7N2Ow{i^omp@bIa!_E6_~1@V@L`WlWDh?QK`4e7?oM3)+KhXbuTxGI!; z*4XNdXrcnia3PhgL^mz74(Gfl(pOVxUT-@0#|{;K(GglH4YaN{6o&BhIcl zxv^nJ=`1&}Wz+*>khtyZ)yTYAIqJj2Gs?LhcA8rC`sWv3G#DWtWAEd_oyUX#@BQ_J zzLKAGH(U?T|*lQ8Ns}g{+7ZWC8TQ#B)8M5XY)TlYR`OyF@ ze>`2dG;iSw`c2iHBgvjYxn?tv<>h25`N5>KEj_U%8xiZjQL6vqe()`3N^ht8I9b`d za`j(jxWnt!fY9{t?_%^ZiAj-;0TLAxD6L;)Z12I9`o#_}@X3;)9o*~CL{bfb@?uEO zr^w(?yU!w>+;2C0YMg1IbFf}|o@ey~XeW%<@&X121+eeLc{sRfJqaVmUb2!!r9~#n zB9o{sr_GQq5a<(rQNYP6KT^#|wA?mV^&|x(HHq%z=4Fxi2>WfG<1@w$>HCCr2PL`C zL0ZB&GDvH-bBA>u`9fANOJ<0IQeCqy(RDL-U? zB;8He*rfZ{DlKV4;i9@YnOjJofmWEy`bmx6-Cy+tzU=>{O=?tA8<7=6>Aa;Kj8gKt zTB%#Bu~k9uX13$Lz_d8ohL~6c?Di=48n%Ho+(X2)fP=yt$g1a;)88w( zIP|)rfY1ozuG$^k$nLXtSS4TV6agWNj4dIoj&&7yD4Mm4ah%UA#LON}vsJFuD_Q-8aVjY|r9aF3zvSI5(%S*H3)3N*1j`&@b4h$J zF5FAEJs=)MdT`0jb%LsWerhk+7WrH|l3tp}vwOLxew#JP5r^@@kjL$f2B6J6aBH@| z1*1qnwMGc34t}mk&8EU3-;&@RJd<-;O1;jZ!^>Z>U{>~q?olKuk3~sz4?hx*iPTM* z7aABZ#eY%a<1G8e`NOBTc#>{J8K;1%$)V4N>F*w3zQdhcZS(~XxW*f};M#Evhtg4Z zKgc0--F$l`&N{*C+6iH!Dg{{12&foyJT7+h(|S;ho_#r6dw{ULnmIOoAje#rP6TdTq4^bm6Y6!XjCULjiaTzREkwALsk8;aF;HHI~O4 zmOempmBTaHof8jA1#d;K#5)pK&mu3-z$*hN!7v_c@loBFF1`L3GG*;$kXM7gbzDYv zg(s2lCu9b-syc#finFMUYjY=>)Z{lxstFy8%XH-%R2f@SXAxh#0$;it&#&zm*sd{w zR*v&Kl`v(5Uhq|i%j^k` zR2EoR4#dG;Y*kGS)mZ$e^9R|=QCz6pcRyz7!o!Zs;( zZG1u}?bu>Y8*g3D2hWzs)tgUDe=bz1@7OmbnKCnnTf+lP6%#Ky)eIz-^2z&X1Fjs^ zjq~mlR)(B+Ear%oz077dBPM%CGveSjl@hqN`rS`fN_?KDN;ADl0)r{YD}~|45WTe~b`zO_AezVR(~cBc34r@0T4>zR3p? z87*<$FNP52ZP8F2a#MAJ8s$CM6_e>?$(%TsU^rSEE>igCAuwFF;HZ7cqY{zND-&U< z=OC9RS=NNknN4s8bEgadQ_;KfWElOCf4OFs>M+clJ}z7w`?qy75Yv#)824N|p|J23 zgb;$HOw~FyEHM}QuL&pJ`2j+1<^biKm#dDAE*;F=KA^5Hv7&=#Gf*O>H(3_Ut`$ik z17_zGmubrE(8--lP*{6W+0oF`VaCJRd4kkC)|x|233S`tHzCG04_NGAI?xEtfa~gK z;uHdC?VeE$y@J(N^loR9HqIKL@D~+w3xs_nPpEqg?p2xo6ap@OKXuRMk8z#! z8(sn*lGx@oD5ufW#b7aC0>Xmoa%Ca_O1$0k2hb$3)mFkggC{Z~n$$Fo@9qS1fanVm zion_rS<~iMw2@jzMuCO-V zm&+hi8&{&(vDgp=z2uH@cIj4*ffn5Oi5Oqs{IqToc{?}SWM7901J{|Etps=e%j9_0L5Im|4kQ9>mufTd53xd(be!3CAp$AOTbJYXyk*bf zd-+WK3JcOV`G_cjy}^|ax|X4UlZX|3j?3oAd`Q<0us8G^q7jK9wp}ILN{F5Eo2WZI z3db{CmwBMUsWIZ-A)d~BuvCSwfm-LAzLH27$>f`P3YfX1Nn2i=&uSbrkqsq7Cb3_& zdnYw_Z>O5Wbb_&B(f_Mcrnw2<6H!~fB&)DB#uJEm$6){u%0P^jQdEaVX`t(QD%Yy>QPO=(g5DUym{vui%}9? zcP+l3_xvb4aQ&D4kM#-_Sw=9O(0iz~U|J7C$eOAr!OoYA0%FL_i6IV=#=^ee^c5VB zXkY~!HkbW%#ajwP(4n<9&b8EEiB;(K1q>DteeRoVlFVMszNk3H(S6cO$08jPXIc}P z1J1OmeU`Ppd6d;fGDb2v@~*I$d}2avF0mQA)-5*M^3qrxuTMoZ|Kw}g{Hu=I)u?8} z&Rb*1%ax`kf0KDCpOxgMyO*+9Y$!ck&WM5oKmz?54M`#y)n%U0ZhVc{x?>`16Jj3 zh?FSH11U)}Emt(vG+vH?7oP7jwCtz)y@25(ZJZ3jQ+;JlqEzxXjJ42u(l#P6Cov|U|MNd-VCzU{Hr2W@OO@ht(%siL{2}Dfs(%) zw&3$w6~Saf3NX-g&;g8^n&>b2il5hI=Quz;I6=DXXD@U+m^go=M{V3GfJN0an=IyJ zF~y_|j{UTDO)mOi-M(v9-db0Av%ON*O02Wn#Z}e4`|VFi*9!?EqL}$<^7L;o z+QChfhc$KJSB7#4`pT^G$3XUai>|-_fE_`06&6eqR!ed6oRCJ!%gwSzNFq?V9pGGq z-W4$6WA|`v)wkOCdw`q$7xH2yF>6${Uu4+&+1fiE?~xB7Z`L;5GFqK1v%Qk<w;)PdWOD>Im<4% zj*NmaaaAZA2y6+|)I19mBm`)uB~z@+9?m1Fky z^|TD&0!aoWo_{A|O6ALhO}5};o9Yu(1`ys(BW@|$sNoEK-q{R6tpC?hO-}QhB&t+s zSf6v=`p7emnt5ew7W|TakFUUEO9NQl1N===|EH2hwxJR(pSj;y6H>jUl`fBtIt;kx z5rHlc{}xX_XpXpR9v^1H5aQyz@0fy>ln^3kXZ_I%X}EK5x(f{=TxA)C37@*4K+x8P z%c{XJTR_xBYS4See4@Efk#C)p^(@iiL|r)OJQfU4rc^|jN}ADKa)2MhHrCEsD(PJf z>ly3#(g6-DT0FS*IA)jH4Q<{xcTbJUqM<74eOOO-c__F{b4wsl7z z=e=yyGtt~=oL03?1aR+P-O*hi#(e8RL4U0v*rxE43cPULFLcgF;BN&+DXYWgN46Yr zoQ0-w-r`O~1@YT5-hh;}L48irK_t|EK|5?$ZvuPqId~ z@lcgyMcF~W@1TX^buck*8bZe&m54>p02=C75bA@KuuyzKYbhk$1EH83o37u`a_)q? z8t96&oW7Sx2Q9|TwzUI5Tj?&t8wWnM)^8%LLT-x^_9{qJoH^zPGx3vmc6jgQd9%s< z_Y!nq+G?M!qLJvp;2gdC#RVE|fsL`{J8Mx|S)1^Lm~YX(!h80+(QIIt6Xn|hzW4-& zCr3wJ`K;q^anV=wC&!pbW~fUFO&6`*d2ecnlP?UBF32#mM5_2|Y&FRUuO~WintGn) zuIlMhTiJpMza5hjn5?n6O{#T8s=l8Ml}d%0|QwiL$ z+myV!rhZkh8Y3DOx_rK0D|2w>mIP%5e? zz1O1&)hOqz4zhlJCfk$W1A~w1;53Qhr@-aZ1oaI98=-M!_0({u5m*L}9>bR5rOXF$ zl>hhHkQ>0Iw)*2)Sk^~OpV6J#6Y0lNn+;j029T7&!G$UKPf-o@Zy=Oz*Ajr+vrJm0 zs$q5(Ik$^e!k#*0GcM*p&|p-{4TY8Rurxhr89pw99KlI6n|tx`Yv15 zA(@EpOg(`>`t_=4CElP^DjD!I45*BVl}4=sSj_?#F?p+y5!7LoJt8{r8W^Ym`9FfV zRoY$(12~;LcqsM~IqcS`cIs_*`aEh;q~9?-{@|*3R2KTdy;eYPi?M>v&Hl@@`HU*y z!jllwIkIG?lW3JM8q%mQ=4!oqGJn$#uO2Zw3w-RDmCsEaI0bfGWp?> zB;BE#6sN;p*;&`bWuZCdL*FB+<&1GH;HcVo)ZQg@o|_enMdrAf1MCtYI(v&S?~!J5 zkdSSx7`5VOmpI9E1HYDQRa7%54D6&!$NM2nHy*>l2=VQtb%H} z@m}uY)3$%ktEZP_{hO=4ZsI6{XjTx3*%22o#b$}0FyuXH{_$0{{b}yLvnY!rjyL(( z&(1>_+R7|kJP58&U(Ls#XOn;}1-%b$gxRznB}HdpfG%nxa|9RX-=Y-5?P`;#v)b^b z+K>P(M;q^7#6eNm;qJA{$IP7WveF~}q2F2RB)jxHNu?&G^s-j9uS>vP?@_}~wH`KE z*C3V&irrj_m(rg1Yo4oj;s%@x=y`Maj$!nVLJaj7+%Dq0QktP{fCwb@Fx#*j&&JKW zI_P-OzsE|u5~=Y#q$@sFG}40@3&S+b15NH<^`@h4Wm-=v+3aanQGbv1&vkmhAs+4i zF*cIxypSkM%#8Q$fZ5ouD-qad4cGRE5H1W(!m-dL`jU2MUSDH2VOTPZi{|RwP#&tc zC_r#j(XI4A_x5tYL%9YzZ$oDg_^`r=Zt|-X#m3>@YN6D=EF^BenMc>v z{5!ItZcz!Iq(XY`5=97H_jPN%PAH%PW?$%v&WYCUOw-~H_7SKc0ke%wBnmx26q5~& z0@Sh$e666&TYIdOU{e{KX_PUorrASONI!o$B!IYb^R`y}?2M-1H~00W8MJJu-4E{t zHmy(F##cU>e$|%iWM{?) zHz(4TPDX2r!*hBN`@;$b=z5~|T*$u!ArcY;l-{N7)CrHoFqBVt=bew@LQa6IyliVC zs;N?f2zDT5-b_)z+-W~xuRh_bn;u9rw)_wt_ovTOY3N0T-0%KFonPjSuGa+(93_R? z&sr-}c0y6*tUC`#e7t0>v`TmK%lO2tJ8UWXF|iJan3kHlXx0-&6-~j^UvNMb2=sT4 zZ4UaqvC)rTXr>7UPcMfZ38)mBQRUUy{v4xiup<36OHGW}4tvvHmVL-rr)0tYR%*1z zu{*?;H6wewpSD?aV5vBb#8R7U_T%r8yz0BBYbOholmJ*R)ys%nv61D!$P{;NHzvW5 z0cEQDw<=Qe9O-#yfj;sf+p)yR06b93p5Vdp5=Gs)*x_$qVZ(kOu0pJOEi^rhFL~?6 zv3kg-ow`a`=c?F#xTN=aUd?W(MFAO$Nt4pQql^gj@c$Jp6Q6ZH3al*|=%x~d`BRA< zV^#B`OS_24#r8==JJ8fp6WSOS!|FwJ(nTIgTAxrQ*$_q8%unuB2g4>KvVjttL?f4z ztiz@AfEwmhYLkt-j@wq8{H-c7O1a9p8uY}_A)+xOxLmJlN%`Os1tIkYO&^ICnk%$i zQwxTNM;E=`*Si34I?jgBE@#MikMw-MTiM&3b_cB7+kkC)im{1Z$i> z9S9C>06y$^5!Anp(rr0HB>X2LUJ9HTs24#-40rcVgLaiaG@5Lr4=|xojmI!vUY9*& zBS*S{BbIo6c+~z)A=EcPrpp;tw={SVC98}fc70|Np|_i2jfky6FaN6LMnWA;ri?&( zEWO77i&v)2T-y~;(z4m|Alw-K^^lOrhzmKPv##cTh^Y-0zfldx(y7eGM8`|5O4D5} zo=+Lqr3fu(WJ$U8Na=bjrb|MN?`r!ngNCcw=u3d(A{E%M=UsFlB;+~nR-O6%6yNFL zM7)#^DX0qQb&opL#m@Wy|iIlLH*IV zPJ{L~fHWxtOPtouur0sKm+q)8@XekmfSlziYmf(3re>BLX2`kit{r!}3=#lG%_oF4 zKPdWq-5TL7&0Y7qo60~Fc(L`jO|gLZM4^D(Hno%_#q5~n&XJktr`P}ouhhnCaww(| z_w+9^raUp8>3O`ho&6!pNbWl#^02r=S{aX~o@QXdn((=duh;xUak-9msfnp|0?Jhm zF&}anbbW^Xg6+kbNkZn{(`i#WxHTLj0E*z&6)h+vd(VwM&l&3 z*N8P}&IFRr%n;ndcThlgxW^XA=E{fHyPs8)zW!l0O?R7y&4C_Bj8JW@a{Izyz0j29 zI)3B$S-dIT&M7spTa{G(3LnFbAXzg2e%kSxhkF8dVvqOSly6u7Nm^%mPeQ@8P&W+I8&DM*4Jxp24|G37Le2yQ?}a`5;4bZ!srD|uEGiME_KRSfL!3iYuizBf)AcBE>}0Zcp+hTE@MgSpH!r*^?(n4< zk7v!7IXphpz2Mo=#CI4qs^Hrc2oaLa%&&$zL{^X_@sC+fydPz(7(x-JlH1Q518Ob6 zP6oBSw(Q;jsoCQ>>;GY0Mlh&#!FT|&Z28}}gWRv(rVyRyI!eA$%pZwsZ{temcQFtc z$@m9LN_kOyaL)pLb{&vhT#5w@ZmUkWGj-Q*Vba3F^Ae=~z8DQ%hz|6`gdS`LR0i=y zYdpa|H3gyc=m8I`R9AVFF)6eTE{!krbgrTu>#(Wck!}-S43r9Fn~7NEi(DN|(&!fCBuYv&6nAavsYBf_pydKStG|hKDBCh9T8+t%mm>63tyq zu7YTpXaR?m%7ue=rOU$4t5z8Kmo0_&w3q4=2!F$nJcg21#H2FcJawe>J{~$tQw=C$ zr&N>)2Ep@@hJn&tRh1!)uXRUeD7=?8=d^-?XUNp?g?z}c^BTE}F9~Uh2ake`0m*(A z*;iM<^U$flZ&(~4VK{4fj^~n*{^gJkbE`|k?V$58R@=FAQkC|yQGRnE$_GCMNkRiU zcq{I8goPQ+T%8kIJJqIC366ZJv(m2KOeICFw17(~0z5=30Y0fAc$?tBxez7zPCX}d8bKd!F>+B+}VfMy1$7LE4sWl9UW^7awj;s8ENgxD9+ zhqDq9qcxl>XGy8J_Ethcf#hH8dIc(_SxyeLGb)c<_n}!=XHnWN{sGT~5}F2+GvS~8 zqt~Y1*%F>QxZfmMt2Z2y+|La>(QfYgJR>jhyisx+CMF+vF=oKk5sCnpNv9*_$LXOKE?si18YoLae9EeI(fA;~5f9pK4ASm*VP~aPedW<@=Um8{8`7C!a-+hRde{?C#r&p*@#Pbvlj2%;)d|;Nl=Lez6 zc2fy5rP>ad>C(VtBKl;W+KL@g5XqO8h*+0Z()}LGUgr}cM*gLzYT%2OeZrf_B;BUC zgUv=%;nkmmu^n|n0?)(Do2=#FzA>CHU>qb1oU1K# zi;?;S`RX8#f)U-4uzW|_nd{~8p!K?YOiGkhd~`KgchZLH{ff#k#9IR$47Y+@fY0OA z*1UjREs?u?XutACHa6*4Y`#mPcUlk{QmW#VRJA`O0%fo?jwnF;J56i+a%h@jcd+kS70bux=Lut>DmF<# ziHiUO(R+it_tj7IZ-=QYnvfDMt))Asop%3Oafq}g$)HSNX^)WF`2ALea7|}Es4Kye zhr5_O^jgBOE~fMs#xv<)$k!A;S@CmDAn&U;XIT=I*&Wl~^7kEEjL4+AOa9AtfCdPW zYfgCOi{9Na5GxsnG;@q0Ju8FfEmq|QgX=|oRR+_klKo(7d7kv+4%vmc0uYXQVNR}Ix2B~&Bzbbyw ztAF$CY!a>YKtT^p7B=t&D}qTobA{c}T~Z}Hvt$Zrxe(!rnXKg1s6_DMND*q3?cn_C zbyt}}nQcE&m{CN>bvZ+u+y>~Zf+*)R$H9)hVtFUD%`I;TzoXib zM8y@KXMJh1gBltf^bbD%|2F!86mO>%Tjyu;wnq94%U5+u)-jHfj}ptzsFT{fe{r5m z+yRhfUz!y{$`-0WE?AQhzBuQZ3OcdO;%&a(K~ml%MFY8ekAGE z!piA*U=c*L#8*muy%!L%P%cE&gFVNjf@a$#9j>KIohEP)2uMw*0)Xy5WOH~$i ze_v7CaFxQe_1kvgIhe^I`#>6e00)eZ(W6s~1GxV7KwautW&ir%fQcAupkHq=!n-fQ zOtS9<%))b?eV~dQF+-HV(Tb#$-dFNuv~PfcR_Yfs9__nXCDV8I*E5(YqyJUOMKL%! z2U)HVp`pd-BAlBp)9QAi0eeW0WKWeQBYPG0bh?Wx_k0EH(WKKdFnNJx*E~A|PpM&{ zH;Om)zmDKI7psn%U^l%yW#4IuAX|5Lzp#%X7JytR9uj*jvu|jwa}Vb>3Xr=pe_Iuw zn?CLjTz;qAuVfJ_h@yHB$HY9R3?kh}q0+y0snb#Ko&V_dhC;H^{1Cs9bY5EKJmHcb z>jV)TbFLMrUzH-Qt>GIv6A%1>3NbgOL%}7c;>*Wjt_P5eOH|-pA zC7GVVtIw@|1?doBPu6uGxq4*nde}EV40x{8)XgVA=v`ucdhQ)ln!1=@x-j_~KqY)E zemU1MTVV?NuV#%Jz{kET%o<0YAlEK^scMf9Hurn^mg3VLI!E4XBG}RrY6>Oe!p_bj z?ZP(R=1xT2d#0Ybk~dAEoT<*1v{cHK^q!~flT2}JWmlJyUZ{h9x`!Nsu#BMxqDbBg zpO5)hVrazp9W*_V!e&Pjxttix*M8hRi91Eo0%qkdPbF0Th4*NxI*c)S z(sHkYfv@9pj3IVTta4O3$3Cv#omnVXie`KiuF&ciE?AH7?EOuZ%lr7QQz~R;Z72ZU z@U71@cHpj7@v4@!j*xXbc^nc31lW^@EqlhSqNrOA?BksN-&~F>)dp($URGduhx6~| z;-IMesZ5d#bu+H7YaYNqI9*+`! zQOS*4J?LNOoMFxJ_i=ZV_<^&Co*Z&{c~8rJ77G%QUK8gh^n?2p*~;&F#k zAE%4fQG7V$yY5JLZR$Z*s0FAjYi<#ux}r=t3rkD1rjD*D1ZG+ANK%SYb&hJ_y;Am9 zFCy8{RrG;{>PX#3Tm1#;DeTM%+B9I@PcL`!UFItw$0< zD8a0CbTJGkG%iE`Vo%pthU=Pt0v3R>G8@vcqD4cNOPjTJ?9m3JU6NpEOKK7SutB^5 zA*Q$0(Z3149LYRsQiQ*E#q<_{L!hVjz;Cl62{#P0|6Ydi*)07WO&64!GN$`f2O znT1PuChhVVzzBz@k1Et7Vl&65m+*cDAP#p;z+C*2I3(c zHIwm}40|Yi@6;+4gO5QZ!P^ImHQ9(|O4ObWldlMu)o;*o*0yT7S+R8@CRKKYawQMw(4}2L}AZwu!b9XHAefR10tT2dACT7Z6d!`Ny!XP5K za;$TaLT&#da}Vk={ND{fOCbRGdZrj^y36ql#a8gKKsKx0}OhtHnUK= zvvZ*&KGaaZ;9O^fuX=l?QryuiI>3WfVTMDYuS`IO#rZxYX6>*-`u;s`)<18xyikwU zo?+e^V?MjmJyxXACB&zXgLbj6w+mQmO1z)!jFrn`Z7~5lHL=O|*Gv(_EpU>L5$erD zf&a<7R>-Dc2%NY-@jU zr_g5?SMM6 zvWxgDP+ND9Mt3p)m>%ASAL}5x=(NZ-rw6vcW@UF!C_PQwU_gwGyXhZhX2D!%y`OM0 zgB!Lt+kikb4||g4dNb49@q`3CNILT&qk^Rf0e0pK_Pa_X1KL%^!8mAJyMjrG>+BNza8a{o9Z--WXwx z`59#pQ%+_HK_n!a--}X7E+`O+*)j!;u!s}rxD~y3L-lx(z$PT!X5&twDlavu*;PS) zy?k75+jUaag}E6?@2Omtxsk^M`|Oq8W*W~3D%M{O&K)yvst%BzEbCGSodRURRfVom z#m;8Mpp!owt7?-TYi9G>)i4iFp~w|H{*M;YelzqSnp`Uc$QrDn=gTDPD-nb1ykdq_ zorhCURV%GY?*Z#N<2(WJG25k%;+LO@SwiJmugPsVu9RP8fsDxSAV;~nh!+rVQgBPU zL;SL03ua`->f22uJmCmBVN!y)JUT}_%W9Iulme=yhr}F!o0(SbrBKDZ1PQ)z%RKW}UB-hR1{m{#WXI(2 zoT;R|cXNaR$sBa()y)MA&mT-^pd=OAf_TQIFN`s90_p38V9C!Nm9+N-PWw1Tb5FXw0ERfmuvajWI7-j4|{D9N7&xy%s1o5Ld>Q8j8P(< zf#30|*A{{v!^>{7p;KB+z^}BXkVrBrb)uLPJGK%UcVfP~i8o1B1Z&DA5-gqdTPlpo z-BhJSM4O&wU&QG*g>`5s0VYPVK;m_o$5^_6tAc0XvkR@$*FcVwbbVa?UriQPqwKmv zDK){Ii>_Ipt$0xmU>n)o^Mx@TUxNKlY0wC_38-;bj+W`=yiwt9aP6d6 z=RdgmoSL4|(^sXPd8wI)RXBYaEIWh5L%E6=(haz``@<!RLp zLJrD~YzhlacgucY(6YHgbf?6;uU5nCu@t?id_6s)9pd;{IaKec$vGiOHU4Veto*Wx z_#tUDeeS8+$puqp`#-nIBkkRC4FJ-%3m~oTX_AL%*oh5A_?D=_*w%(mjLOw z2^t<>H_DY+EznWn-;;VN2M~!v%&Cu*`e)x`j%OP_C9oh&aVwzUh!ETE*c6c!_)n*~ zI<@{J9K?OET6lTNd@>^afi(g+b+=E?vRaCJ$7uE>ZS1psN0rWVTY-g)B`)SrL~W-NSLKO|-DKW!kRCoU6}Z)) z)}<|ci}sKN8|8&uvxH?5+UFZdK#u%UN@U1S+JDlhuheu8J-1Z}e&gdXG##c%q`6~X zH}Pg5-nYQfTIm`nt{Hd!2HVq8QjI#U5s{`q0;WHNe&qru?v@~+&da=;h^!%(mue5U zmGOG@m&^R_2__K&=b&wjEp}nM)*B2uWMMZ_Kx1{N)?NV*Iq}oND4KSRw?!z_JA(-} z%l>Yd2&Y1rYeF&^G>*^?<~kZdmWXXmLx-G1C~b4K%ErUIRc$A;Lclb>wT34a)RveR z=QM7B@}MK)g|Tw0>d)Yk2)Pl`#O%_@g6Pip8i2}5UYK=RZV9JqRga4pq9hpBUwENa z=PoM|V?J(w2J&0e7N%AN=i`a580&xl^*jhB3NSJ(-5Y-iZ7Lq;MgE?7EFAfF13$LS z9sjn3Vo)3GzZ00|8Gqo zLS=jSu3xSn6p%3v6ygalCOK8Z(Elj*Cp*FF+gZ8`*FKbZxK=F>6zW$Fr)jF>w(+?g z&g`NHx`e0D1RibaoVyldGq@F|HRf~57{Wx|);rWhAsqe>3l!2`O8<6)*o3_@-OO~OvQi00gk$p_+eGpZa# z&%HB!uw(!AevwKp8rbMOT?krB&Xf(dvO&ebwGZN_!Z$}sm+V6wceB&7do&7qHk;Ik zDF$p6WXWVeP2laI zW4ta@`kPq#oFj+9!3{2(9StD6t8Q+1!c@Uk2DFM5o-YnsDe6`S|7tyh4fy-gqL)u2 z)q@u(qfaLZn)&V%X{)v~^*z#6Dhyr4!GAcKJW{0$L{K7&eb_@-2u$O3CbviRK&!4o zQ>Tp9+}DkZ=Z3mk3zFy8oTb=Kuv|VgURvQH00P=TjZ(S&5zkdkZI6sS-nCZf?&}Ga z2uJfq(YW~k{bzIe>i)}ka<(`zam#ACZieoX3>DKdn>|_KZ~oTjqpGmP+*aD(a1L?X zON%|0y+T>(`EnhPu*m8l&{Np+tE$U!enAe;FB35`zEW%gJ^uV()uNRgrdG@@;Kc@8 zR(yLsRk=g@xQyEeLb*wA{=q(r@CggFt`bijaVU6hkFP~ban3;Oq#W&2Ik3l@ZuQ{L zKLTa4m1}x=tdqiAHM?MbkG zkmD)FR-Hj9*o^!&&ugEHcD^(!1ql{F3R1dZ^@f@oak=~>delC9dAvxAvTmlbdlt%_ zXPA!`kPb)#v`CncVvqW2H~rFJ-y8;E`VJ|UNy#N}ra8gL?}C>WtBvf(h^elQ?>RWq zHN-%NeRDAV>Wf?`q;c@?m9{wG&U<-jUn7U0=%5Esa?{(2xr9&e_UY000Z+RsGEz68bQZ6_L5I1*#*Zpgu7`D+?H+t$S}l zrlgmoFCWpz>L6WtUaY*&LL61%6=;IhMCnehdW~x_mDr3xYg?v6*!aml17&{ZmfBq! zHHqf!IQMA`y8Gn*)|}L;`qGat`rf-@3*vr0&JO1rN65Eij3V$7W!>9iiRSKy3@eb1 zC0AvnC=Xb^Oc#IGk0KLyvhwgQ7xfM5;Rg!VuyjyFa^^^}F* z-8^v_QdCUKplF{YWx-(dc{E8Xd7ClK7le{`**@jy1~@~qDgws(=oOmIrwi205o5O&h!<&fKP$0pIy~O#g&vK4 z`ea3{IMVnm(wxqam3$KnK_z}Tws#sS-USfZk`BFj_Txp#5|Hhn^> z4x<*rCTWZbK$Y}`R7BgYa|dBNP}lXh4-tfEkpJkN?=g5rH1uTjpyP!eW=AHhE206I zcQSL3EmE7jrY91$KAOt?zNSQSR0wQZC7#A4Xk?T%y0L}ej$OYNP|#nFf149z-HKF4 znJ;LcJ(DR4gv!PdQP2r;%K_>>%=!-`RM!Y*uY`wLZQzP2=2$z(Qw{xKwS2eWLGgP{ zzZfSl$mR6bD zd@`}cgb`89+)rj+<8iPZc0wL=qu@IjxJ0T#&kkbo1thdb{y2Us@OtZIqiuD4_QN5o z%q6$FO3&jyoVgB!Lewzd$0g?(a@utg?X6S! z%2@WuGxwXYh{%7vvWO0$kk~TNR(~(}Kl%n4Ph+r=2|Z~iby2t#GZ2sGi?bq>) z_!G8WWMhf6UZ9d1zjkWuTpnpab>C{@s28KWTJ93_T)u%|t|Y4^&#_3eD^Pjnb! zD0YJzRfw%qCIe&oJi?5DbixMlhC3^V5<5>2>?F9b!pXHWihF5bcboFbXd!Yb?s7btGLSYdktf))KGa*Gk zhO3x2?K=~F(7QRX$&5Y+fq9t1sELYf*y!=6!;D{5QJEu~!>3zl=uV>(?oq=fgFc3Y z_S*eri>=A4J_p(%e{~68H@}OdW7@nmkIK=?v(EXVwZRD-c>nT!0OiF0XRK?d(vP_L zs7bTR4=W9_tY`OF*vrpb$1D*A%|bd=%y83C$CtU04BHW?T`kiiV5QrUrQ!?ET5!f# zQ+=(~8U7By8F?X-JcX^1(qIvT7~AFw16!?$N5+}-0SpT*RY1%_Z-V!=|x47}#bL->1nncQ3*^av7Nt%dmVUsUpCij+c;BtRm9lO5{L zLdbH7g3H?UxHx1&70qO1h?-$5wpp(W2aGRcSGAOyY&fyQ{umjvZ7HQ4MfQ(4#yYg= zyhXAmLr=*ELTkto%DBP4N=i7$U-)HnSpOM9!M9hyXf4YF9pH7J=atjLl*y0=S+(1^ z@8Pf6ws-SQ-uNy?NxAINcn(WQrJh&x*lbmOjgw$qu)8HoMerXA7M3o??hWxUC*$h^ zj(n-GQFVAwtwBg(aG5&QY@h zVNM8lX-)nyDH(_5=1$uF(IpnCwz@md1s$STvwbt2J(pNqKg!QeFjMj)WCNWY^DUlW zj1nCs$Qf0eDhqtA2ii{tHcio^J~C9H1j3aHiUyZkCiPn62eg)9#h?T$<~<{ekNzds zpNZ_ByUiNQ2TMv=U=<+q#8o=P^CPcTOFPgxl~|nqWAC5{{n##>BvS9cd;-{7kJXEMigvem3ZsYZeZ1z%NGgt8YtKp4gh|y-WgqNof$=*%VRw{gcCs{8?Hf{KlscR{J(_K^I(L)SKHc?f2cg>>A=>>$pTJKB$W;&3U7S)<$XE|z39*{nLGA_{OtA|ve? z{v^y-OrQmYqG3d?5>G;^Ta~ERALzKTBLGVVA@S)89sSUf zbaz2+J+sncU{7Jt2Q~e2iDf&M7w-~?teO~oGfB$5Jh1QlM?E4|rYygV9ok8$-~9L| z_QIv;GD+Z&#@W=L+^E&}J`8}Km-_1e9@KET4O&UYxI?Pa2-yf6PyDdtA zL?FrN{KN4elQvnI&Mb&T2tn(poQ=Ahk+vjfcH-C>ycruc(kw#KhBEBh!T3JU_4N#M zZ@q1ML_u@8@hx;JzM|wixf48$+{=?+Wc-&QD?6EHF1BOGSqDl`X7t;w8ZgFsk*uDC zg=xM9w3BU5tz4k-nR6Kch06hM7Z^vZ9g!{d$3ZUoMS4`saL3RcN$dZ{yV&M6F3EJO z`t2PpNUN27J*Qz@g?ZT{a3|THsCn+=l)wIPtW%E#M4<)PV))NAyjQSqdN)S=d%vpAxR8w?QkHXmB3NHaaz&`Fj3~wc9~ns*P|9jTK}7|&WS}$J^`()%(UWPUdbc1*Ox)5 z2admH#&dC1=)vmQl?PaX0(Tzx`S-!|hY zh?IQ~e@Q5@Bj64y!B4T&yanH5+?Y?baWMw9UC^A|k|rIWz--!H;yNRCTaZ?oi?CFu ze@P&pI<{V=ru71N%X9X%`2170JF!1!H+X{@kn3mD^Xl%(JxLhz~w z_n~dob&g0*^%X3GJD2kQG8@A_Wk2WWEk)R@Ay>aODcTs*?KrxEB0HAi}NF^O9QoF}pnJ5*;OUgP?JJQ)T)J4B>Wa`C?i9vwPzQPD+iX$1)A;kPobhcZ#(Q-;<$6gKera<)NYWQ84{tj3T zxh9L+W|LtJICk!s`SzHG@v_2u=$^WIY9){DWc<)RE_sDpjApkh$PWUIU zrMH3Gn=6XH_Lpn&+!SwU+5bNhQ9Mrds~Z#TMj^7Rf@-aMt5&c08Y0(N$a8Af`tYd= zZN+hxI^!7M8cMz#X&`&Sg-y8Cb1o8w5PE-0DUfaE>`jnM;0zDA?aP%kMa~f^W?jF^ zG)VisD9!1(&bB?~M5xtm{x_Tt3`SuA_u{h}Q5BeuWBnm{RmnqX8ew^E*zf6vmf__l za%;AohD1%dagd zi7rR>&ovbbvU0jEz)GioBvHZ>Pw22)1_oRKe>9ZSbY(TtnH@a{i-xj8k*VVztl+6) zS}{~$9J+#&ih^~->G7|@X_j5mYba6F?OvEDMVEJBmfpsOWstF0Qs>Pv@BQt`cm7n*sF-?N;teQ8aV77*8v?J=wfk_k5xO zs}M&9cW&y%GF6~ET@E2|qPord&|QE2x;;t=HN_MY#WM9pvk)){{XeXLpG6Fw63?ys z{YNnTPH#h6AJSd!~ok4wRSN7ou-q{F$~ zz7qr9KbA?9HvP(R;ztR^FPE}m*!0ExKFF}%w>OaIbUB|j+n^j#{CHq}Pt(Zuz$1se>Kzz4LtXzm_}kFZwHX^>OyS-w7!ll1st z6ap3xX?3D4*i3h;E#m17T3T!bT&T`|4ZZav8^komt;yD=CCrzM#cOT-1|S>C0_@80 z$=wWARGZIOyWyq2tr4}DR?jnGW9(KJ5V$Y-+riFD2sI9v^cg=ni6Af)iBjDwh3(fL zT*-;LS9Nt|5b4=xDaQ9v5~IIV4u$HNOlKhYQYq^ar4^JT>N(EdE``Xp);-|5$X%C7 zA~9&_3@6X)Rch?@`ZVbce zcaeF@)x8MB17OHwPea?-@K3v$J1jkO8-h5^B)RQCI;Oj-7$3`OLRa)f*(KH3kVRiu z5^0|7f<_l0-ri4e|3r|N#3;GQ;WsQ?*w$W;`7J+Hp)qz6t*Llsqcbk}yWx``3L zLdxt0;z0}v<$c)({IXEDJ=an3KM>wvhl}6v^3;jQn=c&Ynv5l2v1xNh4#}3OKnapI zRS0t%QYskTll_H)_qKTM`6ali6l(jfCDN~Mj?MRio$Zro_dP(|b)+WVFr>2G$0k!{ z<)-K;`Z%Swxd$BzY+ztwRqx1Hm8XUZYok+aoMrJT$S4zLfkufW8{YcEAs?{KPxnSb zF*Cs`!r zOfd)Ir9Uq`86gLp-HnV4F$)pBpkj&@rDc;_;e|6nN>i6JvXJ~oTLT<#O4ZeSw~7UA zjkotkGYFLYS;w!H$OM$q+WA1AGd^-&CE;+KuuuK-)HrP6(()v;NU*}uwZjzZp~c}l z@;tfKDHfHIY@uFF1;vO=GMi6@4|jPRTr0$G3*)BU;f_6+9ab^>%yKA{AqFEE`C*Cx z;fi6i9w*e}MpFVY(}V~P&C0M9{{^5!ZwtWaH@?$3OdbP>ZaKh{_}Q78H7Se$ioB|5$XitAWD znsqq*cA7Zn9Gyq|u8X6M9j~syp!Hz1_ppMPov~VN{%({M1J8UL<+s~1hb@ZHNL%W-^f*tUTokdEq#gE~r+@rT4 zQS`x}=6$2H3mihx88y)OO_CChN0F&CQ%w1+d+-XGSWmvb@|i=aYVvqnS^2A|%|-M5 z42{CFH%B}C2Gt4=aEY#8l`jQR*(+3m zP}D3Tgr6z)gOlFp03BPX>%FTOo~FN=^~|(+@*3cRBzddOT!`Ao{>RY@k#C8^aqs-G)B^of5NEf0C+)HKoKT?VGD|zu2})?_ zjq<(~Z0Ozv^y@*4{UEr~0uz^GfY>ke%!n=QuaIJWlwu%iu{a5;eLS8$JX!l7u6%q2 zHUGKi4~8b_dCGK%K+O}eg(Lqy3S)-iC$Z04d4J9}lzg^wJKEUE(}e!smo50S-uO_S za--D6CI)F76PF5>-2XLSBit*DQH&`wM*Rlk(9~@boTLnT(IxDB{xegz8;@4=Bzxj1^o8iUun%Xlks&~{FEeD>g)QOG}Q`U zNfApUk!kr^C|RVA{aCwne;L@h@f8~OR85>yhrnGA2*6EqsR@K^X`i4!i8sI>(G$VIY(e?QAJGTKC)$OPFrX&@{4rB$oV_#=&m|Xrk!tF66@Hj`2a5OUrT?H?zFC`J`BvpTm>kS z4r@63BQh)o7FbQ0XG5oC7px=)Ic`k!wlS~AdJ46n!`NKHyKy7fF#M}U((g&;Z37qO zco-1Ksx@xty};9L@bGYIvFxNUog*@6q|Y1&R~_9z&CQzW)q9*aSa&(s`Vg6M+$ddu z#YTn31?&XA2u?v|3%EM+=p8nZ@Qh}yx2{ELS4e{40!0*(G1lp36{0!7x6Hg1k2sz% zWP}L{q;9jtn%sU25Xd#->H+}W5F>KxO#b%kl3iKuC312X>7nSOG1rg|iHhju1^+Qv zdVRiccg7`AhmRIka6H>rtE@d^{!cE*Q)!X9N`e1%?oQ8VUNohxe>9|WU^I@h?IMfDnX$R^ zOWBNMCHTG3{Rd%gIa>zeCJch2q}?yOZP~!LZ0(WiVAn})os)uIsSB0QnXc+?fkc+Ikrf21tgOXh~Oy(gD*8a|77Z^;=j zvmFINMrDdBXsx|fJgEB*C>zyEK4I+@y*T)4V1j6S) zBgDbAHymbOmR!ZIMYf?59?33<>f8Y89D6pBX$U1H;Z8}^+?0;TD<61RAhcS$00j{S zeSBbRoL2CsJ!idjtQ;qRZ4qm2o|eI6+v4y~(2&qsw zo0B^As=}kheiyG0f8C8E5WX=mfUDOj6yU6gECJ@NQ4c;7;lZ!BPzIs3Kt8UAO^%z9 z3xeyrcZ*zbqJ}EGtqsd~_qBT0JlL?Lr!H}}Nqizc6I)al2u(xmH81lRr<)#Rn2mBJ zAkQFY-g787V#cs6u-f5z4i`#V9Jno_fgjj?Mvu^414V~Svl0`XN(QLHHZ%bTs`j^- zxV}&Ybl4%cm(`PPC2AdR+D+s)K#OME$pk$(K?vvF*zX9|&jm?h0wnAGHJbo!@_B9* zbQS-fx-coWQ*`|H4v-nXoe7%akG>^s$tn+~itNm^dr`#Nt)QFVMh&`PO|#zLeJky& zv)p(pLa(o|;bq1B%A&bnJ%;i?Y*r^=RtkQegde6E0?+XN@tCNjb%7e;Yxc#zTVt9} zzCy&3-57+Xjk(V8ggy!X;F%%HCZx`_{&!B5G5UnEjF~%|?8B4KRyjYox8S$(0bcIzC*@ z_Xam{R&gc&81}HzZ3y9By@`IA9Sy+;TCiDD;x(BvQ5tRXYR#IZR-t|4Q;F-bpp$dV zlzZhmuKabH5Sz5P%y@^}jJ`=0pURD=uBWr0T@S^J3u*6C?5c4@QVRlzq`XnJ2UvRG z1IZ?sEm)<3y4sR_KT0Bak&a!O((+$TepB~3u|#)IBKh2)Z5!VoE+puk6>C9LO+0gl zZ^Q^l`hkTIr?Y=!pyP8ANStE?!#KJjlP0&@G_sObLXVHFIr*vCHE*c)f-tj1XQssG zMU}H+bK8VKub8ZuO|<77TLi$?u=voZh}U~8J><*;@VgUz?y$2{f*@54fi{H#m3Vhl zIAmoYr;nKN^MVr)B~!0conFa8-_~C4f`Fpf1|p{WEzHhHhX@5vYPRDcxyq^4!XmNR zR~J@*9h#!r3=ULS7QHx|?%Rco6A0z7jRP+vUah59#qzavoPB=&DKuR_#!|Kk!*E8` z1as*`f8o|jrVSa!3je$J#m9vbJXI$L_@7Jt45}eXpv8)D+-6y~kwo&Qt#e6U?$!!8 zJ%VJzV@L9GEQBFE$T8)?u@?aUe#YImi%(r37I_{Gu z@o*U>d$)trw(&GrFg#O|(o>Imo9Q4_lqE|e%Bzpj5-`pI`HIM;EYlP2?gj{- zA62NpKzM{Pctp2^8aD^5jxz`xU;}`C?~s4gpbuG79Z`lBm8-1uZUobRO}ue9=DAG) z_%0xf(4L)MfIy0kj0Blsu50-L6~g#4CY=;I%n)`7T+R1u-dcE>rJO&u9Bh(u6XKR? z5E}-BA#oScyU9<-C44_VQK}MeY&c%3v+6aTW1Iz)o80CKAn}IBtgU3>s!CRRQ`EP0 zFuso{zHU;y7t@8%c$;CDRZ{azi7A%8ibB{Bq$dl!i-fHJypNLaekFd`hNMT^KyRG~ z1panrO#FoW!5iKtXm8D#oJGG=)<4>wNx&BRmJ_r7PwxKgfA# zV%3{;z*Oe?)~Nb5H9LCW4vs1wv}>c^GSoqa7>^fr1yPOw5IO-n6)QSx6v}W#oNSKe zCCgwGp91gZstg!GndFYIV0{8+(yJ+{+vtFQfvIjys&MX&pv-)D7-XKyb|X0N*Q<|)zl!mE_>vJ0lufeyO#!& zG&HP*$nUpXv2lb6iPAVO8RQ(??upQRD}f!yIBiGRhiLOlk@QuYIbVJ$1E+>=a4L33 z3)K@|m6ocQHC>ujNZXZ93}>c*48pwGlpY5r}Z&>mhTw1Gy zNk9T)5AaS`8&z>!N=Z5SL(5gnDj!{5d!g1vooLy#`q2J2tnqP+t^7qk7iz}7>QOoeB=M|siqQQ~t!M8N4 z&HT|)i5YmC=qK+*whT38+JE2r<;b2+Ib>&kxhjEGLTjoIZE?$m6}Qd2cuyw=4{XK8 zM+ZbGp`K|p=ubF0=fV34HhhZ#@V!Tv03k7yiEJqBwDx9cik~7#(dLz_D1eE@n)>!f8Fb1mprP-T^WxO>Qb02`ni9!@1UcafLS z?mA%83pF8#kV@3ySbX8p8`3ol3eiF>9d*l-Lo$I?=+=;$?kO#;zw$H(%DcU02mV{( z3V6>Dz`MJ|NFe0Voc%#gdLdr!e|u5u&$Vd^@UR~|TIF1f#26_fr>O(pb*O4$x`w?(TY1e*999jo4k^ z=xY<0sTK>%k>Neg9dFWi<@0bBDq@ z^i~O;%}b+X1X5z_U={ZL7!Tr;LkV4#r?Wq?BXxVb=t^RXtWRt>jbtz#4=hD?E}Z?# zu{tny0Q+5Aft10RirK)F3rD-vo2ks$EulcTwPmLP$ddAb9{Y%WFb=ARS_a#Fyi0*k zA-+yh4sVm@x_n6zU|R62=dhM9n%WhYzVm!0u1UOq5f72gTQwB2ZnOeUsfa?p)op3_ z_~Hv7z4J!-Y+qtKG_pmGjCkzH33aYC#@^%s1%H7|vPg-cx7$@fyX3-vjZCTVQ#!A^ z@zT8^(}jHr5S|eTPt(^$)h4AmFJ(6O=@yjdFurrc!Z&hH0-)MZsmA|nv6eA;=QNIh5y&@iy;F0cPfDSGx07S^B_nfs=vd;p%WFxy}YyP$(>m<>=nx>uSh62rSPZZp>+X%P`(ZE*qbzHH5IF|w zywuJ7&ESEI?JG01zrFr&hn-6?QaGU#D73O#c5Im?G_z=?i(7Z#$s8=ZV5z?=EXRzd z3pXaYB6~gF6=buQd;@uH6%fP2B}EB{xA)&EVOaR>ZULF>$b{oz2vE>Ewh)( zyD-QER&mtTUQu*+jXd;TsdpjGP+&E-xh^$rnvs{%p45-S$U3fPf7MQ*q#$TFQZR-V z3t&xSx-BU}Z5x}BO6?DzWL?GXUFe!gzNt6%znE}vylOB)>16fAu6mCWu^&DI-R#{rWWcvK& z!23SBf~`!`aYiq6X#{dl_MbtM$M|Oy)bXE*e`(nCcTw+<<>XtDkfK`{ai_En@>ugX z6#6pOkZGJQN<7VprE3xgxohq=DS-ZrKwgQtOfA~|2Xoq=f4Qt%(U`{G9r<8m#qBaO@OLaUN_5!8Qi z!Rz?XjOc`Vp`~~b`mg%V{U4Fn`%VYK`baMs`pnD%?-BM05+Qpf_0hDYlvVSm#fWB1 zO!u97lT|P6D|TIAbb7;g6JK*MgwPKF12%z(tl4wacSshbj@(=jez4&Io7RixW|rFb zlfT)>9?`LZq3o3a2ThnJT}_L<5VKcg@l0M1rkRqvS;kO+aZf%@$GK(ZkQent_J=2# zr3|K=8n*|I(ex@#b@)Q@s-|PFLr>~|wH8ZyF-sVw>=cSrPJ}(4-H$TxKlqc=h{tsxc#x+qmGnr8wlb!}FlEu;Cbos;GhP4CjT}{cqW0wT0QE8j_Kl9i z7YBTJAqROZTG!->7`ntZA{J@g>R+K2nqSiZ%A??WhQQ5X9t1S`eW6p9Fl{I8`AjEehfV37mvSo0YlS10o2aes16y z3c=vsgi(OQh_|Zgc)Y}36Eik;MMT=8iq>#3cwRXRoG%B`N9hlX)#&Ttr?wo=v1mU$HwnsqQ@5muRqu5We~bQ8%qO-3sqg1U9K8E9qGMO1DrR-!Ff}$G z+<9_;XU(n}uFUYo7Sla-yk7d)eybFZRrq5fLb$Mk>heJ)n<^)e`T^Ie|G4+o^;in} z{#3!C)((IwN045_3OWicwV}gGn*6&LYEj^_>v-c6f~^bqN2q9?_Q`J)!n(z884>40 zmLUsT%kv}%$|!_eL+oG}VoI(T@Q`zFASj(9W01w+aUH8;^5>rcPUc=GhlX^`2rxl* z`LBfhU<@4wrs14<4!7b?D@c}JD||6?w{s%DOhnWeEby(g6tuM;8&HJFV?FE#I|nH{ z;Op?t^S6xbIl7#%hGqDRG9X2C(0#F2>APxIXc}fJ6x)Q$oF2)V64znx%SaJ>h z(k!+1IF4jXtjr^#x>ulPO$2TCXfp7O1D8m*G^AaIl@F2L)Nm?%+(Ww8_|-%;j0?fG zpiR7~=lvq@@PxKd7?2Is-@WU7^YV@B53_k?e^GkHsdXd;?-6xwH#=Bt*8Sq!HxpQ! z$#&Ka&Pck$6yfsLs$d^fg9&*wuYvk3%z?@-@5NzXoB9rtErzu+h!N^Ig-V2sNd$D| zT^v(0W)c97_9Jy5LYYlV}+A#On+x}*KXfcR1ZAYm6$KpuXW`kY*Yd>_Wk~3_o&b~H%o9o+m*NfHzL|2Dc zigj0?q&CV7F(KYhwl6@hHtu67U&BV7RQVgJT)JYvI-=@ccwtFA=0?&=mmuZI)Y4EY z`=!e32o$}RY`2}43F!pE+5kT%7=9p>M zkeB8wnlrwM)T&D<$2DWxj*6?+^3`5|4c;hN^BJkWb}jB?;fbQlTxJk*4Zfp^7#15u z(i7mm3P6j2OZlic(ldNAnlmA;&z>+HjDmhd&HV`0;^>l@L97=vcXdqc(!i^ir!k)) z)X>x@L3&K$RLW%TczG!*pcCuSYrU@=Hk z8QgSqj&nLEuy%Lq>Qaqc`TQ4B>`=GBU`D~8IecY!MC|q8r#POyR70@eLNF$PV_44y zsetZaO>AyZTMHemIM>cVq` zuWB*m$Ll5)g9k*M=Aq}--Bo&hVf6;tG*-ox)wXN@UV`j2{kS^!?VK5eW!_}mM@_60 z$DNsua?60LNn~6gC=`7;Q`E(g3%<~AE{PwQi+v3JX_f-l2}oDnWcCA=5sEjPP{@kt znss@P{p2d*uCdkqz~-S_sg-DxDA9lsnUCUoW&G$WLVQ{jSdVp{Et*ZdJp*tObnC}9 zXoE{x^G)cq5HaSZ`2JmlHfCMf29B?duk4T5dyUe^H}AU;5qLAy4cXZU7F5PE{NER? zd*mIVM{z|&n5g!LVK^1+RTr`bp zkql|bf|af--nfSWD!vuMDek@doz9x~AFW*gkL? zB(_vB!Fq}UeMycj@TBRXPeu2I{niOy4z`SafE~aDmx=8VsY}kpO@QK^{z^oFqk0e= za#Xn6NCr!>EqXtRQmttMA0|<@er}ry?_CCf_(0nDt}?eVYdwj!pQHpyIMS$q#FjDqflDVZ z2Q+o{4-4i3kf2Ib_duM#xlzG_Ems+BIvWQ3*pz?o&fiq=0tkC*0D@x(n+~92L_nVI zdt#2DX)BLrXTq~077I7{8QgS&PjT;zi{K`@kpVE~=9fFBckF_oQ(jggIN0Xlb6NBn z7znE1P-1&y^2>QeA>^1&1o{~qqzRRQXe^S-kdj`9M*N^8+bj zV)mcG7Qld+D!SpuSv-S;uLOz4CzsmCIm=4<7!*8L1Tm0-v6Hb7AWmSL=^C1O+hqpQ z-X|Z%s0m9H-YPXF*9ow0!5RG0F*^L@0R;br`YAKlk{hAa!}4T!Qp_MQh${7M8)l#< zNQe3wg8C0rCW|E*_Wi zc}6`By5JW^VKEx$pnX6laR`x;m`MT;MwHRPpMNSanP(VLzUq3nDCs`jmhPM1Lni5N zZs!}}!u&1ArSISUg;TvD9h9^Bc}V~IIH+e7ipnD;v{2|$U9xYAozq&ryFkhC5r!FE zA}-cU-GW?{-YSvN34(!+B$*v%Ym8p3fPw0GRmZe2-wN&24ayEZt&wugf%A8hW=W-$ zp<$Eor?8G$wJbX$K&1X1A5bSHNE?_tjom%C5WEqGJ2Vn;`rPC9s*|tmbsx&+gWw~w zL)3SDUMyK^fGF&mCaSc?pV0vd&S!T zaTg&_avX~nHVFHJEEFUq5QigAYW#s_h=9FOFCeh_be0`SmhH-;go@R^e?s>Q<;TOl zU+Wj*j|m#qWRlTvA~Y25!tAKYNmtJ>z)v-bFcXqN(n15Az|#F|e3PnQ%n8{mwfVld zXygjK+H&EmIT81lj1fU44+P|@`5H>wMWJk*oh@nol7oGVa(n?R)5!{j%Rz$n3{?IL z&^oEph)$VDx^jl3;-`dbP*X@<-q5h6Vk#E=s8V7q4Yx#3P-}xyZz-lo3<@Dr&a)Xm zIC#J4ZMhpKX3HMK+t(_$7T}a?q}09pf`bCn3g|vJqxwSWholZsPWT z3mgAd_9PN`8KOK19@nC0i$cgV0bDnQ*Q+5mPGp$^VyKRtFK5s3+iVwL&4Hyl_IhuK zjBFlBey)OvZN}~YJ%y6`e*;->PsVzS-V4i1NAM(D#RaQFtdfeWa7p-6(Xx%y{^m4P z;IMIGNUM)@K2hKf(K z>1xQG&}-3btHpd|ofo04MImDs)uYp)176=tKe|8KIYudo_I+F*}B#qz)emG#fAQ{doayuS}BU~sXMI`~L<+tt|wdsY)Sh~uyL==As z`833yL@`I6p8X_a?4oVJ%%muFQ^ULW;~j%j?(&>bIW6}F!z`ZUL1lDGS&F2$Eo9?u zl;_D?-2EC9+hWxuPJGE?4UIlxjZbv`b{%;zX@AW7K-k;-ZMCLIdX-FCZd*E44XNt1 zvz2gLEss55u_!ahPDv!+TIMjAj(iF;Hwn;|P@m8n(r(D#N25kcXEVXdj{-2FrZB0+ zNsk(k$OZU01Q@kD^@LtKaxCq^j%jbn=u%--=cAxkPb(TEh(SU=@r@z^_IX*B+eVSp zp~@?%yjXR)Jtu{rz2`}~5kSY;_c{aX&;Ob%h0Dqf*GWbel+1*t@qKZ-&7q&+`r5T| zj-Hf9DP(f7;wlP0687u#jr%)Y*P_c~^&v?klv$TMOx=!2IBatsK}F3lGy$$cCCIO) zQh!74QS=kq*QttVjp4f}g}H`fq7<)Ni4l+wP*cK>V|zW%TEXLu#{kIEL%EtAUgoxX zV=c%|;g9+iZQG2`qavHx3i*HX+t<6JUY)@z}ET2D_pc|oxZc8tgmxU=OE*jo8w_8y>*WAdVr8Qck1)4I$chu}`18_Ywg zjq(-&|JI(_o%Ef3tvZ+Hxm0ikY1;KQGL|+a*UyQ^6LEgJ5jvt)${)^2?ah{Y&yYmq zec2vJAvjWD-+0$#)|9-V5zPxnqQ_gxVh6l1Lfag(>h)##!4A8_XS&>`n#X6OVI;xq z|2$q%6iAbQMIUv4+imL(wqDg6_6gw=rT-({ls_rtFR#_@}Yt zq$xs{qCjsxf6$tCjYh+teC#6DSKZo)jD&U6k^_a-Qi%MDtx2H~Z)QHf`~oGxLIC$F zP$5Y&i=F@Ins3_!kd3dsu5UxR+FI?HcVR(8FJ6%0bO9p#REemxwOw;#U`*TJW`H=ZTZ`R{MljErP6MIh z$Dc2S=-uM{Q>vP#K3{p23um5&MwkvKvZkH|P2knGi7~65>&?%9Fde|JH`9Z4e&=!3 z`%+9;CvXJnk3loGuAC(ZabaNp0U4{qB>!Z|nhmI>2QekZS?%q*>wHAdA9PYr-xdQg zY|Xl}I7%E9JIRsTaKRSQr%xFW+wBoLL*ZB)#ocPq}X3mm&DQZ zbjK6A>V7+(5E-%9BEFx%8w%OnV_^L;!96;6?Ob(x9~h~2Htzc(kNoD>Q>psPlEeUd z5K)SHo`ew!i}VByCx+cFOG|rWunc1nP;|T=I^EKOqH={T0V`XkSNfU?3^z0oO7H zUkk@9!k21Op#xUF7g?v`v&M#X-AIvQ0Nl2Gxy!IwsxBPGv{K=npav{e zmXOVpY(>^L5gskl2HB^8$y#hjF=mhAj7ZOk_9T>8@kKmCjnTHL%<-$ynmMV!asRKj zXio1uM~Z8aXDH_W;lK8RV^Fb0u_(c<7ZlUOG6J~O7XsAMM-1h!A!NXkrp~A!FoofO zhVmFg?Ky-p>X-ql;2n?iqDWlyWgg1%PLIIuh*y!GY9GGqXLD#SF%uFk({8i57MIg#4q6Cf z#=C(9Fkk<@C3_?|ZlH-~;x0{(CD)Hnpj~6Tk%uoU1({uY!i%a75jgToH33+^_-N0p zz|iWq0cdg3H?|5!t=pK{PiKKJ@}EqHydAM|As?Fj^e~22MK;-f@80~uxkX4JxhCpM zO>dPg&q6|HVe2%dtM;4pEd-Q^s`{(vzJYE=q=Bo}aUQ}7A9Kyfn*DifftbM5@vm(a z7P)1hEu0tM-=`uU?hl1KH_U-ncwQ#6%cIDSVsQ_Y;~(7rJ9+y9S4UosNH;JxoWrI7 ze~j-dk^e9BYsa6Vo`+KWIlXG2v{Ij&WsD?e4>XM>vy26FTaZb@3BZ74SKHs?R85dq zZ}HUhvEC%8X+w8&J=iNUi(H;1Q*r35UffoP)_xU}CUd_`V&(x`c5Z&wHWksO)pc)Z zKQK|Br5*m&uz^OPZXWrJPo{Vq#~^IJdV-2Ro%jPXHc8IYuy!#kHKWJax)B5-^J(X+ zqQ75&XV3eU4EVctrwQbYMZ$wPlJc(Z`8|IM3Qy-NspE#~Fk0OFxi^60-i=0*w!y@J z3JlYjgn%6s`jDa^rtS_`Tji%EVm25f{~_$9(uiIbKt2>|1OZRc?~TzS%&TQ3+HKWi zjrw0mXt^<7RoN{1oXOswJbZLgRz*Vz;{K<)SpRWF<{ZgD*vVo{IgfUP0+q#x$<2`G z@8aX2rIRP|hytKeO|r!qTNdF_6rSVswUfGtvM1D7h!XsLVU%I zyRWqxzs5wdF@;(93jRm@(Ica=l*&wIFwle2luHEE!3_=ur)pbkGImBLQjQJRoUYWW zlo_s|NWHEnfrx836_y~Y2u5Db8qstmuK7kwYK!DqOpY9Awq5MKPwIs{h;uL=kN30H67$2{Gt`_n^Dza7@1ClTJdnR-=8?PCFX$| zyRIk1Jb{FLyj0o_>VcImW~;RR|C&Iwm@I5L_?F&EcPX7l!VOqP*4enDJJL{R1L9K1 zNivt~>AqY6DSlQ|k$BJk8cMwdf(v)%O%rmO_VZ*c5F$oh8r2bzh0y!z?fYFq>Taia zfu_Y`JI8caE!Iwfj9*WYRA32J^D|~11ZFHOkHPlC;+JMP(Z|lKtRGmXfuL{VqqUF| zp%yp`GM(M^ZuCc=@KK%JeGNNBtR3oun^ga}16fSf2Pyp;*3pop&IT6LnX!gC6pl-h zSc-n~LW-)3f$ZT&WLXf^j5QiE6ho)a;<$|zQF+Ax8$yA z1QR_nyFDBd%-3>(7j~0_E`G>KAnDwM^YNpTly7GOzEdaYMlkB^$h}+^$kOf?^jOWe zCgCnGqW6&=N~*_FcCy!X*>gki<~k4+;qJW3fXISZ9zyv)j`weW!-N`tJ;Kx%4Vqre z!tHG6A0N+CDI1{<-S4%^ZjvJKg>Kw?w}r+?s#~#M#V#c;oxn>I;3}ajLv%;jcAB9b z#zg#;!V_QNY3njJGs1t+Q-~kF8jeBxis|0k-zp+&Zl2MACJ`^Wc?lR)f4 zA+h* z*nh^W@=kuBIzBI5fY?IOJpuGLklatINzNhJnn@3Gh6qpKfffFV0cQUq7g(6TmRKT3J z&NYPaozf+;x}s8;r8Y#`2+yft(h#u@SU>lA)ME%fk{N;>j-YO-{$NDa5OP! z&99z_mnda1NF3&E@;RgkL_6%|9tX$Y`V}5`)<}53&~=gLt^5c-kx4wHsAsYn-i!LO zeE($eea#Rt$4C}i7>Q+(g{9Wk5!4%wVa+qzSYD3kk+Zl8O-`&cB5x<7DRf8PU4SohZn`%?#)a;vXf_2?QL( z>^3%eKDuJ`0_j*Pak?urej1s%e-}r6L|kL zrJSpAAO?_k##*;*8Ty?^O4koglocnXPxZ|BBAJ}_FrK-3m^qF;xc#eIlvyyC=+-gy zgswT*0|+jysWidt@!*;S7v5qQkr#lC_=#8e;uqsrcCjZL{XMq^9Jy`e2s_mKNm%*g z9I+v=`BBP}m^b|0%#m*xeZeK(1hz@+kKyE$<;PSdDkX!wu*Xb$+Vh)eUzR=~Zjjc;Z8Jxxc%?BzUk zwgdVM^>0ZIr%Ceim2`8a82IW?Bi$b4MDDG*Xg0a-i}i37pyzpLTXOUOCxhE~ER0om z=EygTVDs<}m8kKT>Wue?jGEapPD9#CgA%$Nq&iy>pT6E6nEuH z7%F6!&0OVesss3*7U(4H{Qodx&IbsKiyxbOi}Odjv!b0sz|&7Gx-ui+{T@VR>q)2G z4X8ehdE02 zr+$1vMC++v7(AQ~P891SJemOT+)vO_=2yKR#>lmbCf>kKsU1WtSs>vjKe&vUeQpt` zmui{BZ94fw@>%;e<42f0yTg#i5Uht+oBlL=mmHLf==|i7h4Z3zkT3CV^;zH}z9HOm zGP6yprl=hDgdpJ(EXdN=12Mnum$r)mQK`n77j<5YoD=@ubNp`38H*pBekTQhYyQ;+ z-HGJWS2th|e=p(pE{>W-Q^y5+j`wn?nv-SAG1o;7ZYLp~U9R5rfyXQD@e203)fTPi zsT4;O35EIO)bkC)GORFRGCQ$Td2@E&rN!ewm#(9YT;thj$)J_U4D7Vy=Tk{Z7{LlJ(Fq9gQlAnUEuuZ^jYTQGO()D7U!y}e6Dt#Ef!ct|a|ejuL+ z+x5XBXemW@I=+->PC&|ejTAqb*n23*`zB?gw>SXDGruqe&GGfojlHAJ?ff z!AWW@2#kl55fNzH1DnYWCjoFO>CO9$uY`4A!4Q^=6dy5VNa$T2(TjG8VD6VZ0`JAi zwLFYvMQ3e(Nb^h`vzLi@9Vz)kTP%ZVH9>fseaR+=L|Y>{dvooZ5< zi3AbJDYBdv*wPOoB1yC!1|#RyojKuC9r~;vfs0a287pbDCeCi6WH?Y)|401vDy1M( z>~|%)UR*B2h982G`FD`z>9_Kt*oEbkV1n^HAr^q44 zy29K;YHIXM!n0LlYYw94Uf5C3y_&PP#|M~h>>qlZENa5q<-CH#x~iF-n8+sWLYw_+O(0gLFD<51=#2!pSvKYgr_VAR z&w&P`DvVvV(3J*d8l-6Yj;v9TFvjG6`|h8U%>qk1q|ss%m6^DbN~^al5aIFRoOyxj`rP$lznvvkq8W_WR6H&B{C%)t*5UL@uQnY0 zA}Dbs_7T$0dVds!cOMG6<1LK11d>PGZMiw#*4(fKmMS~+Ibloq8t-3dGoen9G4g4LD^efWj4bf5`h#=)k zxG@xsK>-i_s>)^u8)6sUY@}M4V?Ly1btKZQ;`Zn9M_EFJLi)1U4Vahll0?kN@JBe> zorif(88CC|Sv9&{4f6CGxhO}zY->z&EV_rG$H^~sDx zjf}ZS1xwYEnvnSb?NE-jgKd+Y$$oJx+_xqmiw6|?b_EM&6FE%7tPvDUd@)Kb(a~i~ z4`=3uE|UF?Ek!#?H|da7UNpo#Z-+m~*&1Bj3^+khKFVA5a9>z8-t-=!V{y(9;F<5Ih|{9q(+%AVvR(=RXn8jC zDlEHAVrzt?#CEoP0wg_B_&f_amRE}~r~#)8e>6?F_Q_r!L&O#U>*8iT_E%!h zBeTmGI4q_?yTHIMO7WEvJ=KVsrBgp40MFIFohfUrR(SAr9RhWPtT0LB9zsPbQ~=$E z?-n$X-uI407q>+Yss2<#yu#MQg#bH1#J|jaLvf@g=yvsXAW*UEWzpn@tPaGUxTY8a za};DcMC(h*XjL74O^$STKCNqm<8ju3QD>P6_^>H^NQts^9_q)Vz|%MV?E{enDmWkK z#c0V>`i=HR(i+sMx2*NUG0rYw1RJu&YCZ6wAmrR`9;)`Nms>d;s*;#=Mm6x%}pCWaPAJ z-ezb1H0oE(A#trWzrPPb8VM~mQ2U@I-Fm7a;Fw)S_-RDUfBwYf@rF81beS10A>eo; zB6)33#Bh0~K`54hdG7}mG0f~bCR~)f8B76Wr9Evq(%;aNoX;1&R%uDbO^^Kf&?!HY z#ZexRPsuO{0oAWT!Mw(ejPu!IlhLxInvfSl=zI*Y~JaUDY+rtfydJ-lW+m{fe~EXW$-P zh_VBc8@nTma*6B&AryEH&?I-uU-8YjAp~$`zHyQbRs}`drfcdWsR{0t_14ll))Elt4!Hd^i_Q*IyBmq= z<2~CGor%)3YJt|CWg8WL&rM$dq?$SJtc<)6(r#)^iBdeht1?^P@149o8Nq#`8A`z0 zeuGOi{ES8cx1f&h)Q8}XEY*R5$EI{%XrJRLT6whoK!UX+ax@T3i8<7VSAJr|UKhN8 zK%MbqCi=F-<W3ERcQ=Fl|Oet??nZ+k~iQrp;Fa}`5pDc{o_jEi1G(LQst=)I}`$# z1D}|SVSY!?l)Yv*|&fB$%#+a7xIij=gQ$U@g6kEeH$*0-RMLt z>_vcRJB@HLe8K!8lQXdIr6g4!;#B7aQPa5#^@|bl@bA~P2&Zz5+% zE&?kq?_0@H_jY0V$qt<#jhbe){EN&M0tG*j+)15_hAen}&+4iB>G}R~jrxlCl-5!( zUh{4F2*2_9Ijx$x)*&6_E%KdGLo>nG?DAP zPcZFZ7WDIwwbu29i<#3m5C@VT$Y(mIfYH^fFQK!{i@vb{d`|A|0aYc_H`fp7_MAU@Hwk%qL8=;_J7`{M=)k<_MyFx!S?=)9n-=Zq9%|FB-TyblFEet-kqvTkrWx zuLuG{m7(7Qp8`Y;_X1Tx8mkbxa~fCnePJl{CuQscGHc5lu!ZzvH@;rbtn?a%IQ#$x zi&+y^l*LraD1t4W_~Lt{0(x#S-NBM5;PRi6$V62J6@tHo-dNC&!VYkczy$19J$Q9w-XMV?)B3CDlMdikF$j(C~41 z6qNVD-8DX`)+mVisfMY68F@s4)Z+Cy{!ry6CnMk%)e*GCgpE9-gKNEq>3|uxKsz?j z8QW@YwEJw=VU)}o6IY>3Oo6}fnlHI{){tMsUcNu&>>2=y+Wfna#^8#UcuH!kdV0-V z15wV;wccNH3TiCHQn5bug`I|Qdpg7eWtc$aROFFSQgC5{Wyn|!fjM$$S-v8x!j52$ ziASfA<{Xlf*$khX?Uz?iSH0RV7XP^JmD?)=Lk_iPN)C+97v{j1XDfeUq(wQ(SDoXp zra)GjGpEv)Ig^R2iJ$kshrkL1E%M}`c+-n;=_pT2XLX(}91kefkoW{5i}4EqZ>DbX zrMZ5a|6&V-|4BeB$}?zV5%YlQATO&{B)9~TeFMVNg$-yjUX5HC%z#za{mc^tlg*h; z+YNKO{m?~4aCH8@-+^S&+2t{97wdyyFHXwrw2}k)Tw~#=M(;TmKEcs=(govNKm3?SWr&ec>p79%Y*jf?OLF7f#e;J5f3yd>( z%**uR_@<(AOKh7)E8{;>BsaeR+PI;RmuQwEW;0a>;91r<9H}ukB~zh^67G6 z)ZkffVH~$UL3lOvJs*okqeUuJ1S6^xCfOAWrR=mcY{a&bNA3rX50$R27mGy*lx+`5Mo?4%Eax0wGtYz(TJzYtO^(tN{Au!gw= zF!WPCvQ8a%dZWFQJ@%yN1m9apLRxe+i^07-dnqdOs^EyW&V0Y$0@j|HJLLRLinhjf zc`jgeDfddI-M~80;UqFaTH|CRIgn3?o1sNHxTDli(m)cr7bHY1 z2+&qg43d44C6`o{7!Rb`x-f zKX$WcQmjF}kYvGVvDt7dDGrVaULk&aaK0p0wz{(X+;rXdtRvyOt`?h&2u*-jHL6~$ zWL1M{-=OJ=M*Z;>g4{UdeIq%J@YdL_QA0Od->4=>FjnbHRzC=xSI`cTr6QJKP+(F&pS)(Z}HxRj7)E+k{g4^?!_ znUFQz2i@@(ZolAks<@mKCtg^+63JmWt51u&H(^{GSxkzd1Da|r+B5p z+23()5#8VP(?X>dA#e|$S{BDslzL?>Z?L7=&~?))pBv!w|fgckw@md=+;g?6p= zm5BV_$?heq{>Q7UQf?LfLB>*oyxh)#AOea7lv5sUQ9u%*!kA{aXG8rUVPOcGIC#Lc zXO8`*_`C!4tz@L2bN!;xjtT%3CuZ$HPS?48stOA7*U#Sht2G{ggP_Y$ zvhKLfbyJd&___Rt<~2BI)S*|op9hJyXhmTei_!?8!8#tX zqEu52g8%{~?K93F;879+hb5{7`I1=j-7$<>k!L<%n|3B&ei^mKH;7mhB8MMNy+>!y z?$~a6;9Rx~G_(Rp>@gc?AfhjM`|@Ywd5?_l2#0Be>HG3n21pUyew9jQnu{z?5>DWk;kTKe4OgNgTeX? zmaPORI53({Bi)}fA)YYha;BlwQrnYn!>U}5s15YwyAi8wVOLm9ImIgS8<4JT%=rz{ z=IHhm2qEY8RKqCNw!b)Knjm_|rOSHlFM zmCUuI^GUmQ=TNy!`Xl9Bo?hm`ZOA<#HO!Kr8gCRo4R*)&_U@gz4Wa{DqD~=!tvs*6BGP`fYLptA z1WAEcjM9r_SbZS$T({4gnHoV;)%Dzu@Lj8uq8fGu$vY-TpQMN>C*O!7@F1Y_l=`4t zm$2Ldtp5IOZ|zqExcsZ9ymkJRS}9lm*}7y7YGhC!lL*d;E-&OqmH>9OHtzMc*qVoK zkhTT*SCcAFUgU0q_0sUPz1{y-0x3N#d+%`%=R zK>?Zc`)(&1x4Yc?G6t~;4k`pndSPd&9{&19vkqv{(2_vmrNoZhFpjEqowwZRJeT8K zKn5UAVPT$QrA}b%K5sT{!@pKn;CaTmwS+K4uvvjLY> z61Zj~*l{R!3GOP*m(osN^g;|aqFEj@?}YK103&L7v$WlzjtXi>9t_A~Q5R~i_|ptsLAs|V`xEvR zhu^l>WWx<#)3R}k2kAyo@7ANz&Ud}0o7A-_jvmzK-=mV^l~OWzXHgT1_`)XQ<*gXw zU*p{8IpDbAg8gmW%7~cM->;jv56l#^ZH5e^@3wZKUffi(k36C-J?S>YZUCmjajq1v zo++$@w2*O(X;phBmyXD^E;@>8Lp|r~ zlD$B%?k*c9=DP_`*kD@;Ki;dY0Yx}oZjZ^k8yLbXVagbC$`lcBkH>T_VL1nD1Co{u zb=;I;U^pd0IIBYm1t3Nj|;T_mY{b{pWAIu%5 z2gwYIc&x9LI6dDJu~UiX=N_ae*c0b=^1IV0Ku-2vLPvesNV9C#74{gTTrOrC*5>RY z3cWER0`d3l&k>1;gwWXt?A6q2IXa9aFplqVzGxLBb|E};wt>^Qo15J^U2;ySd1g^v({pv{1@C+y z)1~)zvk_#=9BN|v!J63&lmb?eWz@x?5_}%ps`a=6gxJ)ak;lk@a*?ZEKl-oWVv64l z7ZWc6fiN&?QYn63GwD~S+v|U2Rs;zdjw%u53-owMH5g`|GZN!9dA{WIa2$Z(>;8%?(Go7^3Ym?c5p@ED0|>`x|{pFiT^PEc=R!7eEi8 z6x#C6EB5${(ria>rY&iLX*%O3(ZQn&$xp_Fi~5u!PH<7N zbrsR+w@u34MS(@==AQ}_Oe-&(*9QYcW@(9&*@0%R@JV0idDiIxVE&-WqB4UU#-R+) z4{!A?nr({Mb(`_mF9!qAAB#(rnuyBG3rJ7EDLy`7b1HD&yQ?MbvH2^pOOPnq)_c%i ztdysOdJ5OQ{|=rCP5^xJGw1=eGwPMDxvQOKo_1H9V`XOsY~=A-57}*4t1PX(Pp|c& zUb`oGoycjkmv}-p$HU2`a zKz>6nnZ&6F&$xvnlGow_6kW%?tbX&}{p;$l5IlFXA+_k(rz z*kqO=elUhlSWB@T*X1eYHohzof?0aScqfoj)Q6rfAN9y*u!c}M%2cgB$PN0xkwIW} zm78n&JQ52Ec9z`Tgrs8wWTPBnKQt$_F0BnezZ8?mEG>mESM?ZVIpj_#$)bGO1<|y& zTjpFbcCuz$??V0RG+iDYoSqgd`A$`E_%zbM%|r0S+?WDze$lgL(<~Ir{C1ovL);mw zGqU#7haLZ@>{lW})Mw?GxRblHhBlG1gKB|xfVwB*DEl#Nsf<_M?Izw~U_*ey?YzS! zOAk)^=*xRWH-x*_NqfFGU%=I1@Pp@t)YT;>=Q zE^jDB{o))F4pK-n`D_T@I0F8vlcvfr^!2bpSb|_5sQMUc2!$a9!7cQ2a=sozU8-Cl z2?tm%!1;fGc3Es>7Xeu3!y?8k51i6H!{2e{PMPrFJ;7YEfr~{0AZS3$x;>(ohn`j9 zv70XS(HehCv^lv5J_>mtImv!O|LvH%`(Zi#3j0vQ8yOAX>4joVF!;6{9o6ej8n zq@tso-)y7Ryy+)sLNv+qK zbBv(jF{H0-H)4as3VlGu$q;!6jv8e}5zy2p)Da*@G_T7b3}ANx1mLC*KxL4y>2|#b z;ehA6HM8`dw1aiR3FCL#p~F}}f93I>fnH_IxMQDXc-5X605&Fam7||F@u`NQs@}6Y zo2nVgQ-T~VOn68lBA&V}$af&%65Ditla?B&35E6GS#x8P z!^hhn_|^gV?yx{EK;?+6c-3lx z)Coc6xp*NQ`^m4WY)t`w$Js?-O4K7?pbrYg^IJ4Tl!Ww=ki|LVe4U`V$NuO75j*Tm z*EtNA4*(v8d43R<1$yNbsb#4!JIxIFeV(0-G?bq;V1L}pV~T#(Bq(P0M_r9W(Mu5| zd)37ln%&GpD-L!roZA&zC=n~eJv{O?YP76Ao&8+{wFj%#c)F772v@-j>Lrt6E6GN% zShcUT447ZK*kz?}{)Xxq%|0ugca*5WT9zv}3E_?>^NDFkp#&1ewb&Hv-0)qt}c6K~fTPSi6!7w0ql;4{5{rfi7QgAIcE;LD} zI4X@|y1U@MOCO%OGK`yNdY@&VmI?|z_zKxKO6O)uYCt_gmYkg4)R|DQXYyVP_K>Xj zR4>1dhDC^-E>#iL_{}R>18r>`Tv#-Wu`T#F(V>KD3n@{Y^E)-3>~b+XDh2`B{S<*= zruUj;it;)fGKs)z9DQ)*@$`T2o*&+;^!$g}N>|&7*TS1hYDk94+QMKNel!UkLQkQggKYTwbpvQ7W-b6)RAR~i)+Bu9xS**UD-!kdrJ}v|Tvq2$+LxP-4!;E6l(4x2qaS5RU zt#qk)^~G6d zMRL;)=MEX)+~{yu(I6nX;+J&Vq%7tTH~(#I)lDK;zWJHKi$?H8Ac4Z=h*o!mn_~QA z?#5zD!Dg9|ryZT_GxQ(m?DU!i(N-WSk5(zxP$p5HuYZ4btjiS%s z@e*4A+y%+uq zEff-T0ao|0#M0(Xc;>OBiMfwh7Vy#1HL@cwEvS9c(cw%HCg%J_ zeLUYK^H;}cV?~w9ztp^QMrn=fp@vsJUouP&9)h?*bY|}9wQDctto9I0Gy%1AkyC5J zj^_kxDb+k1NJHO`N1R$&w=MuSn<|zO1!JsYi70av70*`<0ujmt!IYjL9gEmgLQn56 z%lg<0b6xO@`qj@3;X_1Ic=-fw78MPtn-2-5k_JzqQy%w=Z-N(Yt;%dmX@1%JJSW}x zkB8%7QHauWKos>}0%!PeoiWy_S09)V`^F?bJVfWghc1~QyqzVr zX0b3cfz|;!w%o8Zpzu2)4P_~pcwZcQ^Ld4(#uJ4WgbPB3ZlmYFr%k`|5V^c6l{>AtFit-}+{$IN1&7EnE}nTXBk z#*%uSxH45dX7`Nd5KcX#D5qI1+WhzJ>W{plL59!F8wwIo-bhH&K6LsTu$4kJDRD3|SdY}i7=Uls7 zeqvwZkAGwshpcN@;g(y#A`#c zD6Y;p>mC2zVYQtwb>89nJaVNXI2KfJuhhv1r0NkS>Klju(>kGv2LPL$qopJ`*{wPH zoV&p~M<|%CfZ1#X7S=NDVs`66_$B@iPEzr?JXs!4EXEnXj@nZe@OOT|E`=I`y;j9n z?U!g|>K(me99oy- zkq#K8pK-d8JjU(@211g*c0XLvc~X3;dfkQ$Po2Q2pYDYT~<|r!gqndMQc*n*oS5Nx72I0 zI&hM41OXhEfq&vTxN=Xj9BLh#|4tFFbv?!l=c^ zUxv{RXi{sGQxPlN$r_TGOVies68ys1M2U;!u1|em<~tZ)e61g~&`E49g^Y$cWPx+< z7@VM1WjR`bV|^xdvYhqC!KGD43&djD;F*s~CCdMd0cL&V_d=qjqV zU#EP{L0YD_%X}{Se-3pL8+Y1kr#vlP=_bi+)xKTrp(smAic9rj#jQpF3onX_Wkhg9 z8wKc~^vuk(#&o+L0m8k_C}CAf4nZr7<0#}^xynuQPCsuN^)=!l`5GpeyC?duLn+=z%J~0graS=v87+<{xsQl2l;;L2HV@UVyAFo=lhm;Y4L0j zfMm6j`*6X~**8U5bd)gFrx(Cwj7luY&V34Y=yFDj1MVI_hu!tP=Y*7;CGVBKu2rsr z1^N6V4Cy(amGh^3Q;NPlM+rxKw_jIO-v01Mf^tR_f-~<>-MgB*z`gSkIeU>vv65`4b= ziocdv=8PN+3aXz%kRhe{BY4(z-znxB!JU_{nqxDG!uNA&;J*CJ z!K;BiNdz+{>^9+#4j_XI zv72rxg}@A~rXv>~e!=GPtkujUYkb57jmx<6Q(meR&p!de&MEFHQM>oY$d8@v+33MY zTpjOn9wCuy*AD~A)M2AueV%v5e=eorebP42@g4Kx$g$bHQMM~lY58`IZrwse@UZg1 zI$>c-sG|wJKQL&y@~lMR{P*}8Tu~GhphE*{?0Wmxfzz-++)Nc+XF2NnLc*18;pxVQGutb@0wqaug;q_%r zooj(c6RB_7I6o($3}7^dq+y?}9l8x-PoSdiu0Bi&w$$4|U8CfuHHM$cW-y1MefyL=W|r@T%be>&W~jJH;q*=fWLdvavnUZ8U^WraRCddkxLzqJ zpM?WlpV8v*uw9L9RknTAR`h2H)YXm?FV}ayYyhYKv560 zgN7&=aM7}aY(*HZA#&~Zox6-}bsVFXL@<(B{6``kZ&$~um7H#W4zNSao(=pMl_Xgm z124M7>ET>xoS;v@2FgwpZS(Op#aiBE2+p226KWwcFBC^ur}n*^9|3h~L^u*SgC>OI z-MR|DOE|BtlJA2D^QPJVi}jPLDVwPz5L)|(bwN3-bA0!wU9M#rEY}u)p`!~M?{-Zu ziKmZ8u|^BB5pm;6o{4^D`37>!NC5_RPn#9JtAT<4bpv?^bzFf1m!pP&$$o-en;fVz z(_u6yv z3xJQb6O=1fckxOV1pFK~DXI6V-??PRm!Ac7?_U07=9!y143_mydoeacw3HTD^gn0< zDS)432d2}lD6o9F+H$pWx~wsmLGH=)TjPVXWKT?G^*637PFFzR((j`LHL>a6kk_vH zZ#dm_0B;FDtx*Xd;GmY}+s_CW4%6?pMMAMhEZ96nGXGw2g0c3V%PIo@Z!dgt3Y*$F zAOpMpG_SGTnnXDcM;C?cFdMF@K5%!(IuQ=aB%`6cK8kfevw~RBbkdG$&wL#m_*e8# z`cWPZv#mR4!>)-nqAy`lDH2FU>3VxGNli^WZU@GH*s*c1Z5fsdb>OGCJu8WWBwp;@ zzw3Ooz|N0fkpL!+FPGhk?-^gQJ-ys%`Ngj>!#>SS_?0ySKJvH}x|^k?r?2MFk==A% z`)64jIJSjHyS!W1+OKKo!2pP3)X?^{CkFw;!N=QCc9tFUdu}TsZ_AmeP#P0m>h=)* zXW$dt*>pzTr!WMl-~*SN+MY{VF1C1N67E#OcqvZmZT=jSq(i(~sMTaHZqtf5bBQW$ z8!o7WPFKMyP(~LY76yh<^&r9Acatb4LMOD$DS5kVqU9K!%V53ARGrUcmcvwb0G;p} z2+mwm^iKd&N@xmHjBV+vpxIE!OSpB>%y(aQtrq+m^lcS^)lCK?*|dJ?U4;4lmAbST zgoxPs9yS`pqNePtzSetK_OWMDO*=UDf(uO`Y0hqy=gTL;%@Te}AjMZ~Pxoiyu%Rrr z$97Hc5R=Y~ zwbves9_xaG!`-}=Gvw79lWzW;Ngw-Cn+KDKS734D%KpOlr_1j@@x#+~R14Bh6l*P@ z`PhgS->r&glV?AptH^ah31B~vXso^G*PCl=siFpVuwI$WKqyfSyizr>CKcDbZ&U|n zoPuqadBKLsLbZ*bZ1)!I%ULo=AexdIgy051(SM%(7EE>GX2mUNAx5NKm6&r_R-^z& zJOovyheT^Ba=3WH)k)YyOFKT*51O3A=^3@>is_7Uqq%{UwE3aYG{wyod;zgdUqym7bvvduKqFk-TO$)hLThWeD~d>3W}A( zQBe7y(A>t3x*{}_LA!Q6>&+CiiNQ@B=;ME=B{lLqRY6g!hd$5K3S#~?iL@LkVa&K4 z6Sfs+!wAD0Ql-*UR5QKz*~mNTi^NcfvLDeI!Ich5(rfBXv;YQq?1+SN6|8eNStQS2 zzIg20OBe?xxlg%aWUpMCO@?-|QY=}$pn-vFaw`{%{Fp{|#AhDPaA)#-Yh|xLVdAbI z*_*cX8AafdNMTVy$gNhQGlBT9TYLiuk59BO1fN!l6VeI+6i-E_mr$p<<@6JY#fiM= z$n9N`F0ylQ(3z(a3G4c1Vh(c0Qg{UM@?E`4A*!8kC4;Ek00vzQVdI17&!A44Pchke z+{cG_3*StMXU9_UJ2&iat+uh~h{`%Cg@gEkP|3Ox@fzoe+eoe(`7$yteJ42NmEWt@ zj6|5(;ES>5YzratF^716>Q>_4OWnWkg{MEmr1EM@rpshapmTG70%@2;3%pM?|76C_yj0Y>G&q4b+BzxkQW&|4D&GN?uR_XYKfgw-;qed!7 zCk(<1T#&ubKKn+^JhxKVDP*^bbxK4n>x=1m)FkRpjlqJKHQQY=iB!%*+k+grxY_mF zBAT=Pt_SZxI}@AgEZa+&YXYDutT^=#B)pv~lwXcJNWCkC2PH9FkAXLoH~%7b&XS5D`EN&w|eumjJF(l{YB(BJa! zU~Mwc-Pp< zfuC#&38Ncad6bK;WUYI+h08L_nB1(kD*cnr$yQo)aI8|Cl6o`tEGA8vNQD3-2xAUq z1Dz5dVl`cdx{;hS@LnPkj{!gd8uQ{As$)`A^m-`gsJs!%yjVb+SO}q(dGTv|?*0xu&D^E#)VXYXAo zc)QXIAI^9PO^$C~E1+WpTLE!U>g1Lh`Wh3p8&5!T%Dy-lqEQF0$BlK(6+~zN)MD=! z3vtgn#IscND8^JdXg8`lOd~*69BK@Cp<+3zPSbhp3kdL_i>nC|Hk5z^1 z)#{jrcPX><=tCm{6681>M+qwKs)&iOXPe4PI5WvabBspbqDtwvjeqvpfSNQ*NY_iI z`t2GqBgkOq{JHog5=hfe&69~3Dcv2{aA~3CttW!$zp`{{j^tYfKv}s$*XdwH9)QR< zRXMX%R6_S9Q)rq55nbhhta#SXv>}}UUAW0cg5rQlj8^bq;3=<%d`CGGj(%TR)gVaT zLGGCsApGr+zE%cATu^7%KG?Xt7^_Z=Q1@C^F|1M)UegBk*9Zz-N?5%5W_?4Z6X{vM zQerHU+)P4UPNR%8hNnI9@$)Fz;#)aNkj<^R9wtuORJxNKtN(IR|e%r&ufM{$pAK+)86 z6AMB6@4pl|RT^iB^00a+6-C7Wm2Qwtx*kVkkKr5$6@he!(^9WHwOVB)RDK&0Z`EId z!G~@XRW=u)nUak*QKGW4O!F}E(bWptHBM$w%;Cy*Ua54%1_lZ6d6?$)zhOb-TOWN3 zZgp;|1Jf+x&#tq#edsB+towLs@x#rl%!UYQJp{@Rg-$0N(#>!jFth7|rc@G0Bnkb@ z-&|Zwds#^+7|D~7DEC_10Y}Y6h+PZov|omms^)`$%dttnXr6f=hcP?KP4M5?j)rof z;kT^(?B0*})1$;$&-pdX;naa|9$yKHb0KA%3MvvN9d}!gk(+hkf?V{fFLi_3jYUa% z*0)A=?#BqnAmjvlR0?E8bXs30Aqd06u==4Bzu=$i7J=8s*-V7vY(6MMsR6Z^#P2a8 z*Jky2tKp8A8YwRiuKyCIA)rW)F%QD@aO$*ja#<1m zOA&&Wy}!mTgcji)F^SXtm+KizBT z#zDYm!*JGwweUHh=mj%p-cVpVK12eQe9-_FW2MkF~1*nY$>telY^b!7e zRm6_pp+kY?RJkwLEL8WFw_l3DH%$R}-N?=1Cs>$9^z6LrBJ|Y4-!2i-ZNvXWh`q+% zS8X13IKRRC)QIPIYb74KxMT?`uQE$mar2mg8dkLoNFWXX9Sps|mz_Oi1RFYouZ2<| zFv#{GB80&mt#aO5|3)U3jm)rn|GTrS4%OKQ3joDTTx}1zz`6-scMX=aS2>_joE#iz zH}C@Dr5ypljqnVO-GM@*sh!C%SjI z%4W_5N$j`9?U^C0tP|h8aP)71f!`;~YB(5R<^1q;D^}5&2LDC}DSn8=jpk=nW5kfl zq}slVnjcJ&m($j^T4V7|wbvlCfPh~3@2q*G3Mcp*CLnhQ zKL&KU?1j=CiP>B}$u6eHgE`jY7pQ)r%LaHl?|aSVTiqZ$5YDFgh1?eq8ja*2I_6>Cc>2g`5 zL_%dI%JaM6?5(8`j8|aR??-0(yP*}$_O3b==yNQQKr zvlvLM%}bj_z-p8Z1G&NdOWE5MQ9dYgL(k>2nHE-Z<}rmla~=n>&a2lNWK@d1Zfi>e z@|T`yP+^oH;7SRx7vcB;vt*zh-yUj%yf>?g*U9$2;g!tC=q1=S;@`jJpAHB{KQ3^h zWtoW}^E*{hq~nGnOibsmVAqu$%$S72*sD0bG%LOeba?G+4w~LDevnu&NO4Bq`C)!N0-N;3ly6dndd`d6w;s%cRQ@XNYjSqagL|n zFgjGem%U`BTysY9wDPn1 z$E{Y@ZNH|=>IMSG5h0gGBt;20Z~yVD2HK;ote(url;8l8(&F6n!MYfBg7NKC)T#&u z5f7-IukMXFR_^#exwoOZZuyjAUmpxrCN`5Sa9Ql$ycM_l9cmdz5K8 z`^|W7?neiWJqoOwY5(G5RZ@=DNC_ysjIvi^8_9wb*b}=mk+JIov+(?KUkh$U^Do_O z4zQdDef=Xs#uS6+&zFw7=k`;=KJ^&xqU~EcgHuTGy!?Plmx7O*#wpi6G;t*x! zJ1n_9?v1gkSSJY~>gN>P^$sV)Jv68pyQ7EmWv!fe18(hy9LXrn6Pxcb82JtaWGKAU zi1GRiILQ1JL{+NRN6w|G9z)`$4g4o<&=S6qYAP zBv!eWx=b*t+$uY7&%-lc)dC#tprlEEXkj25elMDZ0OJkvgLHMHdCg*U1^5W0t zM(bB1quX*b%sO~IZTwZc72)h=Cd^QuGHMoOp4uqmvJTIBge_F)u8W`58j22rVho6c@R=4Jo=nvbV(gRB1u_^N@-GlkA7Rv+jA z#hk5WUwm?1rA^I(O*xi0>gt79MfOWaTGf!eP-xA7*rHJ*wC~{)N%aW#{UrT+!zK-o zpZe(N$Z!v1r%E@nY@@1ASzvt1n0UDoP|}7RQk+J*GCEK1-FtMujuf6v2W`3tO; zt)29@yLAPB^ghpVP+x@IlgJa&3if z&48?~M6*V&)mhO^>JoAg_$f^a1(>;AN=t^+3f3C|QQWsXX{j4Ui^>Ml`=(qbyWD<} zFRZ71*=z_@;<^yX#rifUgrP>kZTw9y8}qpVFv{0?;=VMSOJwy@e8HzO&9(PuRZy^F zUPu=fw_v4of}trHNn_H0!186vhQZy6v={(*32oh+-jC-BA#dzId&3|ZqNdl-S+oA< zD22DO9`CM<3GDNwoQOv%u10|0mA*)#oe^rJ?SiV7`jwIni)Xw7FY*L=@^hY7>U|pc zSW^UUUy2K^q?iCn9*1cS4HFm1QS3xStwL8M_*LyI@=z%BCaV-2qmV~7nSYhadHI8Y z{Rum=gb`0DS*ZU&^Mid@gPNO5x}SB%Q@>Keeo(F>ywuEBCzZy)@HP%RtZODiKs(-O z^DcbJp)}~O-^@b=ScJ_WPAWHZ!I@#Eqgp`f7p|j!DIlw;5fHbYj)W5F(HuomgYY)> z=*;d@%(ONE{HR6Xa`z_?awFUx85l|kx6Jy6Oquyx4Jy-I!A0b@6w#7lST@Lm{)AX< z!GmjS2w}W&^-ROoB(&W@{xor1Bw`H+wJtURcj>!jet}9iEEBWb(Rub+{$iuF&*rnq zM$(cj;F)C-Rlcz2*FX7Hx_2a58X~?R6mThEz)}r3&JkQY2?n^o^2n#Q2Onn`c6)y- zyGn|6m~zDPK>6W84k;}uHMCdjH{(K`>CIF!L)Fki|AsF+ldEU(T|KjuM$db~R5k7B z;2_oZaqCCD)#T5MUyb*7=r&`^wpQSMgW}cY;2I6-+g|MD?_}&Xa_0R{$<{-5&FBMd zCC-Al8ZXKt@>mIi>;8VtsLkpU4usTSF>rrZR`(;(q$PnOR!K{aFXUGoVfSI$RdcRU zlsI?bpP=!5Om0=ur|H>Rg_*_U>o5brxX$&k7|3|T0j?inh~?J)5k|w{@7CUh_e3A+ z;5cO^_sgMbypt*aE5lyZPL#k*r~I);-^AL|CLUwtVOR)7wF8j7G;2?ApT!I9tbbML z9eO-YyCgs8J$Mz7kGZ2KdjH7Ls5O{egXVZAV7pBe{oZL+b@lxWly_-glJQJYEY>h7 zvdUV-+of~_okBpPkuxbiP7HUYBhiDYjyXz|6=#EJd)cX`B5UqSj{Aj(MnCZUoR%z@ zVq=t9Gl2-i?_iQThN%Swbuzo$B1-2%St8=cfFU9)J(6pK?43~Mb!|wrt5G0H`HTA8 z%c$f66mdCgLVx#X$h=T%eqZKP-#=cuu@)S!X>P;CsqOd@QXFto01O#<%mdJ_n)MmJ zkcL_u<)VC*7XM+i5ed5!fmQVl9_RwX3?%jEQX9>uF!o(PLI+4+ZLTP0JF0W_Hw$?p zm+(MQqOZp_LVX;hi@0TlC$hjKk#sH0MiLhTr=Qg*@%c<@kipkT zWzN|fPS)qC9%@KuZ`VsUX7AW&M^UVV5j;3QINAw@yu*#2R;5^Wy7%j8!AcewieA%Z zQoG!~_TUFQ@vIlL@vtv<|F@^01ws)N7yV);9`FFUD|kg}<@IRODwWo(ZuU<;0=rrr zaqWbN=0P(-t)W@)4f5(r%aL#04??Lm3DB%Z8fyAA#cpZ zvwqKgsN?KvmlDFlmYVr6xBcmQ7_GXcu28`~6mBfq@By2Q)OcV0K8nc@>_&z%z-b-|oDKehg?DPOtztDL|C;o(AFU)zAR)R(2QfYJ5_On+x zWIW4df3#Mw>5*fYZlN<9L}Y7xNj@hj_6co4PHc=$$N&quJ%)doXoA~%d1NGb4 z8{*#0-NLmb;TqH06{#g$rY~xlw9)tHKJlg@--`Uv2XFxmo(zoTtrH2!&7aNSbPS1O z9zk#&jY?ub7PbDa&yK;IvK4BNgHGI3>uFFxUXiDcDdqMCI>hm?IxT1(kSfp1cr4J6 zC8W-8xf1-=fY_Km4XKogsx3_SD{1JrM!)I;pux_J^#W8mT^KVk6R^J#A`lfz%qbbRR z(x0MYnmuh!@MndSl=`_dSJo$n#m6EMwXREzYuxD`p+9+7kY4Z>?y!LHMJd{dETq@@PN;PnGFCL?mM#*IQ8%i zW2{g@Vy3uR^SkiHGkhSJgbCRjAiHJ=jgq91^bqn-cs)gN(EFjSPqjYfgIgsm@J-pJWqHsxjbN zlS9l2n!%k;4gLAY3~d6_Y`6@_@_aqng!z`1kcP^#SfL^pmj`{5$?9IGuR@Wg0f}gNF`q3t&#OWn zz_o^QR{rCj@Y`JgL0h-VTnp<0T!M{6LEj;i6jU#j-N!-F%_`jOsi-f-c+@>|q`m2L zmUXe5VNy`sWp6*G01@$SM0G08o>>v%t4<+V*8qUk*1p5=}~c=5PvU2$tC|0JA1rB(8waQM|VST|7M|^6t!wwj|J6 zE!&L(B0%v6SxO}n3#2SDquq!Pl*>pN96>+fBy&+}(80tJ^|?^tls7%_V7T<C$Y!_sjhqHO$>LkKGfX=20I8C?k}(iGBY3Ly-=f` z^Rgv;b>4x?kKiY{79Iy=L{TI-H7VE<9&E8*65?&G)qZ$Q7N&O~-5o+!Uf!oaF*>ox zAJvNt2`xug+}#8E0kbQq$a2=-9G%oZfYI~bS$jJd(;fg}pw$9Sz~+ey&BwaKMfn+T z@GmegF*+i|%Q@H{lNpbAuzT{DAIjhlW85nc8h46PXLQI#mTsDkyUe;^cE3}Y0^-WA zU5F{I4}d&wZV>4UY?5V3p0YMlI)g4c36D|diy$S%zx0-lfjLF#y#chOcG(RK zv`Kh_6mj=6+{ri^B_f<3dC@c+b1z}q_R#0rn-d}@ilW#hfFW^tzV*M68<)A)hGMH= z)>u%3PL`(4JS^MP@N^_FMt?vu7C__H?*m6)k8yy37&a^3B`++gXTO`rph;2w?B#Wa zxR;_SB~j>k{~{1bXYvd{eQ zx|!VorjKBoRy+#`%^EBBLT7v+#qm@)N#om%Hw+g5LXrv;9Sxv* zy}MA*C1wEV6|0NP4TBv5MPR>+bs?W%i{0lAgDoy#z=(ylS$h4u;_9DmR(unEM#u7y zI~XL@0gR6p7W%R)Y4@V>oM{OPy<>qP0IIoMWaFlw1_{2vlUlD~JdB<15y?~XPN$#1 zI51WJ8oIpBD1|?dxrxNEY6^G<4GSI)7Y2zC`Up}`z~cEi{%u={&~|Rx*^(U^56Ebv zD+V0&`-&=!L9wP-bp2zZcYq2}qr~5PJ>U%ScK6bCn1uD&ech;TyteEm==g2%PgF=- z`&8q#E_&LRx{!-;q@21n>yQJ-3B_YXOLk9H-tVfRahSJu-l2| zms+uYx4cVx03P+2z{e7(GT>cJ)co!iIMm8~-AZWb->xdIJMZ2L%b5ei} zmY&zmdfAFZ%7`6Q{Q90p`1+lZRFVR$E6FJr@)y4fD(vD;&e{0EYrA|ws@b!FX6b8$ zKVXyB6&_-{77$Ns5Oj)Zl@76A>)|rZ(=i-d)a&vQfU3UUCCQiRMr*u&NNN`iLhfFB zfTW%OoCEA?&KXiNGU@dRiuyg05AM-@$iMuW9QZ!{Y8OA~`m2^#_2^%2?>-46meJp^ zn=sOEZI*2xZO)pOx*&*DL{k_f2?(!uOyvajwdm!LuqWK%bQ|UdQ~R<*cs9C?stqeG zz-j#e#kJ`8SK?|&u5uUX1nh{LFTYkRK5;nE{P3WrS@J8+1GuRXOaN@`xH4!I{8R|} zDVMiwNHW%`4Ee;UPzCZ3z2z%EaE9UrQdy`Iw<)AGCl^a7KVu+78isjMGI`-y5{04w z1!f|RBZm-~F1`^Pb3bpJj4x`5B9Ys2AvExw%2J7Ga(1 zFTylU@p)mZNM+ec$j-hkP`Yj_5Q-@9`JtiO{qxtl3`>51bg>V6Cd}`h8PC}{aWOezOv6AmnAkMgMthEg(Wp4-6CQg-_-M1rfuDWSr4SQMqVP5#7eSS~EMoHBN$N~d@GAg^0k@w2``9JMauM!mfG?8$he$_5c zJhr1!l#n$1wAt;er2d2aTp;cQ1^$}ToafC_itxz{j(*i^ zeyaWZ=p^s_Oj=C`_bCv)6IACT9OG(A?BPYxXp8Zj()C;ASm|Z5ScDnwFMJJkXIj#= zOP)o{8b#a;qw5{7P4VgZHxPa63h*F2dv4N0@#0K%Fx6mut*)x*8H8fAnWGYm%nbjc zne_~1jYiOiRv)&*>c?mwup=0|3}`RMd(RT85qUAn2cv_r zHL0j+_6+vb7f?G$wH$`Gr_l7r@?!3&T$vx-v>N>U->nJ+A4mYw`_@mrj^()R ze`O7BWr<(T^MVYBFf&LUED}u530nVVX(@6&M0LBFRoK9|`Is!9OYq*lQ$Bt&WvrUn_{_l%=cT<}-W%Rl4j5&P6~iv*$9Pqz~J1wZy|%{fs(z)g_>@ZT%Br(d(_%&qPMuN>2`73C=Jg zN@uv)p)okY$rNb^s9W2xRu3R0;K9~3n!-t^rA27+@STi4roit6z;P~=^hun79~}%C zxUIfqYNNSCsp}uu2lBblrHfvd+l4)7R1k)HxP@4<_AX1H<~}{zqBqz$TV7{ zuLTEyWND?y&_r<&`(3-Zb?7XgQi+R^gw2j-KHEWtyuj_KhiR_Hp*~!KlSHpe>dS9 z%dS4#;3Aq(KFWk%{|IWM&enZ$7!qH}X*7s~d#YF_(=r)ko;%4Y}tYG!$b z{_>g0#!dx4=cCna<#)#;!04Tr=fjzL3d6W{Fm?om32mv=noww`lZC5TVL=GVCJt~Bi!#l!o_zM4F%Vr!zkGpeP0*XdUiNl%0R}xF5(ui7 z8PlV4qvyn>5oat*)HpNW(Quc)!np4JsV-Lpo)NJqQLRP3Q&{O2o_7at=j3LUc=TF} z1uJ3!>M8*Jk0#<`4r<+2eo-JmbxSBYEQ4NHK!3JWkK%@`U`fn60&QyZs6+^p=P!MC z6X{J=!oF_YbOyYX&%8e)3#F|sLFUmt@BD)&23CVdp^1ETVmee5Ol8J~`|uWU{C z2=XSNaEexS5#(1`8vJb2B1OKQ=)|$<|qE97H$UE(2nJG93tufgbqe@*<@e0q!@P@NkNC19k6}ujBt|oUsM? zps`M8Ij|vGEvN}aY0e;I6AR^8R9&ACJR~(`a_!ziLdL7cy$^%*exJ}_7=Nk`+xX*> zw%!(_LC6?=S@*`J`#ZA*?r@{ONb6GuWFLZuMg!z0+hY>7Palbh)@RaZGLBtnwHx*z zB$u)E$VFr=OH4p|V{x|*DZM{vIIcC#D_22DH%`+igM&Tfu)7@>O|3Q6 zMAx(}nKVGO25{>=Wojfj9o0I%qSKE!M{$qBmC}HuY0ZHZyX)HZ7}=rx@JWf1t_f?~ zIuL=s(A9PN#8v)aHU)T&@RIlbgLWl38t$h~3zF=5)u>u{(`1#cv&Or54BLi8QzZzX$W-KNMmsxO_O0c@tN$9RX%FBB9}hg$<#doon7}Sx*+s4gQJUd_+n>Z zBW1LN?g^R2h{Lj29dsnoW8a53m_}{}{CQypkP495xZM%e*T14snPJ$W`#A~rWHZf~ zwi9x+A7%$Zq{!qS>yGq2&Q5OtbGPs` z4SElRKK!fru#949eXI&hlGJCJx5F8S3yC_*IK&#=szKgXgXNEAj zWs7IKB=+i|)E4a%rV|Fe7DUV8$FyQ0S^&jb&rn|zYjkV99@6t7mbsZX)J6T0)F(L& z5^`ZTs2z%N;-QAF->KmgvG6wYx+-2;h(J}hBG>%4 zpF8z!icIp4H@O~HG{wf>VR#MjdCH}&pfVVAX4IW3EvI=wzJ3OZjikVGODG{ZInum( zz2Ih9qyp%^W8zTaF#f*1;()mM-!6TC(&E1Q>Q{NhhO* z_#gNF{f#rRqG9N9Z6?O29uZ?5^jJE=xq?R`8%jAIn%&h=|F_$XgwoSbNp7;q?ycT- z&Xe!{zO`WP>J~E;1okx5FjplAPKw^jFubB+<{yD&?W>5QN}lwyD`FH7bJUkBhD^mm z(hS0IIMW`M1XgYv;m6-JY!DKK2%;9eDaB9tBS zEgEmUfAn!TT!&gK`$!B!Teg^Fz^$@2PRtuh#)A1SPNv1UxzbZ(hZTG@vq8M2CRa10 z8fXkYDX-!W_;uzD719Ipb}Lx1kF1;2Sa`8uN>>aF76jK*rh7D2a^Lu-M7^oa7CG6h zv+_xM3Nk}av2=Ta$=S@{Ty_&j`UN-o6JmsdFHK1;pKRP8LmSsw$(MsbtT}got<*PxLdVPXF1N=YUS zEk^cInRRFcFF(ZsUvm}z@AZ0Xs4|rPRNZJzMx_5zk2%4%yoGy@{!z!?PZhTV1a!M; zHRD(1!uPagg(;13o52SIicY8T*Bl*g>}uLol49UFbS??9%waj&iZd7OmsyMgcFQ)> zN#}AW{or0bU{ckiWzSTD9n1pp8f%{?mqnCBb&wLz8-9oBM()KE*eRN1Edc1M%sy^e znk(f%1&y4sTXfZG{i(qx_1%*!jHe@l25=_ksf4e@a1!+(s=9wqd;bLi;4?h0^u__uq&#zYKxl@Cga zaSygwX4)w@mwKT0W#qJl4+%aF@fjzA50{ZPJ$=Z%Ee?8+ls6@L`8R%?dFyAVmsV*c zc3-y@OOFuYRCk>=toB4w?=Fa(&+q3{fp+);01Deg^B4_?nw66P znuH(_eZs}Q%&NFv-Ud%H&NNJ0)tA;p2iaBopv0**qF%TBqrwEp<~U7p>A!u~4`vp@ z4A-k#vLjdG7NsTrl3jy6bChHB?Q@;!DN#c^<9nb$rCdOyt`l|dtcN=r%9fn2AIz@( zCkhA`;&iUuEcSs${Dz6A$=mJ*j6Hv4D4Cu$6!-Yi0k&>$Lv##;4pc534s#(Ac;uFP zFI#TX)N9_?fD*h$ zrqk2$uTpX5GtMNj{j2>CupgudM&E-=EbLKdMNh-57}jb%BYKzAtB_PNme$<=sOLa7 zS$)W!V7jQ9AC6>adDzAQ4n>*pPT(7ldCdk)>EN2VeMHe}oxU|aW#k@dA-0XiCp1xq zN!PSoQ6*ZZAXXs$7NV=}>0;!)7wC7NQkLmA&!%OMfcE2-$MKw@30KB9Eo2tqrj@=>r@^BwnpY z{oq~mm~iBLaKXk+n!=+0ijzLB)0vUrwM0cn4NLOLZQXJ0n9cTY9Dv(-JdV>awk$aB z$2j!x;92oX&2H!PI1Y5<_RI|{)HD$H1aEd8&YwmG;a`r_vKA?y-OQ$TbOWM8OPWIT zW2dHjx>#1yp)Sv%R{6m40jJF4z3F)>Wg%b0m*8`w%S;_EsjgPLtjwlW)Y-<#LOPYs zH-@f0JM^t5+R5F!06%lO0Y8!Kmh678DFM!LtIFm>h<`0_9Fb*sM^11HvyONvA@zw} ziB0M5Mvup!`ah6s$d zOiFS}Z(O2X6)^9WdZL4b6S}8!N|IoQDDcO)Zx&8Q;Xbvl%0v;PVkEmdNO}?1 zRO>Nk|95Gr*YML*vkH3bRG!O>cVWzcjDJD!dxa_m+l`iQHT97d%T~gDeB@kK7`TS~ z6|JYcjd zLad~32s57vkQiXQ>R4}D2ik;T5!%H9W=$d1`oH?$ zx&E8xkK|UsKU21xiR}IRaFm*tLq#7MV6TMb_#Blp%IMOSw@it)f@I~r%9}%>n-ZJl zm4<{r_DJZuikoG(yWG~gumP!S^E^N5QAA(MH9$(}N*GNIt06Q4x=IZQE|7xOh0ixV zzByQW!B1!f$>aJI$%^twqvNYf^h!k;<~OTtdt3#Qk>NJ#jcY}bBl|kT(@W8}4o`m7s4=>C zsU(0jvr@R`q>|&PfXRl=Q;frBAxB+wCh(Xc82j@(Afy<=#1|$m%d+Oz`wHH5tQm&Z zs+OT~P?4#Nhsi*Rnc{T>luLA~QmZ z>~tQB|9$5id7@ZaGxb_GG_l<8zNSTUl16WG%6?y?TSQ>&S+yN(-{em+2G5*D{zt1A z9UL-0P@N-z=x8FuKLjB?$m)~Ncj)STLcQO10wDve8-iK45DB~ORV+V*5Z(8jU z(i;%%hj(~VCF!A5{@&eKi1PpW2f&P*bWT%*lWmiXh+UOu_G)8baoN_Z3I~GMIaN7c zy7#0gTTzncE$}dqurbz}th$CrA3;NC0Pmi1w8LupyU(r=MhwCg`jxVJiw}l)%^-t-dj=3U@dP>4{^0pB2bAO$>>jZZ&Gj|FstTGaM})H^Ns3 zyP7jswN(UDC{bAS&Y?-+lrHMxkv_3b!F>0H{!;{Kpk}?qT<5&CPf6t=r2#u__q99L^^+p3C%|hN3yYt3`cu$^K@(&M_0Sh=(&Q!nDaT%E| zz4@&aG9p-F2@T+M{-b=b(PiXK%Y&;;gv+Dti<(i0#6+xsy6gMzlQkgg26kpsDIeMH zp{xsR`4XJGHgrAybGRqVG#n%H73{HmBU`rBeu2iia)rHOWRuUQbIZUPEqahUoAY~F zAFzwG!1b>!QgB1pEwCzdmO6Z8dQQnu9V(pESNF}`A_;C$v?ba8O{Yi@zS=&Tk{0hF zo=@lYsLiax{-eLXLv&Are&{xooK{T-or96_VY}a(Beyb!*eNV>0$Wu?JbX0&QTOgc ztpgP3S+B^PhuiGv&1}Y|hRg{y1*?%#^16fUACac*^S5q=89$F`;8e2X9QhYQ&@J)9 zoyVXNxRG(6Exkr0#--m8_h0=y#O7(DtB8A21w-Qs=$2At8bzpDiBkQR^xh29=q4-9 z4=0Wp`0|#GK~viHuwYiEgX+*Efay@*u|zxXSvXpq$@$=>!=7xN(1-OaSH(q>F8cUB z+Kw0^RAGmH;ptq!5L*nI$TsqnkU3b&3!yre5KN9bjd}mNX!J;xzDc;BpT0Z#n`>E0 z!E^|P4(6&pDbb>WehX)geh!eqZI$C14sN#q)|T||0uUHzvssXDxJ)5iReO)pl=45w zO6x|=?(Q(k_L_kiVd@b7;mY(VR!pj)paF9XP)2$k4NxM51$tlZ-wD4&_NXnFG{oLR zLV_dK6u;pG*3EnX)Q2v;r3{d0PVDs?ng2@7_Sgmd_M`&PQ8ivO!mBDV_HD+5Zq=C4 z+G?{+;}A+tKitw>fcsSBzM<13YEcyyL3CohMR-8h(JDI2h9Cenkf0c%tCqy1Hw&9H z3ElzY!@C1|pPUOega_L3?9rRQ^7akNV1+?%HK#PP@&x{&f{mi1MV<9;*Adi9pW9QB+hrjVZt|Q${T6|*7N3x2P zujsKMD(VumOlRfhk>Sr3%@x!VU2n^sK?oHq(xpt5jb|{bC?x*=#>x$TO6)SI)PvBc zIs2?fTg4dyl_PxqyTfzEQU$xr!K0C3qYhJ|{*%CpfgFeW>r+a<$SG2f5mBi)- z(L(BE2v`>TNP)Hu0LD?l%Kh+EA3)ubI1)nRo*YlJ_0WO*`FQ!>aw5D5UW%(Vo4Aoc zt3i;+h_t@9%!F#pu}Qe0Ci8;Q3^ua+dI*RgLDnk6D2V;knWA_)S|HF_prxHRxk%T6 ziKn{=AHW0(XRa3`GeJ{WochjNIto&5U~~NpgSjYvx?R8b$y#*vdZO^o32P4_VMd%d zbKLqu`KN9H&_VNPb%j_bquQh-yni;vZJSGl#gCiR zSWft8u-n;gL641uJNzCRX>__(&>tWj7{E2+lUuRe%FV#xwsJtapd7Z7%tC?YLK>pN zy5Q~8DcYd@;g>?;OeoI=Z~~+pH3gT0&k9ws z`;foZ4Houn-@0TmhO$Br+rt!tOz|3Pc7w`^WIsMx-1hBOp}orhiX%3G}xVm_EEO z!Jm`caocB&#gdH+tE5CHuEt~ET~T6Q(J$06++r}B7Sk$eWY0WSy~ZA08FRGx3gvPd zrO9K{ZtfWevF3YlXiStzyL10$Pk~mFS*i1E)r2VTilr9Pg{i(lkQ68qm*|>#Y#&xH z#Y(B~lnb8$njBStn%nrr`Z-SH*rGfZz1%Mti;RFH$*l zuoT5E*P5H7^`Oy$rZYl2F?DF=B+3!#EJ=}nV+#WoMlH%kv}8HXgvNStz!n%E>Y`Sd z0nu!;RvVdg^pd@yn-$i;sl1L zyV|oRbh0mLn-!|xu7(R{mjsH81(Og6qof%|z8hMs5%u?!Us>7B+`;~}avj;44?3OE zWgsdwoYS-|BE`L`hxMn~A-Q*OL~t~I>TKStv%qtMU?#QF^PIyVOkvuaoS)FRJ#Kml zu<=YbnHj6RT!|N6FK;;ltkpp2IjI(I!Ofy;b#=0b)iV4;2()|RtC$z7s4)=e)Y5a~ zGFLU(#_P|E5p;IH)yF<8um;X85p;jkfHZeU$B!*mdREfK2r0cvnET;@*z;$^hb7P7anHDi!@fc zsWp?whLjRfkx5ud8l7eQS+MY?@S8mmB%IQmVBhB)5cGmVMp;pmFW|r2Z!OtnTv^8Q zAQUlGINaYi53Il|EGFXu(VKI&bPBqjxA(ftrHTh9u@V}~xH8ramEfvALlRx@JvKVU zUw_Pv(d7g|<;DVYE?YIIeP(}Iq<=`!^vW_jK>cTm85C>*^(J%@j~+cHLPq8wpIDxG z+XjIYrh&ToN~5{{Mx+K5ALM`-A}&l}qp#D{%KjN5dolj_VjM{Pe~@Akpu^{C5+WJc zg=?CHBP|_)KfDxOLvRX06%QvAMq4KqzsC1OF#WXn1V^yT)$4HzK79Pf60j8&NL1A- z8jifybwnEv4V%n5Y16Htlky-BY_LH*s^Q+us7&u({R^}6+6uoFK-QE3YeA|@%Ew-2 zf`E{DT~$AAq@DcO8-W(BKfU0i6zBQ~5|yZ{MEm44;q9S9C?Rkg=#sK(ah+8~n?Imd z#gs4D_Eu1253qVj{_Q~zKB+HH0TleGNcr;aKYMk}vYzZ^b?_h;5u^sd`56E#rmDuY z&J(pBYqE#5{heh1>9ep(0MC=0-z6*81VNc)V1Po;O?PaK?U}w0sM1{u9C%6j9S~4_Rx>o&K0r93-0|RD4xzsqwycQ%px%OumcS z;Mkz8gJBY_B|t{|JrKJG!cD+5RGbY!H?F(CV4x+{@=gT+HSzARSW*ei2L;k8c??e) zdETVHZrhcT!XTKFvGd;sO{=L2l;z&02Y9#@k6xBrY~**b(fF5VF%(=)E|bu3@;!`8lz zh-7fwjn}9m1H6+#YO(g!@+QC=@ZUt3&Or9>ga&XD4}t$1Y0lcd-s zbYrjg0U7v4Sf$n{{k_3k;D1O89N2So2_!E&+d#u^qO=xtrKx5 z4p1N~^~tX6y5IdThEy7(?CqXabnpkhASNfy%7g_hH7NkPyfL|HCgWjw8lQ>4iW`4c z<=ga@2PZgsikogJsFJnA4?{G1>Fv4m@ z(ZSQO0u0^SSd2pMq|287*$6iQ;kyDB%`wRrMyMbbM|NIbDdtovu#?KN- zu##SFu}d*rUrV_3`X?=KRT?XJcEF>AB+xXp0bo;PQ=3W9h75O}8Lg^V@6^_ewZzeQ z@PoBHm1iKBO^F$2}StL)9^&VA9-KO+e{@ z?WE^FAGYZ6OnV&Tu+M~!QETg(3R}S(Y)-w_1!E#%D*{b%X|{~ymbZW+`=`2fOc3wX z$FV6h5_G~-)OWn(P*`zQ^Ul_GSezn20o9^eqWt{@q)n0`t&hfY@?zzM=VSz=A{%O` z*j{iyso*>*q>7o5MF%WgX!1ZClnF=k^QimF9N3TEDZ$X{sHy9f^9)SFW>;S8{~MvE z{_+^fY)9A5ALj~Z4k@rsV`^v{kzeHZ1*eon>-(69A!vsX;E@MlD##n83EK}lW6MmU z=&O@bJDS-QAHSMQS)#HtSiNi!pw7SxOPC;;Gs#bELVP6=4V_p*oe0F#as$W>U&nUj z-;D*hlk6F_h6?Mo+?YR0_~`#L;*@4QCT?auE=b2y4_F(%*Le|R>>NjNA>#`{b7{Sm z=1-@#h&Qwwhu+k}RC-M4s{VE1taMaL)$l#veEvYdp(w88V{tz)`XK7nsVdA{yo}#H zMIewQJZmsAfp4W|CLmUtHy^3#N(7GA(CqVnZQtQ&pH3PwPJHltW_~6zFCr5rsI%a5 zZKwoAHmS73s#$@B@7b1?`gc!zj2|9eht|qX(F_~-@k=fWIyTC9pJ&n%iHaV$Z6vbI z$G6;-ymiaTyai#r!b)mT&4~U2HM6U24d#~8R%(~<-na&uq;B)~2^?MNZjjyl|=AkGICy#d&n> zrPDi&tjw3feD+Ku*WvD$7X>aipF!J#n7sE9;Vh$RO-$0<>H+WPt%0J9816xLx5{7N z#X`4oHivj<u4hgyZ}S)y zor_sOd!t>D9R5-lrXcAE6WxPxm{O{emuYI*v&m$l)xD)j6OWf9H95w%23BluDo!S@ zZF>V~Y~Q#7Sy#GEacoW@IX?In@s#`t3K_^lXjO@Nv^0g1jx{Bh^z|19|3?IDIpiX& zukng%PR>Y2arkpnmqKwy3N68N>;UbC=EfRZOTMWgPf`uvxPqBO2gg&IoA4FS z-$hc*yEZX81IdX$$^P~de|vkZP%)45*&Wr2OkGzDts6>oo3wxq2>K^;>}j~8ls@=0 zv5%vF1&Ur?(YLjwbg50E$P8+5SJD1u#?=C~QuoL4v%Z}Jb}}$pZRi*6lY8b(5$?A3 zc1lyUh!l&Ma$788k)~$kYJg^}eu&n?2|-f8Nu@FkYo|@Ct`TkVJW7;KFk5Olgs*os z1xV?u^i38zV|uxb95EnL$YyXwsprSY9g!HNX-$^2&^X1JPJq~rEq}N=1v{J%HjdjS zmz-Ot;hQE>i_onRj?i%$EL_t3zLsB6=w_*F9oUGEMOPIQ4+CU;eM6`kutA#ffNrID z!7w-6vEU-!^tbEaHqsdzQOS%3XNE#@*j@+;*6kLZS9RqSfMK;(4U*Kw>*Bm4>A-Ww zIWmL|U9k2Ds5!z~9lPrVfYl09mg)be!OZHz^{$AjLKo+w!W78o%b*aAF_2xGQ`s=wtNUQbXYJEgH6?s2~JM>j%UvfwMA(YgN z8vfGw7o|?SwTj9PjmCki|AvVi@<*`VF}9+d+^vk+A!%G`E#p>T5p@&BH_nmBqp_hM zBB@jySR%tsy!u@XI+C=uk*RU&7$t%9R5ICBOYHKuZ~qS-rDr(IJrk-^if45bCJ69Q zqF>bCJCQTJlnTYO7Zcy%62T6&&35D~|1bR(qIS{3)I>Rzoaz#TA_&9M=62s;!c!jo z*LPPPI}oO+n@D$n7$au+L;2MfmNz8v9bqa`dBm@X1t^ef2T%m)QwzLHuVJMlznoLw zv|qq5q7Qy;H&Fu5DJHOe@mK+}>suW}8V8)9d6tu_a6%fXpIX=(ZB2fq`?c{%Gs~3t zeQ1b#n!|Znf8dCgeUgQfaYMWmp?Fs3+T%}0qZ*@m*Aw2Y5Ai(v3!o`geMvYvkFSNL z&M4J_t4CoSmvgR^C$P5FNu=?MyCRBs>3&2c!nrlFnmfEUvDaRy^fW(uMGh(Y9j~OqU30cf0bU1~)`n^~H&W|I0< zVTJ9qA+}g9c|8$h0DLRev#Hlb8xrIp?o{g>F5$blKM^_!cZCVa|GfH_3}D(B+LPXV zy%3WOfN2EyhJ8dm)SIp6e6d9V)5Xn#2`g1uMQ{|Y6~FWm z-*R%RhFE}UO}Mf3UA5Ligs@wgT-<{$gBK!k0cTxgk19&P8 z{dWTZ=wu88`04R$sJkg134q|miP4F#I-#pCexH;j^R)y?jzmPp@uC1~9G*Li<+IEb z84QVI0Ah~#PP=|OKlq0a<+XaEC53p|)?Ct+N%lHvX=J%&rtj9&exmlM8K7{zsQoE!>M2B5Z>O`5 zDR6oGV98o~S^^K1nGXSI(1#_B&C{1b$=w|Wa6??t+p*HkU!g-AG04r0!2A!PLq{^9 zfKZ=Ov5IO^$by6=;;DOuLku1oUk`j_;$#wQPNCR7$owAX+sTlNJiJ~@Y^=(QLaaBn z#zRqoz|p;jlz3voGfo{%JzYz;C=OgM_~nUBDBu9&C8e6ty>13<8z)4J6h>P^Kkas< zqrrBgWs2WIZl#BmT4ed2mt(EgEvA6QA|~M_2a{ciEld|}h^_WhHYg@*1yeGf>-?-@ z3J`6r0z>CKG*45pi48_ScE5ien| z=BtJ9(e*@#tU%h;fQjlD;&$vyYyxW|g`_`*2n7NZ-FA)HHq0vPTph=SR)+>D2xaw6 z25S==5{JAcQrycFk&jkl6$r=WY*HnKU>i8qQdE6jP63}WoQNjp=pua{6fpvDed{k$ z_{uZONtc>Ot&B6$$O-2Mu6k_bREpa$7}9a*Sx}Pg<_+@#Da95U(>EN(6XF?46Q)e9 zt9fSNtA2(Ro!Amiu*CSmX+|t7ne{l>rL~hJ7wuvAuW9?FY1R?f36_Ibo6rI|m2b{- zj>EeAFVO52h*;@3G12|y}u{fu5O)2hH5fCGl| z069MMQ(4?FuaJ~2>C^=JWv|4+XT(4OdFJ_wQ=OL&5!0W-pOcAiGf@F$g4=sm%-qnp zdf^5=`&V8bBh3{YbD__LST7l>hDb1s>}94R2dGZ8=?eW6!?$V@@Af^n?8g!)e$uob zYYF-S!pKq3)hd;P=g)a~sF#p2H-NEG#uUHy3a}vFtT!F=X56*M)nfcayy(l)$}gA1 z|IfF@>P*$#l5f10G685WaS#vPyRwE5Ig36-yu$UvagXeUh&EHo<3&Kdf~qSM(HvUk5yMb-c2Z|KeT#nBZV=3n*U@!6RJsyas~>`rvE(Wz3kzn>pT@)R z@9kmhrzU8+cutT|(H~e-UfZGdHBnn70MA1p(9)!^^UBles2?+<~&&qR4feJ%-uM}^St>F}wj0;6i^Pd^C7$4uup z)-darA3a_yz0&FK6)J?>W4m&!HaQ~qjH*6yI0M7jB|%8Csb2&2EWXO}izygEK3fVg zol!&$#7aYy$QJTyC1S3etM4*l)FEte4C`(_!X|4ylj%AfRzO=sUx(@Xqq#Mb$)0an z4^KBws<-%XOwU2y?|=~^uS#iydA>_uLJ2Y7nnj;ez!|-W=ggU8aYQ0(f847{)3q?M z6&u;kcqsL}U+s^HR>(Ln{i`&=*FzmivQ2_Qrn2QYi$YqijDWmR8Vvy$@iEq5yd{d( zn7zc^6tI~I?FJDoo!1duM%&I3AOV1y;?v9UYTiDUCy*{7jfj-ht685J0NDk&!DH}n zyT)5n5jeT?dx)j@F#KzdYW}V?#9)&G(kb2=Nh zA4FUo-{pz|K>T6OGz+@h?)D{I?m{$&Ns^&2b}zF5ms%i9;2>uV7^CfRP*7%qG#{Ht z1>SzJ z+)??Uto-qm12!MIN;?cWL-jMd3J?uJ+vfZlr5BjseZrU?E&101(g(u6W0zh6l8IJa zuG7&fm6A+jJtWQ?bor(%*?PW#8W^nx*&ij4Su`d|ebmiHrg@rXvys6(&|4 z7#0a2gd}|r=^M`$k#$%iC7l8sW+>VqdLr?rwpBfXQrN9zqNa&-$9shU(eh!6U7tO~ zDEkgKB3zG28QGZR&wqbdMlvk=_W_}W}iu{|>ROahevn=;Vvi8?X*sof`w|}-X ztYT1-m(sR#rHyZt88qUF9A`V&B38&{fM$~0wXrCv3Ajk_2K5{Z=H=&5$mnX~ng5U_ zd5BQ29&G)Pn`$+?%M53U-?{)hCp~6Bw&iJrmq$0trn<6*6QI}d)XnzjP-!AebIBNK zZmfG@0{(QMyR1gYV6;5I>Cs2=tZ~HuS@utgW*kh2S2%9+aE<;`-T9DGUBW1KoeYxa zySTDcq~R^O2~Npww9vjUd(;v~*4hg@+yZ}=`tiKEp z-H>4LS)|M8yU`q3L1LPu3zrysWp^4En33xd=&wJOSL6fK;q-ymUST-dzq|dUS|*`e zIxMAFL26f&ksi8y@*j=fZ8}8GpQpYck5;YnMXSCdw*&70OuvQdK30$1+mIn2dIw=f zm`>1j-7UfbXm>jIxXS8ZyW?`!Dj24fwQI#QIP+K=b-JRt= z&oJdB-6c@H!ogMdx!d{gSVswp@vHr8D;+|=Rl4Vf6arPVi5NCZ@em!pL4)~hwgAFGJ z6p=2v%J}KfsSM3pPl-|wk4){Au85K$3H?5zqte!&0Kv5%K)JPXVdiNzN3-{yBQY7m z%pjf-g7z8se&M%xZe@KZc<1jA)-Qst(9cbRg`Cb8*2hX-4_}~UsR)wq%rH7}0+20j zalze+Tf2WVOBc2u)6fj26e?N8jo+TbR3`cIM*^`dJ|LBI8fKZ<9iogTe)3H98|IAg z4@)PslKCCz_o^dXW8X5XD*-%Fi>>vjj^E3X7)LIz(Lu8|wh6Zls1)WJ-$Y!B8|iUL zTtQPXkwUt!hDn-%YX&@4H=r)fB*@A~mubElllbHe7ZIeya3twhHAapY$;I`B3%7?; zVhQwUr`g>pazWZOz9h$KMnD55rT2CwhdFX#XfFeBITjMr5aPps8rt8JSO8K$C%X0_ zsk@ZZRJ7V*jBncMPq90v-KHPe?%t}SdpX_D?f)L@<;?`->-v)u+%Go|@t_*j=*T#4 znP|dGO8{JUcWie{=Rs|sG+&HsaQ-TSy=ZfpAPn8P$#^aB1S#G+T8Z(!pgx5a9oLeg zJlDZBTQ(^r52T?kBnq_if|s#)l}9kqJHAHU3hKoBJ=v0)yjSr!I3Z(@@Xe~yzD3V> zhBA%o#h+P2nHD*ghC>GOXcw!KQwlP%i8em26lHGlzVJX!x|L`HzW+5z=D0{q0abIw7N7XHr8yHD;^z*!`Q}pt&?ctj? zU~Y-&g-hzR9B~z&p<|JPL>f)*%b%2&%}Q9)ws#*QDp}Iff0Y4xszF^L&EQc&K~ys; zgA`C}^#a*yuP(EWI5(BqNDbQw@ZiVD!uqC98a^*aY->BIXnI}3OV#!tNyE9y!|AUy z4I`@zK13<(R1goE0;`2So0klFWiF}gbXE8fumbhESjSUM$SqW;FTBd!3 zUPc(`e}RZS(f_Zx4d3jxZ0h{+BQ1X~JW{%POKMj5JYaj_BsEv9E5XVkH$(M~Gi>E? z`3!nUAy7G{1mqPf?NY3grR~h6WJ_NM8&iqr-t%9tQicq zj>vO5R=q0$G(|`0eB>;pM^%cTrlk)rQ&{%U9>J zR&L%}0OZnE(|Z>TCek8~X6Vz5+w5rA>6Q|YsECC7I6`6w&IK=e`|kwETJRV|<0Ikc zOvi{md%E4=07EwS-K@VR>f6V1vDFg&5k9M%ZGV)fU&Zbf!LFs}9Xe>qoW5W|HDXkj zrD99)N$!ykr-0bHJv?mY`vV&lO&eVF}S&e?pfb%d$ zB5+!cK~OHrFjI||A6$@YieF_r7*O9eeM*H>pLM>X^7tnalbEh<0D2AvGjd@*`Bgvy4d)*=KXLQ~)~aP;0uyPAdoH{c5Vi1kf~nBh7bG z#K1e0?flXi5NALxJEjQ1{l-gsHZ%MVs2xG zlu~1+DJ7u(8#2k=4A&k^uEbKg=bLNJ5|Z~9{%JiViGR}CgMK5<)GP|114L4wB$zF5co#2_j?Htq6z!q)iJHa!V5vkheA`b^&s@ zi|a_-=p2I0CdhlR%teBZlB~77V5CrJ$e21^=)WVA6D3y}CB?z< zCmRFF=D^n9(p1oS8#orY_*M#pq76qy|H=I)lR=S-TlG`I=&TU47Tf^j5cx5?yLghm zH$Drxmc@kCMVVXY=_#}#i7Az3a3JzrK0VQ}P_F%IeJ$t&HVsheIt3_@TWVQ*ZVQbp ze9a-gp*>GE)QHTVAj);s@?StTKfc+23JRdgcx)TV*16B%_o4s`h0@ea*J!91g>yr~ zk=UPS1!+wUuqNp0ewE$E^v_$A*%OtC>vtY7MJ#=akK3CzDhQ;xTHrg=JV%~-eS+`S zup$%?qk5?9GP>N^`TQgH_?%RtS6Vi%9!@kHFBE4e5p+*y#AY5JntQ+RAZh#3BXxYB zUL(_ag|=W7oarh!YRq33W316zt9k-(NQA9u>VWFiWF9?%kN;YS#+)k!+b_a1vi9=@ zl{(F{?gu%ogG_V})6JGKsV<%HsSE&H*R;Rj(1AEvJe-0a=9lIdqn)7T3;0tDZ$vAm zkr-EE#?M2E4`wY+U{jD^v-%dMG-L%vnkTFbE7&`f5^MXx!TfFc=iE?GFQhP8(O+N{u&x=;QmS*hjoIDItuSa^>ae$`r}K7uOD4b(AjZ3s>5oB^R1R@ z0XV~cB6_E488#q6@l_LQ@cOaG>?u%-Pz>U=VAZChE<4u=$fqN>(Q$nQrw@jv!gYk} zasqo_vTy~mw4+R5406HZ6}n34;rWix7I8D)zjk%LT(5}9_>AE~X3t?fcX_(M=%tzu z1Ni=+&QjDUO)+JFUysE1V%;}pMelo&i}4fGBD2vm6c3>+So6R1tT+O(;|Q$2GaxxC zXlEh0>9EDfV4G}m(|}U~ne%oC{1IWSJ&uU5gz_pXvlZ7=(F9_*si? z_{ZVWbhO?mQ}U0-5FwT9X3BLg=O*^p0DylT0yPlS3yLv*Q$h|&T|dUqlZ06nqjIX8 z$%(PXd%&byT5l_^dDO12^a0%QWSGqevLIJD_SGZEMi1DXX!Qlii4wKR1JD9pXp5Wb zwl){2xAUf}}B~ zfbki!lfZAjUl^0!2N!=F>S!5g=5b^jDS)|Ax^=jj;g^)DV}53OIsg|Tw=+7{V>$;x zR5xNi2#GvzM+);tJJL9f;0cH}NP)f{ZchpJ&bp{E%jm-2(XT16DO=t%`G%xCmw|!m zL2s@3HBB{B_!Eahi}e_qBv*syVjAGQt&JP&?^3msZyf5jJJNrnL@lHV6_y?x=MTNy zuo)tjsxZo@o2fRo!QMr%VHk8)yVenJmDKRk0@>~}1+#K=t9xW3$hE`HCLiPCZ+Lma zeKX-$$kdnDOm;QyuWlk8Z>|5t2l_PL%6RL=BRMhftBG{&VlN`93}yniTkar?51oQ%4cobb^;%JRa&OU^6gL)AFDQQj**~s)%i<3bIoiZ)Qgy(_ zL>iNS&Wfzt{pWI|t_&y)O36*h?_$JsWM_p z5=8YF31DcdB4)Durhx@nr)}LEkU;Tqtw62C)B>|(XoAAd74pZ2{$5qNadmgwEs;yG zegfNU7jYO1M)uawt_?p9b6gNvoNQdtHvH6i07 z!0_^aF{%&W3yNArrQY6J}bR#U(y10KdQ0 zYgG+*uL{8B1ov3#q8H-x{;%|p7>;}vlm|OAPW1@Z0a;eYkdT*+hIwE5miu?q0)jyE zUxWBB1(f@hdbX^HMcf(N0ytO*LEilOOGF$%v%OznB4=K~ISL`ZO5L1pWHp@pbWvMA~>)RSZj8|G;K%~q6=IOR3 zV+X{YH&zbk4pPm&!aFr(GV2=LcA|H5HB=^(;Z!9|V88EReq}v8i9nflCR%A=c7Z!L zg?#eP?@rsMqoY|>qs{;USsQ-NqB+%}W7|z3v<$o??=WQ-f6tg)A6+_pjlzF@-k-eJ zmOu(aitk-Efhqhp=Vr2z4RnPfi3NcjQJ|8cN!lVs(=R?TBy2Q7ek9vPbt^mfQmO8m zF&T12z%IjgwwEKi7)VZWasm+ZFRv(PR9AkDN}gnMG7~HmmCY?pgt7XgP9E3yqT^NY;~C=AoR4#+tANkgFcwG1znG_;NTF zG~GI5=Zr)MOV`4d#VxjLVSd^_f{P_yxp)VM^iqovHq-U@w+?uu0a?QH3)!e2QoW8d2HU0&J6n16rie3IkE& zT5K?Nt%>tlG((n7ly(U23wAp4!o36Mr@5_VORU0=&Up#XW6}FzJITQ|qI; z5p_Zu%rbTQ1Klv-I*PA08hmIRUb;mksWXh1q0V^&BQ;uSmvhQMbiN^diyqMjTvWP@ z+3Y7x8@1zh-H^!`?af~H$tV`rRftAcbBI;reV-R6)Glh2lrv4UG*P61>n_27N=?|G zugjF@<*g>7dM0*p0BBsafSXwS{GThW@8S)y#U-Ff0*mnEl5NiAOneP&j`v)YsFK~5Ng zNwPu^$Y4Bb{AqxqsIv4u1>J|$W+*iVXo~j_8VW!rXo0-pj#;rYH|V$eo*mVV&BYB-{mi|;9OJB%&sevO`#-wlz1)hQ`96TV&$55n zY*%W@oChcXf?aXho(3&cOt1IryAGBYp{xB-geW&;xALH2qNrr+V#;v4zm8R;7LqdV ze!Sb^Y+rj~-+RNoG8P@`=dBm-*@O2tN{OFX^U#&B77L-Mf^i^Ki?eN?t!Kazo_5R0 zX{Mpreh5NA>`5DQ%Rt|?xFpl3u|s_aVGW)O*G9cX;@sBFLee4H{m~~;qL>&w%f1@q z5b2wZdLwj!K3D-ok<@`A)22RyPSw&)f|a_0yKE+1w)0gggFRAMywXHJ08_|P8!riB zyJiypd9l`i^>6<$ouP6{x9@$^;A!ZmEa->ey9nsjydW4Vg*J=LZ((7FU3PFjdF?a@ zW}rv&9%W>5hPbzG*gS zujj)do2wYUXu8(oHxIM)55PEBVsnM`7wcwC?ar)h%z=^Z;7>q&p$n86A>Q-rct-qj ztNE_=x?>l->(7@d7Fo0#PUoZ;QG#fmUmlwl(lBx`|2?Q2`M|f}1KTHRzegAa5h{`Y z;;v^$x*WLmLZxcJ2kd_yCsP@o_tFEK1tfW;?H90J{zaxMYI<2>5!Kli2FqIDSZC~^ zfXE1~d<+(Tb0$t@3JM1!-qqg9NC0+^8}u)wM-mJGc0X{g3?s{?lg&Kl1h1H=+>&p z1z{E?Ap1TU%*|!~@nhBrB&Cp*WqyWq>s+%DByRtqQe_QxHR@eYG@Z=#tta`yRp9<` z1BSQor|kr7sNT-9xb+An`PW>nuTO8D`+54<- zn?e5?DGq{6YLZHU4(papHyjjMp&ZRN=`FjyPSSgy)(pdv>1W5M^&-n>Kzvh(?;fKd zEwwd-jOJ3ifa$v%I2C9Dg1B>m z=w>Sk?XBi^QyfS9%C0J(&$??$T8>R;y%=9$`r`p$Pb|4Z^Q67tL&s9QC1$tcdffnX z7I2{R`#ZcIvW2g442LN$$H7RM8OMtwcX+xA4l2PMvYq|mJ(SSGBL_Z|IXWG*Q2owi zoDRdfs#ieXU7vE$V=S``KEb8mdQM^kmlMr0yBD!*a!fZj1s#so;+S5bH|zcCoNMC8 z8`V{V?Nk8~5*c`-cJ(LT;a~dWD$|m>@3_MmX~COUjLUHXj$w?UDLNN1DulnU4Nls| zb9@GkEN0Iyg?syc8AXwsgp4rNl9ptk{ancQ5o7O>TadzIk3S^g*6d#WiWmz(iWs|+ zY&$-(X+j1}8mCWR468dhAoe?(<1ve@{N@kxQwX0GY3Bb4Ysc3bni;C{d7`(Of&`3aNWV`bi zoix`-1~@<5!~t^CnH)8JiaR*KSC^N8InsAJs=0ffZs=bGP05T(2QFuZlc5syCK6v? z4tSCgPE(=_!u2aQc86NkSuq`vzD9?hE6OjkLF1u;<0kv-l_Ln4h?ncgV(^u?dnu5< zxP!upE*CR})#oMcRxuPcddG**q{mk|ln=K4WifS2u@r>cE5slRTG0n6VJ=Pdb#aLl zZ=P|LfXjf@xR?GnHrC^|Y58tXSdj`yi1{Y)Iw!mEue)od{w~IctK->tbtL`^`*vx% z>7Jy{32d0Ct+8o$NW#>||N1=oeV~{DTP|2ZbVE!go{$gHPpx`;yJjXLdYDu~zA_(f zHptk!no{_WMiGv6_6rX;CV7yqaE1ExOIDtwedAQ17wt#P$UfGfh^srgA}gnUuf#ir zZxhq0@H6Tyb7H#)Jwr(9ZlPP4j8vl4-TlDxo!MwE)Gg zXWSc8rl`>=+3;I;xEq*t1|P*{mwITI0!RpLNmrE$A4ha-j@`{F^V=RtR9;s+k&~DO zfB(Amq6_(9X>}h>1&RA2)IjfpczYI*;Bjfz7lQO)_!1*G8gO zqK&Z)HSy7Nj~2&74#BYzZ1nPDcT=$b!4*CvW08&a4WokIFM<2-sUTaJeaJY8|;YgV3$?8z5QBA$RnvXb*1oNB|6J zGOa+=z8=w{p{|y4cCKq8r!Dr8e>NruK1^U#sDPe{{UKPl=Ca&%Ok;E&i{x!f46yGy zFr`f?RZRP=pC@kItx|PG^4`QtP%5`_(=mmloe6Rwy$+$b-+9@qNS7W@MyCk1o4wi3 z!qmrRwQh;E^_K-HgTq@UFxwq*WDY2e>c#yVGnf`(Bnm2`^rnE|&6`|v0Y#4-Y^P{K zOdgA&F09i!ol`bTR@8H7!v-DctmKXxqYNf_G7Np;w6*0$g zOUExnk;_n*W{WxOKp9|xVO2rtThaEmskmwTun%}2+!%X7_aelaY6I1^GjW~&BJf|5%0+G}do+!F{DLVBG<&SV zf{ZJ{1?K_Kw7J@@@I32W6zPM^qkI7HlP)+74=vled^19(t9Ut$!@n-!{iJ#3>P3Hb zyUoksa{3*dn)kJ?m{tO9_9X?KUjlBA{S_c1&8XhQ=PbV*7!`^2gnIA}yLaHa0W{_O zq#Xn&&)0@eDy9-nIai%|oFuEiB44OvR}b|BoV{dGNCsl(rH$VfPREJo zdHfkPiM{zTh360?#wNUZsb!r$l2tWaDil!SKv(x8){YGSnSF#a)&duIgHmdPqA{T+1DQ3oDkR32~>MBn4r zOdEHMcZl5@D71J`PvCCNhQFNBQPh78e&;~Byrwh;+_VN8|TMAEVG zm4O^Km+iae$x@u>_Y7FvI3*FMa1i;xK$pqh6F!Ja#653@${{C2*>~9ju2NSm*D|V6 zoST=>j)l}~fu8F%0BC0)(2SR;UJ9eut9Htj7Rx{0V;#$+^5S%A%+%4_l)o?`22HKb zd1Wlz8@;g@4h)Upw|pk=9Wb#ulFL&ItDW-8qwofA)ml?4Fidh$T^=5T8(pNLp`*&r z2GAirq-Ur5@LFk+=I?nO!I}+6usu!n-1*H#Toet)q?YvfxUDw8s9158iNxS|m}MAh z?uBWapfFP1~Qnp>(~LCJG_D}Km+Va8+R=x_TyjP<}8_27^MgSUo!^U3{RV@^5OuGiM%Ds@kvU;M&4w57@&U@u>2V~KoZ|NbcWok$J?F1C zNe0@Nh`hciC6QC!9^Uu?7GS^Vo_%{04xjB>&|A3V;?L4P>(Qv{os|_F?EY%ZP^1SpAH;tesP&?r zNYva&??|U6Dsman{cIXQyeYKblTxM~>Mjcn?#}}EtS0Ub54w2ZGcN!e&owW`eiCuX zX)_Hvn2?L$_Y`qM+y_C&$co!%6KsP(_InicxI3*800mtmsBEcK8w$>VwW~2W`x`I` zH~+yf)`?U}qESxjiCV+~3?g1I6Uol%<}ur_Ki{P3>~Z?t{)JSCsGHC#@jO)#`L--> z1ssVOGs=HAM@Z^yz;@Oe#Ft; z@o~*#j(VVFdGdk=OxY8uwTW$NP~yEtpkyuZW4z&d!fsFj+x;`Zt<+B8>n{`QX!9oa zYEj>9)^0vi!%{{^65nzdqhZDyv(5zj>f|#l+;`hf1)S!r(4T z$8*oj7nDX>@EtFm)f1Se;_XHc8nx!|iSYRvrW+o}|>LM1jx2#=5^V z&Olqq_2u&N6b0>iAfg=TpzW_h`|{h`SrA^C_O60bXxyYv=-L%vO>nm3-SwQ37J5Ub34roVHx2!BY1A=}Ei}njZgbqKYfX#F~~O|KJ(qPcKK^H60#x!~l(I%!4E>^HDJ z;LEF0Wd8+MpHr7u8G|v96rSS}$#=ovW)qEmtWy&q&a16wxN+m0!-)L1X_u)K{Rj68 z*24C)Uyq*X&uuO=E zcTKJk&s#>}&Q5njyWXf_msd*1d0;S~Yc9f3gO*}IMw=8dz+%6ps`xmv7>>2F_dPS7 zsb2EAn9;omp%_TE6wL!N>)~R)Qms%WLZMn-2f;FE*A#g6pVOb`h!&$29KX$~7HD6Y z8gCe79_p6Va?3W8(2D~B8>tQjw3EWxM0jMvZSNx67+P|IY~|lJxjX3L{pRDjy1mwkS9VdyH^ItwsZ4?6Ie65!?Onsj< z8=H0I(V#fYM2JZD0=%a;OvNH|aoS{$7xFV^v>d@Adj0R2QMQ(qIIHUiAf`_V(d2 zn*io4Sb~p(YYI0ndV&-$C53kKhf(wC{Q$w#nf84yaOTFefRH`j5B|3sHTOZZx|Txg-R zKd|-F$dJ;yL`5oeSkX3CFAo>wYlujyo*!>pdoz*AFSVa1AJiDZaXaK5eX~FWmRNv% z4EGGK$Hf*Xhc)Tio%QsOpgiU>i@Q}sfRL2T?ps=F@azoarht5Ho%Qs$XH?zumAcAF zCz%a97pO8i#334%F+x_JirbV)8AGm1^i9)}6vU=cPa+08GdgH$-!S!vX;XKr5luS5 zbu;M}#fIA1D(Ivnp47ssl7*>#RjyW9<-a1iWEnrg4y*Ss3nbGs5v3gK``kFNFZ#_) z6%X?!=Tra8x4>q;!BxLnhHlq-ZQ>mJ`?xj0%uCas*{i}!X>ZAoHJsZ}q-^JPpCW?^ z=Tdvt+7@32qQ4>#in+M^#vg3WQB7*tZvwpb*E2p1(hB1$zRR=fYr2?5UF7aYt?PnQ z7MSgOJWV2U+cO^_(*pQ2w*mkm=H+Cc2yuYo7#pwL>Jg5)QphG`_eHi7F(&MEj`|i! zcNaLdzp^c6-zAiE!;NyiA_aD|ke}E)i+!%Vi`G8Ab`B@t1CFe+-cs7k8tdNs z%>I#kw5ilIX77%tZ|l<-=jiDYJsDR5vLrYIHu!{imZngagYJ|W+A8%Pn-M_&?x-nz z@mg!W)2)!qlcv(K+UU^h5TC8dHO2>ODDb?|_slc*pETcnFVg`~2C0OzQ8c|C zbXH7-%0={juV{q2xc5SG%&2v&8RJntpNk7_FR5(#11v?c-;A6iHDJU*D`_9P%%5Rb z@G6?t+V&pD^G~x=HAWrDja^#B2Eq^@TFn|OA$fZxU&Riz82NDHgtAItIQCmJ-J|}B z_ztkWFpT&{Tg4Y`@;#PoWy%dY*N7euJyj4Wi z1lS=+LJfFjgzB7Zer7K4C}%E;BJ_eY>xJ$ks+0@h@r^ywkX3wGd%3M@mb+O|V#Gx> zmHzcu^Ir*dpDpt(CIX*1I}q)64d6m0A&aVqEAJMSqe*Y<5DY^`Ig5q0c*o8b3g+b^c#x=mY^v}@@b-LAr|tN z>rJj;J6{}5!$}HkQy>vsxoo88u(z(>{F0eN&1*$&RE_ZUBOSuppJSBNmpn-hkKl;e zl;jm-WLD11b{nG%g_vqU@i6b6`@xeAEc`=&6ic!qC~RB!kY`(O*&DL0JIYY@ccx*U zXlvzT%O$v!7cs?M6QM{}w)LR3(Gzw4lvIXIpEwCBh2q)*$SFA$oV#h~ITOBghgoa& zF~QlPP>EVnU8H4Yqc=m-)l1 zGDQZ=kON)i5FgogEsUs)T=V;N0pe7dTaC;JP~GK&Q)7bK<~$UW$FglYBz9k0@WzgR zY1byIG_pLOg`>ZYa@Tk-;%hkzX|u|dEqHTQ4!JPMd>+c#a0yQ?g``O7R+cOKa7OL_ zNnSxilV^mKa25?hI;Z;5`g{gJy%?PvX8fmh-a0dyN-pHHb9JzMDxiUN1$#&O5qGno z@YHu-Y3Pp;T)mTk(E_x~e}&#k=GN%gasK0T4B}uY5{2m9#14Bpw5-aJV zy$rNhe=~iN45i3B=h2;0vBu%)T#j~)i{RIoe}&iGK3#L2<0z}JY4+u*$QEZ5z;Y&L zuq+FU5W!$~|(9LB>$6a`j*( z{=D)*JaWWWH~kW&;n`2c8rX2JIxRm`@XkJtmxnor*YaC2jQOQ z-}R-jhxsY>TlY&zAB^HHXVQ8XvAbaI5>x-1ahdsKX)3~x+5-=S1gotF3b=b0*|qnK zP%GcnAD)7}6Pr9t;c(6TWYDlQFokrt0|9*^XdVH(g!ETitl=;}%PABaZvVO8!`5i}EFqwJz%!nBSx~l5d`JV*G|gwq^?-#bXus8B zB@#$VhYFO@H-=8*G-isK-rkYEG1JLW`eGW4)vD2C?4*E=xnx;*^pp&!zK%g0*JEPI zBp~dZ9X^+@dqQ?FOFtP=SXWf+J($kXMYwdOtVVZ9ha*e=W03&i5SJObz#0{_$g5-H zedO2|jLGe6_lc?e75#hYbA;}0ru7+gb=f|}VgyI6$S`2-Kag=yGNW1&Rj|czBRBVM zqhXF#DCnHcA=6LOB75mXkiE-Fsk0)bf|*t8n;fEP6j5U|DbsvI`-Ev%TPQ^~5V0}I z0+Fr5cp+2*Aucu_=%z@c3B0uy?C}MB8-I%b=i+8iI9tWIIcu0Ln*a12Gn{qk(v`SN ziBj;xx;{SMV}pwP-%26Cs{>`JN|iv=8LbLLuuq=@QHNijX0fV4_2!v6Y~#1jWfdSC zu!F*YA?9QW4T95{hythIwJWp0XqZ?n>-vJ6pu}qD!WqnC>2;H5Ip>h;#(DJvf+T(h zm6_fUXW31~*QqNk#|bzABnkD{p*ETw(OIA7c+8UMX~}^AD~RwT0PN1swPx)#UYnOF5Nj=mGJ(}nh z#T66u{Mi7rLUXhuM(W$z=bh1>|7S*a9HJ8!ck$g;#Xh=UDCCKx!uyMR?Fgd#&0^z;cec*LG*MJlY~W;9+01-#?=SqGt5r3L9B%J7 z?Y9@}qRX2)I(3#S@aT06it`^5-9f%(VZmL=s?$6qJ0fvqSoc7M(wz4xr;y*Gz(M9B zxv4lA9stk`bw~h=x1L^WII^~Q=)mejl-(R9>cFh$6nspEly5Kaq!WM@jiLQ z#@|f0sE-@Y(O|YZL;~8&ddNYN@1TT?$`(VKcmYDH9dvzKj zvii&vg*=gzsO@NJ4Ua{b=IE+zWiGY9MT)fIYGfUfMtwej}Q~9!u^raxX{rdLE zwRM{d#qq<;2`{K!;<2$a)GdAGDB&=8y1#Gh7Daq+hH&*F5HVgggoXY^x-zN1*DDT; z(`9H>IaQiX4xBzJ8?JwZ$=fZ_9(kIzve9`{JkFV}fx2FrK6*f=5Qnt9P>q7l(gMxJ zi_8R?5a^G&r;uc%Sq%EiCF;Gz5x?9nqC(@+;Nwvj23s4bfmEjr0m2#T$!aP-V}9f%M3j!FvS%S4QWeSILXz72>f z2mya^q=sZkOZXRP-3S3-l(}?jR|f&d;vZAsTqjrA!Ev}a$qYSAst|vZk)>DowvSJf$8&BdjADDySk*B=N7AD*L6kX@jYEVX zRtAFMO|!#}a>d7kE(Cz}QQ!(C_ihL$U1{H17(Dbbf|eGT-UY=aJ^P3t8`Nf-$>=;> z@|F9Ybqcf{jOk6--~=e0{RlE~dT9{W?J7CgxzV4pk&X%ejBX!hdD%SaYECXOEp`>Z ze>ONU4O0Etz5D}!{#d_Jy-Ss zxvhsF<~!Ov^73ZMa3pMCsspP?a3>Do=@}ieC*HCJr#7^Vz@afWfNNL*r#XfB&$2Mh zV@|2qBEs7Vo&z}7XJ|N`ggmb;cZ8%@OdEXZzU^NXFKigoHy3$nTUd zpjbt1O|SWg8)7>bt*y#jCFGg^Nd4s2&mg)0xsR_l@8!wkMs?uU>uMrGHjH=|A92GB z;aaZyWlP#MY}ezCQV@fGBN%#%tcXWlxUCN2Adzjq1BEu{fX*%66~cGUhUB!T6=vbG zhuuqmd$j8hKBB>PIJYo%pZX=}Yu21HmjPI5A1m<19)|X=(gx$yHKJ?A*_P z%_JL)hGU&#vJ=%}TZRcXJC%AwFd@s2TOG&?AQ2@CksDV1Opmv?WnbWUlPa!}Jmx4; z3GYeT$P8g2hllssf&%~E8S8PZ(I7=lHyD7k%fl2 zGO-_rVhBdnxEQOz+6mnoreA2LOMhDF`6XCnlatWI7m3{!OucFE2lI`iZv^Km-1NB}Q%a}j zbpt2_(YrBtqPgalq#=t{F|S~Cr_%t$p=)hE^?hEtSvjNATng?zpIa{W z-$c~>%8VkGbLwuHvOYzPS=8SDNEk*G9R2~2N`=VUz4}4J**3%HByWlet0PSv2I_mG z%@he%EdY*>U>U!z+{AwjLqNX$E5gNfFOt9SefN?`xm=9$Zas-v#R(4@3uHjk$}s*R zh)V=QGogJwi>2QB>TxAE3JeVBZ}l1t=c!WHO08z0X$UpBa>T_V$#kospE}Ra$vO%nM2-VpJ!2akDB}b zc2jytVJj8tXzK5%tL(sp243M3SK9JqB>vo9l?+e#5_K$^rBgpwACwOYtl7aae;bZY zC5>AG5{cfdVAgTo&CbQJxZiOW0bA{0I!S`5ZD&ryWLqrG^$VnX@{*XZMvGQiS&eb7 z%zzh?ein8)0K_=u)=HYai)=#@2p7dV3#VIw2uek%+VeDHY40PDrQ6t4es3D|1iT(1 z-qsI=-XE$cEe6!;FY>9-R{`%0V(`ZI%#tO4n&ktH&3j|zZm|q0AAayQcJ05HgB&FR zdR^48Eq%=4LHUUy(FVE1$%SW%Rvn*}qocnY?;0Ks!msZQ*3}X?yrN^|%-mH=6t;K{`*(5ec zb!_9+il-s}V(&H#3X44(hSwfQPCfnWZg>MNWqe=A>jc$o~h`ER! zzEZ@YMtE71xYH*315}l}9v?_DX@uvVpfmP~mn-EXqUZH8jZc-qV4>v-ZI#ew5XvJ~ zQW7ENva&n3U}LfO+lFQ_sBaZHrvlDu1p~?)J`J9;Xs8X9r&q8n?R=@n=$OE7#M*fz z+^nkROf&{iRqW%KcO_BLwa}BZPzV)|*W=tyo|h+UH+3V)0XQPF=WC~8a4Lq9wnnrp z4(~4Bn|*AlwLy7&s-q)n{Z*C7($S z2lT$V)Ug6_%y?kA@r4;ClI|?m1bRhl7~lv{sG`HQ#((*w?IkQ`m_lVF+pWzIxm_Ew zxgzh#spZsMW$=C`!dvGOBjh_VjujW}A-~2Kclp@pMUMvWbVa>bke9y6je9=y{AE}= zvgHbv*GHB6CA+qEV-XZjgBtPGubde=GOY_85us~`{Pc#1|oHWneCRr)^UuIE+qCs#^S1CaU zEjgV`+k2o;)@uMcVCB3-5;B9KKT-c~qn7I;meUpd7J~Ke{u2CcjU&H|TPnTKK93m* zEOZ*(mo=Fv=A5fC$ylJ}=0#zMbdBC^mVUx`zY@P+>O|iv>eP~=@@RjB_WhT`g8{D% z8ksU?<^+Ap~ENxmztaFajN)1sC>7z-}-7S|90w79_$afxC$Fq*3gye8AD540y%+{DGBAeK4&ty)$&teS;$zXl45Xfcru#pPW(`&SM&67CIX-`{Z;g#7>!C2l`&PeXjjTlhAMhRjv=tob9J`tS+<3#`&3c+G!#4sw{AsQSD;wX8c*{UjF5?vJdPbBeWo}xs_+$x2 zugsi)6&f~wo@}U8!O<}@AFtOt&q?T7`&aL?A_q0-l_x?w$1Z0a6@SU-?MHWEt$Q0M zm@z^;EX?}NM6KIr-Dj|~=lDiSDrYZ#dqglweCX*3!`Q@g$l%e`nZ#~y^nVJJzh^pM zQj{+venFsjW1y8S9(cw&ya5Ug8wP{Hi)=k{`AsVCs)>1Lq;On8z47uN>1bQvpDra_ zp=B26SK367?<1w%!;!j9o@A?2fh9@SVMFhE34DAyl1v{hJ-Qg^-7LpiA<@$kpJ ze5Cb;)Z`XigOd*)hbtNLlg>UQ`ppQ3u7DWJeHcb5<7BOfRplp=>o3Yhw;ybGq{T98 zJC=#}-Fb;FZlQn)5cDB`IBomxu2wh90{3vNmh4`U!-%K*nW+G-$}i2k>tcf2a)f<# zq*xc12W6M}&>nJO#CQn($vq=BNdEa5`KV*3f-WMU-Tf!`=|;A1HzBsraP|FsKy>(3 zQ!xZ#fY9yc8wS1l)AjFOtv{KetWsP`pm4BVZdAj;xQD*K*{j81iR|0&VcNq8Nm%}% z=QTd;MG~FlEWxj`TA$JWq~e)gokiK|J)^*12VREMRTro zQ;NplDl|Rr1?0yW-Nal#B||FnKms#4d(u}TtugZ)X8L;L8-|{0qF}xpfz>V3KkMj& zR$s2`xEDGpFI)({GxVz>2xFk)Xh=yuwsuOQR9%FvQgyJ(0iNS3L!?mIQ|1;MutHjJ z)Sp9Pz~nM^m7bc*_CZ;3e{{ibRc4-`VlglW=4&>H(Yf=yESJV5$JDd5au=X;4$S)_g50u7|Qc z0*o_gOPK_PVTl{te}RWkXNz@KTmC?DQ^W6N9v=8W_hpCv+@x z!w)jxDG~8@-Q1!=A0{NhZU56T#R(+vM~m|zMR=0$>hKR**ivET zajEk|#Z6#;PL2U9e+sec{(PPo4jTQJz@6e;Jo@!l!EhNslTl!xRP9qQA9A%Hmc(aXo;|{@TesWj$m4Q$HEu#WU*YwfZ@{{c#8ZZat zDSb)^MLgU68Nd8m3SizWo!HR$i$6Lw2 z!g@HHxK7GqV4@TIc3dAs=>m|WSy9}V;_bPVyho@j%Fgir`<6jH`9scMdKKdX`F>p+5 zriah~m9TIYe(OeKDvWF^1{@r^=2QCH?V{SN)(GFkyfRWSH3MAiv@OJuDrnlEkV$zD z2lT=TAhRwd;x!Xhi`K^)`LtUvU+mOzg6leqZI}khNXM=-&9yCv`NAnIlOulkH&e8dmpXtf*c2%Cyx4@I334_!_}v{!ynNC@E}?u zh9pj~Cw*8D+Z(wRW28Yf%Fa3V{m2kuwO6JOT~S%lT@~E|NTzAdOypr~s^Ce#Bk$&T zKaqzu3-uD7qVAJ`CbFP8LhL5jv63yy8$)i_iezM9Jnt&P*%!lU^OdxFlVJXtR!OEC z<9V$~n&8AO&CeAX!IBW8T>{+o+ZiNb4Uogee0Al1b!}3~1dCD1oQckEBzIEfePS<5 z(?{3a?`KB%X$6S749OX(9J0hdJ~IRP7>>Y3%WDIT5GNTUktQQ>k+I#C*ccS%tKJ!e zC)K1tfS6hLRW!mbFN}_XYB$mZg}~X}9xVclEG6haGAy1^tW1Fc;zj#2oPmsZRWPzd zJFdGTs54|08>-ouwd78*ujS0#??NxWlXB>Mn=6z|kCmx6EtTTzt~Uao{COKEpFHI| zAK`_edd>CzI&fJR1_n0kuSIYXVw^UzTsJ&-o2*EBhtf-3qD=}vZI%wK5zR8lG`!^G zyz>S2PR#pjNQSJu5vhu!KBp0UQlTZX;pH$Y>WcwW;*d(ADX#^mcj>7I9)wKMa2!6+?99X2 zz7*ZV6@PU3*pp}lW_zArcs<*;MFV+Kn3Kq^zWy>;|geU z(Sko0ZhnqI@|OyIfF_=a_9{qgUaM>>6MNPxC(qrih)4V0Em-FqEvf%qw~!w3Ec^oe z8qN=0&wcE``0T34?uQBLw5O)ZmE6F-Y`NKVJtKPW_DkB0{I|l8jq?@4o{ybHMsq+E+z3`+50Y?VqP5)oA^ku zyQ238u%3#feMS)8B#NPumhSRA1d`_%H782Nf9r~xvE21I8Sg-IDRXKc_pC90?wv(j zzv5>UKo=1e{oos5u!1p}ZxNlMe}wq)D)+MXoR zc2>S~etOSyzkV;q{c7CU7KT{6Lt9Q1wGrTv;H4lMAi~ayU;G=gV?wHBs2({rX40un z?^1ux=#LewCnL}xQr@{J?6!Q!e|m#T0HM|Q++rcC0oVzN>tF;K8tiKO4hqIm4wA!{4(i1MmD zWifiDjp=2vK7ScJdEWc1OH`IzYW@cokMk8Ue7Z#i>p9*~a5bBU=>)-$}< z4|gopM^B0*^22=`sU(|&xug8{lZxPlf&|n;;L@(z{Aa&R*m8(gQ->cb1-5d z-HIVs<&6J?w10XsN*l5WNx#-7ycMubiu6F12`e;~1tni)K(nsu5qnz3E@o3?=?ojX z5FMb$7t3CAo1!_^|$XC_3&?+D0z zH8vEapvuPf1W;@RDvp|YMODT$erRsv=X+=m#Lc;$V>|zi%i0`dOOgv};8rdI2*M%B zD7{cSs89V1`s}(Bm#PQG&h|iX$+9+95=&43gc{~Zkb-I`Rmi(_7zqxP2aTlXMnS28 zpe*+o=YNNx`8DC?FPMIB0815@f-06|yMIIg#_7%;{8H?7LDTjIPeKtl67K5*f)Ecp zN%30@(#8k}CCkgauej#RLZWmeeD%Ce*wTPwHf^pv=`9|+^dM)_`LXF_bBWm=0MCaS z^9|mKzDyz-O_t@dk&;tuOZLF|lG7gJiCi(5;6SoB1_t|3o}SOVUj+Q{e{pJR}iT>Axy8W)EYF30J|J zJp+o>`qpWxy@`PXG*M1J+K1x-<4pV37W*3F)g{!U@5D>Z2B@yXY}3Wh#rV4!r1s05 zz|ze79T2(AqpWQyt#S$Ed(r9Z)@=Vueb$wOgZxb|rLVL}FirGfX+j5ywtk<9JQ%M@ zrEn^1AzZW~-~bEOQ8FF{o6_7gH)p13`9bP#_(p?1iNs%5*fr+gG->bX;&7UF4C@$D zc82PdE7cRo^@YHy57Ahar}frN4Lx6`+b&W;VL2*J^r`+E|Ko|sBeS;$vWbFqnO7?m z*v0}zSK(I@TaRxW=zm6xs;%swbvDSZHC^u706A{xMCwf6wUq!(31J(Kdd(pgsklSQ z+O@W4yoFuNi^>nct83&;3V8FRRgZnV22>22z?6Ih4t#DwlfXa~&3~!HOi7Fq99N@J@?Y2D(9Ss(g4&m!qIzGH=yR6In znlkT5i<-JX-J@5Bikt@1`$9VZ)uIdrd~Ez3i~Fk|fTfFJbxyCnD%{lpguy?}Z5v>H zslO-%)?C*>_MRb;Ax{n#x#K5Hl@B;#QlL zq&yG}hsA`FI&})D15FKzB!KxKLcsCl_dYnd{;+Fn^ZT0BVmrNhaNGoDDP=zST= zH!43?LGu)9UM>#uvm(=PjUOF+`GmFI$Tis|JLg|lq1y4 zJElFh!qIMM7&Ar}Wm8D!ur4|9BRbfMk$T9JoR+*RjypU&2oArbtG`fV@0d4o8XhUJ zo8M^n4s-OHF6wa=(T|o$P%0!u&Vcj4*!yRG3)Ee@L1c>rr!=o;Nm4Y^t1IOji!AU8 znsHa$Do0c6&Iaytg*q;vr$$VcNCYi**K?x2+}88+Ro?QK{e@iGF!WSHTFxmK8fiC| z_lE1C4Wc?7HsG5vDD9eXt0vIm1-Nx>X_;n#V}tB7+y8%n1^bP@qARoMeGi7ol|ewFrVZ7hp`eZvqq2yGqAQ!7JUQkF6f~Xgmsdz1qzj z!O#`#L&5c`Mn6#db_G;yV>s(aF*(h-8~x+Bv+fQAlRd5boZy`jZEj2U``$5So`Y0g zkml~WY<**XxV+89Bl!pQVC`YmBjv1A*%0EMbR53FY_Xk66K-F?>d^qx z>y>T|C+rtVxm#9qRU$bVrBW4}vry8t)!l^ceXMicPwn`e7Km*@6(*{}2xZ4Z=W(8N zkj|qNkh39@?iPh)7OI(es^owhA3K(iI5tdTJBzrqD)CL%N*$yRGre5nsli4n%Z4X> z$~0Xb?k^Pu5*)XyKtR2(7if~X$us88xKnLp{-dFDDnOtRAN)lsvS>b(Ga2uIIEApp#VdODDR=TDcY+_ zORSFbQ52|X9A>9%D2L&R8#SrJTOZGIkAZiV6YUuDhNj?Bp@iF)55|*M!{mq*$X+mJ z9+r6$Ty1Z>pT*vAVo7*Vku>sW?qIapDK4UhLmdcEW^ffe(^Us>^s7D!SCbVJ4Thwm z$T!RLfz;5%I@YrmYa?xTO~20wDq!A~ZQsQwR>4|l6Nq(k(>`knLWpnxb#i85%CtyB z@|x#D=wP1OM)7Nayl(tkOpcI*LcZoh^bO3DxB8X7Y`tiJ{%~dp53Se zhx2!=yNiW?t2-ok_Q`~^2X|+c7tzAR{gKWJdA);ak#y$}K1>2K#8DODR*Z1RTczJq z77oFzYdW`hw}u2ZCm+F_R`}}E%E4X}Q2&KlALQu^D-kw?G1Atc^t@>9^St2yiqVvo zN8Q*wMX|?9YN8urAOtrPGBs-|^)D?}Ssxw#V6Vuv5OMj>)DqoqfD!+bkJ#QtHgK3X z04TqCqjATIlkHq!zz?$JwDzZ=++bj>7fB#==E7Y(dF64gfbc~tf!Gk;xf@M$z_$sZ z+@p~ft1NGXW{R;#a7Xa<)W+qG&~H_eXw^^N9=c0#S8=fCz9NtXrhHHm)|g8j+;7E*a;)TRy!_P`0f@X6*AzfJA$s)t7eM`D*LW3Mo=lIWN1ZJ;tGpa z7R>+LF0Bv^rg3B{u{Gw~MRmtr?@yZZW{<;s!al{FGiZ+c`BEzP)A8>en#{G7HU=PN zY453h6{PmX?KhP&30(GcjsDhNuk8g4{7%(aGcP#sW0BKXa`5@0*CO@HRs!Cbt>;+C zB}?hT#}-f*l*5_F8d7N1@YWd3iqf04I^4X;xRp8#Za zw}jpb%iQJJ*-Ot+wBo5)e+?e&WsJuuRMMJS7;X0W=isam`)YD=k&SZ5n`C-Ads3yZ zSbCAeN!|~U%KUDNY&?p#T*_^Wun}Iha0eYTvZhUfsdS&Y6X#o$WTj#t7&DHRcV9+T z0g^UQ`=orRkb+u6Vj{||`%f(?{*xZ)V=zN(Q!Sr^l&E|WPYva12IU>dqB`D$v{-pJ zsA%ebQoEQOEg9gLH;05*7M=25*Zt~cAyOQM>5hjd__E%6`H1~6hen1CuTKK zYrMO-6iB4Z>6cq8@Sm#Myv-4#gP^w@`kwG;%$2RxmxFf#pM1C ztUP2lEuIE}bq(z~K!se2S)8L{nogYt9W<8uvRAZ`sdD1TesEOEQ(IaSmN>?PRPog~ zFQnM#4x|Y0pL!S6AeJp`fa+c^ISR){>Dd4N@Ae*knr{v%|ErHn?j|fCyD-V?q%CKh zafQ{`^PDm+VYFXlCVxf?zHS(;_OksD;c3jU5%Kp-N_&d?=Oo@8&33GR>eBL!pwJ+p z&R?>pq<%WWpmmR@Bp*kSf(dYYDGNI$(83CMjMbDnPDMcXJkQXrBC1Vi+0uWA;*yyt zGPI@6W$@}3(~wMiew{tZVjU=_e;W-BTOf^Ge3_x z+He7|elxbwnY#wWI`MSBh^!Uqrka9&7P(V=t~}f;`<6>V!!0wNeb|<58V+nO0*5sV z)T!iYDqaiEw&rrcEbTQw)sj1Qz*TwwK*^QBI2u+#T_G-Gp9Tdv454)R8rfJ{IipWF z1LHa387igA4L}~yP(6>goV`_2jRatcsrulENrFw&y#fU-E`(Kw;t$X&)Nqh($hj$1 zHO9<`WIA>CB<@NGWzIm)5AxiIe`qt?gNb8wOOopJpV`6~SHg9i$! z|AdC6qJ&!1%h|D>xkY0%bTgsOVT@Da!qf-*{M)q=bU8qx%H;>~AX=F~ZSH+$9qO{Z zzy}Z355U}g6kVk4a)jqe0C8#^nM)5O&5=Kt5RzD+24Pn`hYu{z1(BfCnW423o zTFrj#D{|QfB?8#{P9=MxQ%cx8#wZn+x@tOgCbrgGV^Gsr(oWTe>V+^BbhtlbjRoN> zTUyyeJoG0Y47H-(UW*Qmok`tIxT!b|^6x1QH9+KZH!)L|^1+R>1QMXCPJ;f^q#-iP zjx)P>xxLTRgncD?J%O z*v@!!e4w^j${PTS=$ebU^cbPls*i>rXwiNsy0{HL%rE0f$L+dF08k-PD((!MI|rk$ z4Bohc5WrXvQ-SQQo_BE&uy1dwJ@B7S41|{W;n1J`uWlQN^u*>Oy)8SF`bT znK^Q=7!iP$F`VImM^a(k+9 zT{-0D#LmE!3@{~}ZK9#)(YxWF_o>Gqyo!+td?w+nGbol7fVs&tP$R*7$VUx?V0TP* zo+N^=+`KW&h(1ddiUNuN7aMNBWi!6t!v|x;s20*PQBSV#_TpO6IRgCSG&UCZv)ZnR zM>4{sC?&+YH6oSGH3@%HUXKW;Lk?qE%0gYWAer^^piE0_qI|hav5+Z!a+Mn)%eWsr z^a2n?l1vxw#0vMEqCI!{TgqlwDR0mnNdwVhSXlL)3r@g+)I04EnPEbDGpH7$pE2U$ zxE?Plq;QuB~DxmH#1PO-cD&=_Dl@rrtnDQz1R6K8~S zNGpu&8^?Zd8L7(@spa{!7k`+mrI7*D{8Wr6yN!hTt{Qtn0bfYQkH`ZH2hvXKs}c;m zIsv?x{-QTTvwnzXbVStmmEU?7W}dRT|8MSMn6P~DCye>SF{b<7ysmn~G-wmnSTJz{1`Ov#l6M*a#s6yDE^b zo~@j{IbMM2;&4MUeL!XPX+mLp=8CDGI(uXA=QQY`BGw)#+*@{d9FGazN9-Mc;2YM> zPaZ0qnGvL3sV%i0_(;xCX-=DqYHIUq3vJem;xG0wKG*m!{RwWU0jSe>sKOooL-BFu zA_77vo~>R}trSS-3+MDlCzdc{1^nRILHBy*nqi4(rE8!bUj%~sl!8^X#{Sfp_ndb+ z+}FL@3E;4{8F5`hl3Ns$T@g_hzqt`|y{FC>*iVx1pm}a|8JCy})ep83(|9$WR==jf zdG_y_w(EoVy=CC7f``BMTxUxVODy7@iHX2_gMtRF0Ra|e=9mCe)E~u6GZP??^j?Mz z%dE?Mt`YhliXQb@*I+!zW(~NP+I?08Go|lT>#$G^x_wx82yt;sNzDC4#)E+N&R9U) zwN0Ax_zTM3Z#K#>&1_C%bDgv9`T9>rZQj{;jj@K9OU{XH9x_}ki;H2=PIqEVBe!a} zCZ#G#)2a2pp`%!l_(SlGqgN;vNK;!Tg5j@0dOx+Og37#W zqjR~GLrbfHsY;G+jW^*Pk%B1zE@EjuG_hvo)6mXXNvvY1rm==63+;} zsbQ#KljWEq$8U?D9q`ct`Ra0MA;zIzms2# z_*4VMPgrMRT*(_Pzc7~Xx=7=y`MX)>G>qVEB7;8v*sKIUD)MbARLZ!*<;BN<(*Ju zkXCnDep{IgNE8eDAN-Wx9Sx)J9xJF_C^T6UI4Oq>Dl4DwxaO@iRKh#Xbl&J^H<;s2 zO4semfN(sCFq?CbLBR>httrUOt}u3q4C@Rd`_5#Id&4B4ZuZdwXgjly5-)HR!<$xK z^C128ivkSn)h~>Wp-g)J**k}ueN;N#JdjtGn&IrJI@=9SY(4Znvy_jscDb$;p=P3R zpdgH_`$T{Zh3ubf_R7@pnl?By9%&o;QwiE`C|1U*$ICMICA5lg)YbBbckK>3t!fhF zV@bgj2&Sa&X$Mj5ym2@7Ojh-e+)d?C0J+=r(`+~1p76vapYv{Xc1?N>4n3~Gj5+>3 zb#0!f#bNXtrwkRwYpqSXsz9Q^u>fEPCJ9$F(b#s+Qa8hoYnx&lkL{ZY(|t7;HyahG zUj_7bi{B?H4i$B1lHgDre8rro>%Al&NgPwyo?|W_yr_(6>-n;C3q9*8J<~X1+ZO-F zWiIpzRm;RI_^h=HcVjj*C{q7r=ODzr_LGzmhl{#RrUdP-harK$x<`Y*Ltbp^CE{Il zl%c=u==zClu5@jQTUaz}U(JXK53&zG02?Xy^0^2GlsR6xuT^YHf+`5=XtgVYr8#3w zlh3M6*nd0debCG?ip*%mKe$zTV2PU*s6_iePgL=e2SVDsh)-)U_#H6?=m37ts0Jg` zGuv5jDgsoFc5P{hvwv{&f>m7Vw0Zg|Hl*t&d$)UN(x=CyJZWxvW)bM;bp)4J8%?|$ zvkN%&6j6pI?6_DBv(kyDzuXOZ>W{lz|ggl>0W`Metca)iMO02E3j%1VaH1_i2-0YkmN+6&8HIi}1dtp@GQvrG|L zjV3pwhQTy741e%~`o(4!@tlHmAn+d4vu&=HSt!KZaqZvY)9Fum!E0`#v2czs((als z{yDm>2q6kQi~ck!id;V6eg*?o@k4vNfFm9bYs1QGH3C95qZ!@fD&B9W11W>T!HQ5H zUKr$E|K?S^K+Y>Y-yn8+nvdXtnw#&q*WYy~<9C^u4}7a;LE|#U^S0;nT^XCx$1Wl? z@rkpWzepsUn9v^W((7e-VT##oz%^3HJYptp{+EOeFtw2%;|!AZCod00ITzG#VRE+Z z?){Pj`ZadcY2~A4ptQ@j10Ji{!(A-)D%lSXi5QiwrkHn@bloSRG_$gJ97!7Cv8Rdj z<5fN*+6J~Uz2uaRB5^(R+GZ8|0MRBShqc2x#_tJ6&o;~?jCfi>d?)S4QK}^(zJ)%} z7!Lb;Np1zwtok;osG5T%?0(ivuABN(>AiMCLD)?_m+bvqdwWrJJob6S5;2SLA}yjo zR?96`C?1IXM8)a#RZe@8A&wjGYiz@aJQ91mRn%SJZ<{i;SwCD@pUZp?9SbA?)sh`^ z_ksAy!`-7JQ{3HOV3qEAuj7YHqHRc)+=WJ zuoS|VA%geH&i@8WRp{WSU2Tk;yH1N>q)LWmaYy@w!S%C4a&DpvGd)b0mwn6j@E$q8 zthiMZRVeX(og}b(fAo%@-t8Hnvlbs)$|7$l5JiUi%#l=%rZznM;2PvClw1UMmo%t) zGNF#crIL9IA@wgenB#1vi#&WCeO1vZ3(IeL0MC zg7O%zv3&aCV{<%3g_kRbLNgRWaT4A2amK+NY^c8dXLTW<)_#1U%4sRRCN_;9GGFy> zLoS9ek{fLJsK0DJRs+zU4YzQ-7<$CsZdO&ngQv}^D09FIq}Qyf4G1CAN2D`LSeZ7C z>DVg;I;V~=b4zP@t;A;HRR-*xlo9bvku)_;?Q!RB4y63elY^R_>m#wgbZ2kuL>?nffJc~l5my0$ z`<>PrwSV$zV+J8GOL}tbxT&)ml?(AEfvssgoG|i4}w_`jTP=IsC~!m zy-C%9MkOqofaj8BXy1>=LyhDF{C{c;*%uH3@*2JW+)DIhL9peMy$ll38y?aawqHc2 zXHx#a)daM;`QUO7!ub~l)Zdiz2hYb!yXIoj9D{*=*X#+e{&^;Gzi#`NcAar^U!%?Z zhg-x1%$Tf>o(c@QGNE_2)^62)C{epa*851+P###0{Om|G;A7G12Zi?+MSxrW8bb1* z2dsFZt7)YUXTWs4<(C{;s-Ck8yb7d5ID2#xN%)#vch>Z~mpI0(hh+E#zrJy zF7CWZV%Ey981nSe$6$?31Vn-VJ{rkYWgZ(P0ZGC=!i*-&7C5P|f=g+TJGd!(6>CB+ z!A-5=#J(x(=N;sFHYV@jaNhLBEJU*(Onf9y%gb*+2X&srQ5K)QHhM4OP0}k~+~hS4 z_e#xzeB2O(Rv=raZbzh_sP!YdM2Pb~_sagUz80Ez-86Dx!5GX9(>83h!h;JVWy`)j z;Hs+&WoXITuZifNJmm$aT?cGR9L=6Mq-}DJTVez?VmyHfJSkJWR9;@&`B8KnErxJ=1UFx?2jTg9G@@YeVxiofcOV!SHW_9k$iF`HjON4Hd%AqU-AvuUm^o%M} z*lSMua0LXi|INEt9+JU|IaR;guk{)~oH_9WXoC+@JM>05AiQkE=KM_gau?{|CBCq~1Sv~4KAeKl` zndKqa%zve&a0}k);eAseo#3UoxQx>bYmG67#nHpz9CJ+w>P^!_hN&te;3a6m}FZzySqV zXm^>=Hm!>ZMCe4s@D8>v{BgX|__QBWZ+yeRo0o#_A-F_Fh-E5(!J?>EYPPSvwaCW6 zjkp=`EPO{=V@cG!@O_D*n%pYV$d|#yo*&1-`9sq7h>R)jeDX0(Cy?CBh{`s6OF_%= zvdRq8uRjRfre+-jeIPtNuLSYZlV)y+>-EjpiJwoWJDMd3uIn{9R`2ZSKhnud#0=ib zZKfLw<>R7LR*sbo6|DOVQm5t|U7BewCz`vG*Qt?u_oduLuO!2R#8a!sTi3LkdBok+ za%Z=@KKgP2bFwEkGxV%n1{KPy&KU0h)*u4iM}s0`^v&^pJ4h};L?{+=iIxm|y3|lU zz6l(0_v`jy7J`1mK%3&wIP9_uM8pbL>)Uk0&LDQ%+@VYE)^oPh1Ea%$q|d$Bm!znq zc*!ZUV9&*VvLu|~yyAi=3UfTCUAp9j?D0!?$LoR^sIdF$1y31me2Am%LD$OY@$!W^>@P zv0(K$Mf`c_rXMZ*mNVQ*Kj2}|985NLUdfcKG+?b;HI6~@`Y9Y>tu%-}J=9W1kXbbX z>E(1Tc_$pY@?HdNTz;_+NAS{k^m}uc4Z9BY;m{8NUe+Uw zs`lflt=3)#^r>1!%Dzua!QgkhGGahQ@Ly~E%ZrRlX_J-oVFtMs9(8cvQOlFS;1R-z zBJ`~8rxd*L!~NRhxYM7}VpRb^B{R>|XxC*@pwdL_q9CXP_dds3Q%g?7U7H!{ zu$V0Xjph%<07$|xXL_oTf8$E^%I{e1sr@z`@&Q@49pSD}7BZOM08E^c->if}BjTJ) z(_JoBrg!265a>tbJx=xkm%um$c*)Frb0fa4EKygiRCyhK)Lt>gQk{Ky)f(ccYh9Yt zO50yVn3nfRUxF}{4Ju-$9*`609ag0$W_l@<-)8Q_4#VFZ4)A9TrxBX>KQqTu(42qv ziGN$V)iTtF&#K%i(#YIUogB$q(Y~;YI{O*8RL66Vipg0+_Fw~F%ahs*_Uu=BM^L5Q zH#+^iJx`YXggYz6z=ok6ud*qAtO?`lhq3z7=6i~X8t<$ZJfVLo@Ilbdz0}mqfa)zRl1#|v;-d88eu4B64!0lwHFRW14JXoYnjsJl&^%~K7U}ln-;4?G z$-yhZoZVu0rO2=VmdMzWJ4qq%dS|XmvWzelc6F+yx!dRhM=H#<{#XeM!~NOql&;9k z(3g4vZvQVfU~cCDcbMelFUh`~v~WNYda~s(iaZj^!g9l{k4XG@0T~`mGWo1~WrhWe z4%Lm}3v_R%Y7I1{NCuVec=i(HP69QQ(oQ)?5n%6yuq#?&tlLcZThnYXFNy#syYvOl zeSU@weJSq+eHQ5y)-BKFtz58hI5*MW0&6PBfSg{Me4@Ln3uvR~^Vn5@>Mz6=kF5Gm z{x2yRhDUdO+f7~Fv%}eB8Nu;!DNwY3mzxj0l2>@gv-ayqB zP)zyBzBi=P{@~}v--#xOaJ!}ST~(0& zl+XDET@G{A8L1%@oU#E`I9#YEo7CWV<{6`!+X11rkHlE9?NVf{5nD+3Hd%Q+{&^Ev z6Lo_A)}{nAh{>YWjY-<)L`vUMo0$v`DZh{2D|=E+tc}sd%abvg6!L0>*bYiOJ`k=l zo3w>JT?(N{*-~tMUw0Rb8OH+5+kNFW^2fmR5YbE|Ot>5E)M=q7kAnrlh+DN-tZ=sr z&FUG{WTasc%H+o>0@44*;@E zeWGP!?6Nq{6XpfmtKS4K##MC^PlHwsUU#y#Fr6?8jaNH4csN;4b1?LmYZ|%sxrjS-84hnNM)+EQrjk` zNh!s0X(K)1c|R+wh=d-tG&l(c+H6jdp1`}?%5WPKMs?M6Y7Fu#xs;$9I$q;$1|$c6 zstHlu4YKAGDmaesG&@a9s9AI=6#Jqpwhv2!Mt2K^BrIn#>L=YEnak-9wKvgYgWMp0 zy9;epHNE&mp`Lg@^7K;e@pt!EqdqGhEy3T$?)K}BNy6)6C9Ihf0}2#cD$0|!^9W%A zWYq66(r^x-=~Z~pG9b~*{G9Jjd}@cfSNkWT{=%eGQL>pKn={0#l4BL9Ls>9gD}L9D zejPIBKj-(L0Qe8()0HUkobNiMXQ67pgD*(xW?2>GRq@je)n?*?BNH%{Ai^UHX+Br~ zQL^OR5jXfz<~G36`d14BR^w_!?WP>J@>C{SJ@y*QU-o~zK)eH5vB$;CBQ6EZp;N2i z?2LXhEKf6ZXg$C2E@A}kVCk1TZt^P#Iq4^l4CMU9o%o&v8c!Dt709u;h?a*gWfk3=6QsG=(8}O3)}T3X>z^oLL19bU zsps zMMhTf;R zGX61jl$v{ICCBpug_nQB;eFGp5jz(w2kS{WYg#Q6Lc_q4YWJT>CpHBNz4kdp|zu7P%P!S(*~_?GiWnrQ_sIL zgf~oxshJ@tyCnR%rib|Dj!-lpVt4C8=9>V6o23u7JZzJU5#Fst%l=qkxuwkKRz&Dr zHNW>q`1iZ_YFk0wO$gu&1p#}qTiBA>*-CaT6wz^3q<;K!5n`3MykS`sRi-{>zB*%v zy?ol9x!`)A{yWu9QqZAB;t7pQ(!VUZq4p?v`XzhsA#58*9B=EpWIQgJK5{S zI=h|>G2(>@O}6h@EvOhjMNSZ}VLZmPo+dc&kSbD=j^#DsHO2b^^dNlET>Te(Vn!qvUAuS!hY0^;*;CXEVbsRtTXWek7E^iKTocaxheHw701)eRe%f-1H zO^$%>W>5Nr>Cp=*qeh?5kKx~D_~7hP%579NQj)fW!gy?Zi4}{9n_1?`0XciP=p^v< zX*E3hetP`7hbqAn2ivS!^_Oqh9;WwHOTC(?bq|*dfV$PKx|8zOf19gLH^0v|gV^O~ z@G2&XGbI;j3nFC8G$6W;m4EoLkanQJ#>{Z>>j>d@1d@~=GS4eb5QNKvjSt|*zU~ho zoh>UsNZL&Q;UsVa$osLj`HU?9J3z$0gf(=P>HcaD8PM3hV%_ z5GW*hb3i;jUSbv@`WiRUKK~^;xWx#`e(N%hxzM|b{82;A{qEdKRT_7IXUvd<-ndyT z?X6o)mEv7sYGb5g1X&~qrvE=T6G?kUg)AOV-qu(S`sGu+@(76=Hw(`LLbs%Vn)^=L zMeSgUe!ke7fh;`o>KN}+)|$EioG9Hfn3l0tiGn8ylfu1JtS1T#W4C1VJ8P;Y88s?l za>~e(r0rN7hhCXsJVZY@hCcxV^{ezi1A3kkoV)V;2C}idS={PY;z5R3D~?9U&29b7 zJ(e`l8?>;y=(X7Fj3G7&otT003Za!ri%+T8PN<}*`l0+sMLQRf&t~>2Ob06R$0EE& z{&ZNLjq?v)`eCLXlu^z2w z1WpT_fFYgFAlnLure^xx%7Ce-`mrFWA&O@2S=CsLGdvw5dg53A`7Fycu42Unr)VEm z2lr}!_88iV0Hxlr|7Kqw@!>wM;6Rov-}_Yewt;6bJPO@JE0b?9cQNL9#Ib?AM7@jP zi>m-7e{~}9Z;SEGcnjy`==&S_CBK2@1x2B{k3R}GYXwTdabL;1=OhlBobAJ{Qcu12 z#kn2Luiu|$(Gj<#H}#3{t%T_~iGM!{)R!$kzusDCVSCR{_D6q`s|_atzh_TKl#Wn7 zCH}r#n^c(9y7sWTQCt1-ZI~`@`od{kwBs<&H>1sZSJDj(un$$F$A)wetq@nClwGy6 zROMrE>jW}{56%z=1d}%XxjacuXcvg$gX%8X>~cqd4TW1Yzmccow|eGYrL_Y2_%BUF z8Y+~W1)<4Kx!9`0!*_1$T70T{5Do+Aej%2)taa3REM=$wWx=d3$Xb_4ir${kqhBW#_NvGXlnF&pXyv zXbkLm(9GjmnK2>(W~!g)U(~X>Cg_RrkFDs{Sz46`b8Y*)DqHb$)87CF9vChF_rM{xE*dKc;S7aA`1(QY!|*g!o9;pBva zp@t5~f3`TMZ%6*KVOoJHsG;vb`1uedAfa6${Xu#jjEGm6>`!c|zwkCKPw9R_`X2U; zAKhWR+(WEemrLHmNyMo~~4a5j5ejGSb3d!HEs9#5F?A7Tlu8v9+jkUfT<{ioewmENv+M8Gyh&9Sa8JoWe@P7+Q+oep2>*wJ{jn4gRT0KFs~OI5`%U@kio)*oJbB1c{u)`Y zXm~;5;y%kiJgY?L(7M}!{mkZhRTqbsQivqEXUUm@`Y$&J!eFpA%3(v0-skfvmG-__ z;6p4wJ^ZHIOLnIS6kHi+g*%LeojvT%)zPx#7v~VbR?1njs(BbK!G7pISJyjSNEy0X zMl}sw)JKD6cv`L$0eyxtnhL@Z#qW32ma81^oLeat{uBFhb{y^AYMfwrkOwIQN=?NT zD36>6!+p+ttElY95E6Yfq4$0?3zbt(zYyx_JG*sMl+hOJ-pid_9z}MrE5RUeVxK;m z$(!f+F+abkeI?Z1!>fLfN?@$@9Z53HvJS4NkoWI!|By8Po$r7aV5^^;0UNtbi{z_D zY0nMi8sn)XvLsk_2-wXS+2H#J(5N!s>xb#69TC(k*i3GZu6Cq4m-DJuZvpA%1oH zt%*(Kc8WV?YROMe-9#>SK3+Rf0$h+A5jpsV4t#A(d+fUZd8P_%xgGUz{-1#T8_C8u zv$GRK0a{F90RN0*DBjmT0>ZQeCi-+_96)oFRNVuM)rWv{e&2xDg7f^z5VMppa z64Rydk*N}7G6IL4kvI0>QMPNZgcgQMe>A7LiWlgl{K$n%Zk&VjFjew6j^Ljb#`evP zmaonQ(#KYE5Q@-n(OSy^7q5Rv^`p?G3J(dXj+J`AV1s5ugED@0HD9#=&oQ0u%729H zafGgPqfCF-%vkKSC3NDTC?xdSOkO zaPeXz-_!AE$Tli)YT`x=CkjxiiYLm}wcKMT04Z;bW{$aQ_^^7~`*f<91RaczsBP!1 z%Xoh84fU9&CmLKe@FrF%#?Fg>^J%M2YO@2ZkmEK?XTSk&HVw7a8%i&213;lC4#LrY z{F-WHvWC_D{m6Cv|7Hr}yItD5*8GwZm)t#whzu3W8A^?BBKOGwsTjhvVI>;j1Pe1OO$E&C!T``@uSi6X8TVkmU>PdKl})l6zw#`OL3-rUHnslRfY z>f21S`r#ffvqwni`6oKzgubIB?6AcmCs@20^$G-hxIwgw z#m5=G_Y#15V`7l%aLttYwjMYi{f0kbwumNtvxyYtwJ4mPbqr_S&?sxm(W13G%x0E% zn$9_YGpOU1;I+;Q(s7(KR>#kH?xMqIp1O-IiKa33qq7PG2b>aC_t?-9(%1JA+R4(1_;B5aG4yXWdiPU6#Hx=upHN=nw(5gN%&(bjLz3 zUMqRrUtwDhNT2|q$q1|oI8dNVvaBMn%+M&vPF~kH^HdSR&FP_NIZxbze#~wF{uOh4 zMkxO3##c^?n^sW3B*8}oe;wrkP=R?6jFuG?El_7=wZajWgK}HUMyN*Dc`_enSPV7Nm}xB_cL1A zBSc;G1c0` z>F+Xq7sUnv$S=^12`4 zfYqxd!^sScuI8o3iS5MX&E?AnS;IRjpS=DJRw~l;MH4a9BK*$}!S0bcc4#PwGO612 z4md@`JIZ8M^l-Oqx4UWXZ{RdhJI65Cl^vmG{jZ{v9%O24Hh&C$3QvH)aDJC42k1cR zc!ww%{)*9WYK-4z*vxuS`umaDs&KO!Fm?Z|=V6?})&>czSu@?3XD^f{#t>b*DKUlS*$bHO|a_m&7YWq6U460bef|ffHD7qR7kKsR2hTw z5lD1K#>E7ZpOop>s!W=mEDX>ReDR>*KDZL)_1x%n^vUgACZY=xv$^MLtSy22(ysb9 z_gtRmPb8ez?Z=qst_I$q3^Gk3-?{xwc)DhDo^0`SSKAYDvFG$@eJY=@r*m4_j}o;I z%3~n6QJ&By69Fcd8FME5PLZaH#c6}RL}JiqiN2x9ZmseT{2JX{sZEL;AyrT&xRRoe zuQ`&rv)#$9Os~{?)D1)P5`iI9?X{t?j0@efeRvlV)l;Fk|AI2FOp($;^udgR-odQ$ zywhwc4oqn|?6s@#z`C$4QrQ;^aS9?#$(-C zD$=s{#qKo4^kBkEd}=z|2M=~5z*Y!zU>$c#E1)!6kto!bh3rnp#Q}KBYuJ_C24bp1 z{DSF)jHfAhFqH^&S+1q}pMgtWHkL%ani~6_w^>U{|71$}dcxlE8^UHSOc>vpS@^pO zNSlb~&z5}D(PMWKkCb1tI32XKeCmnj-dLa;=aR5w8SHE#oRA1`b`uRvaaijV3|6fh zKDbMHwV@@`2~QL}2rsI4EJEc6sY)gX+vwPK-u!Zg|6eH})}SLXkD#$*+ETHASQV@! zQXV-E0d*j12cnK<FPZIJfV$l0#Ojon3l^?3a#4{uzPGj>oSh z52?#p-ZxW@TvOZ&F3iW*wFkJ!|6-$gAlJI!_|nym95OTt#oEGxd>!R<9JN)~ii_jy z%m}`lcKb5_`+LHJP=Rq+mkHZ}YS|%Xg_$ZCJ;Rjn4TAQossaE3mEx=EoF7JKI|1;`N1d9`aVk~cUO&?bW zyw;E)b{4|Rb0p@tN{uRG6|OmGgeZ~t&7Vq=YuZPR=ly=kERb%@;+}3qK`s=56w12* z0S8^MEv(F{5^V!-gkK1v9x-|I&|+11vP0T904z29ykg-ZHPsF{WN8Z@%;>GGl-TSL zD7ZYhdn>a)u{GP!CwMBMpmu&1QC{yrOZb7OWme*6bAP15YE2pwQ z3zn<6iNc1zV3lle&9+6La+30iF)D6GogA;=-ZAdipZz|j;2O#_Yed_HvDL3F=Dxw; z3kkt;#a);&fuhd31@;~y^<{Jv*G`5oO~bAFNheJhhdZmv$cXk%>#}75p&$IxRJPe< zw>onSO4t9vh&h{^kPge&`HR4`ga%C#a{xpR?X4JyLX?OWnjHViR@=dAe7 z+;RAx1+2UsVZ)8H%x}U;jeE`{)`xT&tGD!Rq)OSkHFvs3OO;j54Q_UWTgN?{m!{yTB4Tp(7R zL*dEy06^9)SZ2G_^5ci^-EaRC#EOg*S7W@7BA}mMm6cB!-{r4mgHZ21?Nk*%hWj-v zoEv{cB-*HTv%fp?B8Zx67Wcl2u7?Asbm?;}vX2cP@arZJJn_G>Jl>bJjlB8ZJ3UdY zcMgkZd<|>3QFpuQ2s9IV7G;&v;PRj4jhh&^n!Ju8N*bQS2FEdTU8p5f?znW2oL!z* zfr$;CD2;{VwN7G`9ag^dm2(;m?2Pv#p2>JtE+0Sa#W#~k!k4k5r_Q|RU|3Feg^K34 z$Vir)lj*+NH74t&`H zz5qL+PSL(A>7F*a`@)ERq`wMl^tQWXMDM3!IP<%s+?>I3)fyXnB_e_EN~PB6B&Des z$)`m-+KC*coD>A$iD79f9>-pSC`~%|mizEBz-*GlREbH+7)mUWA-KXiGFzWVg{?lQ z6xDMM2j{s?n~h~^^ao4?_(o(SC?obiFqsg024N~>MRutI_z+2QBo#zkNBPTeQZJVOiL;g?tX;DA{{wFfCvB#0j2Sa+nA zm-jL9o-2Nwr?LgtYvv#OcYQT`&NhTM=ivf3z^3wdv*MyOpnVLq(Y$thQ`7}=S_W@q z?cI__;Z=PMAFE?k+~>sWCn6ubi#gn4$%wwhs5mdO*vm6K3wefCQkkhn2}5!%w%@eq z_+WwjiUB*%&88LjChTntCXcHboLt8!T#w*Dn0oaI!XrGG_;S1@DI>)L=k6c#lk={1 zo;7gNfns^q3;pVt*LO8g+#6GI-QL;2_rt z7?)nGOX%*F)`?C&$oPshf6MsyY)iI&YVffViNvO`O#;8omj2i?&z#?;1 zSsz!*H2fv{M21WYCF<#wvnBm$japym*fY3sD{{)bI8(k!>L``>W6SjiAv2Hp?>KDa zNX?myx~wdKQyh`;6$wFpFAIOd7C~j}xq|Kg_&gZAa<6b1Sc4tM7(hZTKQT0$OV6@e z7XwA9@eq-@Lu8N}^PndBXxQyHPo+UWSV>K;*%5-6+S*og?I{!6XRY9DNlBIhS^Mu|Z5#IuK2d<( z;A~ic2e7H;#k861Pj(&CfqfA14~BTpJ(+f>4kmWh;I=X3>{I!>xIflPr%pr8Vy}ec z5Lq;|`-K+|Isrl7f5*J2)?yi@{vo`h^|3}_J?dObbn$r0G zl)UJuP0VQZB^HR7E?E0%?!sD!?*onqMUrmVdq{ghnw>#KTCfHtIAK3ti9?sp96!F= zWuk~{?>L4+xaK&}L{d7P*4RYPX($R{j;2~hXrR;bnS(YULh3rz)nb)fqfI_MV%((j#W=X5k*#A#Mp}x>4ff~NwqB;h5Dm$9OUHon za?F>wjY||F2lWW36qWfwl!pfdV5&>BJdWjC9I}6An82kV$xHPjRXe64{<}{jL^Yj9 zmn>*J(Fg2=b z8D8`XW@l(^Tj~cK?Wi8Geh2kz?FjN%wimSb9%%z3Zr^GgZBd#;1U#@f=B&!YM^{=4 z!PBff4Y+C`KvlRp$m&A=G7o#u6bkS(1|gAKz+&I+9aoO5#xF~G?L4s&+CB=ukYahT zGbIBsdcdgFF~N>2Est=v^(-UJwo_yv@K>oAXDm!KK0bORF-JcwCDu*=bb)G6rk~_e zNV9($B+jB!3An1Jrj)aoFgGVl^F_J0`CDkh;xn0-2AxVH0ht&)qI5gN)BOlZ`2%WU zhh@h8E(&;Ew_?W{_RFE^>v5QNY52x49rB04Y~4}3s$9#oVGMK5net(VF%e8XG#PA2 z-={(^v0&n*qiUzkGT%9m8U4;!anN6Jfdhxi8qP z-L=jOSgpaRj<_Rz=7KpijBKtG$-REs2`FB08F%;i85V2@oQz0JKfx^* z;4vTT$_aWCmRohaoE51}G!Z^x#~|g2^~d=1XjoF`d4*+J9_B>rYh(HQ`V$N=(^r)F zJ)V_ercGeh7ks9o7Im}_OYZcJ4p3u+Q@+*FA?=oFLa0wH6YBVl67U_Yi3bzGHg1CM zMC1+d;xOzaY=XqIV=e)NvL{{rn$Arbo%-;-TT2TJSlEEMrAa)h=rwazdIPusurmx> zrN+*(2Qls^YqYfd4ZNgVp{kzxwud7-L1!*o+wG(dKFcQ@*NAYmz~a;Lly+q&&yiDl zsw)LL(irKou+c(eQxso1hS2z?Y;MmDCp&?d(kL!?XtzARXV`xcE^&kq>aP{ru9~Tll ztOX8VkH%WUZ_w_tVq=f^({m)yQlO4um@dvthhDUg((@(PBM} z@KHA&&6?TTXV=t)B&*Lv zAp_~j9t}5bWTz?;I^%4?(l9%IUSds;@J@t(<%c7^C8Ac;tKiCpQN;>(gF`YNO7-xV zj_iNmYbv7Mc)f`T9>y2&O+&2i{1`Mp%;f2{7nj5qAdAcgLwxZM(BHVBklOFDuH2mZ z!$hDQo4O*h#}u3g@_tP`ec!w7HkL#MAJri%Sk;{FUJH1n(YrzBm)K12JK*V#R1?AU z@EgMzW}tXs88om3Z72pY_Q-Ov>V0_AiD&0WnA-t-Uqc(==Q%0^wl#PLG*1?1x&&74 zsco=kli;3(#O5YL?4x*3a~T19`}Lfqes&?z?#EXOJOT41yrIurc6kjoVlD zd$f8-WAQ{Pslsy0G(J9jZBZwZSm3kyXb3^Hh z2o>-k--5zI4ta{t0}%u{!$Z{@1$td66qr{YaDvur&O?`0Zd5x-*7zkoFo+hm72XSwGL68VY!-kmk)R!>iQ`VPz#ocr6tvy*qVzz0q7~(_TTBCiK z6oMuH_DmyH!-RN<_C2a9Gd15$5T6i8h38Vqav&TO@X%%FonT=Js>j zDkBD7?m5d~DWser519~yKDk^A`DxScovvI!BurJBDxUV?2NQy{rpyiEy?U3a82kl_ za+A*nnshSk(cQre z0C@8CIxPDFJP!KUBv);C`{G#1Du{GjPiEAuGxw*bS6I5b9DpW6i#e3I9}*sbE6}% zSHp^6BE=g)=-w!u^9+7aW5PIu0X^hdNJ7~PrMD+6I|r*>6K016mJeG?a`pY+6aG@y ziq9;(qUVkQ$KGg#5@HavC4>LCA=6VS-@+&#z*l!N6^3gGcwH;8nxKSe{{?p$B6irQ z`rN*P!f8l!$iqWZ@g9yW-c&nsgZf{3%Y+SPr}ZHjHG(hhuO@LZ7!v7(^RC&KC)_*) z1|{Na7|XEN3M+AQAFJJl%0Z0&clUvcAr|?b+j5%!U#dgr(sjVLr7OH7{qj8u?%k+VwEY>Y68sM{)t3Bpc zq`b79fp5Z^n-AU}s?4JYY`1dYG!Rv9(hxZnM?4rSKJWpmX*B{J7!Xrnl!SraEHn2kX< z_1XrN$UU@U5B*D;{-o3Nd?C492T{;2;3Y`@D4LjF&8r)%fci#9?PiVTb;4nViQD>a zO_pNi@A~EZ56ZJbuvjEgXx?@QhpCDx0?8F){^N-&u;J+e7g6MOhhz8KNtaAWZ_fv| z3l#Wg`EaNGj;i?J6wG*T?%018B+SyLjLXcF^4OF2tX3v zjBKKJ@WwOg)Lh`M_@FRZtt{sJB8C_}?`HD8K^xTW$UsthQD%hSpWIN|7bM;5BuOw4 zBMY_zQx14rW={^qx-5Zk7uerD*Vx)WP+n%+j=1RX8FPU~j5*udL$IAtjtCKNn=taX zG0)`(vo${p8;U+^Ve2sO?gGGb){x~HKTj+`RD=g_<>*T^_oYsJoW>8F*=1;?Se(Qo z7S*Ajm=LsaWpGQ&*uJ=elv*1_imF|TvbPRKO+Ziis-eoD|H0p+KZ-KCJtp8BCt7%rV=slBf2$aa(|{WWO+Uq$^MXG z>D1g!H-gB~uD5+n&i`O`ve0uT zc|PE8ABd!4*Wq9A14Vp_&VaMhG?!8a`R{K~OPeep#i%+b(IV5XgEMD=ptmk_8%Q&! zaEAz8;!Xd4;;45s&f?ejUT-{0llNc)N-93K860%>G}`LKYbVJB>gYPe7x%IwfCDy? zdHa@UKEIQ%O9eL(nya|4^9IXfZc1V{KAt;+LzxE-DixpyVx)QYfJOuy1^xNa#j$N5 zWOL@MusVaM? zfrgAFZ%-0DtdOghP4ti8PXUdvr{uS_LNC`~X|khFy7F3aqL9HIsm3AJ#MC@bYmxew zIT+&AD6%Y|7m+aCiJ4l0mA})#_yZ$0^Q~oBrcVfx_4?y+jylkU-0!*_CECLL%^dJcX0+*Fk^3S@q`>9^LhKoRi;|)mMLtl(x(pKYXWt zRDRfd7e*=e>~p4!kIIgCX`rD*8F|6$!G(Nina;k{liW`G{~V5O zh5=3!U+egp$pPt>BA0YD`*Z5PfP-BGzEPQVNj_GEU=zx>-i3l&F~M61J-o+x2c|lj zxgO%sv*T4|Qc#bwc^a zgW=nkv63pDKa5SG&+|{zVqA{?5<}Qd%BW~IPmEs$SUKG0hl3i>QW|<^K)|0@PLQifa7zHjodiDWcyku9?8a3WEfL^ydkz^N1QtT@1h7ZwtFIm6D02JLTVf~5E4#d&NxO}d>KbE}WS*HwioBHNo6$CN06dAI4E#;%OAOp{sMb%;5xco@dn9Tb&&{-H7>9JorFb9W9N5zH|)DXM8U2Gt2tRdXgKxv$Wd@MGYwZihr!P4odONV5C2x}sC@E<=oz&c8bfQPfPlRh+K`a=&h1$PM6!uD+ zNjk~&sUu41s4DF0BtnU`y2G&2HY>p0;(dH3ZFeTGjxQH1@=XLj;gqxEMu2Lg<)?_4 zjjN)@Gwn6_S;A+Vv)H&cP1yozyW;pct%Adt<27GOwhbtNIJ>P2LO8Dn;>UA&bOn>2 z)36#c%u!AK`3y%Q2N{BOfT>C$Wf5Mb98CnGNJpckJkbL;E+4Wg)vuHXWQJ|3gRXH2 z%lC4mGS)|_)0Z9_t`3v`%CnhE4Oo^IGVEC8|I`ryFOdRJ7vTgrg$+lObj(QmEjg>q zp=qxb5l>FuJuYw*qNk4bZ9vPb-8b}n5cBTLr%&!))`4Ayy%E4q=9TkKV?jY zI9WYC6;#Io{_nfi!W*m^jqv6KVcE@u)ckm*nhtEfS82$XO zIe4`ups}61UCY1{_y5C725Ufmqu>)NHS`}z2Efpbcdm$T_E3guWnW&y?9a>?Fnmtr zv8u08Wn&K`>ygy2?;i3Fo(NHgQUVbfg7OK(JwwVwwMHgV%;f?=bo^lUg)?B{OU58o z)yYh3l9D}fogryA`3V`HTa@yDRY*UN?5c=c#y?Nf`9E?=k@KKk_tW684m>m(1U2{d z;|}FnTQas)CA#YrxGX4kr?nhH(8!7UB)Z#b_#RKbUZe&h5K0{(WG@Sk%kZ$ou+Wh) z{K(t}W(VK^AUdbU+91yBn}i6nnv@0L@vLhlZ-W8&wp{F0kL&W~@y5NJ`hiZ=FkiKH z^e6h01_4KzITdz!%Q=rp=<5A-b#E$Mrh9 z8npY%4}KTeBzR_)IXsGmt6GUf)vOx(Sk<0xYCRwfX}LQ1Wc;sXD7dU{UaT6uvtHXa z3_;CbPK>m?wC_A^fWqir`w%r~K*FZNcRrxd&~wLHn^MsTlB6)-!Hg3HhYups)9ej3yW8#Ah%m3~Ga)EH5X?N!z#1!*1z`PQB3IHk5fMxXsyXY47 zzvpOI-?9jNrAe$I_zkOi23!ddW;Z)yn3!AIT7}C6SBD<%IBFEoez0B51G(r{-PUHk z2F@)PZWuU?&i-=sLt$T=;WG=f=^Kpoz$TyE@l0p3@J~%ifcNAqOgf>CEe~WhJ%UyHWb9>I4+l@b<4@l%v(dpK&k@~6v!!ut-?bU>WWFR@8>SKUsCR5 zA2aLhisqt$QF{m4Ls?DPQq4;-pCkuzU(a1kb`m*6eXxaHwD0?({d!NFTUw1zIUk>6 zGCS%d#}_971o+kj@@Hh z?Eu$jAL&5oUe?r+uEC9ixr?Qr0RfOh>G?j*mNVzxeh6REy= z$}ii^0%mpfXAQ*iZL?eed2+6a9fa|5#s91`+wV(l2`6Y=5>tXZ*z7@na43Q11xl0) zwLBh@#3UehNS^e#!ELD7%`m={#_}6ouWUNYYQV>Bg?*!pbG9!5vHVRUGNmLCwSu|n zQKLA>KqQ|Js*Ns)yNDdc3G2~&toWX$lsS_|i1O@p_1Ci>GYYEBZ1$xYR-j;75-#z= zh87IDvRmk(>rkE(KMZXVb(#u z-3V4gi>Fv0E)=3-`l9sRJ~7OA#Yv)b!mZ5rJbS5fy!<{2-&)`}`kOqvK;eeW@Sa11 z?MxdajL|C2)@W29om0`lvc4kPJr2TbNFIbrkknGdZQ(qCXVa$@Ai86t5W#vYdv>7o zsQOCwIzv^(#_Ki#Od5f2!VTo9AD`l^q6U9WjNQY9daF%%=OSc$zt?dVoY%! zHAcc4wsoz_aZ!}{NJ~9yss6;!UhH!H65VUBsF^;a`M_g6^ZDT6a{0&g(k;q#K;RJ? zpj?1#Ay-754%-LoVj{FwvsE~@g)o`J=9zmA-C-aRc4zWc7j?n8C>2+nyu@g8u%NhZ z=rudrO7oU@n3y$)_hV3K#b&uKLY(ye6k(>@Sq!y6)*4>7pQJzb(c1?NN0Mulu=YC4 z=!**`%!xCmS9G4;@r5<2E-*}NfDr+0lspe3P$ z>uV7_mltL&D|hFnWnY;+H@;0*jX_wGFn^-%0UV}NR!|YREJk$hF)hQ{I94rUN|UKJ zM7M*jNHzlpKbn8ddh$0g0*Cb*i5KAs)8D`S;iL7pPk|P{-s{e$@)B!?9v^0RjQb=c zCpv#H^sHGkP7HjoSq-_;TtKcJsj>rM#~{fA$@2bNcnqEI**raK98$5E-#=w1a;bA6 zsuW$DZC+g0Lic}6DW4Qy+s0vyM z9C~b68k9ozRv!dNLE+dMaCH50&o~vh@URLJdA3p#-e2$YjGEtdj_lhxJ7Y7kM0rho zS(_8*Px9f2jK*;u8xO3qV9-?H=PC-~q!-So7pVESCa-2e7vJB%FA0K`^$>dSOort8k4#3jUY6W zecRU{OY7EaGJu_XWg)YZ*cQy)6l{#MyZ~=po8(#k9QKj#EMiDn6PPhSM*Z#}cbSDa zNt2+2?dAb<#vt9gQ}f!}w+MWgaFAy@m}Xl2x27YPW2CzRdGx&oS6)~?R<@igALWb+ zdDqT~2)LnaLyvYIOR_#3Onc%Li$dq3I~t(&4rA8~40_&IB1d$`2$pHEAZ7%9-^zyvES~n-zGkLbTl11HztD0# z2v}cq+-Dw5={3a5z*F%57g|zrW+zfa8E>zJk(bCy5@z~}JXPaBHfKmSn;HnDboJ`2 zi}ldbAjPed#eKTj$;>saBD|LNC#oF8x;$n7Gz>9L{73anP% zL!mga?1m-6av6#zB!f&3i=q~r)*~uZQ)jh8is{l074Q_AO;$zvDK&_ ztk3H{Is$Y+q}`Xs-3A(3Zjg0~{m1L!`!qZ+dqiWFoE9bR%LwXxx%YK0{`{$nXwmYe z8EhKrIwMxAkD`t|?19xt1UfajY+PmN+;l^B>Xde*9SajVpu!WM9DhU*ITeaX?<4)m zK@SamS{5VGBqY+(vH?@E8{4aFWy9Ct9Gs4T$s695A(A-b!wSAA$cDW9^XQ$qnHH=j zpI^S%eMG@wE@U!A<=vlZf&%V(5mk4c*K)v24CFhK5Zt6xy{-i(^md2kSM*ERleU1v z`ySKJQZ*Bik#KA-el?^FBI>2ZjfVawKF+(MzhgYt#aU>`#ZAuo={h zfJ+se?~amZiX}GZScL8aXNij_CDjgfLe6_dXCxA7dSUkUDPa45OR)jL8O8$y$~~I} z!xmt!+*uMXYBE3qVWA(F#PWP#i$=$oMR-TwS^yf^1Ydb&^PlY~)Hp8r-l!Hur7B+q zqwi=>9sEK`2p@>;@>WV^*%5lrtc?ky4Kk~tnrpphp<4@ANs>!pr+Jp6#*bK`{fKEk z3dV{}a6f!V%ww9t8zWW7#D;_H{G6cPG!#>E2*P4IN~oxk9INooV<`y$JU&w^5s=#j z|Jti?c(yc(ONP+N(@-&F86GP1AAU^~AKR_)x5qKVL`zi_W34K{V)O2CzSH2m-XTI? zjc9$b6aicAzYef=llCZ6JtcK;Wf#9#KIMlWFW4CdZX0^9gd@+{lJ1{%xp0W|J|}0w zAZM`a?K8}RfX~+yOt|<58OH5YnR)Odq7XGyXyr5PfE?3NIWUffmqiWs>zrW~oi7>z zCW=-Go^(Q@kEf^TyD+J69R%Y#1K^KP1?x9ut@W;h&Z&}?ht7x*b0 zkLK%gvxc@n@7_1m#P$zT6R^L7$f;vEtNF&5`e56oJVp{ID=uRvS(rWc| zc&%s^D_>iZB$$j$O}Ey-h{5~nTTUcxIMNhw$hC-D2TMSXL-`Enm_A`kGh=?h5iN2K z_rRuDGMCuBgd-4wt9} z00N#`V&VNJO~$r4^~Kf{YR+l!9vNWkk{ zz_&$RGuf}fTz^&I{0)7)(GE(}K1oSgXJ?fv3(R21Ac0vM!Lkx@I>caoPsm6eGvxa` zldaX(U$g9d#2uQERXLYI$TT-l)KCH+E^UsLHHDz7k#HawoHPp(x@K7Ueh~?#$@xsV zox6wf*Nvmh{x}@+wZ~`GP-uNq?QtVSP@=e+h8_P@8^6Ngv&PB4aTO`#~&_wxqXV^3Aa z$B%ULyfdhNYiaPeT_y&*q8H#Rg<|+px?F}Q?(E8`2*Hri67(Qs16HvA`o$NW$ zZ-&`X1{=NwR)j86?y@do&vWRuikgRKy^KJ8bSZr&#;E_IIIHvtxpzF88EP81rk*in zc1NpM?Oo}{iui)7ClUo?d1=R>sE3{5v_Y~yxBu@tl!er4ruAhSd-5aRg^}UKGut>+ z^6{G6#%E?%MnNOlXhyUbOvuVOKuFPXOl&rFcH>*PzM`83<|r3oUc!V(5TFsyNjNW$ zMl|}fh09c`~SguP4~}95Fp_m@AGJ zTB9gqNl0de*)^LbY)yF4PRjY#XeYk=#D3x}ORQqr7=9ymKeMZ-;QXMwEI#DKC|-lg z>E@EGs}Va;*+}q$M#MC){}tK#e%eaX8L4A=P~Hou(Y^=(JwU?03pR2maA4p(S3aSA zHiw!T&oZB_u#fG@l$=!EZFail6h`G86U(fD>f=xX*soRwQM2)cKT>8d&257r+5UOS z5~6FPC7d2;on!#&>F&`D-5C-wyLqaeb_4FSO${q15CHgS0O)h$Kb2y6eQMkKn9j-X z^T*-MfyI5m>tf@Bmg6tgPu<}h6Kymou#M24b?50~TLE8=87x+t1o+B0Q9jO*B>b*8 zR{5*oL;Ah$_!A{@7OoF5pT|z;y!$ccBuU^J?kyZh8tXLxP_wwnwvyXFTnv@o6(Y!V zN&H@}HY{-7_(=p!yl3DYb}7cAj;N|%?rITFDTT1I(n=e6c%kHTCpkHK97!w?5ob%# zrlTq$hjQGH$qaN z=s&0ZAw-=SA6k?qj=^gBk!PMRd=Rzw5e)rg2(lVn2f(=iq;34#ZUT?K)Z4`rHnZvf*Z-Qr4=WY4! zF}g=jKd6ynQ`1cLT^D^Vea4UWdnGhnNYF}RL@QZ8X7WZ-T9|4@jACUT($m}iBu)H93)_7E<d419L zmWdL3)irJn@yes3;8ee0L%HJ4gZ5z?h9%lLrq2LIdD+*qk5^d-Pm}`;o*3cy$z%td7%l5Y~R!fDV;sbd$NFfNKQeq0?0@F z7l{cyN%gLRz~aXkxeID=;07bv@Jd_}4VLmqqt%!?BJabk6G^oPGvjY+k&~SvS#zs6 z^rF#QoIrm~(2Y_%H*L8s4C2Ap?glTen(yMfQM8rzQH?(B{g7UHf%;>RB$Im{!{2Pf z_$iBnD3c#ut$z;I-<2!1xV*TFb1ndr{Yf0z4U0}ICXa|-Ewl? zeSbbhe6}^FB$TY1!*1UKRG@{n3t%KSlX4cOJ5IBFc@!*RRJ}!8RjN^qB&2;jCnKS* zb#^W;SA@gF_aLlc-=pAAmrmm_S{bu z23E0}mdfGUvGrz|Ux$W`t0lNjO5FrLd1Vp4A}kkRKIfTKa*f+Klm_UNXq%sQn54@U z{N8rj0Tno3J9=icoZ*M?xMa*zwk6h zw=fJ^ymw)RIJ~eH<%9$8Cv75{O&Cd}28DP}vU_)45i+Wq zWuxjCj;bfAi2pP3;Y>QpxxMQQKgV@qRiHPYc@;V@JKW7xzp*GTyrHtMKPjnr!;XA3MfZlC#GD7L-cW zxCrR*hl`5EPyjlBI7D-|SQFdDktQ02Q344Kbc9zGs8)d4%w%r4oV4g&87N4{7lRDF zH!<{`Z7`gMP!lnsjL{BG?S#XcW#$;6;qhZhO3NTK*t?171z4wAucPL+B0F~Abz|ps zbMNKinB4f#1~Gy`Xx*ct`C8?>Py9K;yPx`@^!+giGTwD)8JrIzaWqJk&@JR4jN8ku zOnciFs~&OpmHXY#4v<300%G;)r+f`b{13tkkewkdti~Q+MP5R#*tK`Pz4dw#D)Hq0 z-yBymi4SXu*MoC6^xM}+LJuY3Vez>j+}76k-mBg;WXf&8pN?lx=;&`?-P@td4x=+s z)8l$l@XUhCvbJ7Gjz(mJIAchJc7<&*_c>X_^FfR*>NXuO4d=V!YiygshD&V%6n z*Wc$`Z+Hj6f)bsS_@e#{*pDZa%=ZkbZA^Kapnb1A<8sw1V>dI-FryJa|D*5ckR2EF ze2u9(pU^K^2)H9NJtr3EJB$3-Oa9f_#@CSF?y}D?3-CjGjR=ffY+20%O4)SEP@y^`xn#laS&Qnt6Lq4( z4z4w_Dj~@@Kfaz9OL9uAoAm_2F+{8$?>{{&Hu{cBqY)__h$HGe%5N}<9by9VjXrHl z5!NCT*V3wKgc_Beh!v$lz26nJJ|OnMHmbIqCi zScoA0ta37=Ayl}9BUlJjBy^U%TbMlPU?izWRN2I!n%_ZM*5na9&3$gSwYtZr>hy|P zP(QC$DHY=XE8p6mLo*$pETbsdaO2$Lyh;$PA-^I}R3Nhauo1oV%xQpEP! z8llWv`2J{bF~k(^wCVgkN3E9{;2DZ+gb(DtVmVIIu9?mQDK}Niz=gEup^BUke#7=5 z@|c$r&=9F@zY!me*WxWO4OeW^hm0ECMLVvQjVpPLv1&THC%b-<;|D5S`Xr@qPH;v3 z2w&BW*n#1Tcb4gBlWQfK^o7A(!0vlGPw(tCCj$RR{t>*Y>{zZ|)bN4K``kd~IF|@8 zh_m}~@i6;A4Yj>4Pp zCmaQORAkcT1pbdOn|IVN97$uu!S%^Dr5-U08TIx=m{BI*WHw8J_RM8n-qa=)exXB- z`=x_dJb!fY`O4{_D~Rf=FLEj1^o4(b+*CWd7QHnNFf~0|E`A1|aoLwOphvCSyP=8_ zQJOV{U6Iy_RS<=^a?jI;(0uXROh@AbUg*6)k< zGpeYU1uN*J=L6YH_~aqPT8y^igw>>|aBqZ1CG$I$7WRlbT%GZUr+_`U`(;&3i#s`I z(->?Z)C?_523)YY;~P>$977Xwl<~zbjgh(rbGIaj5SYxRvInL1>>63Y`mk* z5|N$)9H%f34+>qjblyI5{o#vI4=P?7cwPoBvUSv%v*kRpd@Z*Rvb!X<5~cS(+DMn8 zn>W7_pJFb*oq_n(^#Qtel2(%D^o;A@%!+JW1~-es#?Ezd95MS{#uM}49~^3x+>~s( zO$~JYgd}w$;!dEm`VWWaD^qk^W2F55eJIn*u!kX?9&CZauq|PHALooF^(TPz(z_z` zY8+AL6S+yjcqxXS|0rr`Ubrejo8KYfpU+$viJLtun%HGg^7-*W#P-zIe}n$|%S3Rs~3zx7LapE>)({-V_6OS0Yt+%|_k zlf8DIQPW9i>PqCnJjK6a!>72b&+gu1 zy;H0DVGVU@@3n0NY*M^4)#b;yiP{nihKCs>Ne3L3y=3bjc8g6cV{NtSi}~~3Q!|{E z6*@MMbM54-GLPQ+x#5srcA1Q2I>0@cH0K%QPwrpKyq`klh1WNS`N)bj9v$qz=BA(^rl*O@?Hx(J2`Xi15fM3|DsG$#+g9P3j>is4se+eQ0Lfpsv>lZaUw5>LVD*3 zOV$w*SSp@yDQY~D?b(N(QC3W|z|SMZxH#*%?#e6jB1mO3CTXfkcV^yO=ux{)xI_bM zFprs;$RGD6n0QU`F@lMlIi=oLXO+2&#T;v=ZUrNwI;hDZiWK*%%Tnk!iU{k~Mh~uIlg*6@)_kz0a-#%fSH*GWtqCTqnILJL zkkHYpiNaAdHUf<@xX1<75z`P!XK-iF+bVGc$ zq5A?tR&3g@bIA9D^D&~lG(Pa_NQ3L7%UY6OQZOdNNqp+WDD4*00K6#zN_u-8R>d}h z<2!+Ql#@JhvA*adKz*aMPoI5&E;DB&Eg4sjpNa9-!GBS`+8pI4*IgK!HscZWh6M?<1A+{$ifLQ3?&H6)XInIEuEN z?6JFj9xaW;v`yYzJ)oV4f{Yi9V-+;O7SvZy;F5_ie2Tsv>VwTrxaFd`W?iK&+|mv@ z{}0r*e|5_~!?AQC^dz4eFP3<&!wu>e02yw@Ryc%L|s)=1eqjMe>#qPU$ zA!~c6U6}DEo0}RX@4D@uneQyGr%LarULa>{XOOja6<&%7Xo9+|(@is#6C4U37r1c0HSt|ajuUt05pAtKkJs0*UZJuf>+=yt?hy~2}ilY zT>9SC$*c++a~dClatx?>IyJd?ji6S^;RCJC%sDv=UbL!K9U~?KPc>e4Trt`R`U|Gk zDD;y;K_Ub12G8^tyml^MDYY1hX0L>);K2t7s@C1AY!LpLYbJp79i4FLEezYCwH}gs zH63Nws|ox;Tx5ehl|#xsDw5^v{G<33x7hN*iE2!HeDaAcl}ZjPGy5la%fUA2JX?8# zeNWw%<-Obr&4f!5xBe|UdQgpHJ}COCbT``V`06)uU~GX4GeJHevVY?C25O7QQ*DcH z%c!UHtP@lv3IwkBN|--6EjdeM(*0 zAsh}`gp93p!eFgU3biONPtGLbG7I}(WaaEH`Fa zkIWF2cQeef^XW&lrEJ%LODoHcd}H3{?tW(da4+-0m@XYKCTA7^j=bv`%v@tBhzE`2 z_U6J#MglN27rtO8w_xWWl|f#mYE75%fy(Lq*Mw+5_uUMZ>n@P9*JK}zRveQpgU0ve5f@gXB5?UA05eGa(@j}mi4w~kdo-(m;m zy!pvClAe-Z9%7A?%zh#s{}PG{61467L>|LadxNl|H{St*g5p8`^2^{FGa%oX{Qwi~ zl^ETfZ+E(?XI6!%Uf+&8tv_WO+H0%)vsFa&rxb`l`>>%`EamuAWT2|c6HIBjyTnE* zsOAwTzlWc_NQU+z9QP9jZ}9}a&co2cq{Qy;8+{h$8zo}ur0;(#Yk352B`4AQlH@;d zA95f=PP`MwJ@xZ|u2>eAI?L|ItSnarfeDJQ9FqtZLGpJ4?`Au}=bIY>BGR%h zGfwmrK{V*URo{Kr(hT=FQh3ao-JnRX5#P~dQcVw7a|p0i&AA?LEib0m(%M+KZ@@xP zzX~2zq**{=>oVFhH7e4xUL@z)PLR*#^nVXu6Fhytls3b-mR7vHL~Xy8;qDa%yg7#@ z>0pvPg6 zt2J2ept4yOH64j5zySf`WHE`W`BVkig*}h)5t#4?)W#G|_1v%jf0tF7xIJKW5&pj( zl~*IIr~@buxPh}0jwJcb36oy)^ArV(DXthI#N8xqDU1|i)FqE`&Kv-29VKL&c{uX( zwgAe(b}nIQn4eLC5FRvc4zKZD_$hK7F{9-*yxYuySfFbtrU}$ zFj>D=PS~@uFY~?%-40B)0(_Qg7w2MjwxLb|FuQ8Sp7+X)mKRU|;BBkC<8V}a3}#Ub zPRrn(F#@JS?&aMZu*I%{ zQ_p$;I)A78jX?d6mKRAw-uEzP-_$&IF5oa*UE~RB${D|?EpBrF%kA)7+!I9LNq*GF zuHihS`Fjci3`uiiAmd3bOCej*42l9XN*=aGT8$sHrXER7w9(v}K^g^j!>pcQTH5zP zn{k>N!J;OEq%EoU+GKJvxgyP8ShAd}c1#)swcmkE1NdxNqLm7zCYMDRU@HY@axJZ} zl0o_B4EPCJBVqi63TfuB=;sulXh>2*bcp$@MH0c*E9YR*e;$1UqN@&?knP}s>A(C$ zFFKs#%GC$3T-<_fX&wz({i2!R#MEZSV@gPpF;f=>auGiJ{*7#3z?RKKwsX~J2x9YA z^RY!?c>i)ON{y>%*P)Qye3QP4(CU>=R3=d;2ub*lB{)J|gcE>2^zmOBooTVLen;B2 zG69?!%dSV=j1Cq7s&LsM7~XkQy@+Wg=;1rpv277WSemAf(~u@&9MaERq{%bdVW z_x@Jc%bDhNdU>-nNfNv2+xK(}@pA#@s{-45HSv^MGYDL;vYkW78UWHM6xNSIPq~WD zZNl0hif7maKRFjB^tIeVC)2SLwYm|qV^2*@ZOVA~^V0qlAND4uzy~@jYC6xaExQqP z)vpj7-?wC|lEHnB(GAvO3kEni+HJi<6zyCFH#k999{~Va-?SeAhv>{~wkO`{$j3AtubgX|T z$Og}Dsk8hjNPK$|Zpuf2!Cwum^ZDS3-bNjxuv=H9`M~m(8^r=7ro7(}cjY>p^eksD zVv;;(2DL-VbfNFrAqe02DooslH|S}V_1XZnY`TU^okOm^X|`q<7i0scN0jR`$@XC3 z%9h{fKz;YM!=77evR|PAjRET5Yz)3+5spT)$Oh`J4CZXv0Q=+&5~mn6v8izFqw?N9 zh{FNZhaz;HCFkU_2ME-nz4HYRtgmGpeR+@R2F{>tGw!H~V#Z1CIF>!`3Hm~<3`lv) z$w(n)QH@8|g*B;xk1bxYiZ;oA3a&Gp&S8wBA8X6oF~f~dWO1BCuw}$>^eLFE(7c~X zFlQ`~ic8y;FhULG$_cEf+o3gy+w<(ay(Xpa1T$>?AbdAPO8=fNR>uVC}h2? zT|ko}t?I}Tc_|r*6nbGjmg0hMJ*VBKezop&Fn{qZoeHKcHYuV6qT7voF{6o~Oz*PD zLM7DJJ-XEp_5V`AlqO7VXfKb_(}B!U3?NPe&j z5T**_=ZnTLjQ;(tUJ2(48bB|oSLfP@);hls$3IQD=PQiy*;}wxAtA_F$?No3 zPJPO_GG>GZmC43xbxT)gt5gbSn}E|#LeIPH?qrU?{}v;O>a$C^P>jE-!HiRP_O2Hufi9UzN}#4We9hsV{^ff z&novI-pB8Iuh*E+S42aKroMmNqP=#+81b7eGb0Yyc*1!6wyw>Q@d;WgTea&8tF*bm zofi@MEb+R>OUZyLM@vq7}^4{L&wRa{~6j>hN&k?~SLX3p}$ ztKZs#)(iPzbY7BKwc9Gox{b@+H{*1g-%#dFYW#P8;m!9&+E@#)JmsUur5vg(jM}fv zE#L9S`jb?>t4cXg*(m6IX#W&DXJPzF^(^?YliFE$|CdIOW-{vWb*fD|Naq

O#jA=Jc`)SF@!VJ!4nbfH%FB+W6)Rd_TTj~T_W3{JhVt8S z@MIbYSeATQ0m<&`K~zhrEczh@q9O~TD>{4DPRxd}1?Mr!B?6#BrP7{fV7yevY9L#F zKJV1s@8^A0;3P!?S0Sy`*-x|>&ev%GMOLSoypMCMzwMv)!7~C=dx-xm!`Dg()TJ6i z$3@ytwRh2EL4Ti`@AUIV z)Zg;NDR3cXoc_jak#44M_~}$=&>JuZKX^NRo@vST1!ZHY?lVAiZIAY1_b7uz%^oc_kyzfw9)2m*B^nlc3rsl{syv{Z8WFnrNl zZzK#Jj9RmQx7Gt*y>S)x{cXjol2q>|d2OjD%D5i4RX3>fF7%rpnYL1S`>K#z=IIcH z^8HgPd8yO*i*>#ng>&OV@&hHQ%Jb)IVQ&+6}`((?g$x=y&ANo7p^7c~RK+<1g}~J|${H0gXZz z-`?1AE(OPbifil{M-qVYP!K&#po=_=%6}`HK_O5mbV747enk^ANcnZ998^JI#%APC z4?8Hr^pC&3milfhu-4gl)HSdZ^xi8RXpoA|92{JhXPy!-teG0oWf?OQ05U~^kkfvQ z&X1X?+a7g)=D**CjW_L+%ut=C<|&eL9@x+hJ33%wnt`&O%^+!4W$^Hg48?uOOR>BO zKTF(j7ThU2!{~!Tqr0@YJHGG>`HU7Os`oiQh~dPJ%b!}yt7)RzA*hF3+dHR>J{Wu} z&~x#0J(1}2!43Ng9k!qjH)yISDmFy7WA?yf; z)+6UxwL@l9E9*vf*rADTu!5NC{(HowJdDW8&I;fUf#A^)4un5 zSZslv(!;;Q5~*-qRH)G{F^@0fd6!no<+!4!Z&?RGq1WNi$E2l_Hv=*LN-uT_Ei>D~ zvu_->5@g#4%`o=Jsg#NFhe|=K8wCGTEZ__zVY<}LP7{eJQ_0Q9O{wzAn1k;gWq0

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

Ll 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 *a>9xS z`-X-*kwVYiV$W2vHf;o{8d5u{zPw8CuDp{t)F3$+$Dj~?vT6jFN_q3@64AK_KoG;ZL9d}CUzEoYZ?hSnO=Gy?^yz{ zoV%;}4zMfH-*hA0WtFn{GHnmz4McSw2QOUxh{i)iZgy)KN<|i~d-`X(<>oDwzlz7C z4vQ5LwUdjsGh??TFH4alX@0FDJoD6?d+(sYNb9oird0vpe4h*%8lkmqrOMp@KGUw+= zCZr}ooy&(e-kbealhx@#$;wr`kKLMBFfY6wm02wa}k^yx>xp)Sh9Jd@k% zXvU^MFzb)DUOk~dpuo0EEoH+?+F)4iPC>9ByFc|P9QVm_a<|V4adcN+4ONwj7q$yoUNd&pymL?CLsEyi zcXV`a2I+hIu}52@%(yU-BA z@RF;Jc(vRGMS*-TNBNunw^%2&AzzAhJ*Kv0XC{7_DCPR(DwAA*aBZS#0_yRd#G^hR zx6!N}UTLz(j<|m-v&upJLv#wzrH=xPz_9|q9=!(kWE$4Zh{&u~KnGON*zs9h^XfN( zLCFHd0Tz0R0|8S+xnBLS`7|LMpGkf(4G)u&GzL{(qpS-?>zhRA%$D%CBrjxSu%E1`z`vkr<+vU+w(@Q z*(wST^&3k%aar8%Rc(+NG9;j3l3rYv8Fbqr3h@aWTtYEJn(*%Hjlg!}<>wj7voAVr zF|{=jq$d5!oaWG%U{NZ&*ULb=S-aBYF)w%1+2 zYE-WSH{2)9Kc-sxnUFVb)SPAd{vwx}qUvb$NSn;>Wl|f-rOLTRy%B<7`K3%ltuHbj z=AT`Y&XDciZQ$i!V~+LrB#S5u-!j57+@~xI;hvFVAVqOk~;kM>wW{5ug!VJM# zT1K?BRS!Cpl2Myu0B9A@_zf@x=Vjd$7n#7ixXv3{0tyQ{Pa*&~-FHVyWn3 zfUz*j@eLq-6h~Gv4_IuUZG7=T5pxU2>|GMZ!4%XCazEkIkn1In1 zS|wsWPg5%`5zvJydQ^e(VSrwLu7;5zj0G`>SoQ#{S7^vJ?8jY z8G9N}*R_*afC0IRsnpL&ph~^?D|-_*z&u9^KN48tI1B<0g}nUXM9_>;A5>ZWRquZa zPy^h<3Xm=#hFqyEvpISbsG~u9O+?cV;ky`f|1!#kO3(NinDqoWpP`>|dnQSxiaXb| zIa>eZajeU0121(qQewAhteDtYT$H9|l;t`5K+C@2I(t4*`q2RZ>FlT;LleZuOe@{f zxV7BO4eS018`Qiut zV4APT2C+Yq?6tS`)5`X+fIy*ArWhp!rn!?sjD~<*njMJi<9!lWw`6w2o-#k33a(f* zy(_ASo0cKm?AWXL&hk*WrqWWl)ar#E4(R!Tn!!XRTd({ogn%ZsetDkoZyFNyY5UQs zfx|%Lp|^Z<=uND_SU+hz*{z3fE48;1=`L$9>czr_Fm5hdHhSGOYD<=e9$_&c*5)I> zS`)6?TJ;gTv^ru<0iUF-vM6y{&j*C%b%ZFne)|MknTvF$H}Kx4V!&FVhl*fRqTycS zZt;^SrAk>yd^FyzdWgln)rLD>7|%368P^yQN_cm3JJZXCAmv+#V3=k$gMWk%0u7%T zN8R*VYZv6qIi3tYg*|~*yzVL9JU+!;6hA~c51?G5|69@eqsWF-H-sJK2sExMC-5;b3@>GOn$##+atZq7a;>}##CB2$!jT&h$$OPW}qBgPKM(FT?Hb^z9xXS8S zL|X@*fKkAF%r%2R`CXMpk_p84ph;+f9zqm3|NUBYqu^E7C+%}AOZUTPRX8BSh9-K^ z0rhuvn%sq_c?DVW>U^DduxI!32^S>3`?5@0l>TSV$v5QJWRURqxxuaFCC6Yac2be_ zuVK3!>DJ*)>gSw)HsL1 zx=Ssb-&L7D;hS6BGU4HaSSd&NdXr)xgS@q>FdYvU#(2`IZ{SZco%k^}721-^Bj;rK zz>uPWnGDp}V;O;U{e=FT1BFy*RlZyW9&iZ)VVu^}>_^Gqhe((d*Qqo=O2 zj>ySol%vV$#c6Orw_>u!9FJ5!bv-cmQJGOVrtPl9(9;!FJl|#ZFWBQfXJrkk!|HQT zps+~&(R?L9-;lkU3##z}D0zMm6h;Hw!?-rd#&%&dn|(=079KxR`_sP0PM`#nmVrz= zl1#5<9w8$PH~&iG3g;8ZEJn}_`yfDQp2;T<2?Wi1M)46(AJn~+oln_c)0}Zi}3814cegU=)vIZ}L<1?a@R20;C#q z4o;9i4O8DWgbQ{5Lt_*%V2PF!1_0}!69^si5Pt90$^_%+#|A!A$6QmrEfNPOrHt)k zTdDl4(M^yv2-zi_ONcJ*Vav2a&6Nepc8T@5LjqeeBSnW-`0q?3EX3P*Xke>) zuu1$hI_p|JV@Oh&2k$oCA1!9^Y$N9X#U5{bh$meylPn^r5HDzQZ)yqwcWukSi4`#t48Cm{F zi=o@m4`5Ljg)uLrRBC~HaQYm%i`=B(0_-Z7?d&zA-{I~_ROw$w)65~~eAPZMY__c- z5UhAd|A2Z0cdHHPsE3^sWpYCGI{IYWBt^6i=r`V9@ordgRA8g^T9hIe%2YKY;rC`^ zQte-!&gZ5^)o!X(j;Rhkm-ECu#{kT`+_L)LY9+__ML@Hqr;F8RRar0-MsMHV_7BGl zjk3W8@b%Cpe#H_aKuKIgze{)MGlMc-9KUO|RW48uw&M%Px zSRi=A3KAV1F)*T_lRst8u|)Q2gC|Ky5)sO|c02hJjSL#b@C!S6dqx_B3j=SD$4Zor z(J=Sy$|Ihr@Z@3ii|>=lF6i3`{8IFe*zu{?W62oVa;a)e^iy$!g{uZBwGJ|zR6(gj zVm0?ncjuVClkD!l(fsp187kR=il&pgx7iOTWYfwEr(>nc9CDnx`UJvKj&3anugY!! zp4G7H56KRuL4V7L{%kcO+5{-XSkmd-O}2-o`2qEsq+cWrd=3XQe=V3YVrSz*E!d*K zIX6S*Dm-+Vw3<8@d>Qbe{&?mLM|2^X&fPXA2&eKw42e7mjPM#=ji1N>&X>84DtZ|{ zr}VN6a7uq`ah%4w^~fFr6~S6SmXJ^XA{%B^ciBA}rA-@%93NSEX=@#qzcZjRc@EC} zJJbHUHT2GIhsFTw>njp;<8qx?3~iQLiJ7^fsA+;ntc*x6FUoqNm`Y6+xZ2VKz@X>1 zbP7=_aZBHyEU%g$VVhE80W;+=@G%42WtLxXw1|(!E*ad4_>vtOnbgG{lfq=K+L}=R+s6tlKK-W z0e;wx@%${?S5@sLxk+L+Bn1qH?Whg=@dL;6d@uVQBJUv&nZ**^d<*qxbnl!4s7FA; z_=#4#8FiI$4c67@jmTofnvr`~!a+-Hdu|WIu866)^h_jg)OM@gwyaUlneyNy+DCR4 z4&Mo{ziuNkR`zYa*YsByetuyyV-52z4Apx z99Q5)LurNw$j8Ayp+lrHFT?M%gcVpdkI+clbQF~0?^B$ZTF|nni!c#$wOhAuEeE#+ z(28=ib;G_EHj8Ay<#-<+QVb5mvGvcn$AtV7V&8!;{}FhkJh77C8qcm7>^{bLSE9T?-tLZPTcz~C)$RIW4IbtPaPi<6nFW3r3U+L$hL ztF3+$xgL}P>*=BZ+_l1_RtBD20wRr*DN0x|6XHW&tnLN3`JyEn#CmhrG^etIPoDIy z@`@_tU>|G46-J{Hv@xk~-Q7HaE&Z2;)#6$BCS;V}u5c|y68U{TpK9d~_J!nKB7Uy{f2`Zmo)MFwY8AkxX|yiy z?CR^wV@Zb!^GP+kh(RB#+O;W`8Rb^GHh!L}%y)ub(uKyqU?*E~qVLBct|JOH2VR|w zgPBK6zsh{IN*dOScQRsfAjBIOullYk`VL?hm8qr4{c``8=zxO#3NG&#gWfCS0x8T( zvq2+G=lN9|m!qgDzPyCbS|rAJ2Ma_UFn?acScSKL$gz4MR%`KRcKt-S(MO)RK;4C+ z7M41?ZODRygQQ?Qg1}6{>?jl`uxTu3QsEO>V}pd@i%_HJ)e63TE4^|-(-VIz$c~2^ zXPUW=I*Y#~MqRSsReW3FF)kmhCiXKKPD@3%(cHtZO9yRzB$3E?9omJq77Nc!TDFWv zrRz*&Wz2Bjs;>^9YN{Qlvr;RT?cB=1Bwx)*ulRK92(1(%4+eHQ)eA0%Wtu#cxJ|^| z)4d2Fm4&Clk#^t(^0={5eu|K1np>hzb4wXDjgB%Hp(D^EF8QM0E7@&yu(fh!p!l@^ z2r~u^v(#NrvK6)Pek@tTlX)j4D2`2(28qUK`vkvXFuX|`N5}jgz6KtpoYto!@NM#? z_Fd6Qc%lY4HN(PSzqrnKU&sIVA3=V*Yxdtp?{Bdftmnzv36Fd#k1GCHq zop8Hfoe+fyc*sRSc}E~L2CRir#Fk%%&}YqH%e_DzZAhIpGhaaTYJA*53#-l9MRKnR zq<;Cnx&IZxykG~m$`SbHlx%PH_JbXO8eQ4LfeW@JkGi#{1aJnso&}vhrc&3DF#)e_ zxLFJWL2XAijngSOG}c=?Jal)osgx0JAz2A&FURL<4P5=ZAoeGN|9UZ_WH!SHyg!-6 ziMycgj&8@eF}*=9VW~gwNMu`oW8)PVjwdvny?W{`FVeF0O{X?N8Cn|6Ti+(n=o?e} z0yOY4VvmYE0|aQX3Wk65sbgKd_zv+|=F;##aa(1eL$rtJe#vM9)$S^Uf`E!*FgJQ? zhLCP;pOw?u&bW49>Os)AZ6ORV4;fpQqs^_}wf9*>FS)y7e|@%f{7XPw>>{c`TryAOE@!xAg5OI&cdWV4Un2P{H5EjtS&xM3M8WNf(a#%k8 zHY3!Xx?~)~yF&G-%`CDi%jeQC%|u)a9e60H*;smK&X9##;84Keor2r;c{KO8iNkiO z33f%ohnzl5c<=m805Gh{7$-GY-#|y%=W}nOjtR6)CCCa=WZ7{Ape|O%Yd+9;~r0hW-pbWFa@7^b> zge)}iwjG_`gBG7qeRj1da3)~V&#pHvXXus@PE47n4!9v~03M$vg@35R*A^!uEr^n_=u~uZJ_De?Qy=D$6d20OFHlEZ`fo|AJj&k*4A0 z0_IUWgj*|S@JGvHHmw4@WybGBQ;sDpCC%u&YOj@4%pt&gVXBzi*mfEkbIH1V!l0Rd z@zJDzD7l4AteW3%P5%evtN>{GLg0NkYzpeK)j@3)a!<001{_SqHuTfJwqXMz z9Pk}uT%J!tvl9xOfq*1IV=Xms{PV>BlF1vpDrN+E*E|Q{Q2oy%N6&AB03<7VF&c$u zOC&W_Y#ilDzl;4c)ryieKm&KmPpNXm@XIg%~pwjqe0zAUz*GF0B&|PiVU`Jjub@7d?4kNy-Cfg1T z<`iV!!dOgCsY8y!6%{ zKuqpdMfDQAKSI5SzxpxAED`qvvVN4DzGCl(!=hYT5{icWittfPE{7ukRg}K zhBVRq&)n)cHPLebDroNkS;0*@PdxQEE_84b0A7)8v4lNd&CvnKGcmqekP3+&95oPn z()k7=3)VGVONJDdAL>+#15i<^s!hw{}%q_6@6S zfY|j>01^XcRCOyljkm=<`-V5m66t<-dtU8G1B37+xS;ZWac^B<=`aF5EZw z{&SLG4)2U4B$76b6aFU{entXT;eEDM>gHUcUvaGq_UmVQRwX8)Kkqf-mxF*{wU;XT zyJ-xbca6wyA0??mt)bB4M)^1~-sF!<88K-!U zS8l(CF>T?RA#j_?18*CTCK_!p?hMZXYf-TIo7OL{p!+{!=ung^C?o%s>(HOr>Io{^ zd9CPvG~4+pbm5gRGJigHCi`jFd|CM(Y*9A`n)FoBI9|LP?7=pdGgFoBg7VJBUAH;F#duYeGdfp%sKpRH>iV`%o=EM!#xcMwV5TtT^WH zJV@%83M6WKRr!Gz0%q>s1~5U)h9>-G$ZalFG3<@iXxVN^2qVJ^+7Bv{19Z`IZv{w^ z!xM&xG0bYfMX%zn{=l}8WeB5}GV%Lu>{S|st$e5n&)PWm>%x*3uLyrb#P)@IAJiMP z)r3Kov8-y9E+L2%7=_QPc_%)_kti|^*| z=EtTsoYn!H@oi9uj?8Kr-dnnpbw}c)b|amgVpB|fuM|WY9D}4`380dhOv^#BmyL~u z)n5*ATDRw#UFVQy6;^ReJBb#9@v(~#$ft#hwoNnfJM7riL;cpPv z&54HDbbh|z;WwNVi-})gNu+^&wtBL~Tr8@u?BN{%5l!XMA9@sYwGp49jqhR2>2S!i zf!!rw`P(2erJN$s))2hf&g8XH+YU;$`*qSoU;=F;6=#<{pHyeP0P$LrRk~I-zq5Fb zSP^Hhx38|f=X=nYE{Pa($2oVo;a>$>Z-EbTzDDO-o|EbPH#8T{QZ-H+pbf3%c@+Ti zud9nQ!75QjY|Doiv7=Lo*;K*B33~NIr>J`jfbP7_6etwMU(yQDwJY1+&EbFHrFhIoG0N!D+ z9@qW&cE?0x!P=tBzzRaUKpga{QQ(f?e=5CtvU`+orc$o+*51tT0^V}%kR>MPxrCg9 zS8O8vJ%ltQqb2!J3|T?I`7{EH3-(Z#mEqI;i*|OMUpc>&-4TTz!vxq*o!DLLZKqN; z8;ZPpA^VXm!B9>_cSGkUo%dt#8%ZR^B01Cu<2F|5uj3#~2`0KPfVhl**gbguKyN&1 zi?Wf0ey5j&t-TG$FvLmbdX9e!loRs!zK@Cm}YB?8hfB zKwx^i;wqunBLztS(geOjMeAPp4^| z0RlB#54J{wZ^o3myoT#%mc4xzkbXYYQU__aGP99gA_aaIK8F@MPJ4?(Vc~cSm*|n& zrDrMV|I9m`2^~FRw&Ld?;Tbw!{!tJ(vJZ)T*2F#>F;yrsPvfC2gua3P&&@pA+yBym zG|q_k_s1iINcSH!E^#euftc-Csb5LlZq?sPLf8D^+F}ax80+eTP`(;r7w+roBr5^%l&RCw?cj|T{|yRfIv7a6-8 zv|~0Bk)$ehL&c$NaGoR?)?msNQVT~hVYkcZGnCpjn4xMuh+%1oOF$>K&{?sC^y#tdehrqAvUkgyA z=OJeUA;*x-#5Yg-M);R>iX*&AmZn=i`_gS}Z&i!xOqf3C zneK(0yo&P#L*;0s1CHT*a|RQN+u@0zk{k~Dt}s$a!TraL0Hjz0w)lv;6(&Fkrxf6B zk#509;OxYLNAb{|-^m81PB~}BFKU=lRQH;wEgPL%j9DDXgv?{XpOWQNZ+;-3baKIF z)Q6C?_=!f^$@l148Hqg2G0lI@LX}Lexjv&+Q z?^3yPg+@G(A0wpt$5^s%cc0G2`Ic{@b+%`5@Qv)d-(2ODJ*Gm(81CbyYML`cKWDET zw?3{oqK`fO8B%qFpGGr}b9frNcmffeBR1=V!U=C&W_xT8>S_vig=U$!i z^>wltxd9vfl3gOOO3Tl8SF|5NXt=?1H4Pu@8lkPr(h>{2tOqo~8T%D%#8x$bNMP6F znOD9Dw2Yo*w5AnK%7C{&c;;CO)_1IJZf%;kC@iM`G!+}36nI-T(m`+Hr(Ov4e+u!4 zdwUI)PlpZk5CIX>@ZQ z)NDD7Pn1Dl@;wiO)A>WNAZV+)K)o~f zdPC($sJrOo9~yHX_!4$l53N|1Dk0?d!Mk?CP`GA4DlUUy>~QDh86@X*HHt;!@3kxo zBNZo~%;fURG@!@y8r*Fi*a0XbS^u3nShFgJceA2ALdI!}Fz40ZyLPr+Q;@&-Iwd2K z5X)r3qPQ}8Uxv7o)o3QYxDjM>Sg0ltsg9&A`eb z{{}d;!5RvSXO-+K7N)8I0`Yl!bU# zj78ejsTDs?IR#&QKbDvZg^ispml z+$l!t0>Efa+OyG@p*#%zeE(y!UlLVi3$f4#FUO&>eEH#_VNGX9VwJ-OMj_(`0mj45 zu{dEzP@P4z8?}rvslX9UY0>r@BBPXg}u=GUT6$@x;9?y26P64gh5Z+=UxA( z4(j$cDY_h=v&4fv;&D z@S7wEipq{f_-A1VK;ahM(vzGpydE^GkH0H`>`{<4r30D_oWw0O@Gb6!OJ#p{tu;wK z?{d?l;b|uWcDxHjpeUcHKt>mb5b7P2fOqfqcrq&Xs!~ghIm;4j7dL_q;`B&R0>j%j zYVqB3mY6m0Y@qHZSL4-DD!0QsrQ!!t}> zpaz1V&-!~4VNkAlo?5zCfu@|`NaRtY!VdxSp59vuf01(04OikTc2|B3U`a;btYJ!# zq!->Q1~ks3BB5kNLufdyaNg9e#P;)QkXR(gqY4qSkkfv}Ksuo*r;}g`Ayp%f zcR8)pgWcmjXm(^CWwsNnv(=3lHVoPmnr-VMu32_|%uoyG@+pZy{ph@5Y3TUzW^8xi zp4#MJkbex?uByCTSEWrfiD|%BR~{EDfgL5w%<@|H;&30Qw}ESOhmQjnIW_a^>1tj6F*Ez~x1Io@37>{knDr5B>uzvp01>0ijy$Q%U<@_@8Q!U&Gv#(l3OV zLl=opn;ibgpnJO7V)9sb)w;Jng=M@yePpOBi(Zj$wRF6U4 zz)}Jo^*Z-~FNlXo^lk83;G|Eofh;}%(?B)^4&GN_Bn+kp^*B3_%ibxj$iRMz1HxmV z`n8u0dz6N?ml58TQAzPY=*U9bAJm~y#mF2-yR7Uq8NSm*v`x0XiVr`!^B0Pw{7^MW zo^D(I1VJ2jSPdq|%i=g*#RofU(|y#cqUm46s{qHPB%lh1BCLT}zd;qbI^Iw8P4~;V zptk-`sh&iEu|7PfJcYjd1aiO5pavcq|GIQtuiq7#H9u}}btYheM5g3z(sx|k(Y<)v zjZ%NWQbb@GK#@7)WgLyL zENy~aO*g1k%@F%bIBKVa=1qFPEq(TClL2Wp%YI*oEV8x}McEDbvRO$-X z9n@d2phN#OJ-U~wxjIW?pCk1lCp$mh90QQYKzX=wj4^qYen@4YSuthKl7}s3BK8T# z2?=Dtj`&f;21(^>NM+V1aaej6KrnCkbz=oEwRT%Z_cR$>qoX87nLbYbg!3wKE0NON(qrdAGE(|$6HoGgKzXXM#?7=u?5#$`6 ztz{Wt)sv<~d=BRFm)8J_Av`om0qPRd_KY>qw2~Vdwrd^SlBc5Z#q)iZ#Xu4{l?X&B zIPg1xPzmHUMDAWw1C=`M=z3Bs_#?L6hN`4g3Rr|c^DHp5AdKp3Ok{bjI9R`IWQ_Vy zMV@g27IT~3zA+E~>Jh~TvrHVsbT27kPlx5e;W{jGPyzTjqyGD7G4c;B2RA=K=?%BbS1t?E5SmlefnT7|Kdd6?WGh?;M@TG(gtpA3{T09*1@No}E9T!m+pVKd zFp_@t0HyZ8AYzF38BrsHdA{xgWIPiTW#K0JYOheVJg5>s${_uh#XhMjFp-+7-Guh?5<%*<=){bL?VvVn; zYy0caYinyG=VI0ZN}jaB@aZiJ-jcU&k;utxIT|brSCIvAd#56Pg_-x!D?Nt6kS{g^ z4kOOwU}7nKy5bMHZR-%Me7G8>e`>s7)5LoE!WTk9jx zjDeLF+%46^WU^r@=@QQr8U~f|%ZBbT47m9Wen{uLm}}6L5Skr8TSs<#prR;?D_?A{ zUF*J?*e6I@W&^?)O4Cb1t^Ay(c}w-&13ubaFp4vySgpFe=dUBf?1H#i0mJ5%ea)rZ zws6lvkAZ|iWC;D53r+akKtN?W_U?9sk3^@Dl~ShKw^X77&%TbDIBsdT^v1UJk;l2J z9QV7>f-a0DPx%I)afLLI2zkL|p5$yc6y+I}9z9Jbh3Rm?B7{YDJ4LROJ5YH0=9W)- z859vcEO*$y5inW6mzSh}YQXbYotmywmuIPZRvwEpOyj0_V;QC4bo;rMENdm{lZ{aG zsVhAWjp)7OgX~Pz+taTZuA!aX!e&}tMQQ>oZOt<_rYVtSoh;w=NfP*rtdI=I4n(MVE;&; z(edW~n`Uwf*r3ifrs<=(_0lyBvfNL5f)L=@eHx0z6;VBK>VHC;&&`bKXxS&*1qoko zICN)v(@-ucO#HK3Yw^P2ko(0xUh*T}b>MO;p1a`#ktaPhOJxD5wwy8ZdKO9*jIIBxQdX z>GjPAi?e=N0=FE7&CpQCFWlu^Os*Wwe*axhhXqc^>wzMVb_m3xQ#+@xAxZsE>cQPa zWFKh8D(GX~lPc{seql1>)+*40`H09eR@@q@Eewe7no#d?owqo{Mr^~s#NWp{46~Y+ zT2{V;hGMVT%2yJOwwZov)>L>|1c#lXErfmzUD-Gyp7W81R(hE~Nr1c$04ph&#r`4v$>S?I_?$eqy?P~7l>($mt9Uz=JoRxl$Cn2mpd z7GXaFzXicd#HtpQRz~KjV;*apK2l(*xf-LwtuLOZ#1Y@yhCzKP%_$COzQ1a_6~iGd zBXM`Goh*crJBY}lE1ISXwzjW$cbAlZdRnGc&c>UG9sY9Wzs_8Tav_X|Ic+)xAUsm<%>;{_d?1!oVv3j^(_EvK&bO7mDw*KTz&J`E*ff_BhG$DgvGV2xR(d6h+Kh9H-kYO9F-l@pq8TK7>3frSva znd_n^?xD+5DJVz;=Ggf^`<~S(8Aj=^IPZW;d6t!@O*_-*MUb_s@U-&-t&uMtG_&B- zkp~qN?=)-nCVFZ|CbVilBb_`pFtT-HpBRyyNCXrM;%?q71W~WxG2?m! z(O$AsfAA^~u0IpET1tRH=J{*b=mS}wT8l3XIDe-2h^*n5*_Fv*i7ZWZf^ERsKCGDd zoT?>G3~sUM(?52OQU#hCVu1q^W_~G)jCNqOoi^HrHGD0h>hiRP1{LUH0L)K$NFwcq zpgcx6bXVG}UVD^uvA`<<(u0aBG_tXOI}nD4?>Z6+#Fr-FOHDiCTDnsKPMV+SITfd& zK2u#6n5)CIqY3Cw{^OIn zqK4A2Nmhihju`>|SxsY_h)d4E;OG4wAOsU=lkO==Ij!c0^5C_R0v&ZDQHs#=A4piY z>nTvJyS1|T0xm_X+DBR{de36D9_uv^kOkkoCdYpd$gqGdxLBmVy2WCjpNj+(Qlcrb zz;8|V8F;wcle&C&x6F3eX@OxXr|SW@tIA60%*LuhZQt={d#GVJuT98ws&gutuE|Hy zFdYRU`J!JjmyIj*WBu^7R%$g53YQNJ44}>-!iW zf0J3Jz!-&SD0fK*mx}r^=K&hxg6dC->32_gxnVeFl33u*7b|lpfZcpR@)v2mwwfGk zlJQXDkfoW#mwhw;?O}L&GE9nOallvx*A!s@p|Vir@BGI68xG)4qRnCR5`P@rtAmRM zqLsB|?N+4o*SP2sM#gIKYD~=>n>iIc1qMuOG)H-ABey)ngrH1-Qi2RWjMjK}w#dpz z_<4L@Qzv3%Jvl>(k6wx#09t8F{N#FCr39KtY<$ByWTLIg&Nw)BhqTG6JW0+@b#9h<73uFYzJ;5IWcr&rO_W z`kQL_OV_u19yt#r)P3y&092vSJU|E@L?}Zg0{P00>Jig+VxB;5Ql#7T6t^fsmboQa zzLkOa*J^5|bhGB-Dd5IXlK{Q*zbFk}g7bi%IAmJnH(1s!nbFyW7fnlxG>&A&Z=XE*;49csr(2 z2BfXW2C$etWf3*~);OUp2V%)sYLNA>Bto=`yHq5);;M456+W4MeH|xGFx>eqXqh^? z$)k;g1ABaO8$_zeSnyg1qM zO8C(L=+XkCuAF+vt-&p92_iJPW&W<$0cL9Q%C65n)TfmL%qA}5-x@t=arAWYQa##w zLP|%Ywqe@lyY1YU*E#RqUC=#YN4*<{Dk{zDqSVzO9EqagDqR}V8PzObIbhHZMS;)| z>=SEw&OsAQbNgH8?EVP3`9o5}TiWkPh>nmHz8{@xy#VBuzMQNT0uzs5>q=2@bgbe~ z{)MOS%4o1|cL*Zpa)}zoJE$j$R2UyktpoAf@1Fd$SoP{*pM!NLCvaUAI6Dma+}vD6 zRjue6^-79Xhl9qDQ~)!M z0CmC{*dJkA1@QC(MGupinJE2LxKw}Fu2#A7z@Uu(8V4Vgb7nS;0>DZ1kC|hp;UQe( zLmEt4(OoVaH#T(cw|%%(#a>e9ziNqqYVG%Zi11|a#^>!f+p=z|CiIS(% z=HCY^g@XLHBh({4BNuGICU-#Ax(d2g%c`yn&PyMBBI&aJT*Z_i-fO?K{Jo%JO+%+wzSLRYN+kbzTtobqh<<}V7+wEmWRo!u6;MJWGs?{ z8qhPQ729r=vdPUa%~GUX0`e(QN1<9b_0^DoIc7+mZ+Z(ZsKx0#zuG$s$k%l-r(;~U z2ubT34< ziRZC~B=>nh&x=gPfe~F0(e@^LZB61}Ri>FDLytIBWX;#*7CIFk(kp-dk*^piH#Dtg zk9zT8(NkH~0X${IWlKv)6BG!l`Urs|f&5UjuB&rvGM@Y>TCt0*`qyD`ZrA)?(jokp zFzx(w80h^Gm|WhW>*i%!;>c#ID*u6V`4kikJXsu*H%DDNd#kScVcL=`npvS{Orsn%nT{q_?urgPMk*AK=JjEoSbIhgXOrszN-aq{IX z<=JfK{i1q1o>+GZ%*%arnp%{Q$#W9=@fTdMx#E(}#Iz#QWh!!NP}ASCy=xDVwicAM zC2o(0t>mZhgyta(OcXmkJ;3AZH818|8tHp|BK0BP`2bz-p@Y<}q)S#d4DX#h7hA=W z88x9chkqheR zE|~7iSe@kGsP{$3-|~_t`uE@Q`v}IE4T0?_ZZ? z71#RBA!|nFPAD2(KGWaz$i!-ZdV0*Qe3Q5Dbor}O=5%cmuBXqp`L&U2m05J;q@jfP zbw-ovE%{Sup7gI4y`|+nWb^q&Y`$g2`pmF5qIG4!@<)eNf#c2Ri?9G8`xYvdlL(aO z3m?FXmtpKheG7PMS;HydFakHd*-WcyEWWsQgjk_X1-DW8D^EeMw3*GYJ95K4o{TE7 zyz3sx1l--SfwdJ0D6c8F%m6>WAGF)K+xW&bx%BANNKlRKq7L$Uq#E6S%5bRl6o0CW zK>Z+YOFU%`x5DXrRgtVf4a?kI(nV#ErzM}2NwR0jGw}bBhtYtOVAl~2A`dC~c;iEU z^3JA$N*2eih?JUZCI`X0p`1;#|8gU|U-f2)#>ASFm}tU}ru8imk}m`5{9xFTJ=DBns`9nA*LQryHtf}{h- z<>ukEt;MdfT6Xp1Qry3V%+hr&m*?(XP4+0GT?$oRnC?b zETyl(yxsMEnU&?Q1IO*_-?=WmR`KCH`?`{QF>@DVZ@F_OzdsP?NjM^So?3a9v7@!i zRiImMeMoHt0&PO~&h1RNj368xuK-k)9UsFI@?;#}t>A)5t>-e;@s)X*0!;Yls+C;R>}9G>k3{$tUBn>56E zuJo_Zo3VpaFt@$n*hB5bGrRPM5EGcax&8px@FYqCV^xeCAn1~s;E(k5Na~PL8uK2e z8~oAYLQza>=UDV0+m>;p&l1gO9MbnSW2+sRYu0U7etU~AdS~k{(+$Qo!|pkpV`Eea zDn9RwiEQ9Z=}x)?_JHp9ji8t&g>Z>PTBdPQKd(cZn1Y9MGoe9+n9WaiiZ(>;gn)`Lf(ybW+`l(A zyTK+uC=)aO?AnjYsJRZNl`n<6d3qrKcY9)~VL5>tPp=I>TP#e0mj8xspLc@_GZk541pXczR~b% z!?x;#S)y|#%{h7)t+n;koDkYC&CXMx7mE^-5*C=8MrH+X;-YG9Oatn(&@RrI-j8PU z$RNf%rS^u4QR#Z%GsJsUg1fqG)%`K|L0O%~=a?4aACE&HOlBK8Ch7~D`OmdDKBOcY zugSfjPwDgL@lrvH(vk~qn%qE9UsV5f-U$0r@SdFf6`zE49xfKOQ`)c}uU##CGh@)V zn>v^o3?kPoVLi+`z}TFfW&sW_I93ZMp^G%T?Pv*JgsJn<^kAde3^{u39Lk0$hMSUAX6 z*T>?JAHSe70{H|b{=ax|w3taz`~I1Cy_?xgXjPb{7Q@wbTQg1oD})OI%P1-o0c|7y}5EeD2zF8WP}xySH|9 z_RqOCex^~WIiVJrX<+P!JFR$cS|~F{Q_q)h)uH$<8Ll8;rqEERzOo7{(Qy#+7O1)D zrMS=~FR_>GlakR=Jb~0&c+IYa64VSRJG;l*B?)Y{rG^^~W;yp4fvmU7=jwM=_QHd3 zSx^wB#vmr(Q)v z`i16N+|d<3&N|GlGV#upN2a$q_~?eXmJ2~w zaQq3wQLPe9Cp7hvX=^V-LuTxr>vx8PwGB>yk{=%Gw^~r2?y)C>0T+Gsee$!y6?rB5 z>0cXSG=Ibd0wH}}aT<0+r(IqABDoL5nyicICZ#f`B%A?KFal5w&(Bwng$&4YV1Ou$ z$Rh6wZQV%r0Q#BqA+O=WT8pVGM6KYlfxSg}zZ0d&+yoM{u1av|!cPV>Kwtc0V;fYE zEISYlDkW9pSADp}jP6})l%Gk@&9P~kfg|Xp8gwNQbv0MeCqg0(#j+k<=5!qXoUuP9IxL)~u7<(^#vc-M*cpOfc#j=3;kMks_WPtjx6?xa$DlzA1Ew>yKZt zP$Gmw6}ed`r-r;o6c$!&xVMlxagL-vN9lh#wmW+H2uzZEpSi`j6F?~VgPO6uN71rP z3KEAY!SESntvXwTJzW(`CZG)5=17Ou-kI(GC$A9s(P{LV;k9FthjxQ%nGdaQ-YS6r zaCRrL6+|{4D)2pt=TNra^>1yMS1>Botn}*xoQHLHSW655N6{8ViFm`+D&eVucUzTk zG{SZ_<23CdW06$m2q)T(lZHFzk+(CYoflPAiZvK$E=SWA3Qv={R?U`e@5OL5L01fQ%_{ZD*Go=M8}+B&ZEwMfc#_<9L$(#F*X?S}Jv9{g)_Y#Mh&3&)mp) z`}3L6&4NpwAsC4XxsGOvdnl#&vI=N(6s|8_QPr)SHemdQjO`9r{74o4!=XRzdJ}B-Yb_=1y{p%_E zGew9vR%Q$gzq=!SmIL7p7wqN!RTd93{Pc5@`wlPj z(@juU1$+b8)o^4z{1J=S!4epusdksDURQ`k_Scs~~ZnW}{rVssQCk zA8w5(>D=g`Vfb@n_oQrw#IY>*R8KG`AheGLB}Z~uaKHuJH5WGrdIkboh*!avUkA^; z6WxXLPBW`|SPNvy-sX*@Zp9dsvvZF2Kvi`=6h^;t`Yjo zJGU!94_`ha^eXCXv)cjVY{aqBL$`LbzEU+AEGvNT7%ty(+u6Rl>QP80*||LXPF@>c zWVre(_t{-zUR#zwAxg7vmm7u0DsT$j!|bU1thSz0hC*Y1gr^t~KI8p$(v@3>NCBf2 z%+y@N{UB&M8KTOVC8My}ji(-^%I-fqM#9xRj>vF~i{1Y=(~=nJOF1v>smBgaIxXc} z8^?lvAq`bS{?6QZOCDbEm*7T721k%ZdLxM!3?A})>yZD()&8tOBp)mYn5YQyp-0VM zL#<6Fi&A%toV7wJQl2B~Mx8<7wnG!Bhf+BStf#|l z!1T2%OAxo5;zEH7uT@4RpxZyr1(~`%u6Oq@eM_l!-7j>cLwyy$!n~HezpF_e+*4Dh zH_<`kc&~VS&sCr{Wbh2Mg=F8YZH^nKhhB6VN-Y;*gX1IFMv|57H=4udL@`*>JP!M> z)iWl9i<(gLUvgVLYQ*!8L+q?B!g63@YF0vnm@=ick`4lgb4MB@R>dV!^%e`WXEciZ zJEz}3B`@^eb9;epJ+Pdc02G$SZu@<}rz!S3U!8h&f^IffU~{Earp|aP0DoZdBI+LH z^lVGPZP80#;97V-z*P|1nwA_bOC%;?00o-)aP1_HNG*UfSlT9BQr5bEE!JP0Eqc+R z(SVe#g&N=VpGuauN}(i*XqF?NR(l97mVPCHBS`o0Yxbuz-ufvoMp$rp)@C~+3@E43 zU2`xtV2CIC#M^9=LVTu>N!>Rb6ozeGSWbj@d_$6N`2)jHzVu^h_OoLiK8_Di@-)xvIT9(#D6}!k&1! z$A%2$e1-t6ZKMZ(%|f!ghn-O33+#~^SVbTLvMP?)qko`5u>UckAn-i#0n&I+CP8ki5{V}wzuor%n3nT63qAnrZ=#4`!Abilyn z<_XPTT5FDyp>1oG^<#nGcwurT=qQ|Qi51wAM?w~GcBSjAz+zm9;TrdOQgdEELOp_) zIF|m>QK1SiRi?id<#VQB8f<=T1=sBq#mv88)1?s1JB)Fgzc1{RYXA35aE+}vm;6jE ztss)+5HYp zP_r#D=V6~~9tE;+OOeeH@VMS(wa$VV;ed<{v|HUy&Z!tK`z}Y>9k<=3ZS!zAqT3GgLEa z0DXMUu3RmSXm-UtH2mVfF__%CI+V=mQ3on7sELn)p;QP?Vw(F$5g7%!RD1-$OuhB~ zclgLfxAHRE>-tW2oIj$2c;9c|j)KL~V#%aZi}U05fgML4K9;h@-)5oXckxLSW|}^* zJL;R|D=TIA51Eojcf`lLg=yM~Y_$8o>Jk|&2*veY@tv?Dpev|(4~c@9#Hdm~+Nrz= zM?SwNX`B2s&ttTW9x|^G_F;gQt%+iF@`eQqZpb>sXCvOpQd==MEV1yQQ2-eb7U28J zzCiPwE<6~}?(uXup!7lxlfx3SZRcWs+xFBHZBicw_+iErFDa9fvOkw`D(L$I?rW%^ z=Ok`Gi^LLYfwZ6FfvH4>p*up!^@0(S zMF48-k&6fHU|Lrm5Kd@VrdQ6ZNte6_D`-#VEIf36NvmF*QJthUAJ-MS`^msey8!dl zv?EWms*2(zS1{(aP}6zFJErAXsI+YfWq1?(;2{`}hpQfcWb`8tJxEQ9P=*#RM>V2B zgK(V%;d7_fM!AX<(CO1I>^KG#!(KPr|8u3hJoNVWF_}OHozVdJ+qBPH ziTkvN35@sf0PtbvQ&+=3GjZ&XJ^M9U?E(>L(#>>erdJg}T9L)!xkRD$bdr1IUIiau z?oSqDgk?IbPGR=}#bHqdJmkoyG}cqBG{y3@Z6VMG>>~rZy(U+{{)K; zdyFi}k~S9cI)Bn(G?pf!m(i8#Rw(R>e^W19N;%Z6Zb2ip;NuH=pPiN5;mnnC*m6(y zwb3k*79&z5oSOSowGbaU24Rks`f-Awax(Di_Ho1OTbSsMHf54}L>#;lIDEYU-J{Bh z_(CNt<*mR9qoH7VGB01x^cYYB17OGu2P8Gf6f((dlOOw2>pVazDy55+@Q-}|UGt>= zUBamE)6UAyoLp^&Uhd=?O8|c{6wx&theVj?gCjBd+M$+#l0r}TK}RO=j9^2#%0^B) zRPU1vq8t$>;}XOKo8*a8L>hHyAU4MJ`H(z^n6LFJ6NCB&b3pY{Y_VU8BvB@TbIl z_kDKoEx5QSC=oZ!APRdp&&WtHF`?fj_$n_Em+vH6S82jpH$NT}nI`8u2iK&{^E1$D zfpcdx(%)2L6Hmh+C;OkOK`^9?rpj-j(AYC17g4wIOcD5|gKtYs*@#CPzv$sQ{h7w6-GB3Se_(oaoVdSHQNYGwu5+f#fF9lAlQj~#OkvJ z%W>VOEJOOFHd6zzJ^@(!=7>9d6A>PK|1!(&qov4;IUD`wJj`G)j<36}WPqoPwDU^o ztCvY3oFWpC5S4-;b(ZNPCy0r`-F9Atd(nkOF)n?aI+zWy9;@jN`C}@yXE+7%?w;u@ z#qu_(8=dtLvcDMCW8VIEGa)*G0?I%BGC~VBueXGzBxf}5$%Nplk2|{$KP)dq#wpI1 zJF3Y^(v{!tA*M(Wh1((RPmhk#(hOOLrUEY}hnqut)cSr0j%c>WEP-Gdlh9fNMag89 zJ2bKO{Fov3aOq0KI`)&L=xM(0(kXcU1C=^WtzMJyexOZ_?`IWzJiq{O<|%X2V@}du ziq0hM`$FdoLv7b3dxA4RHtW}UW6{dW8Lz3_+OR=q=5i8^LryrpuBnU}u~falWp{~n z%1ry#dErl~B2~lvir~G&`ICG&7vk{6uCLOZro zO@9iSYE@^=r)f?(C07g9|1oZVIB({pCcsO=0AaD=JM5eJ%>&J0$qvBHA^dXb)?mD| zuF&<&bH--J+4GW1%?qk+gXOc+wq+op2!xt%&IS@B={_nRM6Y1QA(?GfjgDU~?^+Dq zwT zw}5xPc>NrnnO$aOX4-RRv)c|jG_MIu4`Uj{^Mo60b3q_J||mX*SF$!onaSyqD`4Vh{W_z^mY9JWt*RYXkj+UaMvuDt>dzuGaz!K}%hK_T0x-A@10L|!^WRZ?PsPoBX z8uiT|0UvC-6dNdr1|;G3zXJ(8=_MoNS-~HgV9gJb0x_g(;7>GLc)#YHxMq#4)cVTG zbFq%FlS$ieHnJ;Hx^!Hk>uPx$)7U4t1IOC|h-0B}ankgFRV&ds=sQgjVtB!#jO|mh>{8}6+|y}8kQc#K)4VyU+OEd+v=<)W zmCr?>G6mni!9G)92p={VB@b+eZQb#+X40l0iFZ-$6le%ue8;7tmx+ynER;uz5~S_t zF;o<*8?ypsH_16dJzD=xKVw7E+L%C7i$ns<#OOeHO<;i+ zt(jFQuh?8lkhaV!1Q zP1%|+LS||w-%ziM8E2tHG3?90AHFL^eBts`2;n*R>fZN{{Sh|GR9TIcYj(@UwkrhQ zYEmnxsc_xRm(XGGF-C}Q%rCPH!huRmwO#}pUwN|oUd&2-SDSn`Q*n1K2)*jSV6tGz zJ$@`2tahf>;uBViz>&%3?d4E%lppv;kc15Vfl$GHo>a*gFu;j7{J;wO$p_}ac+^H} zDMTBa!KP!kl1NkHCjc)5#Va;lhm-!pmiDF`~Crr@-MV~E-P z&ePxrTL|;9S7-`(^b6NUbCy~V9sU-;6LmlF#n0GHgHY^$XtlI@4Y1qRY6(ajR(BLO zE;e4>^9dHI9}&y>@mb3K<jaB+*WDsRp zXu9W9u^c#txf>6J;5jpqG{7^1I(H{Vz)(d5wACj@|1TX=5J8H`caXIp_GP^bLK$1n zv=8MD0=(xt65Q;wSVFT|4Qfql>dF=i4Vkl1 zk|9kbR7E?Bhd!JB17sCCuvtpMWXVGH&x9QZ8vT#?8dGPe`08tfibK^dkBvBPV~mf@ zF|$MAAh9Ee9GqhMx{3?YjI^?AZWd7;Z9TLuLEZ$ zI>A8Mr|VHbD?HjXla+A%a*@2s^pL>biIXaB@1(@Y4I**~m;5^1juf4=>$^DjIkeIB zcyFC(hjkqvG>ENq>WXDYXJ(Lr;EV=)R!j||xBXH>Vdy~5O=~1@hqvdtLwKTOEcz}u z8jc)<-(U8)0ur{i?Y^V`f|^)ISjr``&*s?z#1cgv(;n7H;kQizHF%ej-A%6STdk+rC0l|jj4Y3tKvCA`~r10 zSgu?UDFngzrXF2syU$kQj9qV(5GK6xlS0qBBDmB23Nu@OQh1FQ3pZO=1S@9}7IJh} zwFME!6)vZ4rZkquag0$5NM3e33#d=1kj-<5E^!C6keVw(A|DABvKvsdCq#T#C6%_g zrM9zWG_i+%dIp>s(PVC2ClT(gX)`4O+H)taN$SEdR>;*kvWDW=>-JOO3#4D@Ai67@ zO3L^+u&8_{>L5-`drxkH_#tJ@XKI~bV}m*9L9HdxgCMCvi92sZ>#+IGrn~pKaf{6h zVZNAgaYc!g4Pob#-3i$E^`jwP7-X(27qbgr{%!NxyI5SA zxM*0-@t4dcf(%g_xI#k@!*r821|(6)MrKQ)Rs!R-t6zP8znhKJqsPMy^6Q9(i)_KX zNZSIp!NL3ij#$;tHOw|a7vMpVkd4{H(}8!4@B_x>KadU6_j;~e;wkYQT+$CI^z$q| z{J(uNWcc-*Wp{aUmVs};58FBaZz`t}^wT)wg#TjTk(Rj;G`Iq*8WSA^Ay3_t&PBaV z@3qp^@`6jw;Pj8u6!yByabB;kyIZ8RUnHr$P32|VjsT|5wGg=)_DlT#Q{u(`6);kD zon6+4T86IlX6!R8d2d~{{Y|J_ocg9YrjW?N_K8RNMO{eE5ayzErtzfRtAjCOCcip! z{3TNgXaa{n;p#(&u3URnk)BKYzL(r2h2EP z>qd6h)7Oe<&jLv20O{j0zI*&qzzfO8#fShbdKA{ZeS*~L)zsfe0L+4dDeQi_?!$IO z3H8fh5Kl_<4ZT~qh5e>pP~VGfqlO@s{Kc4v)X$ z=n2wwbW6!{qBlp+1ocmu-4Hjr^z(0pCQFvsbjx4$j+_q4InDJ*)Q567!yY~iWOmJ2 zB1gp!OrN(DL+LgqhA9A|8I{5={(O}N0+zt}vv3jG8QZV^&^hHnTwyNra%D0a^RrAo z3rUe<$`o$@Br)ymw0x|&H{ zrO(Qi)3T7|Qc?p4_c9Y|I%H6Lr(c}4dbc)8CJCb3>yTH_$x|ki z)?%c6NCpRRp%zvzq@sEd3O$Gz!#?<>rRkt0rMyZZ1TR(H}Y^(rw24?HrGXF~EUcr;>G)=LKE0c3a*b z0qp}1zOXJ}^nUxVQ=V~%jEBckQGjCVwPo&RYgjlkjp@8*4^QT5v8TgrX4yiF4$!3o z4JALBQ5081ZyQ|7ON-CDT=$vZEKkUY5}nQcN$u%0c3%H5+PslU6I6Ml2_EKVcX2L9 zQwfI@aAn52X$&`lhNhiKG^=Hn?>OAdK4E-pVvje+s20rI@!CS!{6HI=k8_V5$8aRW zHca2V;0&*jzB!ap41YTTCP^BpY+s2q0S&^8lQc`-_Ppgi;3^&4K8Eq*25PJ?F1$FQ zQG4Xr8q0FDN>kDA&Y22J2C8{uO2c?m`9$jvqA1Gap{pb*=m20kSg!;IZW><)d~q|t zx245Mk00K!cx6)cXaLq|tFpif??Mwz6f2n9J&!AjB;DWng&Gck*b(I8T&cPyQxy2W zlBZSntbF@#Qh$o;7vhF~6P7?})ZV!l8j3E;A+CxF+*>4kbD%XFuU$CjSVe9|;Y!Gc zQo_O5CD0yw(U}u%m)SK76*Pd84Xc0p3449E3AC^Z|KB9QYQ=t*>@H;JVA|uOA^Wj9 zzsIxcfTdJ9gvAy9-CsrEfD@K=^W5-)W+Y_LONg7!lfdAjs-b{fGI7cwLtis{QZ#ox zQ#b#%Zkxx@a<;-0o=#X@EL%M$dIyFGw)>$A#msUfuqMF|Kv9xW85+~vtN@yq0bb#Mlwzs#5TSe@5rq}Ds}FR6p(fm4jy0xrmqiCz4uC{yhbRy`j{?{5*iNq) z*`uW67vMc1sP}x*N^`dZ7GYb3Ze(zmO`;Ha*ENddH9fXvTO9a?`}bINtSzHh8?~sg z+yp53*8!bj7gzUTWEHrU0AfCtZr%%3xmkgZRM&~}b6M@Q!-Bo7p1PswRkR9eN#Xr( zyuT-)IU?wiZah!S0M^;~iSwgP0bf|V1U-&_%}sAQlqe3mFS2L8vcd=iK@xpoFjMl2 zr{-g>x)+&_W~A^w=1-?^7y+tOnSDKFG>iS`=GGP7@gv+Ye&XzsnUHHGO{Li-)-1uO z2t>H&=Eb?)AUneUkulQ=XXaQCPOgPf8SXZ?PuTP*@-@ubM0nsMX->JJRPSdqp z&CWh{el`KSYhmkQ2|gFz*J3tYE!cu- z&%-xZPO25P1eo_@Ec)QaBL8J*k&L;0Yv2oK)?qCJE8s!DTX=IF%3`W?1)Zkl#k=aI zOhXOlcn&&-m_Z$)f{~Ho2L?w7H5c7~ce7=uNR?05v)|`nA=jqPLC(0!J_4gfGD_dM zw>O0Je(#Qgw*D-}oe5l3v+DB_sqbwqT>X9q_`OK5wax)3xH7H!p!H5s_R((@Xd4x; z0R}CaR~P+@E=Hz;^o2@45cheK1LBz{p5hrO@Djz#so=LKF2q?suE@S`0T1bB+2fq5 zlHd^K$=_AzOi!eg8ZU+E^o<%d`y5QONU<#GTIblXHR}{5XsExhN*4F16(UMn-i-m@CNG=4np@ptU+=-e%)QjMXCU(8-eA^%s80*ZBCD7Y0ZG+Ljo2jor})H9A6HJy%f1+|Qp$o} zRlO6zny9CnWNyMP&9u~w)L@0!-?BT4(y8f_MI&k7Xg*g#W>q{uEE3ORv~Sc zUh=~3?D@QCM!)}ohUjk=pp05(&LE+VNKd}Zo0bvRl6A%Z0&1I6F6v@;10_?prayH= zNVTBCh-04P?n>OaWg`|4u#i63g}m>5$XN$tb-KB=A*=wPz)$(dG3t0*0JF#*<`y)x zS<5AFga1)8@fM2VKK&<*M5!!hjue%;LixIb=pLF_#lb&ll%B&Uq^{HFdNE^K?()iN zLvZe(_Iu(~NDU*5k z3_#DI`>(l1TD~h%nA1aEUc`ywFDnv&Y)tWU$0H}85#B)JMlI;0a%EkUw)61C5dw>& zw5}7f#RhW{)1eu=AIGaofLJX^o$g-IB6zt9#g;>Ic0YQ7H2#AIbSAnKEM%w#<{X{M z31Z==GBlfrHvD6%L(Qk$vk3Nyf5!F*88F)y0Zq5inxl!gc9*O@s^ z?5FO$jpoiF!Sn)n$s@br2s)l&+=P^I`s`upB))c=j|N-aUteP>PJG0Y;?sqoW?O)e z#S#DqXKlGULsjY8nuY;Te?s84amN0hZ}<)D0WH2|Zi9J*%%bZS&ZwYWAgB_>%~Zdc zTaQ}48EQoK!h$rRP~GU3YEn?1ki(wK_)n95W^o6U@Upe zUd|PHcohsH_S?C1ZrYo`PmF-dxEY{$=aiK<9-N+1qOuzFux;IWDEe6_Sair;I3t4U z7@IN{CG$e_6(Ii%zN=v-TU|a9cl1Jj5MG*mmPpyyy^Q#qzsZG0!Ob`u(YjoG@alH9 z4x8ay{YtUy{w#6ufC-a`&T4LOn(`e280T0YRG)DbvBLNP9&JP`vh7Qz7O2ms|GcTg zJ43tsfnqAbTnz3072+*};;qNKjVMIF)?n@rxZOZGrx8zh|8p%YpI5AUhN#av8fIuB-9rAHvXQXbh~>z=xy+ z*ah$HcDy%$ncto>I%rVefLj$T+|Xk!l}qRukHxfU-Wcitib0O&y*TUX{QAx?Szl%SU@|>-GV=3&RN5iL;?o7>6%vMP22(j)@HYR;<_`W$!qjrYdrVta}M-H2$`{OUG`Ys55ypiB^Q^ zc1v|ldf8gJ$@cLj7JEDF(k39xHY(f#(@L#a1@uC=v{6!U@XB^SKJGr!gNIOoRKn6V z(Lz8s}*tc;J`(gfDLbis-GNCH{BzIgQ zR7(ERb@ZXsQeQZYo=nFSlVXn7yQKsLrCn<2YKu9Hv;csw zj+{bZ?tXQaS(^+ae_mwv`~n`m4@o|Cq79YQw|_6{R>9H98nDr?(tt+5%XN3JDiVvg z)T`l zu(vL@=025LO8GbQeAVxX3)+GDdLT96EQcF~7~L2o(evOBV})!$JfX!h2-MyyZpt?E z>3ck_m3G zy}_)#L!Yt9^`!z4I&2G_`;Fw2dDmK^(9^L3?~zzawhSk;z?)w2)BE2X4_P?GjSm~G z*rw6ch4&!dIA9?Bd}*NWv?9|Ivr6Cuc7{ErG~ghw^!Fzz^sM1wQIFr4Q2F?~vU&n% zymhq$pb}cYN`Jk)27Kp1NTlL|_W3{!OVPTgx7JwiK<`(0Sv~*EEiw@0qMmL1AO798BYv3GHz$ zvIe%Mj>qegc4(ow`TE6|4w4H|J&(*BZkpWEoA!j|i#H|jPh&rGVV$^v-iFwL$k zbpF@%3t%M4V>#$#>yjW+r7*K9F+NEZCdOj14rc7d(*>ky1RI3dY`lGDO~rPVXGIO; zQ!e%?RV+nq(q7?aet2K4pc)M(Y@vF(T?2pVO;u@9OXa(&_6IX<9q!__izdvt-*Bs| z6$*a;jIA%a0bk0pt6tmaf$IE|L59Ow<5S;Sr`fO>Csi+6TefM>4|R$g0e7FLt$77o z;LeUqDO*Q3&v&JO@8to_%lYZrFlo6n+Gx+I74}@cSkvopFkwdy?nY+hk~U7v;L)$k ztfgP{akmh|eV!fHwB&Y@mZwbFFb8#U&sul90nu8}iPHq8&<9o-?^u?}RKcxeG)b1E z^koCk%LI3aS!0xZ2yQ*$`0L@rb$p5c4;p>K841ZAi7G{Hep@7!s=x6>2_5a5Al$Tw zaMKRtp@>5=zlc}pJSW^pxq6SoBZGfpMTUU~y7v&-( z6kHoB>AuFk6v$^AJf6NnO&+6aorZWPzh_j_L1=gH|0b~r&S4g*rfqLyhAhd;&D^~!9GLcgKbGa2`U2@} z77=hVYX-5w=TWn|Q;_jfuhp=6gMY*^1gS4_s?Qt@XkoDv(|$V}18Q<8%gWIRTLn*w z++77U3eVWy2Tv9eAj3w&d{zcYI2KTcI)rUJ@g|8G=J(7=_vJNqTO~>#=?tIc#R@j> z%NYL=iy)NNLic8dEOvStn^5xey z@Mq>3GSRc^WFvq@I}H{#DKNT)8%=45>78bzIy!EW$q^v?y1Nk7i-1Avtw0hS|zTryTj=`v9syAc?2C6qVrU4;M?C!T8seZ8d+~+9z1u)(*G9YG3oUX%tDuR zky~6}i=A2=AWMoq9GBhSdY|3jVIZTU1}L+7nEhf=M?{Vk!&weB$?OxStwAPBnH1511Y~|x3rrxe+9b)k_gV+9Aht|EuQ5OEPNG?%fBM<&)6&2kXyOA z&8X8;64~cP-k&yamUGKk9@d5?aBYMD;zijROUvoZYpn`-we8yeWxH4Qyaou=%>0Nt{ z1J>tT+u~lkns-a8nJjf@H33esmJKFbtMZ}@k?TL<)>wpz6OLSCkH2z~LbpTZG^0F4 z(W*+fwvSxdsH_V_4w&4W!J4OHw#A zw&z|>1OfhEA@7--P)4i~0o-H)vR?Via2W8{%o5O|eiRh<8IL$<7F)9;;4_;Bbg&3L zV7_xJ*KT;EI3Lke{Fu+FNbjLtk^J*t2qUZ~C4{x?<&CCk2&(t0J;{8WmmywC;!7;) zW@>R+H)b;{z`bkAJu4ZLcw3iXhiZkG@xm*ux!N-?6_LK7qb6h;Qrb(Ng$5g67|a)_ zOv$MBMoi|HuO!Sr9l5Rs@=vNch3Ow*+JmC4Frwzp0+_m)gWibb9 z>`PEuwQ&OD{1&hO0!d`AmzFZVEw*enE{hJ^Z?S5})bBDeh#9e_`EAo|C!GVA@wW z%B#Dge(FXoZa1y8LFI!J?My;FS5^K(8`P0)KRrIdTM*RY#tOEP&+5N9e|;tLz@8>M2^cQ18kB{y!VJhr48 zi2C`-<(-&}u^(&0P_*?g;H)qf&RH1ILHexXIeD`o5l+|!IoYMaz@lLWz4;Z$P&DfP za1JT?D~6CL%^mg)ykQy-M=fn7LLe4;#P1$>`xF#XmlS*$ss^(=!a-O^{gnvqd7Vc0 zh>nh)^uPgPkA-?JesG+=@U1?|--gP$(GF-M=2kT@Q2_CzU!>idEcu#BgvKk!8OAQ5 zjA>_~5wG_Qf$fs#&iUIzXb=sxM*8$ric6-Ws@`B?%=3ZZ=OsHV#`a$242xdEKLwA=d9!c|$<7vE1Cx1(iS0RMw&a zYDVRosv3)FOPSzxly;j0+ujkopKBuqr18VQt|x|6d2aPoZ7Woa1E$+}&qZxLAK9u@ zm%}_}&O|eaIcv>wBZ}8~-@j$4GN*UllDmZ^!iV9Qqa~vjn>fwcP=7wi3>fv%|F8mg z6=9HQiBd$i)1ILry!rL=t|buLVrvRiEMSjq)Z>nqnA+%&6o%<*C1n8JNuiyr@>{x8 zD{|7RkIy-R{4uH89MJS%@3|*WXY;2w80V6;y%Y#(3JjS9=qfBK2IXIzIPVgCmLpxl zwrC{s2%HF9V=yAvCE9i5WVhJ74ME+<9YBFi@Rl|OY&Vh`xeUOrHI_~MP%eq2jU-~P zLNnS@cRyqjRBX+19I8g4qPa*;KbD7(_Ic~wnvi@TF_cCh$UvQDvs5;UN8A}HI`k8W z{CZQ#l{t|6zJ+~@bb>K}GI}CE^Oh982W9JeP1eNZRCkv8p|K70wK`75Fhn`X+5%yd z$09qQ9QTN&ev8grif$t6<8h9_4k5PjFzumyY;_?6ZzMS*n5H3^ZQbCn{Hu`mLC)72 z*sg@sWe2jQcJvOZC$0wD|F>eMWpq@ej$;dcJZ1)m#u^GLX{oyaIex{U}VIB;F`I{2mLCSY7tpFkg6k=9e1vF2K(1@nH0oSi|LHPo`wQ`s&Uwo7Yakrw(d}^p4bA+t%*8l8da4l zLOLrv<|7Tf)w2+!@HxOr$LE>&;bV(lBY~Icjjh#*Fz%fR4v6271WR8yy%wBCC>+67 z0h8|Wz3vCGIDv0HijLHvLNvyu{X<=uMzp{9Ir^L9k+4*4ag*jAHS}L9*kd4@QrnPz zd)lnkd>Z*Z1vowh#C8mV?vZkg99fWg4E}m^h|PR?Q4D0f8O!@*07Gq2U-NT);2D%H zwRUVS>XK8}f8i8~**HCu^8*lMhTztrV0_$A=B?`+5XAF=;a2beG18%#UWVP*d&6uj zgp=`t>opF4-?QF@XUv?u$g8zaT*P;UMwPCgLsscD=YX?geXP$V_R%zj6zIul0>1;% z{c*4a6ga+|nNkJp_hHB7q0-{bIRCO`6~Zpwr%>%T&?UJk`rbN_|JP19tmEz#1^}CJM|Q#c`kt>NH>@(%;lXR z1DyH5$b#XAe}8lFh{a_daNk10KB~?cg=gmj;YSf?lPDVF5xnaaZ^VzBnu3M9G2&sh zavlWVyd5xuN5qibMTORtZ4K7WJ8mz@g|u;YLTNS*$xLo2fth772b>kltDqNh3w;pS z+?nasbPagdM?dtY@0*oPHbQpH^kb>Ut5K(;fU7MrD&uTGX!T$_E4do5*A(sJ&G}7M z?khh}r?qVD-5yB1ujuOp?p-?8ZxdfbwI_0pJ$D-h^rC#{_ ziIVx0#X|VTv@yU&QSFI|grsr;`3f z6sdmK_;)~8RWzKNA^+Es!Jo;Uxp?vl^(2H!XnQ2yZ2!{VGb?5gneTBtUat_z)S;L9 ze5_L>ZV&HfzRNHgLSLWeJZ6sUazfgiy7ZRLOr1#M6DCyoSF1*tY;v@Kc8+oMIRb%q zXOA5UC^)j#Gn1bncNY)8yBUqM7zr`89or^j)A$?(*%r%P-hVAdrabZh&FY1Yk;vBDuUS`h({vA7R81Z z`7I5^_Pe3@7$8SrfMhBZgT*y|H{-^Glf@l+#kd>f6RhF|hQCeZk{)j;jC(UP*=H`w zh&@-XxZcQOJnyBrUe*~IVrda7Pa!UJ^bJ?uKM?ab-d|Se$XuI|L#EAaRZP|&h8EV! zb-UBHx*h;p_HC(M$tRe^+XS5W6GcWHRwZIi@Nj_ zp~S4#tYoCBdNI)D(}uk4^AME2IG*gkaX1DlbuB5h-%zLgI-HfPQFGB^?*)!EHV#V0 zo=vfAMZ&ivfll{`2w}U(;C03w%rbgA4`s_e(XK5);nMKMeNzPsKm;vW{nJ9>8iGh}Cd4wNg@7a5`uBa|s*y{7$aVrIqr zkWIR;9VF={xnDGlYg67FI6I)5>cTKPk>l#X2r1SanI}!#_CcyD(#(g8$I}q1tL#NM zujy7nlJ3{d-&lX{G?9;*)GiTORqxqL@&I+uHFRYss7M; zIAe-1O>#}&ubH3tP21iY_)7QP=Sdv^%k@X?nV0#5_jfcvLN9)UcvrA7N8?ifd%oB zo3J}zSJOUtj>xH_21h^0W|6S1^G09z(yv2TaAQKD(_o3~j21`Pm~p}w)mufk3Ubd?2_i>- z!k7J$9I|jI`fqB**tc^<>aWN>xu`-Mr%DM ziPHO6tSb+CF|%xNEl6IAGX@K?bD9Jh;_~r{%rgQ3*{T!NEv%XmgAz)E)=TVxkqNR* zh&!MHrcYuy)^UHF>MkNM?T*IfP={6@{i@v&iBZt<(1HvAFL|W0omq3fQVtFQ4IxOv zrug-f$#8h-U^E^r1bqqj@cg>UFQ`Eeg%u5>&DN@XpOFQr5W?m!*L)C({NVHefS71F z;Ty|!06{>$zo-talAzfK))DU~NxbbKS?j{`9Yu8w29UaUflf0E3C z5YBbJ>k;__>F*o zAATBg2tLWD-z7(_^$0?Xq-t39V=X=jUaBOQ-7CR3j=~+QzGCW@BfcYb2X@DAeRsn# zxj%uZJp+Mo?5E<@e%L|~(&Qe`UN=$-k@MpZHqwGS3vJQ16+)zo?p3Hu9MO7CU?z8% zm)(f7*>`*xiUJO9D0cwyEpz=EWC+KgxhwR`kKfYMLzS=g{i7M{KA|o_I~VL>PaU=G z@OirGjU3NN8imxb(+7(Uwh(VMB=&+mv};}uUlNJ2FD6K9%rFH|&DC>P_>eIAjqd(# zfiXr)xMwZ^XnYRevR1f9>u^a*`06Dnic=7AZHX7zzTvbVO4)W-e)@2HYC(iVera9g zCTp*MRWzsH9d65FSAKvEGsDmnBA^q%504jjSJNRx|EVVu2V0Q!>DoSmsb8mK;$q>W{NWKAN$jqSqDQ=Pl-Y9DSJpTlv*mTZt{ph_?{3F|CcZ5{^!YspM`JpK zNWAb@$sHX{+~haG`Nc8V1*-;P-HzoLyLsZmK7W56zbfGw6_b}MVrNX*J%X^zgx+ou zU>wv#pzozE6@?Dt$Jw!d&|1-=VtudViifxxmrGXTS z#pqMqqpJs$xyY|v5Q;6tA1KzB(&(>lkpJ!Ygu}b~2(KE0bIs)6G?e8` znXx%$5>l~ZLXq?3Ajhb03)K9;R@NJ!-B;jCCge>58Aeht<+zY~K}QlRcYrKGp3kT; z8M8E%mJl2G%~62~IsJ~%hisH`Hz6^x$1GCY1CY~Hl;Bhx$NPmm$}##=A@Y^{2~f|? zR)B6M|D)RI(emRGtXJSnD_eXnm=C6&=ef|as7wpD4iCskX0`7t${*?8h1a;JhRFp{ zqoiE5zewDWo2n-2&^T%tz957YNkR!>0?H6FF^tMby_OU5wL-o=i<>&IcL8FZuql@Q z<*nn2i+{m_-c2sU|e;>*XTG-Zv%4;2VfGV4;TN#jerb1;OELpgaK#K9mD z__zO3JdM=S+z`JP?>?}3X|*Y+R7c0&r-b2AwxJfPzvh`BvxuNJy{5(3%?_+(&Nc0Y21v6g~)nrQsE{mp=NuZ@gevTE{ApU9L*3x!#N5hS~;ph z1Z#Ps`Gg{anePGe#e>!XzFCs{PG{KQtZ~hXl2Nn7+ij7}1^e|1B)M1EtBpxxC)Sm~ zemUwk1iW4&V6l$*Mr6OC5Rfw^jT(zqE zQ;J03Jg6<1bb+AMbN;UmwL$`jmPE|Jql_}uP_eiyHn@;~CGM@mcHg~rZgij#_i3UV z)SH^1p}hak$i~dSOI$>+>$+>M)6x3!?n3R&);6A3445$sS;TX`P`N`4I^j-nHM3vg zU#n@V=g)CdFzQ>4ah+iDv!3g)>6p~iiQ(fL{fQ-0S~%giquL2F9DtH8reh`$t)M=Yunw^4&Bi+f_U~n@Td#obbcEJha_z zRt?0%|ji5KJVNflv@QsmvyPxb&THU+qdJ-V_8A@aQ*)0boVYXsp^Ko*PI7t z42@pj@?9Jb%X@30tjNGy3MO9%#F(=JyRb3bgYv)4D04-dOBTwZiS0edBeDD5TdTzN z;0!TvaM?Obva!{Rxxyz|0&cUMnuWq?Zc-&|{g821pKYNiotMKtEqA0#dLz{cgxxrz zNo88SA3HPkEdUV<+u)aQUTNF$&Po}Bj4yodk0~_ffuFWihifF+8N}M>KsD*>zy~yL z?*Bb_hJA>rF||>bzXS=#AF3x!H4Vf@IQ{UkbeIFJO&swU@{VjvUfTN83pOy{uQ_GH zGs(Z;bv1oa#7Gc$eQ!%3J3D7g0LEQeF9d*1;o>6-CLJ{?sZyKTz9ZoEm3OpB1#}gU zaz0=0e-WreL6j(f@-&ioSB3%G>2a05-W+D3T6Cp3WA<${9;Zn}wRphOAW04$-t>5o zOaN+N!*z4c9qd?`WvIcMT_@?OC6UnxuzX&i&cSd1P;A#-Uz6%71iiiIpg*B z9@D95#r$w?;yTpNJ@iN4bGV4nh|X9FxtTEnCKNF?>Mmbh#}Et|Dje*nM#9=#qtiy6 z%V7<_|4urpXN?eW8z_$X4Q%d;v3zjIGak`7mw9zYZ!iOlRE8F#6*S4>h8AB^=tZ^R|(BEZ=b4I5f--f z^9Q$Xzr*Njo}&g83>*qnI$-4LXDo9g*OGb#+D0B%F5U8Hf3f9ZnWW;g6_Bdwl(#|l zDks+W;J9(f8(i zMR)keze1-4D03YFr9c^Di8OJ!SjdDx+yQjvJl%^ zGI4h$(*f@dZoBJr2lxXiz=DkId;>r+x_Mt6&&(9oN?nc2U~A~!tbdw5fCpdrfn(hs zZB4S%JK3_i7#M)}8RT!0qJ)*(i7h82K%WK>#RY3t(9uVEX@=-6G$Yk6pzCFY&WE%$Oaoz85JcqkI$8Ibh71f3JVZD(OF z<~RP545lecq(nX(A>8W9EeSnBjkr#G1yBdPCI^ zI!{e-1*Im&;i?5Ax&Zws(API8#dYQJteo}Q+vV0=5U13lmEDhKoo~2SQyH;EyZh#G zc~5v0fEHE@s$4(k9}k!~&O5lp=z>bZ?|Ny4ht9Vl@DWa{w|Tv@E{2dcFm-yH`(#Mc z&B@B64&*rj&L7;e=%Igjv2I60XK(nBLZ@en~x= z=+Am;#_kthcLn-DPXa<7%rcRqNwW|OHl&<>`q4Opm@}na$18iHyh5g?M0@KKXkxWk zHVAirHGY2s9V{hH`{)OYk|zX;Xvr}Wmp{`l##zU=db=u&$c1pRX>Y~Y zdH8ur_hp8rRlFqUjxkE-SB66}s_7E!Jcp##WK+NL{NU}K2J;Y+ z>~*rKYi?wu+cD+DLM?x3ERkEH7A-FFE6P-8!juQ0zOUTL2B!>`kgUf23$+Wv!s2pC!gsN` z?p{NK-^}ZRF618}{risJFb%&r3nA?)s4JA!e^%RhYNar++TuJc+}_5^utd|qxA@bk ziwS>%4hv%_@>!tCF)eKT!F_Qd_r%LaTz1Ke27CCqrQznS%ZX(VA7r-{!_V4N6=VRS zB%rVW`cZ~&KBaMWyEASltrAAt!prnj%Y+Ggd8SZbkhohwYM!o?1pzwfn5?${`-Mv# z-9#gX3Y(6NSn2D#N9F2iY&taRwriHwuu8g@o^Yt%_!%m00;W z=b=$jq(rc^7RtqarwnEs5=`;#m83J{M(6kpDz!B>POxNf7y1@y)pbPiae$1g?h#f; zaDcC)oPD^nfT9RcMq|E#f+ng8WlKe<#^dK>n4&22tNS{)yQQ50%{MRDtH zNgsKkuV$5zmLz9#ER&UB+^~By9|Luasn6z~hqjpznx*6WPg8E|g*y&GpXRSO}5U5_DcV_!%%il+2LWNRZn~d#Cz~fSSVt7=uya5`9HKWIX z?xezzZ_B<)qoMC$;_Q2}6I-ThR0#lgxC!_Mnlf1J9uxZ{fAZA)sKA4d@kK5I7sw?B ziXT(q!~>0SfA6lJ6D?iT9&FfU+Z^^r^6|OD3^T$gvw0W26KZtXNKzZ6;!Jcwp-<#- z4%YO5_aax%UWKJrAb`JP5+&(}`X~jI0QK`3vbE6UK!0T=$z+G6p_uAa<^@K@9}*YV ze$%3AhYv-D3g^<8s9sks8JM^moq*!JvfRk{nxGWGF~pU(N>0eTZDWXs(E?^|N%N10 z+ujx1+cM%6GaVnsaEUah%8`Lc%<{d}{=D*cn3?k5| ziN4`D&nZr)SF-m2nBYV2;Tc^iVM~pDK5sg4{yU2pvZd5>+gB^jjOARjVZ9Z0rU>51e`@+!C;q9E}hZC5LOjVQ?4={xwSqD7D@`D>- zw*w3%>XI?^r0%K-vKyunKZ zfp8fG(zaf*#8`X_G`G<{B-~#sp4b9VN!rG|sIozdP%4eBC%2jvox{Ul3@}A@{bo2!h{bozbBbzQ$+plc+paQJN{tdD_tbR-XD@L ztjp8EfZNgSR}i+z{(@JH`tJY@J)Xa~qZ#HvgfKa~Q`O~;WRD9Zr(JJ%D3p0xgo+yLU^O6`YCmW3*+|v^`Trbv4awNhm z7~f{j@S1Jo-DykAygx&*M(#uMst_X&(?;j?%gUFY)D*>+RvpSwS0G_JA12TL)A~%Q zXpM|V2VKkp+J83|+W`!$np|fMF~cIGWiHy7C%J(9XSG7CkX=P=(Qi@0ib`yTOio8k zOA6>N1kQy{*kOFFFMM{BY71TRK+sxVE4#WCdMm->Sl+<~p?OHly||8P>t_m$yFMS@R_A}j@0bIsL-IBvXlttLU&hd zZM$uqr-<$|zgai_L~YKC7*t8&-h(Tl!PV`rp0$C37E@m}*<$cY+0DjyA8f41PNp-z zR4wlXAA&1MK5b5+HXb|Fj~lM2UMS-h^cN3@91{LQzYcn_{YVhA{OrbwkUyZsVbneM zTsIhF1f*SKtFj-k?Ho!a+R{RJkJDwDAW)O%Xe002ovB!G%2)5gDq{LB$}juL#Fs-J z1ef|oQ>Laf$F7yDD@-L#2D;d24RZK+cg<1?*6T3zOx>}%_81T;s&I-7aYASv3+uGa zvbN@tE*+R|>H=m)1fKa<_8C1xf~E_|CgAY@yAq4*_Zv;8WAF`6@5YBP=7n;rPv>nl z1$3n@A1kk6TN%Ztqz!@+x%~M>MsPlIwq$0SRM;}ca{BtLbm^F*L~W{YsUQMTr=PKc z-4-xdX|^5YZ0-T}x?9-f0xJvo?+uOR4fzl&~4d0_Df0;utRh%Oeb( zsM$=lAWdgL^y*ableOG?V*7w!PO*;5@WBpLK9>sod?h{v6l#Zr=i41SKO}q0eXh1 zvzl$o^5RbAXjT)0ORO?`iu9`5u@FOj4J(B?TrbEi$sCe-KKd}aZFN-mI&#y>hgg%g z*VSd1EwL`Xc&vt5160nWh5;uYv`$T~m`YgMq@bqfxtZ^;wnwj8qMl|A z6&$AHWYWce%Vs2dAQ2!KbqZNppDL*x0Hgz@j}WFFO+)xU>yUFu*d*D5cb-hVcdbrP zh%hMpdeu#oEMuEzhPwSa+ON7YN-v>Pk^rUvqnN{1B98dV%`wi7Y*|ip%<@&4hS8zD z!i<5^Uh;B3xJa6)3JbTO|Rpfi14 z&Aw_}f?Hr#c0G^CLm4$5KI6G{&cI?hIB#v;Iub99mhQmwCxl{(pFGDqpEsYU#6KQf zpKI=paa}T@xr)IlhG;6WK*cCdappGWeUc`gY&cBpn!Plel&Msd_fJZGjH3~eyor=O zGzrHumwr^90f0|coe}DVl1NEb#f;020Lt(clx4CYID+r+WuWAgM`~C9{LJ6u_;&XK zLj~`QS>CU-NtQW8?CinsjuYXB)OZlFf8;rn2y97+1P4U)>Fc2EG$d4VW(-o!y-kw5 z-r-%DX5>r}iwh?lLxy_%U)={*(xF*kgaLpfDcu1r9~V8g*ZWSHEa;0&SyQ^HnVQSd zJ0k~g`JvE8QOR;xMU((<;7yM0rB`}QZx2wc$%zt-QdsqAnJ}TvFhq|6#M7_J+ck@D zz=O*mfvWu+c?VUbXjKrJ0hdh-g-9512s|c-X`E@_1{;1*z;17&Un$ng)Pic*HqdmN ze}}m@QvW9EqmH23s?H9l`DmqXqyuuxAz)n1UT$bzD8)~qvk;%%ppG!93>ETX7-o-v z-p-_MWy5#BvR7(yUwo*=Le%aj@8@f=egSz~3yB~sL@aa|m=)$UUx>i#198JSlsRWg zcMvJzW>7eoq{SRO^FVNSX)l@eL&`}DCc8QlIx3rA*nM_e66eF0uxUnMV0^I&SaBmZ zM&A$;rP0A;1cNjyA@+q)Wys7iP&JT2b&o4THX$M{9Raqk6aL~&lNTRAfF~?v7vCgV z2*TUQ(O5(B78|K9Tx59jtu9Ai2uHKrNn1grt3z&0fkot|l_)4sVXd4UZyB@f`qg1Q zimrEC!kjP}hF34Hx~)77<7>XBhTdTJ6j`sU zwAm;8Mu_uyKcpI+Ag=}oK<6&XQb@9^z-!8yoI}I?K|l5Z(!8eCl{!~+gs1P=7oXFt z8P~NJH%-3J22SOW8@lK%03w%;oMjd1cp>@6A_!*D`>u2?7qqa2f9zBONuJOWiF8E6 zh$0_)l8LS6^2GHT%=DRQW+y|!iU%0a=okUY2*-arYq*Pb^2s~^8sG;Zu2W7fxJLmt z<0HJiD(=+h4K=rN(Yl{f8one2Z4kw=7xt|nZi7{C3A9W5SU=|Q{$ck+A#a#eJ;C<= zj*!f~PI+0zcA(sQ&QnJYcONhL&aK1KQsdcL!ME9FsrT?qM{X&xsaBSte*`mD5@(Hz zMoSo?rr_L_O#eSGR_+&GeG;tB`P!&+*E0_=jDxHdb7f0;$#?zn%(T8&pz}Qx4Rm6S zEDJ?7()LI_eLpLg-ySf)z8>>k=|+N}UM)c;m9LV3Rj41{skxNRq7NC1%oF$RW2~4o z=QvcaKK1I<#Fu{J!c6y*({V%XTH=OTGRG}?TXY7XpvqWaLimsg&AMghDbpkD1uAT? zvkBu=y#LMR_Dx0Y`fz3Qv${uOm3zIa^K4w@xnL^!ksGU{sow3J&kB6Tac3hU_G`Ih zed3CnUU?!lugoNCt1trYlOF`=FSx2O#g-`6awyn2cEmhKtobYF&0e3!DkWK2AFfie zx1>CAOVUafr#n2T{qG)w3M>7M5mYxW3Qob?1=KG*@rvo-13T=wb{^21cP6N8chaC` z4fRiQ)AgbT6;c-(o-sGZ62Ij82H;x|C-xnjq(pH?*g)a=Rs zvB0z-G}PvwqY1q>4bH@BCtULLxLNCnEcONEmK?&-+n>&}af2(=X(%UUl4dF~v%$pWQrlWx(2l-w~2O{n8h4G&GzXXTZ7mo+o0Ipd;L+SRP4xQ}mjN{0mcHfr4x6pv^G8`Gt1ZLN4g#!| zT$z;V063{ls{#KaS}(d_=nB5V7la~Elq`MqdNhF@`n^~y$a*zgC>;KN`P)1wT|r=h zf{^;**Op1OiLyven|e28s%TK3mt`ywu<#sB&Xfag-3>YkpFHVoyw5L42X(ZKj_Gq{_txS~!ufbSj?4HGkvjJF) zIg+Tc|a@f zaROAwTs(gCuiZlo#2M{yd^*G>iN$O+^R*y@$^MucA!khb0$w}R9n($&be$o+jD&Xj z^o4C}WWB@IUw*A_j7}5rlyy?P-8P8lUS%3|99{Y*_Nz;GRO0%2rcQDVUvYK17Hp*X z4C*rgHc)zAH8W0eTGcN>GJ&*0Gcp9IGl|alRM6>>(@Rkq&!H4JsbFGVd*B9q-e=AW zY#_t`A%Xzbjsfc;W9F7JT$uEzQWSjK=92pkGG8vf;Hb@tXl(}CA5uP(Sn;iuKUP;( zhDXm-VPe}*b)Ao7*f1Q_J44&uo*(J?XpWJix6iV9$HL#-6*ZT@A@N00<`lG@ng8VY zoDVv{6C&{q-x7p{)_G>s3T(Z(DDIo6oyF&A0w0p(^8;|A&o26-Vp{~c9)QY^pcy%z zbh`zTZ1_cLll2>L)8x}>4GJya5qEFb>@<(X{>uqUfQSUw_b?yDVwgJGx?@%OtQ{Y* z-JOAR<@U5_>s(qG-oOzN2irlZ+UvipDw z)wEP>FG{jzTx1zy4E~rkGSc|@EFin{Hp!d$R55&!@yAP;sZ{io(HPyOg~T zqfo@JJ;;e=i>`oGZ$Z!T8=w!LuNCdQ>2G^rZ%WihbtvKIo zPJE&}o#cr2gV_2bIkgKUHEa$}@0mMP5hWCv)rT3&fWnxh(d=*;472Pu!dRsDF`0Aw za0Np}TN{f2=&3W_9OoB-GMTI@!^xF#*EZbg^0-{-{r513OcZtFnA^U~TS=i&kif(y zxLo!H+A+U3&EE%y533v+A5aD8vfZbJp!()QYTtzw)#dPl_;}#;IG&6-u)!FgAtTjR z=X!{F{z%Sp#jmLC+!mVj3TP8#rnH+&5^t2Yhnq$thj+^l`F_j43Er@nb-ObHJ%!ff zFo}6qKVkW~hGeE8S{C)if~oyjy>>qZ!=~7KF3V2=z>frkP2kMPavz`E%H{HQO4X>n zxdP}N%K3ko#3LI7D-!(HcH|W9M}&oEQeQiLbTcyUMuUiQ==T!|$oC=B-4aq`u3*8= zxDZ>=c@Dv#VDw*`LjNwCCG23sY)JcVe7@(8owcDtbcr7>l%AiGTnRqf@8%@&Oj?|R~8~ATH<-z{Lad_ z`A)+3Ygj_|fYU=pl)*ps<|U11riZ-?BT$8FsZsBR>x{ifrRk@|D z>HpA;vM%c5CFT@P5wkW3Mw;E8S6LrVCopP%z{%GM)nNSU0R zU{R~RL0m9#XO)e1RVo(-a9QR#IAfIh!>{*?MG=(}qM~B}gkZ8cUQ$#I$=Pd^-8_7( zytWYz3Y2#}*Ti-d1*);2zfK;ysI*t#Z35M6ab0Ox``)3y)I@l_75A39mVvY@++r10 zaR9aJ!f|od6({L|j+gtdqALKua1Q#%+s#G(4=`=P&`fg;Rnu~+Nlj^}l4SUOCr_0z zy%*1Mibi6M6Pd81H9}C}%5L;-_tZof=8Q|%G7H+s4K`CLJP-P!XRGv5`sr8~fNv(6 zb~^&C3R{Q{b$*c49NA8IvKQW@T|{;)pq%y^0ME@pGAEqrF#lUr{di!t{}vhhnb!{% zndtg_5^p4dBa;iAM4w|@4yW*BsCP|JjcVg^-aZH5K7umXY9bJ1*SbMC6+lt4i4UZt zht4Njh;#F2MO2Bnw96bPE0J(>y~Wjcl0L0Dpr(DfPzzj2ij~cF9r;wl47;KYy;+0S zFZYQwgB!}f&IR2!xS%>Zqw+hiD>ABkNinY!_`w7SaViFzyz}i}KYF{cJ-s!|UEuCF zrknzeS#^tdA5G5hWIvhLW5q9nPf5=wu_yKE(?GXYj?e0mE}Q~Wx;9^sHO=f^oc}Wn z0CjAfK>mVVf_QRLvPwjdO@`;t**umM8GeO?7XEY$XGku=32{vKnp}AA<93p&ehJ#I z7<+E}`T1dB4u4#h9)3x>8j5uTbF)HDXcl(h{^YPbd9)iPbdJ)9u=|8Ai#E7Eca%py z)yIDv7I=&Y0;l~-q98uH&Vwen#)65}^P+FsF&~XJW}wMjtGg6m2s<29aua6RBI@NAE$%;sKH3Y7v=#&pU&iwd4Nd zyqCAi&%ZO%k`Sz<08^8SIk+vwG#9%aI8q{Ir;y*yTa*ugKEg-`QBhRU^Kqh}PUO`= z2ZpSRA4UdB&E04ebqjLTO2CN80wLX7>d|8|Rt+6-)9J8dyd$Dtuu>JM^7}4B$fh&? z`jL-_Qq4Ho`?&x|sNZcYC8inx=42o3%(HVAJsKngU>4>y(H%1SRcNg&np-rG)0+H# znFa;K@oS|ZvyIT;nhgLI7*1H?FdAM>FP%lft^EGA@f!bq`id-NQU|l+`^kSu&nD}g zhNXPNT;6@$6Jao~Z~59TJzXH}T$Q}5e=0gazfii%TSFJ}ZJ2O15g9X{(JrXWek)GR z=`z1Ikkhx;J?^b|f_<90(QF%{678LKK(=lSqz*Ja>xRK}hGF#l`{8Jo98ybm| z(1gPTiTzJ28nyIBfFQxmqM;p&rK3uJ1TJD~j6+l`b$y*6m(24Rn}Tits4p(snc0Yw zk5Ke8d@b^b>Ru>-`r_E(w!pa%tf`!OmHmkmaUr&IKh8Ss{rE~LaUG%TLCuUy?=AV> zDCsj#%0A#2^deTH6?$2cRz6lCmojjUG~Uz}yyi;cteb8wYh0_o{;W4=g6*5vukW*F zDJs203|AYcIzf_Ryp%RNrt*#(Piop-Yl2ec;%1FAd{e{`TsEgE+SO9^D3^b6Ff-dN zN1o7vQ`n_ikTl%It0kf0f&fV7HtPNtXk7kKP6|be7 zeW}i_a?z|`)w8t}cvaIijwRj5+f1l+%^}aU!Z%hN?Pum7w(}-+d{>2F3!{G=;pHZq zzjtqeom!D~-8Nv83Im6Mz zfgr`Sk_L)|!>}?M<0WRI@uF++&J|M5EB;L&cvczr98RJ_kq926K4K0LWJ(KrN3ecZ zuB|9RGhHO0F$Z4ZqP+EpTAb&zwgfV}>}?GWJ!_cE3d-bx#Mf~0K9h?>l}I^UclBE# zC$c|AX9CsCfF~ZI;_kpj_V29QZ2tVrTzsPcuyUf~26@*+?#8=T1iHw#ol7W)K&Xb# zn4#YS$SafpK_;56BO@>{GElRiS$e>fsz+clULH*$aAog{f6Gzc-eY;>KgKNcm)V~H zkX0YdL4hsuOSJ|sw4u>rRjf^XO0-&X*Gj%?Wq-3+QIkOzw=~u*R?b!2w+X5LNfW(QmyLR%@(r{3Yv)`E zXl^rphbDQiQ5t^MdbFk2YbiIYrUOVaTjBp+>?m4Tg`oMXfULoYI_5l-3c`Rr&^zIN z-+s`FuSadT!6)A8Q}Y6+H=-Rm|9k1i9<#sbI~x*LZ5teljuz+$3*{!@Tg`Oi@MXHa zgAv{gNCMsqR>|8g38_%A!FCW}tFV=FgO1eG67>sRAL1Q$lWRPm-t7a3qvFz?0Z zKxoM(MFNAU?F=4ymJ{Aedgb~nuV41V2A<8-ZOKd^NGzh}eK|yr*p@0PQWIhwH9sq}1QlCh+R;LuOjB8~HP) z%ntOj?vi|lN$Uv&N3MvHhD|T|Xqr%yx4R9;6%ak43)4m*hTDc+70(YHaSrx?k;>b$ zU|E(zkD?t%6T7$zRC~4_A||Mywgcz3bcs;3Wv{1wqr#<0iD;xyzZYC>(9jELp>A?V z9~l^x3Wa7?zl#(RjTyJW@R@TkOUY8^k5w-{ccu3QUd~FhlkF}+@?~#z*qkY&i?4H8558_a|LXYGvsrzip>938mXL(Qp_wJy7UsN<>Zx7Bs)2Y zH4h@obI0|^HbKNzydI>YcH=A(a1pl15gmsSAYA6n@MUCzF5y2VyHL4rN@d7T_cK^~ zkF~}_mviYC!(pvLU|s-Xg^xrH(a;$;@GhbK+K6{aQVOuJkub--TOIXSLGuPLa0L5Ts`kGr8J0IBEhbK zNqM|ATZGUPOnOe_JU&nEN*Cllu_Ix&v3sv6{J6>Ltgt`mk2+7W{LLv%Y!)d@Lu0SJ zPjy`IJ9j*<#IX4v@;eJdlx0L@a$}*h!=NCSWu0e&E#sPM_Uj=S1p8dm&G-{k5OgJ+ zy5`58i-yxg@n{~^lhGuJQu>yE~x&rdGBJp?zv;U1%u!i330%PJb-Xrsi zm^7O4D}tUVzgGYK>CLvjS;9_z1=`tstK@&B*%_nK#UTmh#qNr&- z4*}ssH3@d_^6Nm4U?G=kNdAO)^C2M`blCS|+9~}o~3p7&TJTh1M1GD5lDGvZ&97oc!JxqIR(#mrj@s9$J+)<>*aZax47$e)S z4%vpxrb#F4hCXAtim?&O=3M8tRZ}>Y6rKEh9`Z;zlLJ%n)2K^$2?MuVT6lc=TO3n5 zh(f9V7h7ggXwbH!dl}mVcDbU-Xr1$Vdljok1IsmxDe%O8oQ@ENe`DIO+DqhWZEm@* z_+L~Y=0Y7!!cmtW_I|EOR_p2l7%{e)RT2UKZ5WEg6gCqa=f|pHWmfYk1I?mbIe4-k zd)RP{T`UMtrmw~6l!J-SGakx}As)dU`XHkgr5#1;UukC^zH?d%#bAi*QEwPKlInxr zxa#V`UK6HfYs?n>o1>Q?&=J)C3w?ForpJg1DG)Ea)0=B4s)8(q)Mn(XdE3iC;;CG?irY9UhVgl}0M z@*+6NrvoTe_k;#ZvTcxz(m!}&$VhRw=DJTNUw~jIlRie@@GU6JW5jiVsJ-IW2@^lK z^8GfvHL^S)p%;}{JS=2*ifQdFqQ#Y^*cmFU}Or%Zt6 z=KjFWTD=XV(UzV5HLI}gmQrj8D+;qJMR{JuTJ6hk2@*Un9}kYGw~@X|83?gQR#JOh z0lE{3kGo$63n#xP_y;dQn6X_X(xtv2v^d3&?2)BGT1YW8-NwyG=;tg4wYad7=YIsV zE_DOT@h@DR4m_t$tjG8EB{b&6h;OGn`1LA8bg=r+Pv{>GFb>yg-xgZY?HhzKkEE~q z>P0|~o}zAQ1r&9i5}25lzGU9KRB-fnpDi%OU}fy6(;5GCKyGOp+eiv^B0@<=PFkVG z9bmx;f~*h?`za;wl~v*75kABg(Ziwt1<1`FJ#q{Q2cj5eA=4ceMKAA3ZAyKikdI8U z`B(;3^y<`f5%lny?N6}aSX4!I5ypApT$+W77Udylo*Q$5bb})BEeC$TUdXss(^$)n zPd?tnV-f#n!A$_Ghxk(0wjVl!5uP8>;pd((l!_d)7}%$XRm3jfk2yU>$4`>+dfHv8 z5KUhYCA*N%@WDzw%*^|e?)+N1uSPzgCJ-_WBXoHLoh}FF<7T^h^uVt&O-(;wA2GAs=Md)y9v^WX>ZfhEBW{0nH+ZMnm$uF zmduN_kbB*s=^rH%vFZ3JthSvJbCQ$Ie-;@ib|b25Oi^*XOCtkrk-)hBz(iO0wH;W= z&(CF+S*&0Fi)Zvzyz>)@rZH~7+O<~VXshg`yG0EiXi=s|;MRowP|G-)s1`VDh|ZyX zx%>d+u3@A#!ab!x1-E$=fPz#GM91jeBoW|{9X0jgAsioyjx57)F-CoD#D$&Nns%k3 z%^Tsk(5;sNfop%)c@5{0d$HsOY(Y2HA#oWSaU z*!$}q;hQHg_Y8yNc;1uZiZ47OGE^7#kSeb8rMu{N@T@iBmd+=VnT@(M+#TM6*}TZ9 z;kCSgXuM%8TAzKT#u)dD5iRK4OA0T2o~)?Q-_vw(R6u0NlN>f67`%i~_f1}Pdt&s^ zvgQu!@}Dyp2Z#?*QQb=prxm=RvGD^imD_YrDARhAZ)rJb%|#e+B>*P@WPmxj9;!VV z^mwNQLi|otOnL99bn93~?>gWG;y_S{?{L2wy4p!10lgQnWg_LgKLUSkdu+W0DW&vb zGR|r+F?#t40Mhx41-+ezr(FI!1vSr0)VDUmtG*-F2#?7)qjKb9D3r%H@$g$sg8Nxb zI?y#)U2Z;@@$-_R9t|Ic&v$Epae6>*O0l7n2wh@W6tw4>o9kJ-Na7~?{d!Naw*OE~ zO(rvycPZOo4jIo70-vU7x##n;Yo@fF)ROTEHrMc8TPzUFKHTJM7pbGsMjj*1w-i5t zri~;xni)7&F{=Qxx_#Y@J*7LT3S*57y9!-*d91u-qigOl*0V-cp(iTYVyXyT+Bz5b3_muUBFr9y+KLIrcgH<*&plM6e;j7ney<$!S1?! zguRKp)~epg((qgZ)S`V3)XEV$mmP$prgHRPPUyT;TaLlHuQKGTTQw0h{y2D&yw(w( z^wzeFcMOL)krIn@x67>mobZXZiizIleM)9&cfG|wJTZ4P}MUu@~-an)C)rSv76 zsi(noD*GR9eeh*`O=;wujd z#xtf9^OO)%UUq5NuPCUz#Ht>nvaK#N3{+fzA&+FNmxf|+Vfv;nO|oequmpY>4Z*~q z926YqO0!vApa_)t&5GfMTPpSr2kD1PI38ncA=g5lhH^W0^OOS!v?Nv_5R0=A*P1ou zUa+~YMS-r?11#>Zaa~qEl?wyXHmiB~MSwEn+y&ezPC&jt zKXfBM1x20jqR_sgkikUsGn6n!{79Nu=?MZVY+TY{QAY{mhik{-DCFC=5 zjFHz0=wO)4EZDJ0R-=UGWyTan8cMD!e#Fk$N1_im(3@HxJ}!>};bA7nYSQoo23FL5 z3P>#iaX7c9-vdwLKN&1DCECA}-d|>v8ggd&x#oyG^@^U7##Uz+oryYclFR;j5Y*SE zmV#+JS8%)!ni%ctq(&=eunyr;E&Cg^|8v=)D8lEH)j)d#Vxvvx*<-3_tyH~w&m<5k z*|VYNer^dY3skrVz%d^5un#7Rlp=S4!5P9n(D(983fcZ|*mXdzlsye|3efgY#ugR8 z+44w+wkG-5LNX61m6td>H%gy>Yy!k{$$(4u9~?UsJ(xa5q)$5m)F+L- z-xvsT4mXbYVjoY~!LIMD2H)FSEPy&DRj&qn`0BW#oOiJm1zGVJ12JDMEq3nnAETL% zaC6IMOm=~l%>x`ODdp+p6Un^5$8aIX)P(`N`6R~wr`Gc;hs$ZEu5lO|X8~LC4)0gj z1U47{u}XdiC-{7>Zhn8NS#6JAT=z!X*u0p_YHQ>=spmG=bO8u1(ZKK`jJ&xKVzH!y zPmU#w+8*qL+}|mpnaXweQA1cPfNc#|H_uvo471R|L|${8#WL)d-{@gETIrasjR>PC z4(saU1Wu3{(tb`Ax5&pDUJ45y{1x0$z4m8Y~18J_D}QtW}#PwbShzB)Dy9 zV*Nc2?!>g%2K0YslD?vI-*1|gciK*yz5gHV_!HkPW0XS`Qp7cY0%pC_lW4%f!cu&B zwzpgeR4^T@*D7}Vl}G8l6}gLS)dHHI)2W;fKYQro^n7;)MBpvm+%3kh#Jv%Wi|hSk z;`X*_*wI#s306*eyyu>dlaCpZ9%Fu!^&bzaW2y zMIk>OtHU9Hynu;A}se%v%i3Eh4)Gi|k+ueP>;@h7L`p!3TGCZ$ z08RLTDJXuK{qRgEqTV6pO`UDZ#hH9uf(7Lnw&J|%CR9-fwn40GRDI%Lk)smbZGp#p zI}A6dEhBKC;oV4LN7B_7_0c%s>xS!_7)B6=*M3O2GJY+elKoD9s!Wcf(z(cmE}3zv z)2FaU_jVEl_-L`#t__GAb=$=YL?&F|hZZ(p9jLKP0(LPJ^y5BgU+W|w$kfzKqus8N zw$jq|E^;gJ?O1L|cc{}Tn*|q}JM5G{c^akYsET!rw$4fq{a0LL zA%XJ0+Sf}y0rNgDuu4RzAD;8M`0jj;SY*gvAHX_5-60Ll^)=gBWH+D*-I2ZVtBzp( zN?P&In5RE(1tiE%j`W)XKnG6bt{37hG=;UKx79Z#Rhbx95X*Aqs*8oQ_^=L1z~j6W z0RD#jzoKi3*wd_!=rF`9d(|*2*KBZ!(?}cOKH?&;8g~vwUQ`a<$9om%8 zx&4YGP@&%QCrYYnWiiD-#39Cr*P^<<%pV-?hmZcMJycJzdf`u@bGcJ!q}Y_0CpPv2 zo9p+=9a|n*icItk=9KzdIr}8av@yd~bSFXO1heS*k+rQ*%f8}m|^~z!clfw zQ9!s0>w7GYvs&Wli*)M7PF)28E$ww&I8H9{Gem#*jdo>-pI6`>i?*fC+zw#J zL+28{`_lrdq`54QntY!QUj91VIhZYS1LtiMdE(Q&>lWMASX%PHo(5p==*72<{${Lj{=} zHo81yZw9@pE~SF8I$>&zL>00U!zgG{KL8<4jv+Gbc=F#Qj$m)N>$$ppMt%3Am2_+ocMO zIaq)LLfBg|z*^TGq zK$g*o7q9tYK&gm;vi>6Ov`l}D?ARyRIx^F(BTIKPm_M35%4k-{h|~TP)AFAe{@YQz zPP=uJv&LrLf!bL*rNER;5$YoN^b-0oS=MxM2)@yoy-_>m<8qe<-=ju-HI?HwRRT-x zgOxKGp0WEtB=M@s|2?DUZsOvwQL*Vb8CZVkjH#(A)8g&t)mK3_I3<+)%H-;_NJwlY zM@)Rx>RV{fupVF>&a?sv3O+pS~tq4_kES=Jx=zk1`2pJGx zFrAFT1;ewRcSq~Jz?4wNUadL`<2utfUgbkQTnq_;Y@xy>d~DfSAs2@V8u$4pSm8HbPb{3g1Bd;jS*uNpKdxSlq$(M zz@};2`%6>iF-p8tf##vRc__ez?=eMkDzlX6wJ%Dqt(-nLfrxX9Z1Cj+Pn`0cmejGGS;3pg)zY`5T7 z>9SaS{9P`wpWHI#yt||E-sZGcx+k1}KUHp|IW{ZTcNg@P5)=42OsY4i9}E-2?1xxs zvLdA7_E-3eslOruLbybg$$Co866NBa6#2#@la~j=M`lz9VL^D%w0#p-av1aiyLSEZcY&d9ab_OGSMnGY=HA~j5yICUn4?O|A~nlg2#9??N) zaw#CAz&EfkIT&(K>ykFPILnDvKm<3l^jV3TAC{l%?2prRTB!=-L0Lo!Mt;*mhdAj} zyGY=hyT!}vKDLCA8#9nna4wqr683@6tAva3s(N&ts3X2%-P}tKu&5!-ne6p%P?|-} zNN$f&LzxH?|61Mq3?u^rlfhV?Lk{e?mGI?wwM&?CIFE6gL7IsDiMDGZhIlsMOUu#p zyJD|^Iwv%AWt3Lj$hLMMZ8$4fMtIMHW-IEkHLeERL8ufy>#DR+J!pQL+hk%E%Wg5W zbD{{VB^40{{yktrh-)aIkd2p&Iml{h9x?M3<(#fz?sddu7JjjDA-txFX8?jTsUA#7 z89&Qyi%$`2!jRVgC61aI(>b6=M?9rb`-p;H*2E$2-6qJt|KCdBr`EUW*1X2(`9`hz z`vi=_@5))uU`j?Fnc;jH+k-UrZq177j+sgcHx_MBEp~*NQZ7>mKaMF$I>FE@-joB0 z|AtE;T3hF7)KqYMPaw#A@ob9ojUjJmVe?qVt@mP|fS))Y##0cj&99E>kaR&LMR|sD>GE%pm|Cj_HVu#o8(x1YMH3j@;;5OCmoB#Fl@R-%%(7 zV1@^V7yd_4mWqcWk%w!a4KnJa;kRct&3~9Tsh>jPjG=0Y*$dAlE~mzi(CtMuf9GDg ziy|TIo{EPJ>&$g&Wj=LM1f_fV-kNDGT|27`BfI7kgCmUY$9l9~#1%*l-%HYN=|a zxAkh)@jI?=gqSgerVdHl6S_dM=xyR)RM9`QMtW3yT@k1tR-Fx+Zy`eBI!`8%OF5Dw zlJuD10Z1+lZNo zmW)`j_wJ1WJT}Svuo@6Pw_uPJY-v~)Z|k$XzO-q(8oQYnQ$7n9mlqc!b)DjY*X}#Qc`Ieji@TMm5%exX}mS-x6CoJh~?9XRP z4T_w|u5wd=`5wZdcDlBcJKZiMmkLW*w{}Wj0wYFa3CVtb&IjL0Wk_TSb8Urb%IiN- z6icFq<#S55n;=FXsY zRBib=DKi~g{e9aRSqsv_kfCqZ#c;H;Re*b{JElC1Ir694{z(Re6rjW*nF={i#B|i& z-O7c^f-19PE{ddA(w$r@@@nonWCRRu>~lp-H6PZ{$UTq`<)jM&i^8(@GMskM>h;K@ zs7yVh7oLTA&&|LV9Xt+xCI?;d5s`2-Sb66?DD=RBKkVd%LH85hWzSE^Mnsx%S}c4LCkaJEMEmF2hq+*QeDx_)`5yKcC32=L~R zn8X#^R2h1~j%$q61xf*XBKw9U^#4*3=Z1PWZ#y6|k#0O>Qv4!E6vwQy$PEExJ!5Ms z14i6U8^kYG1mmgM^iS>bG&I>irA)B{+HnKPBs|;pb0b*jfRVCJXuRPPQaYzga?ln1 zFGD?&5S$4_34hxi%&Efeze(cFR(}LJN0os5Ke~&W0>-~;1J|k3tTG(aiMNz9GlP4c zXsvbe%o8}%a5P+E1EmX>p4)#5nvAn(%D{apgEnlBY1J2?`mruJZ}R!FKE?`U{i zfO{9=`zUFA^G9udYydOM8tUJwq3j_LyRBXJj|RnXW>h4zOy+wt!rm4}Mz@#OMeh4Q z2Bf{UqrG4&_LsrMHQ>FyRzF?_eq3^)!+2@zcA^_NEV;`T1b3Uyi!WC zbZDw0*~Qi`=A_Q4b-b}g55PI_ywjJ8Vr96g`?%!vG<)%>J7KW(7X<;=>=CghhvMn$h)Yf+*1cjbklA|&Au{;LHs0X{Q2-JGme&a80MB&sv=cI;fk_|wM~ z-YvI#KaVY*4?>mXf3ToGP!J&lV|gB-@=6rUEQ-SNVHvwC(Z|bLhH&Uq9dVIDE-wi< zqJw1!9Uz}x*73(x)Ul5Ld}2^dVpt?%%d42F>D`r7C-?# zBx3xKmYIpZVO4)*^xZ^K_(O0-aKbG0#74A)AP12Y=wY84yBk8$eB5f~6t>;{(+#g1 zl7-4Hg)N|&nXIH5gP;xCr@gbr2f}rJ!HXPe(sL5LgjdF@A#r9>aTAZlTED)3#Hi;2QLFwyz1Zr*Z6B^LOubB=?ZE!9 z1yTkeRTbhar{!)^{wAT3qx*A}dR~CJS352`y44JCCnzB}wrYV<1AiRYd*hFS1%gdu1H)BJZ9 zfIoi>#wcoedOpgFLI-#6G%p1Jd3J zG}qA%&V8&QvuU7qjrDPohH5-!Xrxf28>sOgixaIjE3d`vadWR7DWb@_;ZsSiwtAsO zON6Fvr*xz6^`r7M$@7l3!EfaKfay1FzULd?Ok#sj4+a3GQX?MCa_{dj#gKOfoqfNM z4W;WkT(kehdJg(MO;$&7+&YX7t~xNO87nL03<<-!f%T-EE~=v(h2F|sa+{FfW)K1M zT-Ko#`*oL6&ZF6_Bk2k!f0&FLG*>3|UCKb2CtxZZ7j|2?L7dTy=6Q88Se|eFEhrpu zF05H=Mb+sl4LP%ny<`I}F7Gu-s__WsKCGXymA}F+H~DGvk%Z**1T_vxxC%;1dix4v zyTEcpD2WEm$WbQ!!~7(4jS!kj{27?bbZP20U<7a){x=;)bCniW1v?SXi7kZjutMf5 zf9SSdmM$zQPI2-`GTYIQ{vYWl;pmqPk0$woNYSVL5EK2v11 z9A)4*MtPkGi`#qT>(q<$5qUk5uAMJ9C+;=Ek9mR&V$mmSf#Qv>DM?kb6BI4miTIvf z46cexEwK^EmRg{xGq;<<30K(1pYCWHE=-z!Zl43rR*tUyXxw46gfqf}7BPW&rN69G z1%Yi;Dkd~1xK$PS1*ZriU-wFmBEkYspNPT>!cBg099N7CqUBEG0@YZg$WeLRSDaP4 zz1kEJVhufGm7usXay z5Ou|h81%4#Nsf!`!`N>JBHhLe0eQxJ3#=q-A({_Dv_W#&Vw714`w^%`B)qgct_!ef z43SRj#Ser`RPy_7PS*P0tyoqbT)>fNFpjp?mZRopPquBjv|fE(_n)fjFXCD&LAWRJ zqTG0;u~mu#B%TOgr4vLKcP{XAXiT%m*Gf|YUjV6 zcT*{bilob0oC)vV9!gyF2!*|Akp&nuB#m6Y75#-*Xb=k%7(myzCkrcSGFPQ;c=b-n zlWo*>i}s@JCuH$lYJibdbPku@&>zps*t3k8i^{b7xG%i0r6 zCV#pj{^y8wV?!e7-E98G*s)+sQuOhptUB%3>=_!Q^;yfRVFn6UZEFh*BdHe}fw`I|C|TdYCMK+LTK? z5;9vg;~HfwwHvCf!T~jY>%f`+YP@E;ikUz^aE)C#Y8XEq9{^i@p+OK;F7&a!eF1cr$=Ezf|(U7CbVYmWGX&#c`uhPIh_CN)hoP2duK#vvgyUHqu!OU|Zhl+E(c<*Mlu(5mu%gYO+Ebnv+BmRiJ{Psl#a1P9=!X^kMm&UD{v`AY8mOjn7_325ukM+RCIjnZ z98@bi6(fh!6Yh(`pOr@wFSw3@Mm{b*0o;o+Cmpli@>Nt?zhFKP7AN2+Seg2Xk%+|A zCiTA;SGa%TLR%Q_-b+7&iwCb&dz)tVO>~0kJ3gK%QXpwitiv^t?Ao)qd?s>V0#-X7 zb8v)vr~$tM@dE{qDM!t}lGAgENPfv*zc+~W)eIli>>Vl)xVB&{;9+s@o!I((972Wn z+Rd=EVR=QqGkhP98us=6APImV(1xc}T|KL79#3A`aU83GoDjUXE~kbJ8RoC=eM<o{u-hv+Z!RXkd&yVrZ ziX)?nt9vH5NK{;0c#Do*tjs2VInd`TVQmxch6!}I_7f{|Q(JP7pTwNW!#+Cx&C+;~ zi8F1Ge%jm>x;T*-XxoNM)(0M{Wn6nqCAZO%RqwZ91v)ZZOlk2&!bs!0z3u33OYyQ)cxEB^Z(<;kn6B_a3zD}% zRE#Fx4g@Sn_fIV3NHM`cXHAwvPX<5m>XqqCl3$)W~(|N4!=U~~%n z{?TRq6zH8#I55IR(MJW1KmPI%!<%I4R8H#(f9xS1RzGNpQbb-ZhV7tSteoY&z&ik3 zf+O)Tka7O4$6=ICmuLmLqPb4FiqT{bc~ZT~O_ys-v~(CQfIg;K)0>B~*NY{%+G(f< z(#IdBwK~Jewb4PhZU~rN{yh{Vci>xe{p7s8vKSwE$Fr1p*-xv-fzUnBXcynj3btkZ3ZS&+`7Z*Os>!+G>3ynN-PY%%qa*6%=%Wc&$9m)LT;G?w{4zC!r*; zNnIp_!<==(PI$YbAjRPAE1{(?In-}F%e_`ITD^Hx~b}T6{{C6Xw#!;Gz0Mwr&bC&;$U9g`6+2 zg<{jLfQ3dq%Zzir{9xE#ZEWY${=h3Ml+4n@l(L$B?e{-7^=(_kXLiCn+?Le4FcweI z2tmycld0xdX1GFvGEiC^7XAkXj{EiriD1W`di;51m^x(4r`i2;CokIMuJ7|H3&aKr zdF#;yBI#>&Yr0pyE|+_5mD!q}!#ZxSk?rR>>6xvEu)iqT{dL4PCva>#T*QFT2fK(f z3t>P6Lv>4cIUSgwt4INs%4j(k)Zz^faEbY?7!D}Fd5+w!rAMDZ>^*Kw+>3KRqsysF zm`s-F8Kohk&r{`z9G|p^s9G71iNZG8O$emw*Q2@xQO3`YVEw6AZUyOKQ^~%*0d|@m zDfFn2iLT;7q=;RGT0q)x$uIE7ay*=08Q2uI_*3*d3EILET$5jcTi1^(AoEa3O{#-2 z6MR)3bh(BA@Gv~ z_@y!H;8MIT*zGBcCKQ|t#fUtm{X1#Iv_Y~4U_N!_=9`K)1^QGh&7_YDd@~HS9l1MjncbGr58}Lu}crIDi8A| zF+Hp3orrBmE;%H+`dEih+$HE8zi5sUxM+_d8ZfiEp&2#lF}trDNY5YCc1p{s)~)W; zLug=PbrF>zvoKEZ9 zv969sbmWyMwQAm=`lKYc+TOIBi1!R~2CJzut{z8dM=dIlMy?mj+8@+E*r4;n73 z5#2tEu6Nh&VcJ&WBdj@~ctvzP+AL^6km>lQu7?mDsZzcl9g{KZ3t#s&vmK1twl5Zr zun-G*wR9Y4oSJjC_SAOXuI6{zWluK&)m^zGsv&z@0p7qDdi8<2;*}$?H(NcMUXL#} z!7tzNQYXr}{o^wVUL=gZJI0+j;6IsnX!VBG&ZK<5D{RY%j_ zZF|~m@_HG~ol~lX-CZ#Yu;?4;7T#@gE%bJ6mB}s&w%f{fdsg4}-o`o1jTN*daEWh7x0Y3sDHbXA*IIdBl%o6P7P1hzzbasj9}gE>kTy=5Vl>fA=EZ2 zeGQAIz@Sn;H*7(Nu*QnNk~UqJ_dc7}lTmvZHEma9{ztdgYm|Aq#y|hbTe} z4;E4xQQzj%Z!j0%(nIQ?C&S<4JRQio)8w2?YrAhGQVe&^7E^`%KC%@K22x?5TUpM)S)Tyh7x?m%Op%`U;mzR}RfkXRmt_>*6EouZ zAY`UB>q50(g4(m)4cHp{oJGO~J?ad{wBRM8Te2W1hTy`InSrs}wQYa}s*Do?rI-(i z!a9IfW%yDwA$-$^kFD45al7hn*b#g8FDpxqyz>WG`8Hj6$y?_;LM;56rGJVigec5- z^Q}cCHX)v&_Zq+$h2QdXr$b-r?b|>Uqf+V07XO$LZJJQb{o!ZXlQ&_z$NAvQF8lDz zV{nifUx-QpdIR$V_7G)*4HDND11_Gb8E#WREwmQluI`s^Hhv+Deb-F<>R|cZ4ry31 zNhhdLgzGK~FXfEz4R#|-5PkvEB}ZuxfEP%#5CYJCQA=*kED!~LS;1fi%LFKw3OiuR zfz>D(Hi0YMyo@qH$@2Qf z<=_q4-KAs4+W`*H=7nH__CZ!AHRL;DVrVW~upSa|R46t?e-RKaFtTqyGZ4yVN7_dQ zxJJrplI47^`CuOAWgpCmS`UL*MR+R_+<H$z2VanhJ3(Ay78KOaD@l0kftONrScPf&MQa*m{R-u$i zIlFe^E+0*8gKr2_Y*xRJ1lqwa4-z#tSVxaXd->eG}EvP_nEho@nE9|EioO*Nv@{Nko#Bk1#j1DFJ zmG;ZJ?TMC#IqV#2k{&?wOK3xf!pteG&r2F*r-^Y{zC=VVZ~yFdiT8a>qA!HfI#cvu z+7AtvX1#F;hYVwmWx0OP-$f$wiA3fJ!?~6IVgMN0x5QE{y=jd$HC!oQPuw%wrC5!4 ziHwpc`XrGb6+Pbe#tks}{?vhfQRlnILTw*ri@}#|8nR(d(DuZBzn16L0N06z*3_S@ z0DoI-ay|yb{fo^Nv};FD@tM%L4}QF94&i z#{kq!MR_?U8Dy{6h!DJWrRwJZ^0iu=T%8V}m5O(0ZStxOT_A6dO?CoW zRM4Ax8TVw>;q-q{F-SY&agVniAsT?DTxFZ$suq=dwBQ35)%rC_LEs#2oYT3gk$jN_ zVTQTzf>pBB^@i^m6FiHigNI(#U8?B1)6!_2pP`<$GZ-BXz1@05Q?HpTq&zq4w4mI+ zi~t$z#*o603ZQBCC~uq=3Kt(9S-X7HAqiNYogDa9ykYqZKq+0q*FmLx1C43`#jmR+ zuPJHQqkxT1hi4wvJ6ikN#n+u&-T2Y4v13fK$AO7;1^4JF?6ZUTGYZ&!sOZ*71Ud~jsvPT zf8Ggo)e{BY(t&4mF2gw{rk>IgYoW#Zh~88mA;;ij$ryipHT0=lb}IG#kpYmSK;_?7 zS@l8cwfZtVb4{u_V$1%(XmNak*DT}%$t@UcM$>sqO%9sH9OFyn0~(a@aHHt4;-U1j zo@?~lUzHqzj&^Z7EY*~1HbYn<1us0rr&k@2?X*tCDIBa0fnP(8xVB;3d`Je06hAec zi|e$DOd4m=%6sPUf4|pE-v%MEB%blob+Glk3X}0)l;_lPELZQHseq8HSa7cj9dAFA z*694#;(|$N5-Vm>t45T1CJemx-+MBnW`P}-oB)D}Fnn(o|INy2)V^$Qmnj%ir0e~lZt@W#!fGlh~W9;xSrB#o+$RQk;R~dqN?gjm-{8j)N;=$MY@% zEZS+mq&K%)uxtf~FR(m)avYkYKtugYqYcw{V!j=?OrMQbs4P1(&oXCRpU!|t5*}YY zEkD|oAoeL;DixGVHWK{|uNk0)rL3~tq1BPTB-uU!>I3Md1F9K`UG$&Xi1cyTY#qjKmMe$+2BENiAP|n`jO3l+gBRk~u>UA*M zBDO}#eDXJ~?hkcCA}?E{2);li`jeW0_1PnK8fA|WI9nb@Pf{qzX0h0;Tz(B_X^S(n z2O$P>aZ!_iW&b?6V<@&aaa^Rb#=wbst#;;016$_jQN8%DOBDg4QtyT*{KAT;?i~Nb zDc+qE<4_7!7QPQWJXaN8d-_^YvqrYQ-)A!&v>OItr}YM?EE4t5!hj3`veuXcHv3cg z4+5U($Y}vCz@7Ps6VkuRyYTmJ`s|{iw5b7+(-zQ+w%Zx6Yq{2U4li)Oo<&tC>@;|L z2LirQqB&FhOZ&UFn2LN>6qf;gzMzGZO2xI|Onk#8gx#<&@dRg?(=KvWxxQ5A(8N5& zlXqO^J!8mSQcAinD2QE<5B6?PuMYRc2^}`HFui>PN`|Pb^c{I@+4bjA6mF;-Nin1~ z+Qr1%tP=5x^|qzxI(piNIK|V{Z?*c0BZ_#|t|-ye^Gg6T`*we-&`22!6C+P=Af}A1 zDcP)uS5!N|NsPm6_c{@-&Pq83V{IOev-a0KoWT+ENBac|QH)0PPw#Oo89a7!Erh8O z=zqoD0!(??&&-RLe30VQ;dA#XpTiNnwUCL+TG4P@xSb=9MGuXPOgZ11#((9Bj&u-V zse;HU!L=wDxPo2tj4)NDywBQCM~A5^fN#Jy2lB$AyzS!~x~)B{jg}xQY{z5_9D0S+ z)8^eP>O3 z-VCBQNrdnBHSd)f&;6Onb_1J0u=#?n54y1vRI^y295og^X0f5HUemu-{k61ymFy~J z#$xwFgsQq`!Q}J_gKr@9?@#re_ri!J`rIfxOH^Q;nZ)$?yW5<31;k5JkU|m+m7)xY z{^4`H6%H{<<=iv+!r|o)m~zZO7&goAWOOXFccUXD=k%$ctGg~ym{SB4eRk~(c*00! zpSuvhuO#crP)Xs^aCVSo-b05t7Dx5gxoF!Q=0}5k#;MiP&wT;ZMC2%Cf*qwpUkT(v zY?bZi0%xyv46VQEz@CuDOOY>k2WT*Bxo~)#-*nd#Tt~tKkPGD3Uymd^^|DSBCsm1% z7=W?L9-IX@dayYzAv8~=D5M?z^8$igu|e*&Bq#-iidW=M@pT|7n@mq&y?s_3fmrt# zBJSvLb>DM6sbPbky58E91&4+k(IzjefvonfG91RKy*HZsU)myjx81&@M&~GXMc!n# zWdFN0rR?1T7{x~?VsW=-xZMo`4TUHfBDU^PthHx?M$gdT*{&VFt*WXeIvl4*NV&g|6=OkfNJJ-#3JQ z_Y+H^5eg|a;#;@ExVw50nA;${_g0)!=Izfb=|GSklw^o(izb@^Z7VpPNVk`W-}a!_gn8Eu>jXigd?KCRg_WkuhtBl4iN z@5Z`Gw|w!sVMh{@+40s8=P_kRV#(M(RPs*b4LVp=3a)eD9YZzJE=*Vi<9QP^Clw+6 z&s<(mbr)|kT)Lo?)geatoSJx*Uw|VICjpyJkD|Or?WM)vjHuAJ@w7*}Lw-VBrBNU( zJNLc?Ty%L~TL0JWFwX5TrF@j7WM@@z;LVzl{Wi8Os^!VGho)8I?Fhuu;xYb+dV73s zD<%e=l29W$M?U!MM-&$p30&Cc?d(h7X?&GyGag`b#;hPS7iUOHV8wppi)J2vbuMb$8T)8)gso)%V1jfXWsbNI#^99=5ynE7yMSAS!4U86!;JSAaw&3?2gKkaUU|q#q z_!h4+odcb5Nob;;1`jhOE2-C+FR;`rZ?2yOdWd8#sY?I)^9auLu=_M=e+l#y0!?Jm zFwn`~#FF5HlfFd6x5fG=XSe}lHCI#-sEr_p4Z!#VB2e*-jj=S{5W(FBd*x+rlGf0i z*i}%&25Ed4&TZ|}GL33CDwqXC@5nt;EVzEsQ1`xd;wx2YAlaL?bR+d-*R|yoz4(9f z=Z9qVkFHQUQ3p~@T0{>`ZJ65ig0B(|*- z8W!Ftf!q%FAhMWP-lGM5TuQHe!^f}-pA?49yO?^jKwi9qKC(_4>y&+hPMMelnrX!# zjeFa~IE2_LKGS~(E}IjcK;KtvFGyaWsoH(z22cYMpU$Z9F%?rekR@7R@CC^gmw(LcBL=3^an=^R{bgA*MjewJC$sQ}R3-TqjgIQT( zES>aM(j8L*B{%j-lqS=i8z|E2^G_8&_r@kI*|dWb(glS5ac@{5t>q^f?93?8Aaqn(%7sM7f?QI*&t(vJO%jybXIEKZ zSe=J&qKw;Eq_*RMuCZ-&%B`%^h3-M>@gY(-Pz%L=cQy@75qO>+mi;P#mSPlPR*LL{ zVnZTNXV)(b=pNkR<5_vQiUUkDVIoC&zMwJG@?{u7|QJZ6kX6&`l(*a z6OrUG9p@jCU9(d3SHBA}-tx{sK>3Fs^uI8d{G}BZT2p4DrDY+T1y%HU0(b_Pbwck@ z)ExOK8^nKMWf#KAZY1(Zci3Hur2o_UdxZc(CR*_GvbJYpy2ouiAQulML9iF$LybjB zDbwvY{hx!yz+LgCm`E(H?FN^;If2(T8$>@bzcRN9?|@idm+SICAa%6JvB0=~vX-{+ z%wicTD3}lM$9YZCjxIzV20nWCR!f^ZBeM~A7`=JsdV1UlWBg~1>)Rm$-n-FY%q`&s ze}(_aQoUbv4X$xi{S7lc&?v4~g2GyU5W(7+A|PR+X}D0?*er!m*U{L64j4IXNGTG+ z#8LF2{ccQr!=R$xUG=9Qh>-Bh2^G|F zk%@ilI$CG9XPVBQpw+)C1opC`c(Xw#MiVE&e0JU)V>1Wet87wh3W$b&w4IXc?F7PVP-MbVr<+Uun?pS)`a$xe~oOB~0&8$FgR z=1VmRPU4PDW=Ye+dd7FPRfi84P{!ntA4AU1gW;q}r`{GsBeq}ak&Z)8#JhQ+gB^5> z(u{VPofYB1A+I%6&W?k~+drj8@kJ$9hxm@8qsflGGUM9hg3PJpVBU{!Y$93?{>r+l zoJ>w_czvyG)AovFSLywdN2T2$f8|#utyA&PmSyY+;BE=VpM1M?2dWuKqG@8^{p1BIIAa?W*%8fV^jKGdeMNOk=h=M6?C6J@Q8uyy2! zJh;*$tY}?`v+-mLotXf{+Qtp#FZ)77bxjNnHgjY5K4NcDkq?CVkBu9s@TlLTw7V3d z%HbppgsullY$1CJ5ZW&;SlhlK9C9QFmpKn9NpMZ5>*aW*^tHXZw{e3)OND z`j;fX6ad_x_r2*(I)WO^c!z&2mP3XU$+D)eQ-|v4*P~XZ`L(Pd1_6Q3A1IKBPMd!o z5OYh^IF@+Glg8`T&_b&(fW~rw0Moq(6EaiQImLma5c0%M2G@dP*%Zd2i>y$Y@pCw`I zQo}I}h4g7OeVTd|?p%6~y$uVIPoBR`?9ZHl0 z6puwQ3A&Igj~0eYdy5Iine^Ix)EM1|_Gn%Zt*fn(++vpzIsG!SnJ5ujmeedjYuA^Y zF)SVz${rc`9#axvk|_kOnKIRG*f?Y{&c`RrvoUMv1X~w47Qma5WAOe+V%v2tj-C#C>xyZG?Rn9qoB2HKI zJ}h&|xJ10m|`#-X2?DMLKs zFJ9#zcId21yPGpz2j3lQjw=nLS$+uwG!JOg+>zbbF3?yEnd!Dn8i?;$6?r^&<#>Uf zLcT+r`G}jE0H-iy?bl(*!eJ^(Q;`>d%a%9R+!{(~wE*?i{PgpFyLx%hFb(xwS+hSR zbVGfDj}X&DU|b-!FpTD2R)r8KC0X0nXlEs`3xkTDdr|tSzj}ORIvae4sKucTq->L z5KMD{v#lE8pbAR#Mnzq03S9h?BPyboy(^`w%Q}BciqPRXdQs=_MPWCFaLftoXa)D7 zQRg{$J{y}ME)Sz6;=FKS0#DC}^@9@(d+Esp##Ak+k!i>oKWbgI5=2esT4?}w0@rm1 z;*g_d4s{lIv3Y%<=AzEQ+!gD$+L22kqWk1MDnq{~0)Ay(6Xqk@QnLVci2tW8i`$Iu zf@9+~8%^8bSBJ2@nWl-n*@OJS9xSMja3HtxoAcrKSR?F$Vzny887;^8&KAD15eikE z1J1X=O+`kO0rg)x%vvVJjb`H`T_Z_C5Ue2iXW^I&*M#^+C!P6f$cR@}zipfE*6;lA zI@Kzm&&NsJ@$fE7eG;Fe^^(vZ9-Jge!myi=Kd^pof5|<+hy3!hb6QL&h|yv>&_KUT1o&yK)t`|%t|J2ddil& zd$fbNk*yeuy-VS$IV{j~I8HW*IKE7}5Qm^FLwpLGP*8Up z(zsPn>%VqY`%z^A#A1G7ukJ+Ix2nixwBRM`batJEnZ(T1vGtCG0}42C@PXW*I+%4q z%1@PA6Z)=>GjBLr_BEHf_ZNNMX$TjM)y{%)&w~DtDkR|e9NJv)(%K;-=>S3<au( z1?`Vo0!=k!RT${2HfUxx6ehsuR5;55^s{G!mFs7S&3WH3(T}mv`=@>ZsGo!140(!W z{1B)2p|;?YvEpvcQmqS5&E^hV9z{7EFk3g-OG2gP?vQ+ElIh>nS+UA+n}At^$+df_1y5#YEC@Tt@UT{Nx(UBIKq0!@r(=Urnq7&tVMuCJ`zF zi3Khumq<)W1VfqDQ+AIoXGd{ zWU^0YXVYydaKc@`z2!O-=q%nB3L~{Gp^vs5BzcJy91WU|&U0V^oGOoEwY2#&X7KKE zwu)8@HmFa8*A>sW^MVx^Z|<)XO*#76UHt@=D0`Z*53<7gds~X9DV~Ip7Y-PzJq=ft zHzn7FX+Bp#Sed!bTg=bpc*2doM0RY(R|g8$$AwDqg=hMhKN>fM>dq04&7#-X0hW%` z{VjqA4}+F+6$+7mfUN+7yXOl~B|Z*qbO@6al0PyT(22J{&_G*1RP&G(WzB*-W+J$VWFbv~5K9 zm%i6Ixo7=_ZUQN9z(l1Wy^M%z^7thHA@*{i@_4ACj7n96p9pVk!xZ7FhqgQUa3`!J==Lu3JR>YO4 z2Hl%UWtG2<@c0c^&?N*F#n+MM^RVl?ZZ$kgG$;rR@1Mz;_hpB<2@P@a8+1zTL?u_F zDo7%Hopvcq)-msTISurg9$@AS)K`>2Y#IUYD>wQ5ydhV=M^UUL!2GzEQh02k`+3n& zmoaG)dK6l$j;}>_g0btu)D%IO_7N7Fv-FcYe|c!2um^N>#RQ_F*{Q#?rkY zKmg3LW%9+vL!eJCQ~rrWLO>=KrOkM+KMavAG6#bl^`TLM^tUm#P%l^1i+*!?7$FnL zM%TZl! zA_@LVSGX0@x{qsLxR$H$xUT*bxcDEpsl+i!mnNc`xp}hlU#5vwT3JhiT6r%Zz0Va# zcuV7>BL1l%k-V8j&Ed|i+NzADf;(##qP_-ofVZt20u0-123!fFK^OP}O^#e~oVGQ4 ze*IqTRMjDrRRV9+{n$$A4?r56{+-O9?YG=$-^G(^&gCOod@kqyqAU68JP#^-h!wi~ zh9t$IZqV5AItuZYZS8*T-uFS{o^HEIT|<+?ok#RBBw$^oIj;9^yO*3jWA;*ZlAb}e z214_#z%itq67s?5TwL4=ZpouyN3j2LX;X-Kh!toBqEK$#q%Dz`o4S$PP39l(SczkH z9~f-#K_z8+Irf!St7xh8s`TtgiYA58JkTM*Wq} zLSy?(E5yoKReC+HDQd)G_GJuCLX(XC-FZ>^QqOmX;>EypdAN^A6-UtNEdmv@ZDZ9# zp@d?|vyUz)>GK9T0k^`RzTHTW6Ro`@s1ysd(?<;p#cg!889dGAuy7Nk&NAE9y{Bpz z>$W@aiJ@V-9QCTLCbo13auFe#imH&z%eN^%mBS05_q+PxOtr+t9z6^Y--JU=}#wA;9t0&T9 z7b3YmIJVy-Sv<^+uuyT`Sbbv?9^ZgFx5Ey$>wLMD^B1yZAb{IW8y(XDWgmt^H(U<8 zTn}c!{2!Bc6vT$=Yxwk~!$XHNJf|k^%VgOk1s5)w3b1=A3OXbHt`%E?v5DwX?w6#3 zi|`^Ncgf4#iM(ZIoYC_>iBX=yc@23xH_8a%28#$F`VCb?f3RBE9&>0hvswD#0+neq zK8?R0>Tf}8M5uouJ?v%+tIO-18ug+xNpwuEbeWCQq=3*ipfbqI(Bty^)}36q8DL}K zy`_HuN=>I%-tMxrxeXkr*I@&7#G`v+h^?pVs9IDebT1Qz%`VMdzeH0^d|s$zk3{J2 zEkpx8h{FmKD8x-_9!Omkt399L+TH$^#kYhYw*4!&L5$KI9xql}B415Q<9h=F6Tws< zEVs&Y*MXfm*V{K7itr2aTq>)_|A+F{n|P1s9jtSO23AL*ZKwu3FPjXE(F(pIY$~yu*M; zM6e5<083*cTHp}2oGWK^;3xIkk6B|lmL0|Bf(lS0cKRGwx~5gzkgU(Q!eAtTykSoEa7MP-3bOqf zaPWjn4F7oNnA;$XOGPDY3H?Dl z(NQx>VvvZiNo%i5hjhhlixv(oG8e{m&^P5~4Tsv)nTDdnn@kLzTK`gD*!)4%t%&uZl&3`kt`X*pt;1<1P{2R7$;Hj?@ z%R~I+KA2>~%0lImY!?`v@RerYYY2<6=b?rqi<*9cWd=WOE&?^UkDF&T(=UwtAJc1; z%deWMwA;-zEKdnhKqNR=S<_8=9dPK4{d6Bk+-U&M{H)RnVkac5iAm;ytX*FIasu%l zg(YMlvIwvPqXPWaFk|MRWB z$C$?K$m1$#1yo2+36_jcxx7?+z|1PVWJ5VbzkB=KTS?I`Pmi2CD_)|9xxpUyH=j|( z3jT$jhO)6T&SHacs&1vlm=iGBR@DQ_B|7n_tkaoH1OX4}T9r+ZGvvrn`CUsg#4D@4KfnuYaW^{B^1AbroFRSU zhL#poqp%D|-PAtj0f)C{HV9500J_)BBM0Do*krg^bajwUjo$_(v@LNJ3!J- z3%L#_X8O8}%;#^`dl@;u3ysr&*f1{^8Aj`NwH7dVhiel&K45swd>^8c5I7hVj$nw6 z$AGyHWm-FEZm=dojM4vnvRWKPFhpUO_xo1us#wd$jI{puHyx|q{*Fk()KIr}m}-^; zhqU9k!WC?7tY~1Qk7Jk*En$pGU?F5W!&K)3ThZ&G|KJC7ztQ}>GnCEnz&1=AFD$?% zdk7xMEN_bvWDFl-ObO4x%n+-r&UrhfQ~yiWP4}F_Lk`t~@Z5jY9fzQ)=DO7yL<0H=>uCYiE>vWS)uw-u_pDRriD;d_ZB zb5;({md5iu^7YJkw2q;C!BDQKS%m2R@ zwAZrAF25iYfhCh@XG&Cr+4ndC!`_pSmHa{oSm89z(~w!lAjJ7F zCqL$9OKdtH_J%Tu@Ov}=jHj*Qq;3~+jMp-xYYb-J+I(CXJ-JsQ8kRbn6kOLS8Pd(7 zbB0w4=G2eU*TgN6TN(?AF=irMm%l-bP){hvjZ9lVx=HFN6DmfEo*nM6IC>7~5q2-+ z!ntI4|Hqg@6$*7D&FG?hbyR|_4U+`<(qE$|dcM>(S%bZ+se%(y{;DLfmwoXx=YSU7 zr3e|t!fe0ZWkbOoqlW}WbS9}3Ed0PlRTH zxmFcHf!)b|>7%q@yBN)Vu5LE(qV6i4u%jncL$N2jdfWGd3# z!3+6g_nyhgIjnjL&V_Mn7ZEDG6&tY;5QEe=xxPpFa7fPuDOElPP+x_;Ce?sE$aumC zAh0nFu_IU%ekfn%iW6Uo5zsZu;1hb8GttbHp;-ZgI?^N`qFK3ua*%aHi99ijAUqlK z^4hMMU(WqBUe^7&AL+1}{OhPCbN`|@9F1^l9R?;{O(U8+Uy`zA)U$?R%tsEe15n*X zT3o5FoSBy~h9RT+H-rSqiXb(IE2=`ZFzx7x_|$H&@5k@`@gGj+!eUG|Y#dL)TlvR^ z_saAEb#E{U=}||<>DYT&y&p}XmFFVzexO&&p=qIbz88XA<;>!0n`ZrARM3x@YaC0L z!eWSDmP^f4waUk)=D>6AZ1&5sI}y0%X_nN80;YYfgDYOksS}RV#OX54Ww1_IRLVt_ z-Dk|w_SYkYP`|?wI#g4e3OLnuExa@2(T0BaVtl-i@}yd>a~cWSd;H%G-7BnVUVu@A z^6M2<|ASdf30;X=k~cxRSuIUe4XO7bNIHr2pe6{@W|$%zLisgiYfyHm>CId28(b*`#A~ZUrv|#=IFCsh*)w{T7TpG(rpZZ= zKuXn%Y^|{aEsWXp+lFRYN4M!j6}vG)ROs5`$0<7<2?R!q2!OO@gl=*_klJ>N^Nb}s z8GF1(voR{1XF5{;`=*{%ng-f#L+l6Pe<(kEB@S5dXAGvu5^L1cZJ$Y>_7~j(kX~w5 z%MvqPJzYhMxEy#9N+ha*L=w=S=L`x@WO!1co=cvK&0_C1JGez2NZgzQYB>ZV z@HJF>XM!G~g{1^XBW{n|lw~V_-$@oE=r;90EOyDf3=Vwf)rMtDgf%Q*S7-LI@mcf= z+D_Mw&hEC8s7F7i1I*_1#8{RKv|k62f6A~MRZeu?%vDB>2DZi1NH>342}@=w<*O+R z01E?F2XQ}o^`-Y)HHFGI(0mhUC|=tSg;WALw!pS83E}UiSt@Jo|o8QOM5uI*MO8r-PBRycg+S zg3B+3_IdGUXk#3D{igV==lqmtzrSjhGw^xzOuBlkKLhJ2VhMYDi5#Wlq)Yhr{#Od= zV_1H`iQ*xJo@%Q+3RnvDP(vY9$_3=fACgoJFsjhrq<`>Z%`q<2T9&!1dM2DigHYUh zN~XC3rOdvg$V4%p@67y!rnBLWgl$~9)wwlZVQw;hrhXqlSYk)0QTFRl$?H#@oB6Fl zsYQ>ltgy>k(F)`Q)BO- zJKnUR)}DM$*yP`|j4_os5kM)R_pZ>t=E8f)97uA)y*^53uLx8t;svkM0JsU!Z3u@9 z3&Y}?J@G>V0t|9R(5$8k>FU8;9xV1OT+ExnD?cRsE%8MvaHE8I5I)VrtY4FaDmgY= zP=Jk$f?xT%YgI-sk1S$IR5?Z;0BahJYIb8@zRXQrPF=m#X!^@7_XKBLco`ye1uRxb zZikp+IAAyh?7}{jdZd4}rJ{znQnS`-5geUVM~iIf>xn9Q4v+uW-4u!+i;VBJDahF7 z@Nfv331eadrqFS!S&&J2P651hzV4ELsRx&XZW@7JBvq+0&N>GG^c%WchV{2&AQwdN znbBpfzGZ{&CHfS#T!HlEW@iahSr3YTc)sT{!|+ZVCZDi?cM-X_y+a8d3vxJ=-^$fN^AGvTdvIkl^>K*vV|i^`Q?yY=e?ylm%c2Y#b&wq0SXoJ# z|25ZiO>zMqDEe^^@^i#$lKOQy-q4kkK#)tRuxWe!dn+czqE(?nQxvmH4C>J~q!%mTlu?pS+z(e;={ZG(C8sq!Q;ix?M@EVVV&WZ(_FZF@V`& z55ZWg>*#~Wax3rmBxbnYcN2wE0qQgh(LVpz@>*qpX-*eN65z(f2_OBKnl#lMO0+be z#CV!3NOB;R0>uuwtL_O26hs4*Qe*|1;mH_w$q{+2fFW+c@3`*Kg-U836{mp?MDkiq zj%XkDbL1|113mq!hbQOtbG&&gKWNU>%jFgAyjB<5L11Y~WM4%ou|3wctEaVE>(vxb z@jVz=fV6szI-lMg3sM{XIbSYIl=o&RckuJH)iiA0B|4U%Ix8(9`maC9T%vPQy zVs0wE;Xbfo&dpFef+0CUMHY?^4moEB3~5iB=iIS`8wKw36x`#1;tR^~MD1xd5#bW6 zu|i~pTv_bkUh_X+|64N+s}XG0_VhP9Nm6#Pjj}kbjm78YlH@(?dIA(FZUw=!I^8k- zTh?;@{~|(K5`Fr!LL3Lajp9x0sE?Yt7sdbO0<=}@z3NETgjwr@X2^>^y8b`u@M1ZW zF8568Dgkevst@9sT7?j(Z#XQ3aE$R{PqgwY_L7brpgWf>>8X099ZPQ&UCC_zer$Ej z>$X+lU1G&#$9@rk7%XZ`1ecCP>l^291a;twdM>3f(H;*hP+xyMRL}2bb>+Ow5lllp z(X%~lS#Jd)uCJ{zv_u>waFw@xhIa;4@#<2;Gz^vTp0`lzdB^#p~!C= zap!W#wrR!?PY*(B%0FBWf^tT@t2v$H_?jz+-_$HS(^SWjII4Au>XOe2u&`@-gqmjE zI8jd7vz~A0$l?`U%v$W7vrMl;#7z)ee*pV}9ECa;6UgJSb}Ac98fl^-j^*%dF-K^b z)T1^IBIxa|3RnvD(t)anr{BnY!Y?*g!Sv&i#=-f=;OpBU0}w zy2R3Em@3|2^M1`0M}i5{)|7w*BrSl+hTkd`^gK;Jv`hYavxf?SRVL0tEbpD$_)lPi zL^C4pWu`ts#9jn(l>|tX&s)o(>~hkvrmrGv7ep;<*@*;R$?O^T43Kbl`BCixjbgub z)~x+L@Hev${5H_-!%>|PxELuXyXW*ue;o+GAw;To;PT!q)pe%yio3qa>2!Iu7brdl z@xdIZ2k6uDQ{E&P5eyKI5+|#9;ldXST$*-Rmpg$3D0>!f_wD}faHpPa6GRJ#Xd&0G zHp>DEWw1gRhSqZRi;EqmC5NSWa6-)MaKbP=_u^v(VMmBYNwA^RUQ?QfHJ-3j6U+Ey zTzS|$JuDFY1PtlL|ItTa3|AKTfM<*ZpN)Z@80ak<&AQjuV?Rn>SIFkdPFlu!R~u&D zi!)2lj@rSy-2<;Qg|m||wA;yGz(=f9^A%{f6q8%a?bbIx=-7DiJv2;BH-^QYdtv9cRFrJwc4BV`h7-{f$g<_!V6k*KFvQMy1n9< z^u;gw({@$R2|837bCVprF6>@e9&=E?AxyoZz9LW0^AWe<)gQ?{DVFR>0oyY{!L0oq zS8N9Ls>_ML$PygEzU}9%wIu7*m`_b*QNVBy4NYG5(8zA zz|Q~*b|L-@8Dt`7yOHV^?ix;^p_;n(#}nOL-?QsM;X@Z6Q%Y_VFot`WBD_=6$>JS+ z){Ah2_9waEMe9*+^%GP-r(BqncLxwnUqIUrZe>ZY*xMCMit8D9T3P`WC7&Z~Avn z+`IwA3q!?XfnrlV+mJE8bI_b%j4wr`*952`M+B{=_=eew6C4tw66x-^#Jc~|hP7*0u*IzXcyNwDV6llJ!_r29A>B>d<&5UTK})WpNYu_E-SabM zxC@!5jsVT;&Zbg%dZ+LLYg;d90I?;@u41o`s+f4WQc216Pe>C3OtxXHIaFEkS+>Dd zX1%(^B<~$@SYwK#NR7Zek-_>JIL^`tfCmIK-}4p@vjbvhV-y^$ zGV|eh5gO;AJ!3_R*XrJSO2eQkz?`pzc)@q~|G!!Iu5Y*p;xxINjd6J|-SgwEMF9%X zYa^q3lK#BXht01nE+$u?+gCyMey-D2qAW0wt&%8lSRW*un%FDB!S}jR4Uf4C6q`#@ zs|!T@)EFQbkJk==G^_=ePA{+QT$=nK!xG7h+{N~YJ|Ee4Kcp(q5|;!zE_eSs24%ysbAgM>G}qx0W9WNThf5$&7PnS;yEQ0}hH zeFkLHQ72>=YsD=!?L%O?Dy#NAc;;f2R?(9ke7bxV&2wBQ=SMEer@Jg`y!iCel9;V| zUiub+Zz=h}+2Q01L*l~*jCwJoZU<(J?4<)sfvKX2R$+pvdh8PVT;RfSR}O%UFRM@Z;gboBt2NNSW8uNJJmD)GfNwY4T`7TbNiQ}va570X#XokaO{n_W(# z=C-x9%O!*S7$!z{S4*vZb%~fCS{zFX4RFoD=R$k31Yb&D)j_)G9+6rvjUNP+b#jow zv1Z;zj6~Q?3kPl-n-O6M{>16$v@Y}06KyBPWZSP-o4Gd`iLg+;gL5UR6D-?Yq?PW@qgT=6ctTT33azmfm!M&|;7|?asQr?ZlVmCpG)9(zl0zge39Z#iHL7NYfW* zY0jAKuJ%YCebG;C`zPxB@NE-za;_yKJnN>g&Q3G_+0R>}4GiVhN%DcOSKZFx3{yYN z`r+VWJ^@?IV%WBG!xHolF@)oW&-!-#e+ynLH+a@>C+VF>-;m|a&F$2Vfde*AS{R+} z@d8uW;RH^vaBbHJ;*BKZqkqD~KAi`hs4QE0*H#Q+DG$$R{mehcg~$Bxj%f$N=`JM`{~=B{>thE z3p6eJ(5vF;I$i8>%pJ(?ceKT+n?!qp$Q*-t%(oQEyUW6DpMV=l*?slkzhHxyJ7*rL zWUM>Qo_zA@7|V1+T;cWVQIkr;R6uF+Tn6!l4Heiu&dJA~!fEnu-EVVF!*k5%)8>HY zaL!}<$Al#UiQn`esb?(5fNB0G=UN&}+e;MH;bY;jixt?own4_Ek!%D^p5NYCS>O$YpI0% z02MKpIapwYAj4_Lc478oNfD1z(O8I>6SQ7JDY+(4pn6b_O(lzo%`-=n}`cM`KI82y|`5+Y4;WU ztcBzu>n4$m$@ZKg&Y#&udk?JoPh1{@OFj4eojj%NXWaIN00ptaVa z%-Za3ZrEGt!F&z~BQ~)B_?Ky&#;M1eiEe0tAVNw0$Zf%kEH7lUS+%b(Mea}EIxFlI zuFsR6o+l!CcNg<&@UIQwlVS*L1(TNTc`biHF~M4BdekO;`iYZ<#EsI5nFM*i^V8*_ zNXV8x9ZrY>Dlcsc(D<5*$p8qDJE?o}V>Ng8C2aIzX+riw$ii^rkP)og@)`E;_l$xk zqQx)d?=*HTTo-L#1ntrn?>Ype`-y?s4_Tx|>%^GsnC$4)%RCz+_J_o(1NVqFxeq+UJ8(NYar92Nl6OGuiOWy2 zEcqdE?+*4WAwSW;Cnc20+406W8pHu0&g{(&My*f%)6--9pp(~9MRTO+<RH z$>Lf@=gy+oH-leo9GJM$;olJ{eyCrp9>Ni)??-37MoEPLM1vfywdG-4!?9JtAbT91j>r&{=>@Tyd z62B<_s`r;ne2(pe)cSZpsg)qiZ6mZv|D0TlC?;SJO=tH_q5pc=7RE$Z}z@-+yuggeYs}iW3IVCTuF%HypAu1mqTn|E{QYz6yloo zxFHXh`4g)?)e?VQ~iR1!-)1&bPjZ0DmX4SV<=kup1}8XP@^ zKqNhMB=IodZ zYt&o<{hkF^D3C_>_&+H0%u{H68_1v29sXs#zQ!#RMjV!Bn>ei}OlVXZxGG)VuH)mMYw1jv3w4VCW_ z0htNwOLUC~LT>z|m_ywyHK2Tbz&DKk7mwP28+DPmq_Kp6(HnizA*Zgq9cP$&#i@d`-os86EZc@!Bb1YR@zWtI4JaR9Z9GNPkEI)9pnbr$-JQP?h z(;vubz(OQ8Hm4{Tnfg_p5AF0Ff{p%z%fot!pcm4a*5!3ti*2ul5usv@iuVxH(sM?z zem8d?e7%^-+EQ|zayytS7B&kfA%$N#WA9-^|5BGrc3gz0gC75@nQ)Y;Uq446$)Eo} z=k|74&wc#iY9>+D&)8+;(4`xf@3Y*oePx*J$f~vB-v0t9aC%U^a;=q}*Jmj7SIkDY z0v^2)cGNhC7#u9H6;Q777Xth`Wh^oakrHQ98%HMM09`JN*jqS~Matr^KGZ%%I#)oC z*bo8)PX0_Bc#iU=s>9X4n2GN+k$BR+KpWmkr@~Iih6oVOwl-Vyn^8W^@Njj7rc}*U za{0=P;{hn%JW7UO`MJ%mPG-h(Xx#b}L+BIjkw{}cm@CdZIF4v;1`P0Q3WJ1xQjSRc zjU*tR(L=x=SyusW2 z!so05fMqVo8?{KRY$}Nh_^9rah3%wi{6DIY6_eFr((j~)+hh!72AZ3;Zdf$p%R@Q#JFm3jz-pN1^ ziXZ4ox(TDgS*;A=CmX7b9PIj0cN$Nur83$`c_OrqUpewI!dzc;@|K2nXX!j>fUoUe zVB&nktKUG*I~Jkh9KO7hZLIc4ik8$J0CI!ka+j1bH#G^$H|9?dl1?kIg${Pw)%5NS zO0v^}1?6iW76FTuciBjcXMRsMw7z)jBx~VuY@Jf4(qF(n;X#T(jK}B-CchKfAbl*- zBOOp?{^!;U!D}FWPJdJjkFCAjW=uf_cfkB>EUT9c}C@aOfAw`oIv`q%e`E zrg7G7rD{Q>HR75ZebA@;;=%F9)?`OqSU}S5_cKbA@2#4p*C?86weXMpMA79roeG(J za#j|1$dfoY!MwCQhaVr5K!o#a)`&Z`rcN}a?&+DcA)qcmNWaPM{x7y4>50v6NJW1g zZ=I^jMw#n221ChEB}$zhhAQ^{I#ga(jC=2<@Si(Pp7^Jp%kTfCsD9whm0=t(27m`~ zW>}e5`Yw5(#(@y3+~v7qCg`SQd23*Iz;7D_mO&30A#X6#66!zLc>R0}+obF$6KB9v zZAHU-RoUhicM!j*f6)YkcRD>m$~50t7r6^~a$=jp;qa{qepaK;C{=QK8}hG{+(Bpa z#m%33j2Z&^4lSwJk)!aJtDgI*Enqe ze%=;<`~m~R>c?Q$j$)qK6)soqP*F(pqWYW-f`Ysa`h|T5RB2D%cGMOkQLC?HZeCaq z3WZ~}L;|j28D92{<5|xkk`oaMTRg-1*l*qHTb=N5kjLb+ax@ zJr);=-<2PD1J+g|I!fZc`4|=iTdoYGtO3g*`_$J)YQ5Ef;z8e~ObU z*%27Us2nT*RHaxc^X`Vwk%`xFiq*c3&E1d8B3l62XsdM=6%Pqmnu|kkQo4wQSSa}^ z0{5W2a$0YfUAVZDvLZ7HHY4RX(lCCR=Q>%YOS(+AoX43GUXA%QRbO}(C#l0`(eIHn~~#X*vTV`lO~YC(6{sZ zR@JCV8pkVC+Zs?)+|9}5jiU+AtJ@$TG*dVA85aQG+F~)FORb$kaD`pm{T?#%^xDo3 zQ}{H6QNmE@7Hw)rI|A;sOfh(ji*{gw{?kaD6WPag&M#e;Li@lky_6d>syhi3FO2mq zh>+K-^!BHY6((yJ+@;fJK?c*iD|oI>X-LhGortdSv(9Vb&F#9s0rLj-U^3ia_fjQ^ zp)D~X|1Wo>{K^YaYu&x;R#&zRhrUYH>y&+&9>%D71l}C=`e06YJW_Vz*}G1XaTt)1 zGih|^5)hKRecwh>ovZh&?zfLP+CTS*3p5t6z8)zGry`j97%%78zInw($PW$8B!cG8 z<%LSCO`4qC@lwK;g`pLu&J&+WXn|6<&w_o~X=)hMVKLH2 z*#T(Iq;JG)yS2T&mLH+GGfaKOr2^-+w@*#FDA;%c#Fu9X<1uO_xb+Q9U$vng%p?DT zJF_b~D-8*|(l_`4BoUSr)^|MW2;OVDW_Gji1px*+mxa`tn`)#d_V7Vrh6#bAEzVl1 zz6i}{Bz^w(DjP(5(mE9UWKQ{=I(;M!z6zZyHc!wgTP6P;^X2_FP4q_f-mh{@;?wM= z4SulGyfBPVn$Q|6;orzs*H5BhweHF#4Tg>+fD?5X4|M-MC{)TF$4NJ81jhm$cwhJJ zZTGFLl!5z)6*MF^2BBiykK#)P$nbSb0onQvRW>+S^$2*N0#|7gBbRDJ>q$Z%xpD1E zR8!{%y$vFrJ7r-LJt|kJl8G)oT$VxN+ReT4@88p`3VNO^mMD327L-3C{cm{G0Wh}m zvq%H~!aR^$91qhhUWb=ktG9*$Q;j~L`}ix-SnJr~x&Po>U9+T&cB;$i6+nOlVFRzM zEXaVE!*RAP+Y zph_=)J4Vf)HJZLE5wW1B4NkNO-SH#yUmuiuI`)OpJx9vI86T3><;}#Ly&sMwO@ck4 zb=Q28%TSVdmoWk+~6N3$LXbo;E1Lo6S86lX%IF^H$I!*jR2~u3c?yg^cwF zD7DYP#43{{3Jq1CYeqR_b}v6in=yX@U>!+L-cU`Tx+TQJHCcFG@W)hw_#+7K+{0O!Y08_Oc z68SQ=Fp(@D{ai^wVSbN>Y2`=-ok~o*o;9AYwEb6riJc^jT3-8ypW;w@m&B}rC_n|Y zAi9h@n%_9f7}G4zH9DIRjv()5Ztb6cQNOr|7ZU5;R>l`@4o>hBD1c)^3$G=MC2^_$ zLjL*j*Xw`Q&tBI9e;cs8I-{Y;>N=A;6FuYTh8{5I(^O#D%Ay`$W&mg&h zZ7HPd341$+lph&}QAHpw|J-lJ?fQkiBJE$Jxc3AQ{E9@lFC=XD(fw(G_~7pXC#OdO z*(zc04MnqvW%K)7-r#^TI*=cg;9T5t-MROe-8Z(-D8GgUZr|XIq9-`r2=V%sk=o!glUl^T-w>jMJpmp6i9%b#ExC7Aep_gvg)H zP0K3=XMQbcSF!+0&-z2x1i$+AsU_Ui`1LpvTT!Dfx$&h+?(_E4p}V0V)ok5A3caUl zb~jUJq8<+%N|9lfi1N_RRQA zOGtyr=tEvf64R=4(}7Q5iu`7OJJ0Vc7{Ne*YRU(|D$BP>+bYvc-uiafE^-tn=Ht4; zzNAY11RS&jMT=_hY0;Y{Zwv|O@T4_`*wb|uTG}o>w9=%t*Dj^u(Hzf7f7Yi z#L<4s-EV!64A6vFYT;zWJ|EpCc6Gi0wG2#2l28(O`UeK!T2F>welK;TSo0+bd-itJ)wb;bBnrln4DIU}W% z2@mXW%h|I&^V#HS5YdZ>@`y>ug7ygPsi^ugAD+lrX>8%B02?Z3>js7LUJ6;z11a-k zE*8$&JhmPi!Ln}t?X-vXuF(61mqGr@GEH2-IhD@u36Z~(l=Y+49z{~G03lFnA*}S; z(CP&?lk2xo5dSr)$O$4x3+)qiqjTHZvoLbP(K5h4D?Eu#MU+pxT%<1d3GU0BRbDlE z*LCO*yGO(5j!K^-TW(4@E0XGdj% zeP0c|>LnwB!sokts1hV}6eMkEZa1leDH-#00jn!kUn;g{vLRjlO)RT!Ju{cBI$?FY z+vIB{QToSTK#1kO}}?I zcU3(|I#)n70mU17ul+P~Y!-Jq&O}H!ddxo!R(%{)sAqLA{D@wOdq@OT7Q7hqF!_?` z>Z4t$l#y2VODaBBeFc6|md7ExCgQj*ntB5660? zd&vg_zbhl#+oTmLzQN-uR5lt42;Ziqc{M1U2)X`x*9?lvWKQ($39bmX`c|kZ!XbHM zN-Z=%hWr(~qMWq2dYOV!O3fm@ytR&i<*h`{%{i^7m>Y(-tC!p^ zIPoZGu7s>$#6|#oVbIQV$6=`Uk?Du~?;Op(;m2DB_Kxq=lvhGGr1~V<5EBg9gwz|P z`#Q-LW|*8gmS=_$MccfP{({$oysGJ0N&%Dr%iw9*!Y z+m>Y1uP+$_Z4?N*YmdVbJfE6;w{wzi4VJEW<&!zq;FjMOc@Pm>cIz+dUn(vJ7+b%& zr}RFpLBrUA{3B~*`#5QBL3wZbAz=JMU7{V4H-p}C@bO5a&`0V%vVJYi8Jqd|iC=@9tdTS*HyqHLB^2R>LgHQaBgpA+(G&lLNh{Fp&U;IY| z`xr1=ppP)FUf#M?0)pES3+HZ=uv?>bY?lKd*kh;+zY*Q;A>}1JX=Zla3KoBlJBY7b zB9Mlb#mJw#ZbQYCmqSRpmEQUA+T$o8C7MblkX#5Jp}-HCamPj{K)%msDpSnjxm$A~ z1|*@PYe&-JBb#$-hkC$S08NgN&izR$aywjh2R~OoQVbybQ82!&`7L(u`{VH?U_qTS zb!3`?`9OYpO#o3quD_n^7Ept_E!$QHCq;*XKV~+&Vf3U}*(!IS9d=28cM>2_u=p{% zdd>DxmE~~2R0LxExDJY5;3BW2mvYu3$BMSI)w&G4rO~4iWQEC|yF(TRO*4S^9gtRm ziTI?+sVOuF3Pv6HPuey62UYNP4S|5-2@42B2#-ETv>fpj3%0cImfX@c;ZUHGG(FLA zvVsg(7ryG2cgb+NiHDak>?m4G(YLrNG0|d(*X_ffO9Oib?lk1`D;F!VRJxtMWSjvl z+b=V))w2`vfEfuqCQEX2W2vNXEy&FW1{N%59Vl(=+12*JE(#(|wIxxcDPF)WOOag1lY`^vO!iU(E_@nl*_?f2Y7Ehd7ex{N zr0DJoO>vTX$X2T>4Hs?qW|iS=d(s+CeOFlryC;;x6AJ5D&YD(Wwg&#>6|&Rkc|*qb zJ&s{6WKWWf@)jx!&~q#zu(&e>4<99@0oZg>YRnq2vaS4R$k)tP!X673vE(;Y&YXhE zb+TtbR7bUf@QXIhO~3}6%iXc4dMNZ|c|p<@u!?ngy%ctjXFs@WgtRWP{M>XmN3JnI z(S}KKi^WKJnAaFAW?a9JDF_50+$ma>X4Be`Dm&@%T3YH~GPEv5LM3!w2ou8i<7=kE ziCc31r-@xr#%!fXj`E@tDKu#HoTXJ{3-GRl6s>zq=%^w9DSF}ecJEeG%%jFcqGGr^ zu2-V84`kZBwj}9~9Xtf(^8qB-hM-2bDbXv?M zU^1)XN31m~TZx{#><1#`b?9AP13TqpL9{AP{GL-s0;2ox?Z|DC+6@t*@C z6Q0MkDI+ud5!)h_G1Nas`HUDAWNd$V4m+_bF9!T0B2~)un8AJIxSKGsEc*FTgf@k| z^>^XlOIOqlb*Fm9ANj==@-{71a=A4vg;0t1hab5lcqOf!-5E9=s%pjdm79AphZ7O1 znmZfZ{|3$55!`u0Xy2ju+Go9uFg`Yv7$5`60hUHWZ9b;!6S~@pMV)!NR@Tn6x?#rs zc?J_$;(bfp+tD8ZgCxn10&06E?Pd3b1#M45p=tkTUq8Jfke^otx}D}>BQDdUGe>(K zKdb@h*aaM$j!nf&6jgDsP8Ry$iZERbo-!4H0BRa`33%Y0I$-**8_3wIouQtdzJEbw!`OD& zo~$(;JFp%96@_4i!PlzYZI)m&f+-)2iLxHK_4N0mT;?qknFJL{)*wb>y|Flbyi;&iEOj+noZ988tM;;?#^9tm5T_7vgAz?z=aPUsL+$P6yQl#9ePuk z>(0tp6obHtF3e%M?ffH^LdVKY9t`YVnBTQMfCA2BX@l_r#tYM3L@TaRp1bOb5&;J& zp6vPD9%cE4ncIXAm!`r)FjLx1HHE&xKy#N0FAd=-S zr&#FB) zKF3~pSws{Q&7JFW!o-}Ybjj+E1P~+TfGvk&V4kHZ?>uKEzc*ZAqs!54SJce}J{ero z@WP=ScoS`Sdk#LW@6Qz#?9*kpvh-^ZtM@viPH7eNOLxQ!SnuJPMcM$zDG%93{h3!W zCZnk`Ff>YzdY&o*NCx}s^ti1{c8qIJJ+zp^pfz{%`P%l+5=QUiYyDW<5g?-ZL&zSb zuG$;;@|uJzE1PL9>nw~QU`L$2H7MmhWFvBW3BUEs7O)hF#SXjm8{Oz0pn1cHq{`K% z1boJ!FlKmss@$D7oeXKj7|W8ovUZqhu|9xzxW#f9_t9f`}zSCBxW89;&TMxdI#bn z9R^=l#QQI(I6b3?G2Sk3{G3uRPwI<%xi(48S^d&pyb~N~D#a;m+tl9e*Jh1G0{TFR zNd%?!HS1$-6!!+^+L+rtrkptK2BR7!Rt{6A`Yu<-H#~vm7LFHiKqRQFV_TjgkE#D_T8VKDn*~r`aB5rdB-^^)mO03Bzm0XadV>C)Iu)A!w;_(hnHE=#`!C8 z$km!}liY`}oskblz8oO1cbddU+9h>=m92tGJDFlW`OPiK3{GNZljzbfWKkQ&1?Y*E z)x0OfwC+4-D$EvxesF$yS&K-nUxS+!;bAaoYJG=@mZhZUF|mq^h@h| zG(!r{CtcX%wT%k;00-!;53vev68nKHmi@;z&G z^%!Sz`tC`WQZ=2X)lKFR>3WmZ;#_06Vw@lma(Bx*^VFVcj-}b_N+#woUjx@jus8`w zM$hn}ZTh@u80ZFgAhZwQl-dK}%7TAdTY4c$Z@fw}FL`U&8h1SndQ+>>!DeX zK00}yj1grAJ-vp3+_fivMdVA0jSP!|=4~so+=Oif7qfgg$EK=zTEUMANFsZJBlEJ< zH~dL(Hts89jd(?Moed3Bm?qD56dhsIgV)ZDF4gPUz`F!JrUoEKS!Q zIEgI`-NoTYy=>Z309g&~;eHO~Q+~#2N~gE;{+DLjh57$NPnbpG6n&)0h}oOI!ne1@ zeqFH16BMDou^9f#&R*nT4Xj z^UECmnUIA01er(`+2bD<$o2*NSm90~^-1N=KsT*G@K(+FOyWbVGo(rfAAmMu7606n zBHxaP0eP&O`am%LBGLew$LP!?D~eRI_e0sNeaFOSPrRj1GQ_2C@S_C`?wfH+ zF=qDknB{Mt*x9^C&J28-5zuU1+y(m=9at~VrXM@!VZ8dD+apTHWc!C@1W`Qs z{|&u|Wi%5$%s|eA*6*$|p;oA#tsFXavrcTF*`uhP&OInTM8$yT)~dyIe8)KL;%QXp ziBz^+G{Kg9osBphiU>b4Go>o|o!q!ZdpA!2%SheQd+mMz9a<&S$`?fpr%JF67vy@a+q|ZF4@Xe4P=++x=xFPF zW=V(6mO5;;fd)=gCge*cDxWUPm%(cykt{imbBqU?iHh?!w#jsc1}Np}{{rADcpd6HM1 z3Yx0-DZdvyitx*8xB&6+j)|irW^A%FhB}dD=)<Wl){SQFWz$%x*6h?GOn z#P+n{M^NKTv44zOiX0q6Tb5i?|9$>Re#mKTD}GEa-MH|)H@`-}h~4t5YbQ0p_z%=! zM|u+&2?Pd?-YHVQOQB3Gg;HkMvK}_kl9u1;c`52mME#ad_-}3?v!AX!Ee$n3`X)ZJ z&^=BqNO=dk1)H>Y) z!+LXaWP23RfcZ!Bm*ktS-f8!+^~!8~3Zr*a3yvKp6Ti_FZ#q0@?+@sf_oE*vb8-bOY2%u;v)7wKgf4xxT^=`S`v527T|^Ok8X8!HM>Qi-?CSA;LFVdTRLQVkf9=w4h! zqlB>)%;edcOs>i@7SU!J+1OI7fdK2hw@>Bl(i5`<#U9~#VEhbN;E;4k;B4FzOnF4J zMqzMO@pZQ5KxoXL#6ni{FvM;G-)P|zAS+`40A;2>9Gy&|2?x`BEDUa(! z8pAy16A@{wNs9`n1s+EtYr(DZF9gsrnbypf4VnLNOxg-)?YpOb zk!^Xx>WuyK+()Ma{fs+Ws^3xE1bjPDCeP-X5NNGg*JYt!TjJ_w^=p=>#gRMw>+;~F z64-)4b_DVjlBoZ>Xo+N9YE>76^^+3k(2u9 zX03F`c|fYa;dJTEfG`V&Q-jYQ)^X;>?M-u!ic%A5Xu!=wClTR-js0!=?B6p$K>UM`SXv0PMpL9WDN@S|B!||E&9R1rgo^}9jjtK5k zSrt?D!-59biL9S6JL*&~$RgN~1IE2u zmXh0ttSwb$1Sja7^-%gW5@IwO4*D+JCD@M<`5~}Jh299pxM!8{%M!1Dm5?8{?boj3 zx06$-3F&w^B69}-Os)>ANG+Ms*8<0&u-+-c{+8>DAIc`#>!!5*iAw;7h+rS1fz^GX z6iYKD^>r;&pf0A&CWGWr3NMEqoT7v{&QjFx&*ccKy5x?)&nQVI1Cm@)jao5?hlV_g z`Kyt#H)a}J(8H+60jB;m@tS~R)F8+OH)N-5g`NsR2i3ER3 za3~ixr?)9G46px@x>I(yLc#Q8;P9}4_XZf`z9e&KMZu2%HXq&DI@)<1IRl@eH{jQG zv0A}&wll#H-hqJPny5ahKGpKiEtOh+@j<*29Xub`Sn)mtO_`8$ekaiO&2sUGo788i zbU#ZU=>;&_ka|0?1f+7}6V_Ro8Bi9UVNdCmVv#|at`Li8aY`@9z~1DYv0;o#c!S%i zGBRa2=c9#*#Y9;fNXRl6fmY?htsDboqXp`m4!uGi_48bqsdBXM&HZzq0o`l;t>A+2 zE%a8(W8;Mo2SLUY#K=wk@F>}wPTMh|n^^~;aGuIS2fTwWhyk|W-;f8v8@_{W80VWd zQ0G%6W2p?UY?@Sz`NiwZi;1NKo1Cc?J1!)XA1NR;+Pi7VMPU!riFS(y676b3U4lFz>z-;7pug#)_&{b9_-jlNq?32lm^&&g@r0{TSIu%&rB|W%1kgox5{(V1V6~#E|W5E zO==6UL#ZGVspyXqcwX0s5C?5Ja;fjzVtr~Uh#yEIg{nb3Ni%2}py#>{Y2&<#7nD~} z>JEb0q;Zbe9%$5+l7jyjd{`v+ovZGVB_VoAPc(6CMb{UlUud0$Ux0 zEzKo7hiz*b@cTbv(6JCayyw|87QM3D@4ST|(ifb8KQDy>@~cUrY$U##_qr)+N+h$J z!w;i*7q}*7;W$|)f~%20iRTI6wmcCQ4iV;QV&2;4*af{#s7aZ^5HbzuO$+Abj3Hlx zJh<;oG*{2|gNKbgjTCHR+6G-B1EQ{vprdl`C)To%Naq#rNwOp+>^>(V@{5`uQn6FC z*}g_(R|$X1jHZ?onMqUU_WI5PVWM}3>98yB`eUx+RdyGK7grd`=WV#YJk10|U+#&4Xjs#8`D?WkT zPrlei%weKz(t>C$S)|FF#ak>JM&CtJv=$HeSs)hBlLr!FT$JjsASUp>4m3YMuIcX7 zkwy|jTQ)cvRKj!vV*BhxWB;f*Br4xcCE5W@?QJ(HN34E`s_3TyRm3B{pAI0Bz!zFH z!9cGz^^eQH9sO41_IlV&?-IM03Yh^&+Tp%>WBG-rxRLdyzcIuuLYxS)?Ta7qZBhON zu@%6;-F#PfwmjW}BCfbL^*i}N_(ko+bDi%bLI@h1b<|UZ~PGq zDpi0u#jSDy-Y5%9KkI>p92IUM@5`(R$8@R@?vHEvwr6sr!{hRPyJb1qjs`ZU4O{r9 zE0h3ySBbG!L$98|lj*ujkF#%UoCP?8DCNwInH6Yo0#1HOLCeBt$l)-PWcU9N0LIw# z{MtW;X4HfVP>=mV6G|Djs4Q2k;edc4?@)HW7Yo}M7R+1(YcVtxzv}O9kNOt8`h*)r z*d8y=;oKYuua>sv$Af7{7{|6XSL6-Ye+0Q4g^#LvLV_Z5TEKjLu=rOpZ6_+$=e`kc zD9B#H;3K}=oxv|IE@#v525S-`Dc@rw5I?zr6ofwwEMF)@bLqFDD`ni5(|-jUo?N7x!0a33b~C|m-10kw#89;PHd)#a9A>V)`LmhehjtX zhWA#3O5+e}H(fV;_6j}j@bU(O0lJNtKb6RJnJ+(P_JZqBX5QkOB!1(vwRy5b!`^!3 zx8|U66S0@wGcqg0e@n6$nz>ggU?W20*gkkhoo}{&|1^u@RiBd|`zA1lQF@8ntf%Wp zrgU0zz=9Dk)ya4$Rs< zq4qJ(9Bxv)KOSs4zhPkn6`&Ok{EC{70H=T-pDTe^;LPaCnM0T{`N=A?&kR^z*&hxr zwLhT@F|?#a*~R3N4vP5mIm{?B2?NK*8u-4(>!p#QTW*noo#Svvg`}{3CD0sf=9U4` z*}vk@6iHF~J1>UD?AFjqb|gLA=x$IVR+et%Pm!1~R_L_&1PvW#$-*doA|!k9uDkZabK znC?*F*)PFpCm6AF#1~lT+OZgYudSG`Ar4a^L47@s;HG5iGE;&iXIme{(z7&w2}vK@})Sxn>X;R%eahmB}>#pMd?O{gPs;=(`t$4 zd&@#dU}r5iLpPw73;#zMEXIzA@P4anvaWK~Hz0>Ihimr0$SW7`q&N&@ETuriSfl7u!5>kqW%he>g>ASqvQFyXe(=~~Aq)WcF8oJpRNl67eDGZbPRy#Jk117u&UlW117 z?Ae4|aVs#Sr$BpUtbU8@0)&vEdZ`V&M# zN(X%6k%^&N-fkh}IuHz`G*%Em?z1!OW*K$ zSj{E^e1Gb;_v;YJW+OCc^>bA}Odbz$+_sO-(GG)S-D^{3ka=h5W68eMkRch?TH@fG zG%t;{(k-r*EZXK5frlBG4Lma^(rM%hmH#QGK$hbvvest^oTIDbasyke#xOh{61i0e zYXNo38(QyPVEP)Q&*5*NTt#A$Ffd5>PAO;;u-}dpSxaBVeuzfq;G- zNO5Nc*YRk)8>%sfI++yQ3v2wUF~-;R!5Ru5^bt%EYjoGc-mE<|wg2Qsu%v*^@rkDa z_QyEA-q)?SCV%~jn0p-1I{;4kFsjrM89}(k|J3iwTK<1#AZ6pI3J&xEgo~6M;g@c# z!2z_~reUWtdj_y|yfZ5710NiYT;d2uR+gMRL@j^r33D%T+$LBkM=R&v^&BXU-n`_E zA{U9+ynL!B1sA4Css88YUux%Q@FIyL2Ej#M7G3_cTnQ(y(A&)WNF+W4SZOZ+g+U*` zWwgkDwPp$;MncP(sFPN=5ZZGW&^X4Pspuv9cI+CDf|@!yYB|_{0DCPazY^5KtU|CW z-d;*>VG$%%u(j0jb~39g^>bwi5gCFa&CUark=iK4%SOmkD8pj9_hRS2;OvfIuj))XU= zW$Wy#Y=G=G4;|Z!b0Ea%bbNe{HU7r2{YufCmD_0^+-qBCogmQ}YN-$S0;X8-J(@T0 zGP7i+w_DZtA!9|aWR+c79W8|=%c}>A4n&q-l(Y~5{_L~nt9N(IbhRilSV-9gq0Nk?82mk;5dy`%42ki z>^(|%_Yr<oN1MArnFn0`QIqtC$%X6?RcIhH(C`DJ0k=!`s#NT0b(30<1+ zaqQ0)!2Ar+;_#>ye{i<3HdT3JdM)G>!%|x3c28<&XQYP&a~AN&gs}8psn%MmP}QKyOm;B0B!Um|7tNAJN_C3D3Gw_nsPg+#KLBQ>+JQOSV zZy^m<=wP<6uwY^dogmN6)SQ$E_^;$8=FCyQBcIy6$52x&sVbb|K-dYLbS$SfWFz_P z<+cjk4;sl}altP7t}fUTucdoxzDW6s)>PR;RT4A@jUHd-xVjla^KYEJtnI_>bKokQ z7I!4Ee#kF!&++1V2R_hqyDg<+-k%&W_WqHht@Wu#5!XMF{*fFS7KOYxGhf3BelzPM zQsk6-?Cg(?G~daW4Y-z9vI7g}BD3O5gUaj3vfzVePi%vRx9$NX0^W#;Z^KEI?=IMT zENpLmixY!;NC0EvQEqO$?u@z5HlTK4G#z=s?MTgJp3`e5OUqF0hG`m$6Sr=(-A#0K z61+meI&40|%g=ldiCuM6+^{=dX`R3ouy03*#zkdfqP5l3G&KmDP3W6WZ?3?a7B<%m zpca#;)K&PwW+5I=<}{FVrp<+YL(Sy&Iow~zW&L&M<}P`3WxR~b;2Byv^C3fAU-+5W zxBiW!u;@!O79`y;PJ^f#V_LtZsp|h@&IIS9ixX~fLyWPYa+wH+|M;VD^4*E!mZ6~3 zk+b}RU#Xc(c-_wP1O!!CbN>xV+$U(*U`>llqQk4k#1>GapJWV%N z!j#-s( z$D7)oYb-{I!JlJ%McQrlMbRiJK+o=s=do)I|Zyv5)sci*0;BBrJv)onl#ce zC$=sB9a!p5X}kCUK3!Jc`rxzFXl%l5n^8d$M^2lQXWc_J8|_gIXQn8=0vnzQ5jyEu zj8=|c8*jDWRhlU+?T~y|KM$a-iKrHe!m*YR{NCw3v*mt%y-1+&;PEo^fCA!@hiL%V z_NG)mp+C6Z&x#c7U9?wgQ(`Bbs77Op&S!u>SyOO-lCoiU$nLCUC<#$hFuMHV;e}Fb zOaxYH43|lkce&+ELVeqN4ZRNb=VXw6T5KG$nDzyUlH_Vly42yNR$<_X zxWVhTwyo$12HB<9p+v>%EX z$n!RB(llqD8J8Y7TTr`_y|R43!9rRZHaff7j}*9&60Vb(1J%b{cOM#N^xU_a^E%eN zX^RtIjrTpt50He8igC^+g&3xwoDC_)b*m!QUsGl88VIp&f1BZqVvpwTpFeo_2)Whh`WE{P~^ zu7$4qUG>iM>^DwfK!H4Av*I#lmzPs#B@27m#DAmkfR|G=N^=?GKExQvAMByl*&36p z1szz|ZGO!qm;CXC&ZpQsz{&7t0y$%*TrymNIz9c2b>DdnSNjLe!?j)jnw1ClCb{*^}dE4JvoamrW-`4EDfxH`^3_bWe!l@ZpVm_(hHSFXDukxzxkhywo(ls~ z7KY7wG-Pe*s`5SXVrvaFIsITn@>SZ+w!T@ZIu)rq@xm-~8XfS=v&~$!$D=lgohf^Y z|4*>cj*~E?z~d~VmCrP?#~v{74VR~Sl@}ldtHCDT$(4y%R^JW;b?ji!p%dH^9j_{@ zK>&9q%1-xnT>RdL@%Gt-#ZNWZ88XQX7xm6q@YhvGn(o)-_>;Z?{@H^VcJ#v;3&6CQ zpsIEbVNW1n<@mp3?=cw^xxxjtnRO{^KGQt1dUV(PuFWSVA(4P?N4gz0XY>{C=nv@z zAM%dC)NV9q=8;(hI=QS}C8*lm{*xn*-{*&IXPH%)Q)rQT#3Whuda!N5f*pk4{iF3x zF)Xw2!s|`C@(W)lJFy%Gr|_7HAjn6_G$-Czc0&yOvE96sp?ttzu$7(4x=hXET$#u_ z0AF|$MqS%wuY)ww-5vm_m4O*PF39cShN?db)-55XNM9sMn@=L!4vSXA&7snuHVrZF zsGakodGzjGzRUIPoEW)$9Gvgff9HAlyFzDKWyI1^2tY6xEB6+SK9nLH*=yErPgy>- zUZ0FeJQC`T$1Wy6Q*gbAPZs>8&B4JWOUzwF-kd4+Tk{EY)IUl#@TL}Ut&)+nIL|@D zxkwwS>l17T?U69!Q;ewx;0nXHt*h^~ZKuc8F00z-yXBujO78yj zGT{j!N8vvMgcAelesCo+_EL5@oRK;ej)r1tsX~=1NP}*t$s5CXs=SO>cv3h8iA09{!TADun33l&vg*0Z!#XG0hk$; zmD*{}VZ2h>NOZjm6MkphnQBo8j7tgKHrVVG}Qg~Q0# z!loxTcRK(>3(g(yduaXRlVKjY<^FKzBHtgw*MhocZhA2gAB!W7bwgH!*2ly(g!ipH z>;m4B#!Ape_X=TuTf^ftef>M(l=KKh`%aj&ZGhrV7|Fwn6S?=iU-*AUNgD$aHbX3b z&fP-xBKX_331#41SdkaZ!i1?*2cpDPG*TCMYJR4{&v^67Qty1uX-BU)oi)3T#i)>= z%mLHN=tNE&sF;~HIRTQGsjwP>LY1F5yDkcGf`a9j!W$Z<&=>BZ>FaF*))=TH;;$D0hqk$mSf;uwJy~Zzndj~n{lQs(hdO%7kZUWNTret%2%SV%A=msc zgml-LW89B0^4W)!(#`Z~;Y5{Y>GUqpywq;p=D{gD{)bUkZGAO=s2b{!0T5|e`6MpK zbdE=ae{PXzij;P!WzdhO=rBgjbDdP1L6;l{-YWHS2w)te01>_CEHCpv`-; zbp86LmH@T4AAV@W$HyWbnec%~e;UDVEVAFw5a>-^DXmGX;9F@losBpFEF;1Kjm#Nc zxm(NS&~%}3)6W?E1inD->=6CXw|`knMXr6j$y%w_uQS~ccc{pS>O)j)|=9>Y_05*}PX;998sp2sQSMV@-<(PIRzZ zq?xW zDhJp2Dq)SSfi%spG)F2cdQ)!RtE(J3->>b(2@w6y%4{NS1SLMPy=2*`-dH-7!7(xxY+x5OA#y1JrNq>eN8faOMtM^^+)~M7Xc%WQByn?0asG)07a$$sRd6>cS=E|I zj5TGUQX0itrrIG528>1bny7xmR%yo%J$#Y``L{RLw2mvd4P|g`4QF&coj)JnT7-9kpvgBkZ_0Ea#nxt040I(y$xm%xiU zxSVcT>SKdZBF}!#h_T-8YR8yWeQ2{tAZvQEn3QHq;K5uPGR?47G$mdf2fo@Uq6@W0 zm_#!~4UaVIhIE$n0~SFsKq-6e%zY}JwjB=$vUr$` zW7UKLsM7k#fN(H-5&3JS}>+`7B0K__ByXMU-DH&ruA~&WXdUImR zp6a2CE=w>_U8Zx0TaiG$U+QfW-nW{QCIabBn9c`>OCYjJYd>-Y_~_iq)Ey~L7WGj0 z#85!-lZ{PSJum*+CP@rG4wZ_2%N!2SCQUA!1_)H|?OJz`29la_G=E5S$g#3paKTUCRVK=lUAnkl+N6O6GU@-Q+)#zhCpd7us z#M0KA(SfNe{nS}eWje1(~Xx3JI&xB zsi$QBzFTG9WflK@)qZo+dcm+>9_aFozp?TQ`K(1+npb*4N`xC4USOEp+a#8&Gio%@nSKz$F;po|GQFa-+Oo`O$BUq zD*r(eO#&NkwKM?jiJ}9!#tp-3j21kdw@4`1yF0pI(uh0w`!@>AJe6N3lMGbK z!cv2NB{|_&v7@q(Y=U=x;AtX-|`o z>}L&$KD7ZGXSaA?AjJ}H1$~Jed&Ox~y(v}?;Br7)_?B;GXIeLal?$}%esUan^`86# zi#2uWF*tC?c(|bt{?}+i++C_yb@P*MiaCAfgatjvV8x$NiinxIfa3{d{`loIZ|v7t zMs6IuBCCnaF;k`Gpu&QYADNxyEY+`e$Jz`@v+yu!A*$OPAi_>8cH36$lpEOEkJXt7 zAo=7pF?F;S-l+kDt2q>#3*Hv+1L7o<%F>4f2Wd94ca$jg2d+JQl~4q0->(M6()j)( z)~|E`G-UXZlFQ>8?W&$#@0zr(uwk_CEKh+3cZ~pZrl^ru{fqvA-zSF^?+TNjS2J7%fQ&A#DU6VZT5+M*tRUQWA_LpEw04>UYCWb-Ecv0JrCoVc^KJSF-c3b zL*7Qe>S$#&+;a^tS|}6Pm_On)eNO3Up0x!O>&2Ggc`B!o8com$;K^$f9XyIKYov&N z6IO(1$;RkwJfe@PPI22@)P=@?zbmN&fxyKEJu4)a#$q<#v=j!WDH6|T>q(&%XYt1Q zuxr(Gia}YpbiP|(dXd@$|7OzCj_TT;K*5;WE(EUcmz2fneC{X(=qEK4^5zpm82HKy z^|)uyIi9S}65R--W)%5;z}(9Ey;Q@}Vrw8l{DC8-9e>>gfZUBMwD=K;~uHy=;$FP>86VkoBUss;jbHgSR=?Ud{y3By=4sXemgr*CY3mmvcu*WNr-KNMzP8z6@eBn8Z!S zRJZs##4DTOXXf{AY7&vL?zZ-8G1aPrL2C|om>8-ov+?FkECv0&kD}3cZLmME>AAbj zc#wrs?&jU;ZHRe(cp@`#d`NjJ*hR6BnzqLY-zzix!)_C>ST1dX7SjJ|=h(Sgng@Ig zF*J>t>Qlrw7|PorZ|3ISaf$gel((q-TPaM1E7m%{r^{z5IhQFH5MQy=5|I;FwH9`#wf)4bq?u^9C z3)hAELfFDP5NoV*Xq5Q3K1wrnBvc{4b@wE<=pMlJGWVNiy8-_xwb70Q_y(n`a(I6L zM60OE|1-iKe9qievr4dhy0ml6oiW|7IPvhl4Z>s}#7Y0Yv6~X1HV!NSIQG=6a+VeM zCg<`#kRz>5C|~Wf0&DOvo_oA^I$RopXEFCJ#BcJZU9U~(c8fqYCA+#+TNti_+d`edgrJ4bHrUP19%X@X5`;+X_(fdQY zk}!q+?R_DswLCmC2dDuU)2d=17Ka?k!yopQ367;<;-Z6%EXpVTgX@= z_-w56CmM5hfOEL0QXvH1(mBGTUfQ)_$;Qq~CWR8IOe|#dLrw>OwOh>|m{{8Bof`jH zh)5hgskK#tSH??{l=eM&d%nrmQBai35X@)y_G(@dTZEqk`w+1ylw<_;XN`1$W_&rV>WaD@is;`YwJ6_B>q?E`rncyuBI<@p$kg|t6c zA1^J39Q{`JqzV<74-ennB%BAe8~p#!bKN4s+|&f{&;k$5TbNhxu%UTZYL$FP;=$^UEAzEw#HMw>FF1_75gTLnN@8@er?QAdJy@ zX~^X0?ugl=v7X#}u4o@n<$T@Tz%xwzBJsmFa6*H$v zM==+cq-r&LV#xvYY@hJ_okX6r zAo9(B{h9UZRTI*Eo6D0*l$gB*1m3t*5^3Pq>|FL))KBeVFMc!aem`}bvO5s3HU||W zh$s7xgA;bQgTRn1_D7|BXc9sq5e~_GISML_vzsmZ6-$JThDf5xn5t5M-)a>Jot7y& z;3g9L5#EJ+fCAjGZiP5o&+w;Hwy2&DIJ3=sG}1O{T6&C%#*1ym0x|)axU)9-5J_jA(Y_l10!MNhl#l+ z4Y2p_&v3@{+RBx7%_^LDHjA(PycrV7PUSNy;!IQN7)IJj{x;S=+X1wJolFPq%AKHu zp5?H9vRdUh0ZkwRN?bIk^H@OtoUKc;dH1qY0+)4EP2IR%%=J>^=ke!f$lap>P}L-d z85GF1N*1Ea(Q9(gFC5ft#Q&~y9h5PvNrDQTmZfp*I1N0TbbhPD6Run#AAshg~D1uQN@C0A=%FfJ{>Ap z{K5GOF8?l%%-mC^SO;+Pxd)+5wVlBKFEXb5)&p2jEA=GpHC@f4lTj5Ncy6?oXbQBY zIySg7YjKfT+!`M>w4lGwB&o#L2%WE^Bd^j+{8sn z1d>{zM2d)QzID8TFQzi8;XAzN6SRXsv-blWq@Cn^-vyn0LH+}}XSL~)Rb2|YXI(y9 zhW2sFJgN;&UxLYy2(jiYOO6ybz2ui|%q77~npoXwl4Y!B7Z={Nk2F5!3NAfXdFkVP z2-C!_|9qU%xk}aIlvH?5N?6^{l@0&a|5BL~1ZJOJtxBfF!R^)I@%frs5pUi0 zbLhYnQF8r&BacEuyPbX08lM!rG(u(s)$D0giS=v2cQaVp+qY2nYU};!m7b8uhKVc7 z6-DOfasR|4&$zWvP|!b$reobg?{_0iVsF^jSe8?`EYe(yimIKW72nYk7q9Urik$H5 zX!b6Nzz(;$o3$?Dxv5W9qm_H|&S!|OaV89DI}1{&JY2Cy-_1Oyaq+(t7zw2}#&j#k zNl>!SN!e*q$M?BlqMR)P6|~YpnF|}|eHEHc2Sg1n(GDn+kY7NfM4qQsEBZf#P!RcU zOxg?1kcme^?E*S(MG7$M_;Wo9QAmYbeL9tln|a(dAUJF+;KJlQr(5=@(syDcC>#0b z#^)=X`j9Y@lu&a}2&7K3)_};ZE8Qj=>j?Q}*uBa_tdBoH%Cz3`Bu4<8wji7Ek%^R$ z1t!)EW;+9y=}>XXB^hqR*C%rbpMc&|vpizZB0p_;hl)D0kx|NWcywp280YU01YsI{ zhb;;6lYrGeg&1g~RykY1(#1?0lqGg#-xILN@ru0|PdD;epR9!ai@7tLV|1_;xKKG4 z-~UeR2-?|_0lQRbN*3zq%#Q6UHSeWVCY{^|1~I1MWI9(Eyy#7Rwx{tsM6VDmfeurv zT}Vl+VlpWkKZ}2mgGl*KccO)-z}a?O>mAPdo@X2MR(}~WTYr#0@pfd>VN|34RTyzC z(ROd`7JJ*fJ;&|QxGkqN$$nICMAW=7>BhbxeIk`!4!P8OI^1IivEjDJq71r!N|*4w zSOobec*=2tr*uUdovB_-EgrV~9L6M@8YziarUGmQB+fk|q4o0--#dplI473_DJ-9% zpB<=M^zo>3bvN#9$6Rp^d zTu%IKy3+Z86?!2d%Iq=bch}S7G(2@DVOxBem@^)5Icd8f*ow!%qyG6! zLbTbvl%ioNd0o2!?VlLu{=~6I+yJ)4c+46Cp^}5~o=2+lL0e72ic5ADO7NMvtI{fi zG1*SJb;adjX{2$X|1Q?yv~00wcn~@&=EfDk?e=}=Lb33VAVZLR7VteI=B~0$?TGJ? zk@!ONe7f>3JbvL~bttZm5;l)-Py!n(?h+AK&H`eNwB|6UqH~Qtk-MbNYF`;n zu&@Avem|FB&@yqhM*|BZ)dbJGnT&fJvfHxjUAA6Ges6pc!~EsV9CKSI>M`F}ihn10 za`S6`zWj66seIx%s4hyexH+Gr(Bzd^8tZ*l=t$rn1@r{bfW03p?YmCYNXMj!pIct8 z!iES#$TguN$)||e8x-7t>`r0|i~`BX+hh@wiUyP*Zh7Ss=qaf$xSxqbUjY7R?>N3x zqDhWKszvbaQO&h9c-_$$o|e5PF=Rb{^rF;LPj$M=^$$Q%B3YAJ62}e_fQ%1VP*v}0 z2a)YLqPkjFG2TsO(m6rQAcwC?A`>WIpiMg+dAv1wv!UbmJy0!|z(se%VXOm;Nqf8F zZ1y3O=h%WXvW3em#^Uu+M!PcE%Y)6|&=h<%1$(1LQhR-SV&H{Z5}Df5F5|A2$Q2^3 ziph>RgJfZqu$6k|5XGW$8VDLdW7gW(<{Q50?KJ;o4=`|QrNZk^{ArX?fquf{;0c+? zY+%H|0Qf|Pl#zP~UvFsd=m`_o08Gz{090$&gDC=mP&vh`eqqlcxpR)ZzzVz?oSKBsM{+gb0-+EHPQ8qwjT@uL_try1y2FDc710k7yas7E8d%HyLu5Ll; z{)D8dj9(|6Keb_^({INvHH}f;NT=b8b7n;lKe!XD7SQW6h5ZpL0~~*`jH8X-^6tKW z(2t$c+-dNfK;sh066uYukGGTU*ZpowajR5#4r&@RTavm$dMp|ImLU7bVDk*Jn+%_f zr&94Fz?#Q3RpqJJK6}!ql7pl?0^h{7G}8;L^7WX1Dzd?ta)T7d+|r;?nYkgZbqK1e zmXFu+51mE%z|$)}qyJQ^9lGzV0#s7u*k4{H;D>H5LS41DW}JGT<_W4#V#b7w1t9r* zK>~rd;{VgZqJ6(q>IpRG1!;c^Y>T|9fz*D3$C-WzdkEMc&2&u1Npo#n`vw;6Ex888 zzqE6P&NEVZ%17Q&d-yn{ZLDkLc6gd-59MQ#BQmGssP68DgW1 ze*lteO#&UlN;Fz_VxAgq`11K{?aUizC|i3nJDz)RUEq-2lcciOEfU&>UwB|Bfvgx% z|MI+3ErAE6X(K|_SGp7c9H|a#*TQql<9)@D5Y?NBr9EbasSfup2HFVaCHf+oY_xDP z(^4~u;)_*4K+g_|6wqe5)Q>9wDJLNnO#Qz1*%YMcxTUV8%=Mk%Cf9iW$QTss?l1VT zwC^T8S{xJ8Y#5<9QSkdYM%*k;K{%!^EIGKFps!(xrFzbtI0=5&(y2*B^y==7=L&S_ z?6$IJ-?y`^M(PD7E1nStzV{ag)pkkB8>4n%`H!TnrLB-L=GsqI(r(1m^jZSV_WZy zaev=9Z&17eQLSb;bt~T?SmTqufwY2W*C&#LoNS#180c1#sx&DIj+A$ZxcZV4+b@2D zJuhe4KK=;lTt-CeHXomGvSvjj9xdwKD{?+U&n-bce6Ld>Az@#V8OfWxUSmBMWCUXM zMuh}y4?|M;lwCJr1v zjH|hT43ActUuImIW!zHoWUh#FaQ-7;OW~WiRwL7Ri((#k&64=#cg7F0E8}wN?jAVO zOp$wZfrlI9e(V1)ykR11K&(A1g~X3D86M7Ii)zb?w(i| z$8N090DKRS|=Rjuvsg_^uU6bf2 z1>*SaCSFbAM!e(2HBwOTC2}}n&qX0DgeGL@XvIIkW&wIgJv(yfFL{#6lix;mKqfcI zp(}N5-M(vL!t?n3=FKdo*b~2+dMN`eA9PUScj1_@-5hh^Bn{rh(iIv;3|fH~;3+VZ z>p@8Bbmqz!6bE0}HDS4Yx$=uufQ0u6B2xAnJDnwSJn+%9&U$ zw`@w-uddD;+hu-u-e_EkmBebH`KTXR`479Gcc~NPh&6OyVrPoJZOC|92(mg%W@d%X zXsvkZ?=mb{mE6uW@I9m~J;mtByazWB56>qeA?<1?)3nYR|qq-6b2v$Q`h71&1=;|D^I}P8un1OiV+I%CZx8Ax(o)ox0=8DMDgHRY-HfKI~HXEN3H(pPM?;*5uVZDIwp1f5eY*8eS zGaTy)+YD|*ZY=d98CBKDEdQy_GVTInh+ia|?<_0mNa0`|@>KX9;k%k+Fu-c3;}ifv z^XPTJ|Ad28cx%wY2?nW}@C~`DYSaV0SzsK8HbEl-;`prtrPL>eP6aJB{vf6b)qA~{ zWy2+;g4tObNHj%V%u%+NHU3O#U;uNk2AT*hHFAeCoViN~Wk%XFJM(p7QCcU|`3U$9 zpwJ@npc=&6rl{-aICzKI0;?R9bf~2tj2K|xtXZ~KEkXr z-D^S5M!$W|-DL@*L3HOE3c+u#*_66cluSj3hg0{||4stn<+LBr209J@kFxFjx=#;m zX>}>ZVeuZ{xjGpRjZ!feB7M(_bUgdUqws!}BM}v#T`f6Ku{Pg;^}PU*mBLm;oT!ys zTrF1};bNQ0_`aL5_~x3m$EEu}d6Xd{t7DbVV$C6Z?{dHMCE7I3nRsnmp@QX2!Zmtb zANeM=0KsX3mUBoZ14Xv1tu$PeTuveT-wlk4NH-7$HCCg@O3j*e8@1nX-vVd)^U`}E zT1&`CZC-UV1{I)9Vme`}7)H}Ly`^5tV`Jd@PtA`M?%pXBmtP4xUm2>~@e~clL#-|z z8^Z!-G0g!>u*P`BeS?8Mp@;AZ2}|g{9O1i)y>|)@vRYrvjVxglNii6xlDrr&%t1>& zM)iz=(NjLgU6!Ktp)?WV?5G9IOI7yX!N6@sPbtlDm7gv14sev4Bs#;6K+X8T!=xxF zGnHp&57~q9d;W)zs8g4w>n>Cm*DjACh%72NRkG zY^Wx~v7RVxj#rd{xtlLy(@t2hka3ZiRPUnns>TK`G)9#nR2W=$#A_$q(lt!76rXf# zPtPHzL)E&7z%GssaxVglCM?9INEIzA zUM(~u4dB3k#Xe5Y`KKqS*uX(piYZ7Eb$x_YX70P>NMviJhdy3PDjyL?wnme|9OM;i zZM1zk(i|_3^#5bdarZX@U#YU+)sGo!a^JP>X^7SBM8{b+XTpU7q#9kb8OGA;!X@gu z?qnH{yKRBBVcQ!zjE8kSv|~OGBHda#xyEC-VHUR#Fic!*AC-Oj9RcBwEA)$idGWZE z-=|s8^5}hn#dAG|Xp<_K^4i>9QaAm_vi8<8DJ+-De(&Xr2VfH!PCf>EvoX5e#oC61X~0;h3MCh+;>{u4+|U>c+B(u%>nBDz70Ck2*;z|Ki&_J?>b)@Hc#$Y#uybl{V@ z>9wg|a~Fv@ifR-OOYGImOswW_GH1UGWI!#Khboovi|~L0Z^ajsNn)Bg2fW+V>n)Ls zrduI!=y;u8{vp=jvCOfUZfW;=!k)Al_$o zf`q=!@zXdC27^^9;{H%^i^l{g#HH%vP1JL01TMxTsDGAUP|Hf8jkMRy8}958O$7RkFQdEM6+#D9EHp9Shs)jtqPi6S*%?BA zR4a6=yT-YzQ^)#1O~C$FihJFZ{9l~Ppo5lwiN+rVj0t78^d0ynYUQaj#WD+{9EemuMLKp-Zm23Vo>BV;gr77Kb2#~~gor6K&U6p;x1pkyVe(B6h5 ztVoyNJxjre1iC~RZ2C}XY#TA)C;oWG-KOI}d__FHn}bzLzrm=V;4&48PZR|akp07R zlC7c3^6v-6bSs3)qD>~tXM*l*D)}d(mF65iMdk8vjTx|>RepngJv3Ej-QnP~df_J8 z8_w3d7`#Sq=h|ObOGx5-79!F#u~qZpp{Ab}CFYP#EL2;)W(xENe$PFWsl?Q5jWKO9 z*uQpe7d>QQOrGr=b4u$p{anUJtL7-x7p`|^RB zT1O7SZa3729JT;8qfvu(IKHDw@`q7$514uA9Ez0E3gl;0#c4qnQvyWC@x}$MzumAE z>U=ly)ev>zgJMZzfT=x2S-klKf@t6^(K|So%D^G2Eogk=3HajLq00%uE1Y7`BdY{4 zUbJ~g=_dlKWNM(H%y-fQ4*4BYtMW&kohQfW8>AH_rbh$o6@DO=JMgb2=Cac%n4(z< z%j9FLq|Ea|R-~?u&O)%*y4X}ENAX?@xe!_nE>RVV*Z2NeSm^xDh&|Z}PkPx#8%t$< zhatI54mdYwf5i&4M@ZxX0Win=Fydo=HD#PUyd;I}8K2esgGDX+6Bzz7sH>nGxpL9P z3{~0>&Mza4Fn9R9RNl^iN*Luz7+l>k?SFb}&ZcTP_Vxw?>rI27vxL(NRxU-iFQiV9 z1BEe?2P-?nVBitmZe}o&3Lw=u9^e zg5ZVZo*$K~^_!$5LVIA?6xJiBkLe{0q3FAogI;=dSJVRwt{!**$gaRIV=0&fg+?9g z8qSP2-K2$!_~7gtNf7m08F?76-iACgO35bJu|}${^VUrqs%J|uH<^&aQzpp&cUCwwYK^?$S}G7<>ujK}{fQkt>U7a8vjMrGoQK`I*i!lQ;EJzCDfU z58yciI<@BEb5>ywrQFuBlk1#y!TN4G=+!I5u0fT2Oe|6~99c#_<*11|Tmji)DUENm z@)*op69lHPaMt0e>I;?yvrcq{3#s@jsKUaq+NPV=}<Ipv8qEKk`D^YF7)-DWkwB)e6$&%O zPpBYyMJnviFgOPHw46fzLamYe%`chR+qQ=j<%u3YQrkW03l1Z!Fkp0B4)`6Ml$I)4 zbKkQC8Emc1-9+<^iW zd;rf=Gb0)C(Df*|myiz3KKR=0H>aq@jV38Cr%Tq$A+iHijow&Z zU?r%K9%zod(WTSgcgP(ww0Lw3wClfn%@}dNb?+05reTj_=N~`uc{BiG>%jT3MNL^; zjn{hi!8~!XVpXWM=7ilbMD`zZv{jRo+%enxxtDnur_W-k`!}GSSHvvMylIH)@yTIV ze3(sJj-`P<{bwt^0svF63<(d3T3@a`1Lm673R9D+l)?=`rWXt=zz8@gIVw3B!l>w2zeFNj-|=O2xh z-*MU{BzGL;$Mz#@^B*#EC@MBRagLuqRAjn5G&3Qj7)K1vfOC89D^$l&q8Ll^8N6>e zfrO_rZi1!QFuYu7LpVBIFW=cyhl%O(5P|K~=*V7t|Mrd*tCw%;hPiv7?x5y{@z$4= zwhniI;Gb~=Ofi{r&Xf~Vmpg|z-g(>LHUn9smnfQ~=!~!Qd2pP-Ww@P{!%G<=zCM!I zFIm*(bGOip?d-}(M>~QnAY1T?HQ6LKY#btc{6q`eka1UT0Oaru&1r`ZbXi23q)9J4 zXQ{w)mZqP?iL;R*uItbb-IgBx^c}7_p(0OyFy2={zIHLv~M zUyI^f5D4i(vOy6SxkW8KYr5Y4iUX_s?ee+o2~QY}e*xK|&j{2B!U~w$ut7)V*Z7rg zbOL3ay*k5P@Z^)ioAotxrrn$}Wd=;e-Gb{7E?WnDLhX{@(06Y?UwMoV!fudVIQ>-( zo^Mh~RpKG4nM!Z+8iFqKWsUT}h;EjJ z;ho%*UDAt)Wc8@hp(&~^MxVX`r9r(EZGhz8u7jF$zWZ{tDP-!~hagEoS>SV#qYeN- zncGR#G${Tz;QW8y$=Mo^8t`~phYQP*+f0UZsED`C?xN1~8N2?RM+%5!wCu!l4CZlF z+`e3KGqHhqv6Bn0;U4|WEMrh*MzZE6?Knbz6PJu2|Ix6(67ryqSlR;T-;XN`R#RF# z3@r1kQYu0&3dbj=pE=_a6)EF0-*4wG7AHKUeGwY>?XwTPWW`f!mHbyb6LtdKawi0FqV<9$MrqXMoBorLxB4X7lz8Uw>CN|gWRGQJx7y6MWO+Dagu3*p11Aa zEXON|NeRZI&~pU7C`;*VYxhUdS6kB1@?x1;Aa0q)=* zkH8JbXCAa%d`zod?tn^wNz4x?HgxF+v-Z$EGNe;Gno^15|Lz{&k4mFc$MIb7vPp-mRH(d$SoMQO z;?tJ^9rwYRssFFhkNT@5tJ&?XxdjM0>)06+G|hOotW8rV`{{GrUOvbXC!c!pPfc0Y zemu+8k<7^0g>##I_X>k@^%G-#MAcciiEggN&E5hg66%UOxBQwa`*$Fy5Xb@m3G<|l zJOV|AUhtzK8ioI_1%->taX%}?0-Lirq^}NaFraQ-7uS2VHzW_aa`JotPOoN&9_IgFyixzb4e_cOs3(H7*bXQ^2=qm~8{$t0 z;oK7X*9UGBAWijrZf66pN`CyE4#a4J9nw(XR2Zr>_i|4BHVuH7QTBWBs$g1wThtM9`)`4#Or(+ zsYVKYuw5G8+b~}A{;I9GeO>>!n?+?uKKhj(cK)@^OH&EOyH!wdvhM{2q)gkqn}4|f zj9o8OlwWSy8~iSsjQ+zGU5M>mJGEmD&RKN@@9C$22BjA~qcBGPKoE!?vF3!UDqSEt z_vm6W)Hr(EjK(xu(#VC!DvqpcGB@z*1Buw^K}Z*-@{gDF}&ws|`qIyb+~%OoU*-|&&oI)1E`-6&|k zTyYDXDX8}rq60>V*+k{oXEwY(F{GK5{s`7vYmP;qk@bY;HtZ7i{v64K8{IUoeP*i* za-Q%-N+YHw6y5eH5i|LTbRB6h>cO*)*)u-ym8A(B^4c4zg*JN1cm2p`J*$RXvhU!q zlD(j4tIHYJ6Im6KyB&BWDP6U;;{L^Si~5ZZ9gz}}>HDl6D$bFXj<0KV-Pf)kmt)uE zX2D(cvoc|xTqg^kO(TgYRytjExvb_TyTz8KciwYZE4Sl|$f`Kl&+k&S7{ukA#H%BU zjmpx}K<6S`5%v*`uU%2TjEG-NOP%z~;?i6JyCRVE$bc_gzXIrg?{2Kc7 z3==}$#JOl;Oa_!hZe4a?@c>}Gaq_mQY8;yWnz~U$Af$-FsJS4;K0g}-8+tOpW2OkM z%82iX%Kf}V`_OxlOjG|jCPtG@#PR3HUWBWUbpWDHe*h)b9Ch+Qgu9yu3&^H^GZm+J zN!Wb`h)6gtTtgvI6+JX8$9S!+f2~9(YnZF?1;ieqlLI+4kMHU}4fblAe7X~s*0F}# z2`B$D=nyT}SQu81OcqT4kqyz6`vVoUDb;>WRab~BaIAn#@dbE8nvXwNJuS5 zU5V7(@Tg56sZI!aMh;>_WI?f6)p;C)>11_T5wd60HvZ(?*+ONV=vc$cYAMmrHa%EI zex8xKSXnKS(XFHp=?EBoc}VLu+V3RkkXY*gkY+!`c1Jk|a)bR9t0CzBR2p-o)(RmL zoA2ePJ4+Gg_kU}9R?S{Sh#yOcouN;qgOy2Boz|^TvbkW#CfjRx-P?MH%m62PS0vqA zh{96|i8mL_Q~3p~3B%>7b8;=D=^?|Q)o25xJ98Z??{mV#VNviSAs$*t!UXfAr?F#P~UBW|W*HiuPAV7l(%i0@Rs z6!NzDuQTOjgN5DinobQHFv=kK^0$Jz9{k0ZL6QJPxI#k_W4c**^HNW%7a02$J zFQ57-z7RPrivc1lJTb@I|DDzHjaVsJ1Ge~5-r*!l@VI4dvKqCn#O_@ z^?m(>*g1^q5#14Sl&wP=Nd-|CO|;j1^6q(e!9p)sqR{`oqOQw#2^yX9;#f8AGV&*6 zC+-=^6!X%~LA`Oa2_6^D#^rbNu{7lPmWU=;9fT&m5eGZrK;_($qGC`cEIfd&qT!sO$$45++Nm*5%>2py zz@#Nw4(zotu@RMFojqrXOP52b|0*E=;ik}ej;uB=P z!>HFF02yUB{NnQW!17_@S3I(OCO*w61f~nTV~NdYz={5L<|q>Xe{Dvj+ARM8qhBwF ze}TCyDoZN4lhC;*uZb-}1DF!QS}0X*$6_hh#T2dqGsvIL7G)QUib^Z=`>8w$EFKoK zW3&E!n3CZSfTi<)ur#*RFW92ua8XX|7Prz`O5t`zGX&)i_>;26<1@!0N2z& z$j@#(8!_Fv_~XKXr_7_aw%VygU7BenjV7mUQwg0qZFEjvsy>t@P8;E6CR}L#cc0Pf!u~Io@ASDKmEv-f)fWS5X@*VHkr^0_RSC6CA zI&WB5wBtqnQ$Kjn9*!wqYL{AIyg@c$=c09zGEoG7-6X`_Q?qCOc&dm&4? z0rASHoij+CwJ97W;&%cYa%9Ns_5fPw5B{u*%R?eW&j8K}=dIF4)phDc5dodq+xPX* z_Ev}}uvj1N6_z&kkIVvOu(ob=tB?IXoVSSgVg7s!MHdk8WI)>IbLk%#+e69f3OnqG6^R)++o$Tz=@mJ{obdNN5@6RYuaofX%(Kobv?b3IHe;blt6f(*0YWhfV}(YI%cpFs{exc&I#)EAZ?ZfYsHt-3P? z+cvv@PyPv-zWZvf26GP+gMS!A`|tE^hu;i0NFNdEmBFXBY1{vjWox7z4;fEv`6xKEXbz?*`y`RA=XFW#J*}jD$KHl_4}fvV0cZi%ysQh zU3#qBPO3;_q}_ERQ2y(+M@j!|{3s@hb?s2J%Qz`Kd8WNN8xyfOi2n<%?EWk7_4HJ$ zS*sNBl55JC(B?Efcj!|bo~pM+=aom1)PH1+x5JPcl;G;3eKdwbB}8`B6N6I2iC?B& zDDU_`=1DxN93!fMu9w{g*+$mon{kBR5~l%_LZxJz>%dJ9%%VYd1vmVs6M%JAD<4JS zZL7L0dJ=~$2ZbVYW3Crj@%XVRPg(e?Rt0bmwW4L{YFogC2tQ$ISlWP>9)umE`zDesfxT$F|5%4=~-roG}HDjh^1w-YlG=Z8fYw_4|xrS~kb0kuv1O(67{Q zT%Uzk$p71F2+9{M%V^veo&DcV+dxM7?WU;MrW{kKh6$JtZ(Db6+f7WF;%>3$kJx86 zLopiFtDXm&c~J<8rdOVaL!s6;WzK z7R`$I2eR%Vnwc+Jg->^%83E!Rz0OkcD*~&6qOCT;Fvlbv4jcL4$g(>!UP&zqY){`9 zdX&7nvos0wEnIgMX_g#;W?D27NGUUmrn^yHTJ@Lvmx@A;`fR_ZNl;W=&PB**9J`WEG{8N7+- z5hX?V;D@G2x(qF8LlJ@o%487}B_n``XV{GK*1$y^|Aj|{=3xQ3BWO9+8q})%`1aD+WCxZH`U(&j@ZzJRW}4!uEJM%YdeG}Ew0ST@-!?i zI~L4@I>~L$kx19Z=j=5a*)EP|C7F8k-04FC+}z&MYe)c_sk!_Nxl{0(B8ezweG#zT-d4u!Z zrv?AKqUe*avGFe9t}$^P2S9#-7xX^Zjlm?5?MspxoFx>5;byHnb^Rx6g4 zG44(w6~=gSrtvf$R&!6#^*T=x)0b)%^r%^+UL#h{nvYzOJG})O6K~4SQhY}+WKWsc zW+5aCzObW5RRv(=0X#mbq>@I@lkj9)?%b$MZVaA(NO`)TKE@p^MiC+Za?b*aUQF6? zs%TyDPV}3mAaDFugn=snXb#Ib0ym&=3bhg|x0k7!G30U}92B177Uh~@heLL*Mx2gv z^=3&Glpikf!V!?;`smsih>^ae%fNp+;Sp8#vQLYIlh|@!9S_O#4oYH^aO~Wv-~w+) zP1xvH9MOqMu0HP}?;`eP0(u1x=CWl}Rngzw0S%Y~KWyj4FdERJGyKIG_h_5e5-X=M?*B<$q`FE*o z(d0fNVmNHaJyqNn4N2uRu-^Z_hhd@d)79{u9)Rd~ z9?q$H^psNGu(h;QJCg!G17bmtn?~j>$P$-;X-!wC{g%R$1Xn-;%}?+|$&S3xheiYs z*ZW28&CqMiTQJWG$S5$5YyWWJvFKiMQOoDW1njD%lrX~dm#x=B*X7b+KPtjWSO2>% zgK>r8Hk(gv7vr0E2=M}QWl-9IgaMi!Sa)c57eBFmQ5mS2xH|Jq&*zsc=@Rn2?op<{ ztd~7W`}4rPB)@{td4`|4z8JRI$bmO!-7f*U?&ThD*1M)txYhL(wL2mw@j-jtz&x5y zRykcHCh0M?WbGF71hB7mfAV~vu!gCo2eIx^%eja zZVW~=|G0{ysS;O0EDrp(Bu-PQ8y+Lq;mqpJy*}Y1#t=_^li0Rohhw;gv*&s>fRAi0 z&cwOt%H$7Gi=t9ax(LN*c~bA08;Nqfh|F3051FawznringVV96ZqpLiz350)yVXH< zNeko24O;=1arXak zgk{-R=^f1phN6`qo$X$mV(Ji!5QH(JpTWc(pZY#fmyC>6DYO(oDg>-SjNSBOjBGfh z4{Npi&5A;}uXh6Pd7}S|!?6^UXk{@4X7G{DA$lLF3ug_oGM32QE=ojAUs$4TFGy{O z*QSM3JpV|S@ta-bYILBbWS8+`C80-3c$-u-Z`zmTYbZ2}9cE8JN+%Fqdl{H`F7<_G zHke)n$h)&U#m^vp`vY}H(Z`s^N>VYT8tPeUy7>fF3!6zi``itLABDT~nm+^?UspRX zc`d={;DNiku*4Ua9^Z(GDs7ace(q&E{4dt+VPH-BIyDlVQE{?GIm1l`tN~%LFHz)- z9@QoM7Ph6M9D`2{p5K7K9VX}eOf$IXIXgElywj@HyLmdwPgJ)(+J}{7o{Gq+;Hg!b zjO2TQ?*1YYVrTzu-EqfJSJYi@EFfjY&w2OSQhWl8)A#wewh~Mq_$*uP-@QY;xXCl8 zY-SqSe&v%h#>j#>t^rztx~6MhcE47sUt(!3V5uJI1p<*bVR0*17FsO!1hcI|;cqHz ze+P`3r?l%I>$Bq#X{$;K$nuGhX|hRU)!BmEjlfN(Gbd@UorQQ>R+S6Qh8|yz<32$! zy7MZv4|!uIk9p_J+WpABDqjUXhYZ2K16ZIvATEToB1|^>ltYL^l`NUM5jLbj&@Z0? z)D`ALlItdi-d~%YJ*z~J{dV6D-5?yH7NEg220o=S^y>d0IxKxua!E^fl%l1WA-#@Q$u zT}RYEC&F;3qbg^UCqh=kl>avGfLkOsYqQfe34|bBKpn`@a1n50X>p*{B5R=t0OfN3 zs*|4@rLC#d#cyVm6!mwT7;Z+4XE#}&)ewUPo-Qbvwgnt3Y8ayWu!w>yX1b<7@-S}W zh!ty|U53bVoyJFvk8iz0DZgDlqEfCX*Nphx##k3kPbb4|=)OlHVPZ~^reG76C`tR0-3@~M z;6YPeV!KQzn1CbulK!CRzeNSk9%fF!z+~VkB9q7O;(kM7z~Qg z106w_ZsY>%+AhILuTVq($4itacDkzc%jI;!XVC9FPEX{*nmfd?my|$2t$qi zKu$nfXxq5>i?`CDNNVnP6zzEeUvqQHfUe-FJw}?ewBm|1|NYf$?j(Mylv#huPH~gz_ zVYbe!-!v->@9H_#ZQaoxT%WB5Aatue*S(WBhHnir;!Bw>SI}$%lN6<4r!N+?-&kj1 zMFc<%@z!{T_wQrJ-5%I1inzqK>Nw)Fg=KDqD_?P66lh4d38T7}Oh^&Kt!Pj+=g|Py zanKnsk!H4V44IvF$FIeAXc0zr%0&0=k06A$ksCg=5u%NlCH72A_M^hnF8#DQZL1C} z%@!gwyqM}?f$_B+_v@c9-;&HHoY}|GyH;`~Xquj;Vz+mSKc@9$S|?ZG){>7yjuMNE zvO|rT;v+$GI2Jomxd1#s!@q+zGjv@P2sauK7D$@q|32xk_`~6mcst_=%ejK4SRU6e zqXwzfvrA>tj(M`>eC18#Oe|KY0XqTj)>*$3K9$LPn?AFgI2sEQX(8#gKq36<-kUd1 z8?24Dv=9|)?DZ|2XT>hD`Zr=^{j+lmL|xFu-{!|FVG^K$2FZk)Y~xr*qK*FU(A`zx zStdmML?!iQ376I&KU||t$R7b_9d7y|D}nFJNu^!U>F0)sfY=F7gQk4f-xmAfB5a-W7^WC zV`uFUJL0fNQjDVM7rMJmr^JPN1vtu0YlDIoygv*uVurjv#ijF)olimHPk%UVu9QS_ z^e5<3J^wph@StrbqXgPt_8q8h4eiXmg+&@Nf=5i2W1;N}{3QG( zrEx>7l44JM-A5)E);Si4*-cWL_7kc>loB=uA8Dv3VfVfE7P-9`H z6u-l_+!O@UGl64`9db4|?bjLDfab67+_aw2ysryoA)M=Z))qB)BHcywa_S770Xa+I zAG`V-405X>2uCo})?|R_Qt3O0O)GG6%VKn{D9|twFuNR>1A$*;EqS`3;Vybg2avs} z6mxG6kO@h^mYeA{$~0+YPYQnncCfcHJ&(9qf=|L8)6bf=3qiM(gw1uVvja<&&5&6& zhhquuB9h*XJUt_UTz_8p%xczfwoN?6z(LEA_8==QAO3FI1GSO(nXmZuOert3I5)4} zfd%<_sDLBM+*2h8G4E)reU!}tm4nvs0NL`1*5|>D^ZC2Zxeh{;(V6vX-cw9gR0sWg6Ii+7-LVj66R@k{GcZeBRa{@RO?>Rosuh$@xA8TD~#Tvdxjy3SI z!j6OdOa=9gEq=CQ=)ydg)!P0v-tHCkj_ernw5BL*=#5{EHk+ZkAlz2*z@WJD@fK9O z-KkQ;D(v=m;HRnydAg%8Gijqa(O4AzE;-+q;~F zYF^Wc{2!|k0!87?h;R%$#Z;4nEvAwEr>yC+hcf0iU(oDgHzUhuVgSL7 zcmWGaVwkF5)EE{*f34NV?Is(_O4UL|M0wsZ{^X^jF&og~J%sGA?*w@EW5I1hcXsYz zU}v20TeZ1z*cp&wU7w)Gu%0*tG>S4c_hZ^y( z{9Yt>$i3?Ky@c8You8POq%gPbeb4On| zd;2-NNyKf-$bdL^wE<}SL>(F4>Ge>tT=`o1NSOxBC!MvKP7v3mCLVUO=YhV8lt6GB01PnR#E`0F&>X?News}{|*8)DlT!wR2`-rzQD##C`?ULOex`OmtHhUpLSY#3hD%<9V{n;gQwlFEb z!C=nXF+P8hP)sYJp{0p#nBiOqT}d6JtltfKV+vSCzFRC@ZpQL~A^A8MC?Nsg^U)Bd z=|ZsMbSkZ_n{A9X=*j6|v;6xr;^;UJwdM$N+afO)+$}Q_toPH)O_+>^p)ZEf!|q!$ z+=@Jv_;QPMG-~dyBPR&k%1!0IDV9u8_4hY`uVo1K)=*DiQ*uXK%r!&)eJvZ`EZ~#I zzCRLpgxMwsj+)tl+oH0-V!Qu1##iIcmIwZ^PA8{9q{;;>*t(ozED+I<@py}K zP112C-XVVt(Tn1R81G(+I0Sk6*Jfdb%K&YB6(2N@!^x$n3aEKMO2$Vak_p*zR3#YV zB`DHJ^di`6)3E{=nd{0JO7c7eTjLj7Z0m{fib?ecAo;KHK9LmK^;yQFU}&q)5Fg(fgN9y+DrjlZF(RYx@Cqs#0-I z*t)31rmYN(LZyOoUt2@jPCAY!J+~NJ3s7}#0)oc9ee(rZd~8 zU&e+pzvjJrqq)kDSj4ra*Yxx?Zm6=7pQGxZvpi5L1_Qbq-H>@{#@J8{RRg52qExKv z;xg|cvne*E_koTh%d$@HH9$7Mj@}#z6y+M(B8namp_IE~Pz2BUWTFAfPJ16Qlc%~w zhsN)4Q4p--su6}Cr7a zhq3M}9~7}Ey??x=<5dp*|8HOoE1q}|`FrTR0u-wGS)wl6^gNd{+p;Wh9#2QT_$_xNY06`z&8iH?G(!_l=&R62Q!EMeScJZ z$r?t}tsoBkl~)~K&`}bsaRirUo~xs)W&Rv*QwL$|OpKRx-S3VSUdEEYJw4&NXJ|o9 z5yF6zy~R6|Xc{q3fR_u!+8d9IL@H36N@8nXpQtO;YRq?mFo3i*U+meDJZJTogls*7 zj=(M{V#JHDjzMVlDkeYy-2oGeLf)ms`H%F^CggGe3oTw=hcVrEavf{>cT6{~AO}2TVfbBvS1a*HeO=o{9*9C7O*h&azluK&sSy> z_ZLSG(KFOVe*D?VlYi5Fb9MTbU2ELzMz++%$Ya)bZ7H6UXD5YO@Q^g@D;SUA zN~mJURdCA`R(InQIH!44#wP)VrS*03ux*6e+VxvI6-Q={w?ny%)g?F)z?E;aFA-?* zRDT?v{HB{h8buJ#9CXJ`B_7cEiqy%wrEB;_+G%1RbW=$9<_aM$B<(|Dx4}*Z$=GS* zQXBS#Yu=33;H4sN)i^u@RoTWuE*?6g==gF1$ocEz4UG_|+Y?nHmSA~lESO=zX9MeL z^eKJxP7ei9W+q8{u8nPBG;L3C`0Gr||9^X#>s8Pg2CV8}BgV`Z3_)4n$?)DkP+_Y2 z-VF1fohdnR=ZD3FE#=@aUp`W%q*^-Ryqp%V5(k9ad#Y%SSB|=_7#yfdF&rewKly^W zS-hs^F=xZVVn=%1$c0i3+@;>dj_JQ>9W2bWmfnZ#`{&xC`W%t43@QyR5gx{<{FP1- zl_umRNjx411UwKQtel`;vy>U5*N_%j*ScAo?tCnj+mIUw!ueGUcdFSvP2fbB2RfQS zYqbBRR&5gN&tCAyTY|@I?d$D0_tmC|n5_KbJ28FoGuMY?3TrFt!o009ocz&AC~J%9 z6z`}Kn;|HnxSNL;M7wmoL(1t&{@ORm?m^+y=kpBq9vL6V_O*Ow3U8C zDQyS6m?{vKbw1PHrv0yzC>0QQu!@%;2yN_kB(}nV^uEm`4PD9MRGY5lLbyi&K>NiL z+3suC>MD4$5}I4KzeSBg`yzskeC~U{GZS$YMVCfd_d>N{sv!WyjeihAPJG4I;3WeP zWODUyv^uQU_qA(8tI8XoinP%+x4m61>ZO`N$uJ%&Yb)D;7x}@p7FB^Tm1NK!4pG8- zun{IX>Ni5W3=s;^9kzT{U*M;l6ZO))V^drt`(W|h%!$$ z)axCDo0~}<>@Eum+ssSv)pXRmCxL?n8|E#v#Q(ZVtp{lxv-ECh$H83uj^46+;SCMB5XU=Pu}TgWS5xRE zbeEbFNZRp2=C?k^KSp+3(j_tC!sHhq{h`CLU(_1<$ZWl5T8vZ!(6U&39&14Y9meYo zPbPMYGLHr#^p%7+A^4vH8A8(8@0#EfWCo`n8h-*ubLe|F;xhWp&of!7tw~v((0`ga ze~!%Rt-;Z43}9a|2LJe+@eOntdE!^yk=cXUjICJi&tb|^hhISt+u*_T0g>|;Q<=arL#ISUJ(GJJpm~y^cJary)t!;P^ z)7c6l84+{%{AimSWhAtFF8Lfd$i^QwKNpUj_ekBt+soBCCDb)@7ifxJ50ak0zl~Uh z)fVUFez~Nw7=mF`9=1##1zj*T&~tX9UsMxHnS9n6qpdVOUB2L)Xl+B|wxwG*SWed{ z(D?fH&CNjiYNGEz+2(eiR8@^T8R*Y+NI$thgpYgE#&@OUT8f-lcFf8RtV+=xVNKDK zV;Oa10Gv#($H?+v+2s_b$7UK58^WC-8BIc@Fp<}OGVV}5W=FmhTIX*r1~`+r050o3 zL4Ebt39jOB9ROGISmYO3t2e`>IOCWxjt1IG_;Ym&V7t;Ej+r}v^H*u`Q?yTU!`b48 za~z8=^aO6)Z8aa0DZjLQo1;#Ed!e2i7A|d@e3YtYKo>URDH{!~=?JhPl>Ehziz z3rYihHV2qI<&_zmf?)81*exx7M}%5EqUUi+^3ci5pa-q04M z@aRosZgGdzzxaOMeJXe19@vn8cNrGvwSgE6pvu`lI=Y^8J4D~GC7BAbrGSY$5eMm1 zMr)_82NprF12&1`Y)6^&kNXzIg`4nt80#Idp(zof>M+61W z9RT`c4M*jmgr^y1k5gXcU=}cJMP_4}5( z{B8*QrowrILuE3z*{aoLtTXOy+Rv@wkkjsP^>o;?s<>0&a}&@GF^B8uVu zh3P?1>jybC;Ut1T`!ybz0X=hyO8r!RMunkqH9i&9IE-gmI+<`1v86Dp8t7eaP3r?c zId^o~%-dNFLR{$yjbrI2X^8_`BzNK6e(##7Dqmt1JL52t19C~>T3_ev&CkJp8G@ac z&g3VI=}5xu3L#uEo6)KJ4$6X54sx1ex2&W7^A0ukxp@DvgEqPwr@%fn zo#e3{q{Z^ihz;UGte-5F{iisnx<{A;?>TW!n@~N z5F{1iU^U|1Z}rrlELzo*FvJlXUYKShU|v)#A@H3R5$<^(*)@1}_KJRI8{xhG6$2qd zq}rd(97>hO)Ca3&1J*`bt%!}M*))%U)yfu=*EBqkAOW^hR72Gc_kojiEWx1wR4wwY zvi)AQis}Jhq#}wo3lBFUBW7@6Xu7Y*KHb>#5GIgDY^$qQx92AgFTAE2M>Fd)IRhkg zxmvUuF(k;wJ@z-7T6~OB=f)?Dyu?EsD z19B&N^XbO%|3`mnkRLZKrg~|c4?Q-Hl#2WmT$mY@L3I0~3jL!wL^ta5^F1^dW=MP$ zWyoaGP531$6{A&_9Lwq|6-@V6w)8}e zETptd8vRAs z+Gu>hBEjL3^d~H|@q-`35T(@dqAHrv~leF zcb`y**hpB!iVYZBaO~R}q}vrzYB9IaQdOU$ZHiz4_JB?amwl+r#*Bb0SlIck!#~vrT%?lyR|+8J)N1W%dlRsj{!YwVbpWHrg|xN>2vly4=;=s!FYgwW zP@3iFJw$L10V-(iCjbJqhUi_at7zO=$)x<6w{ZH5L7MjEpyZHU0mhy%nDjR$-(=uj zSnlb|xv{W&Nt&tDExBq*KqEhVaSlYN0uNNh2E_obfO99X{95{7pgQ)$N^J)cf(rSF zR-^1sXX`#Td!ww!TfOj0KSQMO9GXh-XvNL2=-DF7irPTUu!OLukJJbYyRxZy0hNmFVTU13a&)*kBXFUF?kEq$#RN%nej4LE;HvLh^^ZEW<#0eYN4 z6#%k2XL9^yj<)XD?^`1OBe5BXR`np0h0w&EnUccW6uh1iB&FHZEWfCZh+f9xNPtPZ zFnxuN;8DQCjA7Un0mPXQy;1WY-JMg#Bz0;u$dpw^ok~X!roSg%fEz;H;@YnKH<`wz z8UpL;cg~7rH~puS{WUfzLxR4W(G!wi=K}ioJjkN%1M}3QHGeQNz~PcMdoNk$ z)UQfGlaXO~xq458Kx5R2c)S7dEdrW7?HgsYCdqMb?VwntWd6tbB*ZZK`|?w1d4K>i}heI)te_^)Yqu-5quKN-EMmKy#Mhm;+>0q9LNhc1ma#{ zLNMcJ24@AlCd2p|{U2dn;2B}D5~tJ94S8#VP}!f^{Ne$EWUZRnZK}49^hv3&le`8? zVyYV+ESG-EiDGzkC zB3xB%$)tjzjlO3XjDx#k3Kvj7jGUN(3A|;?9G7zI`WyJuP6-7B8P}fWc~+1b)OL;y zr6_EkOW5hMg>GoAFe{lOsY-=GSW?`WzOScq#sfkQ(eqZR%!aM}?~(m)%cXZ>V}!iz z19Q)I=0TAtZ8 zK>oLo9K*0j6Gvp&z?`>Vdl_6AJ9@;AN|QcEGKm-deT;$PrH`y+*XLu;DU?O@?lD=EgU)Q zzN5%TMCE)lCM|^~$IV6PomUJ(VK11eiY}88@GEnD4F9N}$N$_N&N&*gjf+gaixo_YP-rc*mbJ@!sEw^B4hr{ICB6(?M^it5qqJGSrdK_kHK`U0}|RTOb0FfWT-)Oww4{CU5TL)}1D% zQR?*8wlrzs2;%DQxyn3r%{AgvDr2x=mJR$5tIwpTc1q67zeiRi3NF0mZAL%}|F0f; zFypdUbuZ?*Hiv=bOaCop8FHyxl2`kqkwj(KhN?&R21slSNOaBvHy0nCFhZIdlEcw+a6!==;@E?%QmaV7yoC$ywHl$UHww`%J48=eK!>x5fGOXD0*7 zz1?{MQLMf=d@a&`^2Ov4b;|m(E}sVQ8`y|v4uypPFV>q)l$h_tjjLPPDVwU`PKJH4 zbK+;H^>6gfxCapU&7vdy-8AcCBRLl~iErpwtH+E%6b&v0EAY2T$E2Y;ucxc z2jjTIUiPf15Nav3l0|p19?8+%WLe)`s8mcUrOEmTb5cezGAX-pPem-|B68UK1^^fL zKC6esntaL5J3k1fKeWevHBe`*Z4kT6`A@k^6v2^bC++ZJGm= zwdqIVNzsXtf_`dXfeEs`7f5KQkx!c6i|KTuK-1?OoMV)&de5kR=j&whOi4wX+^_eV zS9%2@DA!ZEG7yX(K8q()A+D%n%_(#^3*aE}m#{{{gs|T9qvOHFYVQ1%6%?cm(i^e- ztY_!i&?S>dg+=EXyS{cu)_-wvsa(QdT4HqP>4DCEu>EgvCj9S+a^~8lzfpCh9>8yQ zp5P`+Z&8MAOS{i^YBzL^flEe!M$hhkG=A_8@JO#;|^*>1pj6@D$Y z$Czpt<#LYz5&g6;dLj(Lpt2bfd5Mt+FF6*Y_QhKhq!lFX%LaEDDsP>xE9a>HckbZz z&Fq}Y*P#9o{^ae&=0rQ`GTRH7YrH7I-3LxwNzbQU4|OWE*-*Jbcy*LLN^>pl<2gn_3PUq6V6z9 zg~DCy^Pee@lvJIeY?;S_+!}BhE7-IQ-U_tGntBeHrhlh4$JSa%U-t8?0uv^Rq8UcK zyvHfoY)*Fk69qk6dTM=chIpke$pqv0U3b#ig^&1rnOi`_L~mwxo^a+AYG^;RiB?O{ zjwvV8aXpWTGRNMhid(Bel946T430Q^OzxOkFP=XsL!phNJ6=bxqg4Y*HqWl|9nPcX@7DGNVAk?n z#u|-P>X)4U?88!&b)&TqrpY@grYw5}odGIM01u3jIAO|_Q%wd>4k{1tcmv9|ic8~n z<#N}e69lgsG<7M2(@hSc0w`8|1)2d={6x1i5nzcnRWu|T5K}A>h;A49$A@IVZRZw~ zSuwtEQhdw}Cd(0d;HXBx&k9q-#mZr$I(p$@Jyht16)1 z8a?o6XqK%;vDLN$O>Kc{Xeot9DJGVA%Xy^brlrqwK7@0-o6=5deJuPD3<>mDR!pdI zkIKk8^2+Fi@_`v`!h413hi zgFgjU7tWR5M2+d1t>1xxl^K4`u$}m|MEqoT;C@!T`c8G{k>B;eBj)U>X@@&qAtFk& zlGe=&cUQglDb{IqQOEdaq5XuM=dN=M3^=3TBQ+ipP*PR!w(S-%BAv9Xs{_E!NfgSO zX+GMfFlh&^XmW(K_r7knz%hTLHdS)6X4@9HYY&(4BWx5Ien@w6!a@yPlKugL{iShX zL-^kG+O3-gqlaE_ccAIvXJ~sCZANYQMBlxF7LsK{D0+IxwO~UZ#8!Aer~<6pKja4P ztqad>X>9>d@o1CDoFyH3nPG4ExIx4S7_3czd{LW~4`l(TSj!q+^f{9QqaZt++UWOB zCpLYWFLa4@nf24~9k@que5I;e=&N|-BW_sjdI7LzVtfgKALtv8uZPGXssL|6%(a&5 z4-z&V9H3qXJlaK2M+27F$5{90p0GFQg(>ywH7sQ9w#DtgWH9K&nSHPJgx#`0R3>sr zI3e;$nlQg8&j^Li$vccr5|YBDb}k2*8&U6YhZuQxm4}Y#p=kI8Qlt{ApM*)7!~5mT zMrh3-o5R@2E5S5mR+lT1g8f_XMh)N708JhUMUCyV+1oDBq_%vq9LJrd(kq_Uata>j zO){Ef^uGbG70wNNTeAN9Ms*`UU`ux(vZq#N0vwi@5pSN}guu|L5a~nyHnG09SECVz zFpcSP;831~V!Xeyp9oo3H4@4!F0f{qXFV2>`5mD7wK+2}zu6?8`kPZy<-gil)wB%C z272l>G5F%V(w3??=>{~Y?GZN`6rI=6S;4L#wdi>|i;o1YZc37E({mbjwR@l7R|3au zeKe>yVEaGUWebB-Sh<@qKH(SGBnb6=|ACzA?T*0MjUOH4eJ$FlZU!Ax_EnXS^ac^H z5k)x*WV4*6unV{JR7s&uXVr!Ex~?!(dHP{7%-pkR&{Uq~(=%MOGEoWApwdU!%ts%n zS2eLD)p2PAB9ABorB8VPk?3^{Fm0XyKK}@RwRk4Cfvy+vZ5Orq?Nvj@-`ImXp$*+E zk7_M?0X6}Jo+gXx$dsY1Z6gcxupGAOMCL?ra8In3WgSqQlomib>pBhxUEn8f47@4M zp3PXCao{TlPfQC}9i3@E^CDt-VR|cU5GU9=0<~oEfq=*6BVUZ~pKHP8(i6GR$0Ph) zn{z)Fs3XEl5s1*)El#3WTE@Z>?SiR>J7l_Z87+&v9oIUIn7r}l!@{Xq5-aY~(xfnT z_1W@088^%95H7|acfr|@;YPAA%;CE265Vo;hp)y;j=O`z9*YS~p_5UKUv<6dL~ucZ zn?I};3a1x@K!Edfxe??=aV6gDzpCSYlZpRcz%qUWkCNJGjdHTVU5LBkuO`>IVp_-= zBXLhCb8-p170YdcT^!hlO#8rj*Op8)bJHYJ-y{d?@Mc#m65(CiDe=5kOfR>btUyG*kM-+QI>{tbzprEC!c_0w1ph)6&-jU!gyjDf8%)V zagFs4s)JWjrGGDQU>r@SoS%Y>+(^t-{rD2V;(rYeD^XAtT6PAfN29UcLWc2$8Sg;` zRZkd_bJpva-WtejLG;mFnFy$bRxmgoNWsx<5#;IIoL!mD4X%+_lX_$?4ok?fgy)2i z&(n2yQ#oI0l_@nN`lV0%JS1_r-uAxChyI!1xC-p+g0JvPm`9) z|K`XBc3Jbo7v*(TS~a~YwXKy(BktP1q~AfH%(o=qbZX8p$t2tkfaTW*&BZY8yBhdL zp-ku28PsyFNlN4uCuqFRj|j3 zBCZZw<@HR#Z4cTSiX|p#oHbOjH!d?|*WrB-pFe8j!r32RnEMHPACpA)09p4+JfTvG{{u{1$B>lKLsvq1z)NZ;G$0Gx+K7fibKrT73ktYZ0uXFLaPZ$zb)iScsX8L=P@ z>F5H^S?q;E5aohQr;Cf+Al)ec7)`zBKgx`z12zwi%3fk4)3gug8b6Xn$Jc5f{xZoO zG?%9S)DMb~s%R>)zlUT5yzzl=Ly{A_B6IVf-3pT!_-&5D=?m}L*d1{I0K0!rQ?vR_ zos&P~=$D!Cc203H8J2+Du^3I*7rCom>POsO08D9b6d%0TbF)#J;(%=68}EEEQj0r3 z$VWJffu#M-R;JFtJ~vday?NfCt|Ma>{CD+%tM%S#L^kw~#Z#e44rva{1EY&nV-ZRD zzeU{XXCduxd7F%~V5F`MB4p?cU?L(C5Hu<|0$+mwRI%(oek!x$TZ4o2H2j$%u7d}k zIG$-9q564)FUEr67VLAu?p5@a+Ce*UX%@5b0Bfh%27;np-&`p+0T6XWsV>GMRIUb* z9sBCHzjIfi|K}=Zg|OKfk(k|j-H}Z@%ldPIv`CwDA!QD6mH{-fW5GQi8_g1h1I33r zBZUc{C`sDqvc!pk3@sdUJv*ogwu~FcgtV;kYMi!Z=3T}3wKh~@Z~>B48&E=Ha2Q~l zr1~{~o^t@Jzr`A*baJTYK%};31V-Y6HBh}Y@;7k{YUL()7K{}50Wwbz*Q|0DA8)%N zMzxbqFB{KK%!{$b76;RZ{W!?+f*>t5wbK>bT*dMZb!qiLshQ!_D|zhMJ~ zQ4Yn1o~Qr|SF$;I8>a}NT~>;=90a!67J>0F5oHRKTC@ySO1fwjJx8VmlTHNmob6frqGL# zT)daE$9BECQjAFf!Ejk=7^WUT3&^YCj^wNhOpuUu5sU{u+M;|(*ng4u!9n+W&)hRT z3HfgpbOU?9EvOFxjqovRMM;eT{ONFZ4x#e2C0|t&}4Ie(;tn zL_8+^JM>tg&rk9&F<=6jye!C0B$h;ts$rqrOZE6ek$OZaRr?A>OD)s_DD6?W8kUH_ z1+9bGD!zB_C)(%d5okcg5{A0P?Dd!C5XD)Wfzd$hf*;o1>Cb*k&puPG7&UcnK zeNutPw|;qex@8ug;V=n-TPAnNYGZI?KC#v3JBK%+z2KDbO??J~&E8-JCcJWo4%eOW zVItpN+Tp@uqz{`EBhrU|atzx2xuJ;Sny;;#qTIrN@nUlV-euF@=W~%^>JuK9%h_8%v;E9Pw z7n=k|n94{7Wa9sUd=J$^C8T0<2Rv@xI$Ibq7Sw9|=zLRqT9st!Jcv`X)*9eS`oBEV zTRF88oJ?Yxe>p6oQCUgK!ESzG@s#K$`SaQwj@yXP9gJaC5}5;I_>YdYI~ly}P+|Dx zq@$3|07qIJU5}bbB%@7M=3L5aKg~;*jpJsv;O}_K-`L1sZ#JJ{JZq%GCAO^B8ZX_N{Jx+F7vcM~m({~fw%Ec>0I z5Cr74bd7m}NTaz*Rr_YYfU55B$1c0eWGrbb@1Fev!LPCssLH#;`S?%L?utZ!B{xZ! zlxI3;XHRMQQVg;j{mh-JM^Y(}I8+zrPlmn>`=exnd|_t)fP6A2qdG){qQJM2Uuf6Q zKEKKsb(N4#kPpt-X>6gx~l;bnm0 zX*JgiKfyN8!<;sscH$S1EgG4r?NIeA<52MVqO5#m1+hZA`9JI%ezwK8aEYQIW|1cU zFut0q9Yz~LOJ1Ak4G*7J?!_$6+@k?r zATaK_7@+bd)ylKa=5FA9YnSk&-v(B(NiRV*_lU)|xrO`qVNo|-`lFN<;J9~cA*ziR z39>Wl3?EU_r0TPPYlG3nGX1>xqOCG{J6$C_th*E(aS=E|K?UP>bMma*U*g0PkfWc= zzc}>@mGvI71QL@z(okC98$(SVZYtF|0|-0)cbcM6u6!`2`G;CaP-!ORy#sY66GW4P zMXK|lF)565l;O%&8IH5Z7|bV>d(O^rc{*F{Pmi`isMKv(I_e3sHPC1;et4VLKFQ`y zM`yZ!-=1jN;RRatP|&^l3tx9}Xtd*HM=2Ql^r=*O^37PWDx^?;D_XuXK=QTnUVU?i29-m_*S0QrLoHN*F*uG1_NwQN)c-nd`8GU~Ib1dfI1DeQ zx0fryE`cA}!R)7?w9l8sbfz!k*RvXQC0784URyhZR}l*9J?b0Du3GUvnTQQJh15=l z#?0NwYnJ<>EqYluSP@bR0zAo%ajQW>`7TE)j)BI4YwwX+cq#rK3oZRv&VGZf!q-hl zN_Xbx{_lsKOaL@>S-SOSZV{HJzAR;QOx{TKpho11HNiN&WS;to6$lW!=rdY7VdzYp z^`@-Y2Ev`pSKciG%p3^us24c>l9G}HzXto%523vLPIdkE4Pl&FF_1s29(h` zp5buhNxWF(7>4ds4KjP(RIgF)9d8m(OxxO<8$1UN)_<8B6~n55lA<-RLD&HtYBZrj z1vQwQ@-;ec)xCD?^LT1A#O2y9kjV-r;1Z)83PPh#cM)S`BTK$$2 zJ>w)@&Uz1X4vd-%7V$2Jx42P3X@d2P)#NI*?{x;`%BywOoZ~V%Y)x^heQ1>^D{wMw zy0!+l(8cm3HfuFI0_&}ExW1y1A&xn4G>uJaurZZY8L`EiABEw>VkI^wkqGenz@&Ek z=ad)&#i$d%zkW2x{8jH*^!C#KI{{mV&Uduk_~FLQ4?)!E(3Gznd=@lV0kstGU%8ZV z4ZitamV2kd12}(9SQWy3$v0gw)9o5jf|$JtmXm-6mw^)W`aLu3D8w&A`-`%1%P1pS`s+MmTC_HKFhp|NO~eHfy<218)w>tj^w;sws+;z!)r47q+;-4 zk>{&wjE7Lw15)M9x%T&YX!1V|6a6Dxwo{}LnV}Q`^JAK*{@fu(k&ERm&!rUCIz)0do=%6nXeXGbB9N-xlTN9u#uV{qXyzdIY_jUH z4L?x}64&UlJP}ly*eiTMnP~jMTptm|Z#7&rsED#&pX77(>f$0#pSXyvf~*upPnvH~ z^c?t7RJIklcyUuldFAM{wq%vzC?c7$41{(+xQR@%{R-#_Yl`|icHJ6QguVJ4Lj%ls zR}V~y#DYA?$u;qRO42ji47?>q-UYyV$;8zK_QAm+wkaIs`7SO+1-~~7mZAwlHaE>% zbYgXVHl~Bl?qGK^&F(Mf4(jJs(U=4m8xsXNGEmB!C+_r5*iPWD>WobsnPK>66+3`W zP@yPmvTMtm@ITRR<-qp`h59?&wqynN_%KFv-tJ)_Ee=xqNg!bQTK9wo2*Pqzgzc%h z#f`O1JmeLN=oNP-i1&o$>|%!g^KhxFAjyrG@xrm|x=a#$!z4RLWh6E~JG_pbEA*gm#Fx@Vgf{p8R(6!x{qzaxr@QJ-MVjtKFOV?Nnmmm>-8^$FlJ5*mF()_C>do)m^j z5kft9enD2uBakCf$OS7{c6G#XJkA*&@MSTW?Ahu=bgN90JS}-zitz*L?*(iUV8BmS zygD^GRY5qgnwr)6$L(-0?WlyT{Ygqfn z;o*3-GaQyJZaD9bUiK>@5j6qP2g7B$I5nG?o>5r-#o^cnyu!s@X5T^Ec!ABmW-Xb% z^YSYm)M+IlvI0?M%0$l$^A7}7f4>v0jQTHcd%nz}ozp>_QVgxz*UWP1QH(p>C5gu6 zc_;`euEM}{a+*m9y~*l9=}u2N{${mYY->yOAiQ507x+aS=U}6r^zdq8vju-*nl>a} zu5?1TF7&-%->lGJUh^vYH7Vg9B$hRJmyK<<%8&)QFKgUp%#&kgk=`5;xUw|KJ4O?|-aD zf%@Gk>ByX+PR_5Y(^|Ja_^zF=HKS&N{P#@CUCB{U1}h5F-Eg6bu|yN`T##6u%4(YK zf$@b2AfUT?tcKx!Y46}Fi|46eYi@m;JvR-)r56YnNYSqmKG|XiHuld{#Hg$>D4*95 z@Q_w)^s2(`q|w$*Z*4faF@>o7`)MVenvHvcJ~t&}LbX+P(&!3n2f6yKtR|p+tC<;pwYYnDZv0{*4f%G5h8LV3I1Tg3 zz*bgqJSMDkW=Rv81@cXjwgCic7Qtwq*yMF08|*pA`Aq?! zW&}BIL7DAE8)$yP%=<3F6a1uPsAvrgp_^kg5XDFhux{J9JQ@1s&-0!K2ThhbHIBlE z_%w&Ph5z(YH#5Hjz(4ZQ9btex?&Tr^HP#Wv$sQ#a4(BsvOjlWr@*Qr$(pjM%@1S>s z_v~-*I9~#pO0;r{o_{R$hFIG^^`rTwE;}@Kx^K=3ouPop3?*OO$%eQJ^f?k%Tz}gc zU+gqp;Lr8z$?neENq{&<<(h&1mSayVM0X@nzmFo979riVS|bgR?a8aoEF`IHQI;D- zYp@!`1ne=#U7sK!xuXE3On5J=kdJD(DROX#Guwb|*5;V(9=1ka#p zZ$~R;h%2_4oSZj?Xq?NOvxm9zl7i2C+y*`X;{GTxVvSQY?FztEG|VKE=H{FJB$>_W zmC+G9sGM-l8sgr(q$`mzFIwd=Zr_91DjeV_IojU>Z`W#~R;zi^MfkK`)O^wH#o=uWxG@`YCHA76H=li=l_fE?$ zP|vrEUXv3010w0aycNkVhzJ|<8{z#W*|=+2VG-VVUa|;pTZ_x&K#Do#$dSjaw(SpP zQ4b{e)DZ05U@y<%V|xN&5@=m;tidE<7r~1kn|>jM{|s+;6iN4q@y;C0Sh>R<6?T)KXtrW^U7cCp4iCSJT3m3kHe2q z-$SLuZx$GqVS6G-kEh0>Z$&x+MyfHzrpv2Qv6l=|??Cr{_W7S#IG@9_(8`U33c6i< zF9vaowO)T6SCwC?X86b(%IgInn))B%(o*^KkazqpC~k>{->K)=RgnDVT=52dv^jok zKfJALcQi1LdnkOG+puitMq~0I3PP@5_4AfirdsB)$23S?9%=K3B+xDAn34N97p-H45@I^3b11`J}rt_yJN3UPLh|#?wu4#2nN7^Azl|Q z7I`ai=@%r}3F8x>6}%%s*#3PPfKXbLhqEKIVQ1?%{}tM;`@W!IP&8QO@Yq9Iz7cwr zp?Mo14jKh!-+`a$^1E=k?NmPNcg5Y(Y3(uZ2FyRVc^Zq&sm%-m`26idoi{b~8N`>wv68zIXWzN}_PO&m z{T5;vkDTB7F##b_#@?}geyy>b(bNCskvj|eWz>Dnz?TCYaEza%AqEn1symls>ckgA z<^qyR7HG>y&(k@c^K$1@A~&}Wd^mr`i~&XH_^}33V?m|Kl!}2$ib?&qC>MgtWPt}* z(TPGom&K*b)wQcto?9~vcG@XXoYcKkoqC1C%&96*u&086xQ>ZShd32^oo=f{(a7u3wl%~O+##Bxa($%u&UOkJH-l9(Y%C(^Vt&w#v`K8S#H#etP}afP-z6@ zHjRNHPV`QFC5=LywfS(YU@;;C{q13uu7ZA2-2dgTOfN4F zvy`hMvMTq_?L9e(pHIf@KI1RRgM0NI+b>nS;ivG&+S`%Tl=Q!TcUPk{i9-OoEWD<8 zGo%L&WG3QSsWx3Za%z+7$bvhzsP_F(7zM4fm2Hi(d`NLZOAEUK0L9G(XgIsrJs)Fe z4Wx05vx&gAd+xZa@X%)yMyRtIcwjm|0val)Ve8C*6y6C_{*iuUuU>e^s*XEyzwI@q zttnL|fP@vqA*HP)C9&Q4$8_(&y*wsMxi@EVkIj6? z)aL27>j-BN4sZE*&>%wXat8`w9NUe5h4MSyR5v^T&%8A0I<*PrXAQ30epM6B6a^3Y z`SzZxAo5tFW+x;oCuncCkVP*Jl)VW65MOp;kJW9(GD< zKbBu^H8r`k5MO7{w;U;V%I1QJQxK2Jz z&7AB%XcaEXDkB1LK42hw*`R+?D-R#CuM`8tBnwzE%^7-8LREr#TwkTl=|CA%2csVlPGk?y_s6G{k2K{C?iQ?^uvvuS|9`$>ThK}@SvJPQP9*Y zNjktmQSF>5Ler6jMngGN*tc4!_k=&O>~_87Q)U0-pV_yYR5Q6#d9)>$O$CWoU)9j3 zv=miQHQT9xkJEABqt{D=wfjv21m0Y$^1)Gx+9+raurwg0+FT}No3kUu<$%pA+pL=E zzr85?1M-4nVyizM3-^1$NL@{X0wGZ%2~Vo<;Ey6L$)`OU-gIf7QWlt33kllv3;BEX z9@n}xm8)XM-}{wZ0Dd{=JE9f1J{v_;jBVc?EhfB4yy19+F+sBV*zT#^^U{=tYr3>YrRQdM^=@unH~& zduAKtUg_`FuPi!+(>SeNDNVJDOF{x{T}F1a95R*fjL}ry8W`?NO2hi&RS+Sgf~Vm= z)w?={*U)KaGTthZJ1I|3 zKA^lCOWrQNy7dA8Y`rY8gg8yKk4@T#?d$x(Q#Mb+kDdQ6+rJuV^aeiv^{Q_(vpT*| z3K9#1(`mrm4ii+s#Ny4|tS2%_PIMRTRj^qFi+Z{vQHoM*W|RvKQa(iSsT%~pCp=*#+X0 z6{~#V8cr(Fo)^p>*{T}L!KVsb#L>O@&d@YIoH_H`Ss&yjnVmV&b~W`=8%jsM<(6^x zIlY{vsGO~pP=g|?(?hE*qwJ+L0@7h?kaG;}{pVObF_N9?FS zm+F(m1h~Av-_!Qx^W(M0zJmGpCEW9wX#rUO;yzH}E3=4~T=vltpk{yt6!9Y9uHDOd zmzcQIo7GMapfLNCD*cO~^wq~2cD-odI&M!d~D%PIH@8?p2+DDaC+@ zZcYO6CmU{P~{3nRkKMZ9~KDKE@nW7mI7pwlQ;cK#V%eR$sN__5sOn--g`n zpVun3Pa^t)0$!_xiQTKv82@w&nmrnT@JRf*TqCCQ;@QR|kU(uFB3m!YT7tl+0(c2I%N zv%DAW#L88VSVg#mHA`_BH*m-qgVZ?yAx#oAlrmW-%bAe7$8aj9^=bM_j@;n6)2FOF z*()b8F}X7W8WU(21NNqvWB0_v866{Plh-iVLLiI1&TT1ko$hpp7pv)IS?oae;dq(1 zf5>YhydYGt)R`S|VwpL zorpB%3iXAYWjC{_=cBwX;4G8|-FTu1Z$-i-w<2yJ-At0_^0!N!VgWsO1urSuq}?sG zf+Z;K%DJ^Rp}EasGHPf(<-Zpg*fWi!q9EL2I6L)b6y|n@DHtk$?D(^d3_)&E)yEQq z@fz8_Cg6iF@C@Ey*3nMCWhfZf_&cSWZO-W1pAl(AT6sHelF2We{JUIN0W+*keh&b0xmFNC`7wRQZORfX(*h{Dq>WPk%0esx%=KZb| zvA%526NP=%Q~WIw0a4zATcchIVz|S$;7!rJYM=c7J;`gFX9u~lmXF@a93X619Z1r7 zxbuaq{+O3!C;~x)yhIO%k_2pQ{)P=+yy4Xy&On;;(!?T@+7 zfqbJAS8VZ_E5(s{d#C$v5$y+jZ{n=v(@}}v%1Qc9RqTz3>~yIw9zCPB3D(Y*3f-*OK&Odei^t=>L(WXHidC7NHTOvCwW)^wO}su}^hi>1WC_3OvY+sBw} ze|)Qi!z=vIx~SLL$_ExusdtefI`sCbzKd1?nOm0%6BMK!k};e>3Eb4|{DTAl_|Bc* zU-w|8^=0=+-ptmjWXw22yW;0?cQsl5waeo0SSg1WELa1czo}aOC#aGDOeccA@caaVG?~}; znBqIP>d|Gb-KT!$43`6+ROPRLh&VpU8X9bth( zQ0^pwI2tq_^yG3W~jO(4;gR0-5Uml+o1r`+AaB%wxMc z*%koixYVdnV$jA6jfy16jE01ft2?~9t?cvkNV#1WM7ix?3+_73h$mC64HZv+@;NIk zW@AbC{s0gvltXMy^VbyiH#w=mEWa$sz}~(2fkUM8{=};Ny^3qiUe=(EBI9T3fN@m~m2~C7 z20n!=+Vn}r6}WL>#8bAwSP<5wWBqcx%Uw89kr127PS|j-i%Wl%OXQY@!>b#hsfb+7 znhL}M{@BlRY)s8dWvytQ<&)w~qLY>zrGY--s6;M8|C zpv|kAq2+mgoG@SSmt*SX>>fv` zMcuD>QZ~Br(Sp7^dLULH?hk__xGVZlLd+>7ewYCZ?FG4tg`LTv9q#I|J_v1PgP5U~O2 zRhwVax61%3P#*IBN9$2hiHYX-@$~@0kf8miZ;+c{x1hlRt9~58hubW3Eu&j+nv$J$jjr96uwVLW2sFU5lG0r5LeyN^y43E=*Y`itZ=t9T< z1Nk&s_Wt;(#f7-qon&M4;a2@#bpHX1^YesjZ-6H` z3*X}V;N%c`!QX`)XT};jEdcJL_4IgLB@6L$t+zyCXGH;hjSt#2lZNW+#3taK{#2pc zS{OnADr``OZucQ>NfH2SZi!mx)ZK*@Y1-%4kZi+hH}l-}3V8_axT&92V?_Gh)g`W~ z&S6&srIUw+YV(^1-ITJ~f>$YI9RM)bnE#}+(9(wAm}Fb&jwr?4{;x|6554{>m%-)(i!CLX9c{1SUy$K50GPxF#sc=Wi)$`$DHx#owK9AR7K2(h zgoNf_BJgU1NrzwsC3VEZ;tIf#kgVI9lD?-QLZ^TyFR7?8Xb&4D8sw1~;I0GR)3WZP zkPqKQc-;G{TAX*b;7!5FakOA1Mz)pZw!K~_V;{QO|1L29gRYH99=P*6jQqSLq%jP2 zi1PKD8qmVPj2;D1(90AojS@8>E|5x)ejRgR%e0UMC0AECF7<{j29%XW+NqLEE(?IN zKEex#Wy3!n=h;j_B01K}e;{PGb6HFD1lz1rObGh(gK&-5qbTAw!t!4YNTgvjE6m*lYp_L@6X>Ndlk^gDQ|WPYN*dB)`mKWbn>p?g@X7 z=ag8W0kUk{K|nsdX+Z2Cug(ZcMbdlRKX?EO4h~>UZoZNRge@}@7jSb#b(F0xQOPlj zw0S|Q1035^*&~Vo3ML=jAk2!W31lmd&`D-?(BV)6XamAqgP8p0sh5ae%vNSP@>4-u zu0)v#G932kJrN$M;ipobJ~$u&1d3cSIq5*hO)k%TydnGksEeUO;lr>kh@-9))Y8Y6 zAGycg_w#}!X8Q^`h&$|WixBC$b-fx9wR>{Ru*SKq#cutDX?M@>*SBb!$g zTPI}c0^YRHZHsl_uLMO^;s9swNlyqDK1Kga4igvwXURrE$TCdxjHGw2`;3(c{HYet zH;oQdToT~CG9Srs)!-baI1JxRM_*w}nZjB--&0x$RKprTc;~n;V7GY1GzfooA>M5! zTgXIX)=IwkQYZVHZv7w7NYmnx-~P6z8!zW#MQ!d@YGl?tT*mHF+%cF8;>U6u+8)?D zK8v)hlhR+jx#guS8$ZanwD#p>2;G~)$~1ebFaF2yjX@Gpg?%b7ia=6pAG3@AHbgJ- zlJ{A9>rGV-Rak=k?A~4m4HZ!fW!bD0y=c<&g0v|yu>c2()Z@z_!qfQ5gPnp8C?y}$ znpY+&s*Dke16i*U3~b8!hjpjwiUGr5{oU{>%bWf@6~7^gP~qbJmNCB(zPV4A1MaPi zH_a=)aSHlH>r?9gW^-pczy)e0OAWK-p2}Y_-Ut>Zl=)OM+zI?I^rS*l2djQu4!sNb zF}Ay4E!Rk$TD;`$c7e@}Ha!jlHy*uQGXc!+}0!0FKPM%Ft1xYjRX)sY8>dQu+mIR)0a-TF%0; zwN$VE^*e*Qm*8Y4JYfWOOXoG-j6NgUHnu;4u}WnBltppF+QMJ;D7KnNdbs<3wP9^T zS1c0ISN}Vr1HnSl_5`*Klx&V-S8o({(MR8SVCPc4lKG)r{ee8X5}mib3Na8%h|mLK zoics`%tgaDlHhGM$Ai=DjplzG78a#01OYO-;EkXMR7^k(h39b z!{XM9SJ?Y}wW?S}G3);?h|fd(rjU9+h&Szkfb;SBcsh_WPNuYT+aWfgYx5CJrxYpO z&!Qh%m1mbSr^ighB@6|0Akt}q6r*Jl_mrXjvTL0v{3}-KiJ|W%(j0+Rt6LFvrNedc z7lW_J4$rz$O?79N)&p-r!evIZn~ER~IfZ#bUu>D;YHaz?pAYv@>NMeKXz5GL3n1MsG<$H`*|Ahg{VFlblR@>E%)#v8Y3%pTLPJ-m_3jnz)%g^=O2JUltc=FRQrGnZe0Uct&sCB%MRKLe5{fb(o+V-sFsl3^oGR-4nsk z)QSX_?zxd&TWZxF*dTE{=Vs~e!S=ymM1<6wT7E=c#|U#21sbpIe+6GZSDq6$sQNOK zn-#0n#V6&f5MeoB{p;bYZdxfiO>~4~QCr*b4#bT$m+7Jt$EeJ29wY6;gmhdyU(>@b z2ivmnb>UnL=RaI?DrpN*tONfIElmatW!{o{JC?z5BvnAW1A$n2bc@6$x&$L2shDHE z0fjz6_+npZXKp6*A|1ES*ZbFs@&*_SI?sF~M-1Q>e_l@^r-m0_0aJ$PKIdNMb9<1vs(i3RG_!$FS8>@K{0zn5XoI2P(_HSh5|5#y(-iL`&`+?@}AY-%$L$;(9spotU=#Dr~4la*~Q z4A00UcZp8p&G2XgMq`w98c<49W-=QRHf&HY;;v0jlu$jvZRI7(QJ#Ml=YCtt{1`h; z=ehaD6*SMBFzOh%l3G8mL>n+iaM5swdnnyrprwm|I>Wk}OMr85lvC^SS*3FO(LtnU zrdE0c&JPtn^wFkLDK#?ul1st}mA?eX#}HTxpl~dpN%KE-ngr7YaZ+*mImgYZ3YTf8Bsx`$gp*^!e5o>HBCiY7;eC1Kj8r znhHB)2@odqP!M@LE%7@*XH6LKCydwqtA2k~miw&hm6x*Y%A|0TW&63VtkD>*r31f}nMnq~vr<=UN{`LMQ)X~dv$vo!Xn zlW~nojd&r_$6|WnLR!^PD8eBZ7UxSQy}!hdBHGrRvjBk$Yy@V6e6FS9fUK6H0J1L3 z2AxwJel3)9#T3jI31v2u)~jg* zTI%6dXFxF4==rHUUpAPkhrMlh?tg0#ZBh)`VfKnfyP06Z7Jw!hc^$cZrHIyl>M!`j z^r4RpzhA+GfqyD~8c~SocxgRB8NF}f!ik?M=V^@TKuUa)Cm+E)Q_CV=l|Xa>Eu)g4-2DIoK_bo%O00mC+jj3g0gH+o5~7! z;*FP9bt8o=s@KNi=SB#&6_e#(rf$x;nsY-iJDQB;wDAkF%SSi{Yk4sB0Q)68+sFf| zszS_QOLlB201?qHV^Rm*Ramv#<&A=(;{ugsJ~iPJo#?r>WMU+Mqyy^F(A&i z&K4*hIg&$J@?Pr^=o7PSrMGm7bfDp)yGQFoTuM$c?B@HtQ8wSjtp|yrx-S#(P#erh z>c{(Qcgr|}NO3kXfKL?w%dHC2O|G9v7p;z)TMvMp(IVM|PBBe=sbt)N1CTlN{jb&? zj9O&VNegEcnATSK(u{WzO7@V)Tc?Ql73GdC0&u?5#_ztQz;Lk#TXJ2~)LZh+MsDm(0rh3D4 z^%R9IprXJ+N`waLI*FbaX1%RR;z{To$ZB?^Z}DHV8)o4nX0vI$&(XUQ?Y%^<{Cchc z?5nB{r3!p;ALTALhVJXLl@|Q@Ecl9A+$*-;cQdJ<($z& zJXnzS7R51@-rIxyRhP*|WfCUNnOavk!fLk)3Yq;97}vZv<%Ntl_-!X2!MVEGqgW(L z@7MSU8bo!xeGb}{=M3S`!PmR_pt4IwX&z6}_-0V$2Q$6Xe766Ba7LOgSKf{rd(Rh0 za_dbN`9rH4OuPJp)9AHiAO7H(w_2TeiE*U6IW%u4zs4`5NSsv-7KT!0YZydyS|W#X%HY6@B-@Yh5c*L-lx+)uEH@} zwrKq#n&hAWRv>@|L__3~yjkk^paQtYYH0`D`R9hkW5$>#?)T)?FM}SKeiODd;vT$t zjP#Q(q?XQXIL2Jg$hJYYx63f5h-s9bYiJN85rpf_BB-55E;5P50$TZ_NXs)TsNmO5UfH6 zDMCi6-2}kO6L$%@a1*GZD+F|?3MM$l&AZ#BxCdE2_0KCb+A*<=xVRR;{JD=*i(sa{ ze4nsA9OghzO%-mtJQWty!d%DJZ71WGt4>C$J}=s6p$;dx^{-o!_~Ko_^)VaOJCS91 zl(a|hd-HlWP{388@e(z2sp{~lZU#TT*}D-TsXgeY8833cw%zJ2s7W%SIBu>}m9Avm zP3;J?vrkZ}bPw3gv7bN*LTlDcx#0E5k#nJgCG3h9;`wMf#f#eUc#?xMDHPo0CIb=} z&TI&AbbhV?03NFB@{OL>KsBB8Td~JBypDIVgbr3HJBJ7i2;GI$@&|nQ0XoW2H~QWu z1^4t`O~4@9%?!ZRJ^+Ga^3hyYPXdX~+3``FPKndp_G6)wrj4~#)0GZQv>QG*-!3WL znaeBp+F~242H6YyMbHiagLDPUwy+kE2mMih)t_1nStPqUF$_@lb z=R}I4*eeG@6YZx>fd-f`Eobb1{h;XfAUA5-NXLr?G=+=TE-z)k{b0GgnTW14MGU4C z0D3@M1E;ddEvYoX^L;P?g`Jm;kn9`ofSFpejiG|%B`ukUmHXHRZr5_F9@7~o1J?;n zKg?3qu5&`yF7s)fJj${==Nq-)Bwv*1c6y(X-@^abf{mm63XCar2e%Lz+^cvFO$Lpb+D&@Rqbpi&@e)t zbWDAS0SVFV2GjA1hkJI_lK#yo6b} z@7=Y@n=t$GPgHz1oK!A)rB8+hRCj)MizDyJ$jopNa~Yr`-0H44N4*4nZJSE3>UcI{ zV9z3OJsGt^6d|t-&GWkYiQFIf;ttLUmhk_XHKjA-cb!$tk|+?z810zB87lo=^TxMS zJ~`IukC9cHXd0epwZ&@H@8eS~gGuzaY%rBK1?QL#-K##k6if!OcGAHgb{CdXAKRm3 z@02=CYLvxUOR*AZl@*_ggA<4#qq#nqqjBDas$&*JN?#Vne0IGQyll?s$^A1U9mJ(f zCbU%ip9)uQGfnCB(r98Hrm;VTG-2-Y`tT)dqjWXM*)~n=@_ZSXy$`Q{N?Y|5;g72OW9H(O`#vN==fXvR`j&vI zk;Mf!V1QXjC9@=l9gcBfjY|RGHURRvGF+~%PM}I5J_M7v3?rGsJ(XnpR`x1`u_6nxKb0^?h|>p82FpUnw05r<}AvgpVXch=C#QDsTQ z#3y#5?@*7hMu=hQWGt|YV0myKO>GKW7=wk&leo#{Q$@P(&TQQ zLx@xNfOKs!e41KPnu_5^8`m$c6a3|14E?_N7u&ukv{pWLB+5cD->w<}|10|E^FsJ8 ztoKA={(DsEi4)^(U|JN>mXKOsR2Mk*#sOVDudrExUl#3(G8T6&n}!M!y7w8eRM3yJ zuE0&E06%1Dw&J{b$nYpqQua?*7N;{7nSBfa(tMK#$!~Dj(r=DIxwBNe4rUKd%nTyF zz#e2ePm2o&td|{Pz}c6q^OlmiOq51OS+ZE&M&r|#_DsytOv4q1L4tu2!K?v6@^S9v=wCr1d`Jd=6IZxVwEfDW^G;Fr+nR5T z44#rP+k692sG>?IGTx+fytmTcKkD|orZE8O2^*>TqSV;OD2^hUhz{KU+HS=adNqBO zol#ep!YZ~YDK`#DkfKmWdYe)kWn6}n_fiBoW{{3{ThU0mhL2+_^oXm?vCKP0U4`ac z2aOrBc~`Jlc8v;#J5bM**`VjP;teG6Pyw07TgVUMrQBVju&+ehnasn(29=CUUcug1 zP1fWzK2#h}Dp_^{<$Uzn;!5gJ>Q*F4@3TUtWF_I~-M$XM-JE@JiPK8n?co_8wKOk)$? z4VvtDMN53`qm^w#j%cYHrNF;V!7x@OaGfEZTjhfnKAZ6^yoS95_H@#c3{koAy-Ftn zNRo%$oOWes*6n_I+$060KQ}ZGn}#oimnsm$09O88>ov14X&Y63QV{@Uj>@hj^A3dV zklukI4HL7rfe>XUy@`D`QqUgX>!D)ZqLS|PTpkAvi`C10O;BAr(SZuOtTN~F30e&Qy(0i5vt7JvWh2K)W-;sC zQ@*<^X3MdB26-=mDQC$5_KxbTI7MEL`xzjmZvHkH&an!RXUv(Ab^TQVQXRmr7Jpkm zj+v;xOlL*i4`uyWFMBz_+-)n#fqWRg^lAtHdunHYj5c|Rj7HEXqA--1=8U}-NETD@ zzFFG`toj?d57|rl)MxYlXcI#cCqA`(KPABK@Q>%~XiwU5DoEJjwUAf4JIXIG^b=UP zW)05>-53PR??s6KIOcMrO&h623Ss1Naaxz^ASpUwf#oFv{&rqmt1#{`Ct#C-R%XNVSK8Mj(fXB!(VIx_v zPQg`{0!A~L@P08s$-YYK$70zX2h49XxOs`k(X1n(3(+)cfV7slh??X#y)_G?SzKg-8cD9x(C zY=ghq{A_uKZ6tuQu^(#u5=cc2QrR>P{eJ#GVVB;f4{N?3;qoYs)-}%KA0mx%cS-HD z_#lc`{&A+aIb%|8(w8TD8$;uKuKWQ)38}M$XP_!Nj8kYHynn1?h?)emtJ52c_WBCX zv&Cc>wWug^TCI~Jx3f%3qT1Cpt}lSo)>tHiGQIuj=_Nh4?#W^Fv*hoS09_EpF(%i{cg4H{c{46&9< zak4_nPF6J6ek)LT7uWRFk&uq*v9Bm@RW&m|%NS#n{MkNF2rZ`1l*mv7kx7Pe_e27| z@0Rti48Z+6cvzxna~}mD`RiYf^5+9(Xss@1U*pM0^+i$^;L1tDHPM#GxjO+NjQJxt z&j|qL>X(n%6Lq}=U|{LN}s5aACO=KqjM0hCh{vlh^?f#TbXXRVyi{sLvLdrr=0~9yNVC3BdL>w zT`bp#Hcg{;n3gK1d&PN~IbSaHCuuSj!wL)Ty`|P6;}UnbsTII#;#9o)Z%#~ z52iW-!teOK3p@8Lby<+=@L(g>?-)-q#gijVG6u&Klju(^7io^jP%$&GisXy4Pd8Zx z0Bmu$CG{J!1PcturCUw|Aw`w5>h(Sm7ArB~A+w@k8-+O61X~?9n(Okmxie(bEp`7Y zL*IA{Q40wd0SR>!k297m=r2$CT7e+pxEzTCh_2#rC zhjZZE>#FU>ZUzCfptC3sy49Nh%SBzZP~;k{(hH$~wapU}#{~`8AQwC5j0!Ituv4KV z*)gg*5G@u9P^~;u<+dEPs^WIKR2-`u{={l)DnhQM?rgURQV$cee-!(MZ zct*&)adQZ;4ILG34;q^8Tk=@>3ZSWH1bVNh+pZPKNBsdDcw$mfgRQ)PWGM<*JEf~ zYgUcknX?08Gg7R8H`i1&9xuCO8W+??YjdF83xb5VftoNORnQF77IGf8IIYGvixL*zM1_#{er z9|0y$n&qCN=~$a2UA~k3FSV|JR`1G0#(AGio;_{?EMZ0^YVB#P1>4f9NBxNA9e#py zC%3QqI)b@skOlY~WxX7xZKM|$2i=Km$mhBxKcnXo4K(6vT;dkvfV7uxT}2Iq3*aqe zfAxM%Sm&Vh8GgJSkUE@m{jMs6r>mXsK4&TbM05<)KT-|>rMRx}*&oE|UA-5v4l}IC z5g>a;Lq+$bqPCcBsme!4(gl(z474`+Q9Zeql@RXihC${OP z2^{bOYijliGjm{3g3ol|w_v&oQ>%BXMr&*gJsb#f(y!Rdv#}wPPnX+0JV&^PyCpX` zhRICo=B*A?Q{Jd!$wh}jlop|~z~_UiWys9CiP76J^+|@(Z2X1uL~ZMPZ>OUu2gH69 zM$9_JsOpaNi%^ zkopsrl`FArZT>(b5x0}hs+mM)J)n*`UDmpJ90VF;AaE;r&`4o&IpS{GiS|C%75wlZ zvxUeM{CAfFXaxAN`1vWc!jZa0hQ|J9mh57kMOq7mwK|&Y&AOeq#pR-(vxUJQ&x|x@ zoyh5m#Po{eX&LiSolz z+*zWY0bZEbuVvF?DQf1;n7Kw$T^;qH0MsjjX;*mb9cme<(k0O?rD6Og94(}o8KvTh zRnd_hLi2yP~Jl*c|>f~7Cw?C(I`sr0L_)g|ae@^!(mg(Zm z0HI6^if@lebm|ph5+17!+tnCMn2d)_8b-eug?M_jV6Q7jd0Pc^Eb0g77nS4x{-bxd zC2_b6xbMbIV5zBbC5UB<)i#`K-3zC?TpW|N*=X!=%`HNPlJ-R{LaV^orDn2+qV-~0 z<{MQ|U6u>Tt!h+SY}m4YlTWOjSDIfjTFk(0>9 zKrC5%#_?e66tuZkv+~eivaJX+qvXtEUof;Do`n%XXd(=f$RrkY{+(9Rc}fXJ44-e8 zMSqXvCZFaOUJyq--hIf1e!XePl&#bQh&ve`5wmWyYZf}?b00n>ije4fTDTyDcn9I< z3Pb1)csJgqqiIE#uo zEYF56@_p}>4}W5amlNonoa;b{@JylHAF7AP@`SW}@F~qsL6+@Rdx46x$K48|_mu`f z2W08#mWcWPxhFL+>4Qw=8b&@Q*-1HCp8(36kLzOvJ{X}+0Fj6e8B-tVCl zatGl7YwX^+ljQAN=l41*VeUM7#JCQ%jZdiGB-()T2OH*VxWwR~Y=60$kfw&)>T*6< z*5Mj$B2T=8QpC8Y*~UQUPfPIE6zC0aR|>eAr0;kE6+Lm&QSE@Sk56y2k#@&VkMvJY zKVeQu!g)>jLMU585=b&9$q5`lBv{#}2Fh>wmbk5m zi_{qvmBgXUOQ^`s0qE7$x>|TqaO^@ysA>wdp-a?kcg@0 zl@^YA6*WT6=^yN*lA9Ej&;!9~I&I?QlG=pi=ErZu9idf!iBzeB71-BZ3YMgO<-}25 zOtzggV0B1UFtW*cgy=#UsXa%KF`b}XTfc9+4z{u^jC*xjO2Wl0zHAjf+81+wUiG@* z>D$Nq^GPvfkx_JM#hhOqX!PJLxAXxenG=iU{nlHg(T=W2t7p!)2^H-BLnAj$`taH( zGie|bHugJ)`P?E@ncZ>13pT>Hb9ys`Wg^vK5vgXO0D>`GgoTxKn<*SayOI5P5#NI@ zMd0*7_7UzCs7o>)ZnJrsv8PdEw!Y6M1oqc^t#+kOX1%c$^tu0bs(uZJtvnBhRj{;GhZ*z`}8s80;x z?&#{)lTk;H8f?t+aDC&XgF%eC{ZLd3bF0QL?q;g80m_j9i*LIlXLvJ_xiupq!vbM38G%>zm+XK>{g{Vn_PP8$$jMKA?Q&wd`5RXXO%K8Q z$GP8z&b7ChK^qR|oo&$W%TVF}LxpjN5`2>x2YJSWA9XYcAAsr#ivHo~z2cz{X(f?C zo7uyt`X!MA7I(z!MsPE8pOUUJ`Gc85cY79&f8@!MI`DkO0@8n5aUuObN~Z0OIjSp& z4zmj=3pqiqyA<-8j1@0u`05sq2w(56Q9G~s>Blr!Nx?hSg20-Kc4DxW>xR(b*7;eT* zzUC#{b!*iDX4K?@BFTTi)iv&U6@XXc)XG|)ge7iAyLY_`?b-O=WLJinL3P{BFRRz~ z(eJf4q|}dxI4&#SCkGGw?0#%I$|D_ey7XLrr+jufzwy4y6+_I_1Vx(Qb6FH0q;Z^F zhgTQ*Eapi(Llg5M3Y^jk{ZUxnp zqUx3y#r;lH^3fCW z=7O{XXp3W8Y{YYiBJ-Hyj;$bXx*7C?dVi7vgJ~F=ag$K9O&+QW>4+3_7retJ1YFQZ z80rsj{Iuz+yRiRp#*J~HVa#UXkoOZDNMv9q$GEc7r+F0jW*)T<;OP~orwq5f$k z){mtkGB;#*L5rJk=k;ZdM5qRhOM%_>52auL4<}wN(4dVs=e~gc7~&4gFHhED&wzll z!-;Q8B)yS{`^w-~Ni^~8DU7a2I2jwzBGzcL(Y96b(Srl*naOq*kqka|?daby)$ZwN zNBO-}-9e32oe;R|(l4@jVfd!2+b?g+Ei;LXaOX&mPkp5-h{AxEa@cb;;Z4`T3YIs@ zC)$p%`rwQC7mTRTewV{^FvU}uq5&CK zH#40J5x=;3E>2h9(aR}Bj=Tbi5)%jeT`YGSd$UZoUpO$`#x6*=8aZ-EkiNVoqk)v6 zkUxdL0G7ZJ#WjB+ zl%BL|)fL91Y{gRtA03%;j1M7n@8jl?bUcL(D~nNv2A@Xtzs9v3qp}n16Y1PIT(&93 z9)tsgQLp@I%L_dEC07hYLER}zc8h{W2*BcrEd8d2tMikJ%}MgW)w&JMdaRMicz|8> z`uC$g^%3h7c&VWBml};fK5z>{w}&88nu#R_4TxgAOMRFXup!@;WJb0R0RrhZ%NjlcUnv-~Ncrz{!D?Ef#M27lngd$zpdE~3B>G3&2r54`5 zuR|gnj6@%p_Y$pf65vB1Q)87127^sJ?e!*DYTeeJcXGFFI$O04EPeQZpXjyQ4J-zI z4lthY(5?4E)|gcka;Z_gx<14j(%A~$4~=W!?Lpt8Ot5D4hRO}a!ZnheExQvE&WKc|(FC@U#!yDH zVDVHpB_Z$b^|y4qO^y4&o~7NybG05yWM*cd4C|A)g5A8D#|M63iF&4g9aAZLMbDal`W>%msFG z>FX+2K|`EyxBPU~dGAq!AKk^7^ot}6h-|UoDSMOEhk&Fk6PSIDm2Z5^- zP^lxUaN8y(T-8CLh6_y`ZIb}YD0dI*DBbaY9RZL7@0;2?o2Y0jjaaQz`1q;xxCiHC zv#WSN{9pv3v5({V+n{fD+|n^^BZVO$w*S*}Lx)MY9dO!;D?z}knnNzHK!sIbo}5rS zW)*e$;pKo&CQ@d$mXi+J1Tl{dgbl6gfTbLhqIme+z{yiaK!Lm&rT|=R2PRYm>A@?J zR#83Hb74n{HH~xRdX#n)260ykzjqxEHXREjB^O&Xm5tkTW;k2D>^xun3agLByqF~? z<)BfEq%=3@9Pyu=F~9|VhR5V$ouX4*1Dsh5lr&a?0xceuEOvdLZJ;EBx~U16RQ-$1 z6iEKbhL;?YQ~l%mEti0w{0FG>I31N;PVgylIPqh?%0rQ^s~}ZGRHusUTB{->-0>G! zJ=f~yL8cL>BZy15+}@q&h<4JV?(9;dON-36+;=N$tfJ}^JX^n?y$XY|1;!xo_z;6A z?JnvJF3<`y&rg@w`j*uD6%zc?^ifRXI6#uoKrDvx(6_aShMYFN%_&?+J9hla3ts-B zhi2uF37denmvPYlXgsDBf?DZcK_EntfRazmxh?h2sVs;J&sSscgHf4}D8(0TSJB!# zgrej?^$uxZP4UBgxL02WL+;!LW@gUuY3Sr`ZcCE2uT5h%&_5W}4iHo;L^@#mD2GQu zN@I4GCyS^3d{3)uYbei}>!S%7$BWHBv`OjO`zkw+^~WRc=MxK|R@ALy|SNU@oTG+iCE56)~03l!xOk!)&C-G8mM1 zHDo@mg~%W2q9);|5ab_j&0;i3nz~-%p!ECVwE$3Pvxp;=!gK64=~&O^bpy*nN-1DJ z9L{4b^pqPy%E{)BC*UKgoMTS6ujIs3tmzJ&6D-$PGYa!V@eD3xoIS$`Pq4fABl}3v zCa7%9Y?0ii#%(+Y@RFGMk!q&)${x=lILTZ`hc&4LAb5CYhUhG>2gnYf`n@ENCIRBAL>QDDATDwb0#&?hvt3=p>-}NVS?P4@z49)pxRonr0~7~wnWJSW%bYw_M;UqQ-@~v!tmtX zMbS_!F>NA5-iI3QfP+BGWfAhM zCRF2bQ_H>t{MQ;u66aLpJfhOXbhGMBzViO$LL{($;0fKBp3Fa}L@k|&K z?m`xc+?P(1-sk&EwZs37D|DLYK(wF%?HVg7v8&8#t}@6`i3&oDkghmr9Qn2jW^LdN z@*_TgeN;EdHdg&>P`3Ihz%?6atpSogqkL9Bk%@rmuuc`O7@Yv#LcvYeb3Y9?WcR&i(= zHT~yxxPl91dXH5$?h8n-;_l>w0y5TFJ3;Vanc>0PBP*?c&u%e8YKbi2NCU>3$uUgR zpidW7pK4Bz)4FXN{T;8PQ2V{gNlF4+!&w8$X11=vd{-sA%oK;yl4LTa{Ffkrb|}?C z#08+v1q$Hl02#q(a~Po=4?X@KQAK0!jbzTx8R(7y5?LwHP{BeRhO#~}|Be&YixtMu zRQEb@T!dx8yPdxSv{FB|da51Ph5!CnMp`V)rYvnAeC7`1LagGB=2)qD;0>ha&E)n? z1opX$!WUD3|CLQ>W6}|BSe~?ZBr(zrT8`M>yR#nY&^899Cb@O&vpsOyRARXrhaAZ) zPZwD067V@XJfI^1+S#5;n(C5Bys-NI730>6?QfyB^?I3p@!G!f)yBmU6XKxGvp)a= zyvn{6F3z?0r2#F6I-6l~0ZrfPjxoJ>nB_GX`1oNr^TvoX?uqx_ez4Fq2Q>Hg!IMN+ z-}=#cB~IJ{oF9##V37G%jm^jUcC2rey?;zSOtWR)#@)a7G~dky-0sX$-~uj zj3KHzIuip_d?tX)QQ;C_ZI!<7SbWrD7WVgrzeg#G#S>EsT*WoBx8Wr&N=YGTaAW}D zgUF=acJ-JErzrr?Hre>`!_&GmGVC^~zb4a1{2dbgI;v}!sCZ&J=8=(8T3mCDNgscP zjI5L*9{c<#%D$~xCIDf>^+D@*jKLj|6ycVuvGGa!Hgkul%fs%K^7LaMg&4d`M;&8V zXULG8?xB!bni@dS;IM>mb_<8AdJMA@v^=Q{{f!c+G=#Id>A5D(H zN$K6H^T{_VD2q1NKM}@Ft>WzTOEL@`mgD7Y(l_IU;tfrym;{B|**`WsvMVYU`(UZn zu3wfTTWy_IGSq~~Pf(b$+(HP*?A{s!MmBwimjl>NRrt|okKPLrnFGnFkR$U z%-v_A%59%+R|5OvR(>~F!R^nT>y5ex)e}iSFB(6eimK*{VHWY^d!6%^P6F34%zqREjS#4$b^do8Cr?VI-*wm8{;}QPq)LxJFDdE)ej=9i>HxE}v?NU3 zfE-D}(5$Xz)8eZ#kc%-^DcB+6A_=@on$?tth4h#PqBs+8$^QXGm!DSmOJH&VZ*|Pv z*;$rG8G0}``3hmbFm%?mv4L!u2k1V*E%Tp6r)b{w%Bkg<{(xgO{O5Pu?pOQf(MU8T zarq+OiCWx|=qPlr-WA4Lqkpb=)l<5ecF<@BshWk`rDaPVAjV27`qSTjUS3(zhV1o$ z8A%nIx^sGZVfyA2iNv9s&X|_xxKD=)f==4qMRQTWD}!-Ml%?0CFCdeW%**D;R(>@?D4wX4pZ^?hqI!J2al~l)3R2IEkAHX+Q$@j(0zU$6DnPs^J#%R-0`N<+deQPWcIo}__J#-&}9&%9-DzQj`8yMREcb7 z(m-212KqM*5}wC&HevON=lFAVQcP}S5u)5)Uj`gtVNv3$64qm{)?tZt?)njCIdi3G zI1}$pCoIp;MWE;lw+HLha4=4h5)EVw-|sG^z}mU3UNDtRb!`*(=f?d3Yf?Uk4}fnr zEqB>a@|I2ebsA8vg*O7o{Xvo+6$GdS5C>gEHp7J%)jSe-R@KpZXeSiFcE#eNM1ozd z?dU|`>78+jZmLKu`jwCIwoYX}G_+5F?^yN~YPXqJk+R6K0Cp{*q@ib|)Kq)m1D%(% zb&9$b`C`W9>G_7Zxvg#Ff5IS|m9UVMB1uMIIwn)neKRwaRpZ6+kFcd-1h0R-M{2aG znE0unK_kn%T_$md z8A+@!v;bBH6aBM1v*_fnXDZA(ESM$Nj6OL&>j;sLte7(b?=X<+V+5+yv0e$*9R|gYojzs7D{j%-7RZ!6++W_%`Gw58X~ecWAqc^9C1(-fltg zopF#$*HssM1}?#n`DWqrbfUDuAk$!2v5{z~^H6ZOw)G8zpZwKgUWFZGhSdd!zvT>r zJbW^|!V#785)ZuX#XE^o)FaFLaBO7Wj-5!2qawXrw^MZUT?d*U zA3rU5=Q~P|$nF?DcbgrLnd&41Cp*DzMIAAq{ncur`LU#5!vN3P@ zD)p3xai-E7is;i-FbUTN4AACR$FX|2{XB(%QK(RQs6IJ|fdkMH92cvW3a$ zL(Tv}FXBbWIP?ZKzjWO}2}>d;+Ju2unLi86rt{Hn_%;QQ^bs*9JgS@yhN??un~*hmo9MhzUIg})TC{?T4zXbN7r zohhC>Z3plVbY;AEd&~ubX9D($eRYhsPNpqdoO}X3sH`0;VW;4BGn6+p zfD81R4ZsU3$p(OM`(hs%^@z$P_Ps7S1-F#3jyy)V2VNk6nRUEdV!Avt_CQYd3u`7# z%mS2OfUUCEzPO%4qOFfI$|gg7piGxk$CtI+Xl5Qq*eQWmu^-~LH9UF~e0fB8Y~^_V zP19}R$JgMXjb>Li+3UY&I2c)h7(wBoOUSn{wqG*9q8bE|TBKiYT|arF6h&C_rqv2K zxGSgyd0GE|a#Z&|h|8iDo7N2%at7)KrnX~VXaYte?cG}3qxrp4o*{L-F7rXU{(9$p zT4b-5fOkKF(u^ZKteXqLW`a)OqDNjp;jCSa{PrBkdhlR!a^~d)$Va$UK1;Xm zOJm8AK5@Q}5}&jj?(4=QPOqRdhF~KMaCSXb5`ItujM)$F>WUkb9zn5)Hgk_=iC2Wr z`ji(b{8wn4=nx7W;0u+bh}u zKiju(IUaAt+uJUP-c};xK#FgKX(nQcqbdnuI3i+f?D;%B&P{1Z-G=gRHCG&< zwx&c%qf6(Si;2hsPNG-uouAIvHbKE9$q(=g!|i*=q1-RZ&gRU)?F~epb#l3I(xj`V6MWDTIh84 zsWgD#J0WKw#OtQ;0*D*lTFSgrvvRIzuacP^Hr}4zO%#D+zv5jVz)39f87|F3bJMTN z!|cCsJQI7PvDSl@SKmDBMo>e5b9BRzK<;or#ADq;fzKv?a!@{DMgaT;j@jGh}1vWBw8w71Uz6Q<}S zpHIvr{U1@0{FoS4`JI^TN6TsiA^~3ACEP1mBZ9#=t~9IkbF6o|>rHb(92~P3l5sBo z!<7}40zAs@HJNIMNOxrKcZrv37th#UoNtLYTd;P+z#pW`CY;b8qOpn$-B*n$u5umQ zQ_MII<0h4PR|64kc|V49`cSrm!^%srFUk8x{UJ_hfV(lC-+mZ zFn0R1it2Rp8s zIFXr{0V8G4WXg6t(LQ3~)Ntj*A(wg|! z|1#<`tLgxc75%_LmW`WD@$v{--fAU49MZu;AUafZz1M}>HuNZr&3q)c5IUr<$yELdfGKmp>c8Xp9f12E3yqie*IS!7 zJLO3uw8!)WwVm>>9Y3mqHBxvL?RZnT4Gtg@MOGqQs9D#I4b@E}{<~DA>Al3y9>~@t ziVY5+1;A*xLjuh<6Lbaq>CPL2C?*2DxDpRmk*t{qQjg4dydr$>t4hex6 zOMXXy)OO8@$<`~w)MX6{#>zq?BLhhp+YG?GSME$hh)Ha<@zUUvyPstOygQ+{m0V3m z#O+LnbMuQkIDC876vM3$VxzO7+3-3x>4cIBg0l{nzZNGy`hu`6)FXT)T4ZZROWCC} zl`!QC$jAj9VHL8MF4qkY=Y^OpLWAbSyKX2yhvq)0d?I-J>79#;rinK#FU@0vP!p zeo_LyEafmaBsp3(e8Cny=AcbO!9tY-sa0XWTx76rLDr>`2DE-NG1Fq&bKCwU7iOh7 zx!8i8FgMR$E*1!fs%nK5on&)n4~@ltK3uEDT<(y0ex+n8x#W`9VUEiV6w_6DkxP{M zh`kFZhOxE}vslSFw9cVEWqt!Qqm#=V%kqk!{?UYn_rl_y6U0JO4dnBQ1U7s)$^vp*8bupsf?`QBRv0A6hh93_T7MznYWw)dvM6NJv?6^t$4lR z?lc&V!VjDxT!liVk)65nkZG1&Ydv3{P#Rbzd>$f+^J}oEGSgGqVcR`z*(_CzU;%$J z%J&9mqbY5?&q>QLr#1kzs2UQu`_%c(f%)E~B*|9z-S{(H4T4)-7%u(dbAmwddPq;X zM#r`O=*+?Rs4x>@Zx0+TraGJcjarE2TTmRU;Tj1z_&d8Vq+4ui;7$l;*)vD&QP7Fa zu^FxdqIzl5F5YKySUMBZegyV{+L$!dA+uSj-K$dzE){G}GAkQFW->dd*Ro@FPrJ*{ zG%t(+Z7>w~+t-G63UaqZm-KLQ6CJ$6vn;AJHUN;(lQWVp_8Q)!+j&^}ZT*heJ=f&L#cEZm%*%EF*|gfie~St z)YOqVviDb9;bl$9+4dXzi!n_da2V0|WiR$&)Pb0%@D&4CqrG=nVRXx@m=wt^!^XRr z`+~21+U>IqDR=zQ=z2lMZ6F#KvSO!-zpKtmQ;gv4_t5zgCo{8&`ylxI{fw`#r#7ha zy-bC6OllAqkAEqQ8>t|a69KV?bAjf~$<)?8L(7X2la^$BFA&B+J(0WC*a5S^`ABdr zs>_!l#jP$vmEw*SCu>II>5OeHsk#;8eJp)t?JqqMN!iUuQR!bQ{|&p__j#5F+NbMC zp$%5^FLN{tIGG}pS2-3U_{$B6f1?sf|7nV)Q#U7BZ2nIr1an?+A_bYg001eYGxMy> z0{ao5`TI;!1?YZ~?ZQRW)(?$9@@=Sm_$ByRYnU*(Sc*c>vm1k`tNraZw>$&qLZG!X zF7ejQtM}E0K2^atDTR!;J%6EEYu{*&cyt-#GSzX^0#_~BxL}Kcx0kiauVK5jx&x!N zAI8!A6y}Zy#MOGvs5Z>T8)(L{7jkyJzThFLu$hu>{&ApeTiZaBDDLg4phrVN2F_|~ z0nxixo)k%h;5)ONHHn9w8Ie1lLE9?a^;$#q&YxInEOmlE(AEhov}i{S7sqVeAC}08 zWR?1B2>u5O;Q-|A1i9ggO;#3}W(o$Fn@nS%r|^wq5|?4lEc7FjxIf_+sq+I~aC64G zq#C$+%~Aw4crPak>r#Q=)=Ks?#0>!I4kG6dt%FPeMs6j}zF(s9A3wb))9sf*X7-x$ z60XB)UrnhgVo8%@=nBIQ$`uCtU3;l@V4NNb+A?+z``}B-zvJ}V_sYeaJy8v~91;I) z4A&^;h^7b)aTMx`*IOPD4eq7Qmys|efZ3<{J`VJD{G*0M)NFQ>8i0xM1T6J&oti6U zPK3wp@+8@>OSeT;dD&DO`x6MMWB#cn#Seg#g!oZiNY@`#T23L#Au-!UqD%vPIyfGU zX|~|NQ%312aU9J+j*MvVFSL{Srt64vV=h4WHMr4o^`jgQ0^X{T-LFG$LLXiTVjc=F zZC6oAhJGd?YM_n6XXZbQTU~^wgdBz0zejuQ0rczWaE&p1>-1!NCq0>{Wy8Vh_<|8U zi+IT&g1&_53njfwa$Ubeq zM{C%troXCHWTkS3OXS5z%&=}1Q%rWE{f5x z>L;Xg7_AG2CBJb=Ss&M+2Bb*5>t}l5<4;%Ln}^-z%$6;tPR2Dmy<$4GbGE3)pj=VF zvx~Ff{Z`yV{+SB;1{3pW8Vjcor<7dCG{DTdExf*?GnOU!8UFc*ewyHF?h5#gu0@l?M9!{cxmF)qip4($pOJ^LbL4Fj%}z z#gU`5_Z57yCJpCTQ!Z3fnwDs3O<5}AAHUT%mo4B{j{Nv*E`!qg*Mgcxuc2orUQQPA zu;a3rV7kdQE;SMDo}wxYXOd6N`94S2ZR5<}f58Y^9?J2YBl9+Q=2WZOe<}*EQiW{Y ze{FpEjE~0{@|6hy%t-w(3no{}z+lo%j4$(=@l# zya;gExalfwH(&Rh$qMM7g@L}__R31agy?15=yuQj7!&K`#m;bjkqNRGc|@|Jg7uo7 zwq09Gtn&Q*_dy)KvU({xh0ci5Ugto^6AA0~VF^J9(C*Xtk*w4aYgK#c;B?FEn(z5?5r955-%(WR8X`4I z1MZ}pt`M#bRW!F4TRxo|c1?m!VR?bQL1GkE<- zqNPl)i-fWtCW6HqSb!2#c{1Xl*!vtcSG(qKv6{u4a}q%u6L*~>RbpAM8{QcduTXbSjzY^+Y)mOWZ$S|PxtmBsx0LbR$m;NiuM}yB z0yz~!qP{sJK$CaphE-qGANiXU53bomJ?nwYK=j^zwx==4+{wak#+^m? z?}@b@1k|hhV?Q-z5G+3GE<}j$1n}7I6qIlvp2fFfyJxSlPTmkeG1dbILlVk>^&cv3 z!LPkpGd?Y0Xb#C@L)uD3_)mZA z-#J&l`>lb@t21d$z`ev1;d8ZQ7u|<$lzotdIf#3Ye3P;_U|9T)Buxy}M&(LwMLsq} z_?gFeU6YPgaQQ(NZi>*Xt4Y%;s4EcRFsZGoA_bxv8d@wAm#Se!09Y4@?QUTCIm!`L z@IMRg!o-dP0Lw3whze}1Jmr%eQl=M6>B~ro@zp1X7NH*QQNJNByKo_d?s{~wxn7@7O%jgLCd zz*GX*Ufnf+^xGUO2*z~k7mlJz4F)&~;WbJ?!EOGHr9`OIXmxNxf((bC---}Xsq=PC z{|-dD#@p&QnvedOeg~`J5?~>L$6R$7zmnsgY;uMSiT#alCWCT)VR33wvm6O09i!0u z5<8i!EYLo4MxgQD#aiH6Y);U97ZWzXvKSG9Nu5oIF06E=XdR)SAzv+Mczj2;hrDXT zxa#-Zk&BNhIY=)`d>AxX%l}@N&;$?rw9D}DeGwEy9Mrg{B03p+4Owl z0%44cEJh_k9lqwkR;nT#Eoz(S8N+j5QSOTX?3hj+Me6RW7l4&_dY)Z|yRL@tfovyE zYw}BWle>4LM3;%YzK`Z#oPz(I_wn@iVbsIWSiThvbtC zO=V}9(K6bPyzl_U*QyNHh_z1FGee?#m%E=be1j9ZHL!(Bv``FIK6Ogdpg7{lyU48d+w_-O1{R54E~f*mI`Uw06Z*&B4qhEqUHgxOrslx!ac>@C zeAw6nxR4y+Xm7spFvtE!{okTsbHAWZiyNseWrdNRF%A zs>d-n?Q9v)9MPj$gWW%XaA!1)v+7z}%F1j`xuO#-J=cgUnSFNY^R5WZaDKgb1Vzi9 zSu-zsVzj)*M9b~f95@NZXmBfE8{MNSQX96+N=&1963h`1(vlpwc)$Ca8!K1td?@NbY@gPiqc9aF{eI9z}~ zEiZYKCWhkO5o0e}otdjIW|p7yi_?%&Gm8J4;PYB+jiYeHI$bpbJu*);7M)xjlP%x`L(dVuuT%q_N|if)aP0=NW0uph6_?emK6Rs>i>C_J9a; zNoMRJ$I&2mfw-JG91i?x?USeZ1YX3lbmud~(5`I}UkCjaZ)d^kO~O5xMhCC6@?aZR z%~z2E9OOiQ6*OiMbb9Fmt~<;m(x`fpH`GzgpO_$bLib`mOc7>BcVv{3x$ciG6SC;p z&2pZrV>+0@1j5{x=-V*R4d8kc;Qh`DDMOx|tMipms)krZeGed^Q}~J;ooBF@|Ki4g zrwnaLlUQzE^0#esF(cSzmbv?bn8||)kd?fY1I^Ba1mh=c3TQu}JcEuh$KTT}8Dr#04z%X;Qag zNL6zrt9w|m-dH8I$5>au@XbrUKUzhoeye8YC(pY?r15znmfQ)zQYFp11~i&|UTM5z z`4v`3eQG{AuTFS6l1;+rUY6;fOUV`v#MRwg`d6~#Z6-w|U1$3x;7h)POjWu}yD%nt zA&@%cB*O&>kED;#Ba2l9D&{=zfukI2+DA6r@{-+xIH5Yry{;9V2ow1vrqe0s%7zMQ zyZ2xPAezq$-pN8dIbm`NgD?)|4>Wl=Q3h zL&=j+AjoX?Na1YXqo>lCp(E@N{?7*i3ZFU^9)p)qZ3ihw(C&97J$qy0F5`;_-Q=Op z8Qv~&q19jwi+=3%o7A|e>E!N0fN}e*1cI6;=O8_FvQfws@)-=1K&HgWCtZ?}* zSjLZ(S#ZF?Wd+kqmT+bXV;G>jsgIu*6G z;IUd2CSoGn^K7Hm4;>P9nRImTXTfME zLUN?Fe2FwEz~BP$1wOS)k=lj6@R$w`SYd)CQJd)xNG4Nc!&2%ilO&GSeF&2PnL#8W zvlLd2_n2dJ=i2cGUTk_gSGZ2)qZ=AYm!n(8q~PF+QPUhy%r}%iiK$ZpF}X{@rp^~7 zy>GLe(5phTA_DCt;jF;#qw>Mwls5zfW6G;Ltj}KT9X+C= zsl7$Dfd9q$h0DIFYh&(PECDQg!>Ox8U^~WO4thnaaT+6&zTPru)kh3_N|HlOrL9|( zo=5G!f})4aTj4*(7!PWOAvH`?J$g4DT}j^<(5UOLnpIy{OM_FX`UEX5NJA8GOq}S& zduHW<^kL=Qxg3M@9ySzIdxpM&f;wrCRF>epO zeZ0ILEP1sRep%K@lQPl6eda z)3M~1XN%p9&|R1j>L`dbRN8r zG1_?4X{)n8KXdakyP_MdC0)evPkm;^b|jJgm77-|&gjY}iKd0SFBDVt@jDjOIcZWIgkB%3S?~j90I@zfRFG3_P)U1R{kLq9 zN{IduqX$m}=dGSE$L0Mq#G^?Q2SLY&(3>W*Z&X-%-5hs<8Um%OTiET58Hc;`}1fSTg_Y!Qyv5h(&{_w-HiQy>q`1WlBVYZTn}$uv2o{484*$;3M`MA z$FcQm%4|`Aj@qq#^IY`H{O|fW1LfgzFsF9V7a-+0Sr%=y{pF1VX;2OaR(}o9Dq_rg!1oG*&C5I;f#DBZW)>8lFPw5{lY*rNEcl zKK!rd(ebkz6US2vwCNan8c#d4S^~k59Pi8u<}pw>5P@$q`}Zh)hrSBLIy!D0MH8z> z5KMfwy66SyVM6!i0}3TmJ97@m7gI9$hZ4%Y@!*qNFEIe?HKe%qNmkOv7&OAGXI@Jy zF8Yx-(U)x;J7-uc#!r~;=UJmeT}6%emFd`;@Z925vBdBGdUu3vT(dx|>&pfLT6LG| zSAN{Yi`@&}DiPu)xfnEWp&f*Dpd1;(oQr8V5ffRmDdFTE)&1K| z|DV=KC}`ap($)vbQ@7yM&(w>n0mLXMpQWuT2oMKvhehTzu?}{!Dt3OJs~Q$N^GrLA zJ79v?n#EL#li~&McR;aYxz+m=yhO^ll0#!pVVO&?;NmB)gA_Cufo^Pa2pW2#_ zhQ_~gLVSvN(5clfM(h^;*GuZ%G`_~HaYrWKmi_%bZ|VQP7@5jPF{gMC?;Nd)2-9U? zXTHwZ(f2Q=`P$12BG7>h+@o_Q9mhEhH~#SQhM`O608&`vQvKEtlrq}08(1~H&#pXJ z3M_`Wc{8G9Z*HpaJ`Br5xsvNm&0cd6i6g$tJ(Or~)(_ud)0=*t4Acg{nwi;@U3k@b zwAr_b;d8*6u3n~+ew9PezYb;>8ppDcY&Sh;fhC5W2y!Jt@{4H-4OQUWjnDJi{mzIeRmrDqr%wH%ky50o1#hkIf=dJ`3aJO?d?QuY8chB=z}F?YJVw3 zs{ZVNUC>|~SN8gY@(Q>|r345PuoGZ+@^JMfd!2X85JA6jkO0lP=m-i6ybUVug7-Y- zN^U3QCfH*RM6Uozdg40tkHFrE%;{u0nD(pL;W$rjSw9vn!~n@BPWAO|E;${`ta!w% z{XO-%k;}aY?atxaz#~!7f&SkJMkSDNT}9~213qc#?%o>4g?5_29=k5ml=u7#aNQvg zUdT-z*U``34!&{UEwLU^K+2VejAQGK;$}i-vN{ z+hXIn{8TT0jt5T;*;IuDX-qb0SZH~(Xcqs>Z{t9j0O-Y@!h{dabvUTp2`K9G)roV$ zPg#ygRMW1@El7<+@v(e!T#w(n=ag=4Lpr6YK1Si{`hG;(U zv@v&lLJP|{JqAawA^W?76$Ydu6nZ@r#L%7)8Ht_`IC2NilA!&<7Ja)(uhZ)sC!7z` zsV(;GaL=CWODP(h+h0VWAzNaaAL_BGsvemZy;}LCV$xX+tq_C9jucW(*3T#O0dDEe zUF{rSda!NXvMwXR?X|&D?_4lz8e25>UjUF?7Il_#$U=g|>4WXY*K8la83Q#hhX>W> z-?`B1U9AbB?2ctvQ{!jL2gP?#GPYFpg7>I0{9}U(&)APMs}%7)Tj>wth2dSeQoT5W zyYK(sL(V3<8~_rZB*HL;yz*iK+@e7JIv4&D0J^?Hw&d31Ke|C1G>q$m7jg`$`|8s9 z>Fs$kbI^w@_k}XxaZotZiA%6|(yt0#?c-Xrku;Ggj*Lv;2%lRlimR)9Ev{P&G$Y$7 zoC%BQa87W*JqT;80ix_KPJ`to|F8&LCW46)T{gCcyo)i`P6n)-pCAxv9hx2vZJ%u* zYDu>mktO>k>yNu4AtqxteK0H_R#iG~xG};qvM|RH(N7A=(r@Mngh=y{rv(zTR9sGq zPWWZ7lorhlQ3t=czf?m9cAg+fgOaJJKc6JlUrL(^L3<~x1TO|(uUuUmMb2&WV+ts) z)#&Cg>g4TY$WrZmV=hU4tTTS5xsdy>KzAC*&6{MY%4|MEXThD_{KJFqi)z_Ls*)RZ z-S-RX;N)oBpS{@Y6acktpnu^jJgv#9+rV8s?{`r^3XIx0=%iA>#Q; zPo7x+w7^mN&Z*RP9^t1>H8b}x8tO>F2 z5x?3-8~%0qt2{upQAjEQ^cRd417i~}oCMbJb!I;tp0&*VR-O^)&JZ6+DKWnNujs-4 zm@?lGHr53h8LayrrA8mPS`zi7c`&zIPCgD&M)-P4s>eJI=Rh)pq66XuE&5aq2YJIN zC8snzB+q|9wXY(^PCq$w9NNh2yoo+NA)LfwH0*N@{$Ph*C;Qc%{X{kP-6F^rq93%( zPc+wcq#|Zm^Nk;Ay$fj`kY1uJ6fjD!F~HgtbG&gX&Qx*EPjjLS;4!Lq1C?Xpq$43w z@Fh2ep5HsL?^saoBcFwRKC}+Zs){&?koVzk`x4om5ZxLz@d01J%I_*hb=CQP8(>zR zUQCJ}i#@a>sW27NsLpRnyh84{iml||6exm&N@Qs*7zcjW0B4EJcB@PuHLI$zihK2> z&DK~@+*NF9GhPFb@1542?59h+NNbYdZx5T1AaoX`4RGFz*WXh|O`Z}mf@{OXAqc(a zV7wpJt)CcO?xT2f^`=Q|oEUn^Y0Uf~gAmlR+9OGRN*YD9o}h)5&k$~o8*WCZ@{296 zBaXHp%z4|DQlJw>CG#nxRaz*}&37?m<^M#64<7)S0QrZy3@d{9b}+ttQOKP)4NJRK zWcMc$n%4%W)3jyG@iT(lUyKsd|L&Xn&KW%XqbVK(eON>aK~CaWMMxeo0xPy^kkIQb zuXVo*N?{ZA$U$ANBJbgX?K2XUvamZ*IdLy6Q9`9FM`}x{1ijn~e+I{v)Vl5b(A8>j zp9uSkfy)UMAyrF_TOOjtqdtA7Gw(%&HZ9UdPH{dh#P5d2q$4ixL3amnVcQE3WMltLg7=tL@kWg}MvE#uS;@gYnA zqp6pNdO#uwJ83`5uG_8zU zOdislL4ui)+ml-Ax}|_?LmLmqw|1ogy~GEtbsMUzSu{h^1BeMg_eCLYILQR%b~(4L zPEXQ>aXx2$F}t23lXbwe_#I*fIm4&u(S3{+1U+ z+zS=-k)YHK`L@~V?Rg%QJk&ciYQ@yklZ%Ft=C-jlB)Y+&${NyU39L56)im0odKl72 zAi_gGpyGiDh1AuJ>q~q5lq?67_0@8L;R#YrS>{|i)d#hi(&H->gS|>vd2z_MMqiRg zRi}48eyfY$pA7 zJ&}OQ&fn8B6WVpGY-_he|Cs56!udq6zo_CW0_9U8Uiro(Gz^q)nUX7u?*KZfB}72_ zd!{>I)izw{&DMWmO?PNhdq@#XCYTe@^;cL9?oS|HG0I?sG|PwWIwoMG+s_!w-^R^E zMLKA&*D(1In#)a*xRK&1k~j==gydH{c_a<7pN}0udqbPs0g)A|>e({@?+|{lzG`CH zA;wf6X$1aU9yWg+8nx2%n*N*XAe*RP zUKo2B=qwNQ^I9($3L=bL-a;BXs=e;_**jzQK_q8AcWS<44Y5apgB{Nl5@%h{A%1E@ zebQ0!<0p83iKYEek@lqu>jC^bpjR={WNOA+wRoLrub5xq6a{~>s{>nzaJnQC5TH-f zA<^sluNJNhB8Z=kt+K<0VYflatnq0g@Pkjl8k5t!k27I+N_yaSMx1iDcmn$K*CzXP znoKEaPQ-0xv8$8(ChOP?L@QrBgoD9C84>Q8z8XnYa+6J>UH=z3%{~C*B})(4G8=>9-6oIM-m_cSRPp=ut7rx1}9>zSw?Z@*}f%0lfVrZ(2gU# z-1@^xwn>l(r+832>?I?jZdO9H)@EsnBXFaKpOTeZ`*z&3A1y~jS9ITFelJv~7J=ucLWd&KB-1VggH?Y>rK#`^{d8VSIMMAwZtr;s3g>t4E9-G!(U z$iKE%ypYe~(nkrE5#!-g$o6Lw@(eP6#T!iYoY^A9IHYZ*Hsoq@8!2;ZrdMso?^+_P zPF^t$ZU;%#uhxVJ%<`Axl-`dNnNm-0xca4`IV%%c*O3=m~6i+{8+tT+w*^;|dIR<`E#kGU5X#ljV~ zN%m@_C1T{_I@R*gevX7UN;tYU{(;*LoGouAipH&Wg04oK$`j+>{@#P3-*eWUM~RV4 zVx@g&NGaDWt@I-+eKNP5w6jgEugSXu8dfdm0i9;m$N8EUYLyn|;ocDukjPPlhC3uedxTB zl*pp5D=1H!uU5mfeKyI}_iB;Q;zLMN+$R*v2A!5ed2y$Eb~OTL$LpI$5e3VdJ|#6B zB+k@5AOAm!M7h@9wut)L^PPDt)-;-i>|esy(v5J)&>&Y$iGDAluw5+cE)?yz#*gzx z&5sczb5?o|>8zBL2d0MC1#@2;%>1eXYrvnV)rPudtg>W`>9JuP;TocN)Q;c07u4qAL;+{ z1q!PhO5?CKqG(ScLb@=tn1F|hk`j7sO&YGWLVn*ygu;u^;Cvm`k$ z+0bxQm!6b<(Zx~Kna`yvz=xYjI22dR?oSQT#C*JB3d_03HDpr*!B~L;02`>@OXj-sHQp@J>iS#P1-c+Iw+;DvkbUPQ9@owSn)SU07+R z&s9Z5{+ohL1Y)f)k#}_eiaSr7e*N5}e2i4BmpZ8kGjtuLMGf^Ofrb;rzH>Ku=dqgp5X5JpSCQ%G67q_jk3lSs@h-k`lVywmp#OS|}#P*zaZ$^P){Td6?0RNGZ&A z%m38|2V{s}S|Tgi#VWb2^bGC_U#J@H)E|B8m{aHWi86iA@z(2h+uzAyR3NVRTFdpa zr~{`4N>r!;6`0!VmO~_zV!1$^`^=s92Pk;8*)nNSftuL(WhWtuRjt_r+g%lygAU;b zbA8>%!qxNXn+>pY+|gD=q3N9}*vdiFt%N4%we26sD~VE050D!`s=kB@&btqRzs9G9 z;;IR>9)vlSisaKURePp17INUKMhTNORc)}ed>F+5Tc&pfarXYs(6Ytas2+uOEK7rv zMdMCL(|NG>dZ_fT>SS_yjHE9-s#sr3Lx2FQ$nrzHF@ud_ZX9O3I9#j6{c5fd0@2f# z8;FngKvf+=B_Z{s7!tZg8%Av{j8_(Ne+b^T)Bq~!#>yd{Lp)1<)RY7~tQfipHF+rD zxAE-7&B<;{fyRo4lE4X6A7pAEps=!EQj7iPo1&?L&-3Q-uuf0afq8o(d0%AX<8gIQ zN>Er!=x#(sT8=QJtxRK@q22eJMwBB#$a@5{CLamYye%ONIOk?irVdY(1-%|0l;2Jm z%IYg<<4xs6poCEWZOQZptf^!Srlyy96AuhpkRa?er_6fHgho}fw5~A~(<|NB+_!Oenc@cU^PLWjoHuI)SJcEptugVx`^PvQB2Ul+w zJ!M=)iLfPUeJjl|P~{2Tj&1@5JtbjYXa5t0X-YcH zH_v!RQ~3P#R8G-&q@{D!LLF6jJ3yL4Jm?%^pmtaGNgIkOvYj`n&`}w6i_0_}mNQ?5 zNB70=i??_#O&_A)Qpc|ymQTa?6I|jvh`Y*8fcP@yHxo1|Zi&@guBAG{{`{S^?ee`g16{n4m|>!#-2>l(?-Q250jxY&ZbGs3l% z0N*aN_}0xV*4W;xj~JqEWX&u)B5}z2q#JNG>_zdJgzhHLoI$Z9C8-%f?z%F1%Vz!! zu0YjOgmLkVoeh`#-5OY6ZZ3((I#o{BW1vu_@?lshHLKRx9}dnmKzzt7?9#{MDg4z_ zSdS$C=)jYyubtTnDc`bATbX6#?Ndw8PeH915kjwYoRd#>a~c|(23NL6(E@Q->Xv{A zL~o{r2Y&Wm2X&Oxf@Jb42~Z2mj(vJ=mrpz*TSry^4~)}=8d)}j<->8XOdcL#?IWPD z%mR*1@7}+tyywkP$aXl(hJp3=_&`pzn&2^vSCh#t{w)-8p$Kv%SO2^)R>0P*slf*R zPE$Civ|4kenz~#zW9L$Un>=8xak&VW_zEKWNtLuzVRNGJGGQOOQ0tT zSxuQDPVU&)mQLt)!i~RlLK^FoT08~s6CA=NTfh7+u>E+G=7Ex&`j#6AsHc>6ZOC_6NRXrRZ2zr452t(2Nx+7bnW-_| z!I)%YbB7`4WtgM0OmdUQ>65_#(6ZZubl%17Jr}81j_q_v7l;|njDWXCHOUDA%myD< zY-jM*_XSI1YW%Zk8yqJ)+Iq-)-yi07L(+3Fp)r!Yq;`7G93V~5OMd|VcBgck7Vx_y zJzWL|jcVJ{y&|9%{0hwt_OkM#RfyXZZcQSJD$CJV~ed1)Cx1`81XM*|2yG`49u4$s2R*fd}b=%Z^CdiqZ|y{$Nfp| zMc{%6EyRy7bA02>IqM?;dBPy2z7fQDmS{kX>C%p42wiydUU8~oNKk|ns9&lQ#-bfp z7oyt50L47Zt`Vwe<)10bcmclTFo%4GdrVsIj1dn%hKzyL3>|#U43q+8KuausU5BmY zdR&hVW8*X~Ar#tV5@>w*a^Kmjhhkv6K2&xW!&wRk{L=lIMF>8-b-1mgsa-QQj_F=Z*+SLy7crzw#t_AM3TGT7TBX0_oILV)}uCn^{O8U)f z9=V}iCAga&%sX}tWj$PsS*FR{2%Q9^xsc!EGanICquj3Kkqq#e#rexEtk`#1^Hu$u9Iw4l>1Og!u^yR*Qj^#-@P z%Db@$oOxtpOt{TKjRmpKjA~J66GSbJJ_Q44;=}|{XvO|^CjZCyBJbwW`AXf{b4)TA z<+g6!%vaAKw*ow?pZ)Izos=%NhPG3HN^=XQ-j<|(M*3`-O_a5Nx(_Ep)D3b#LpF~x z@QnY&KgWzaL|hX z3IWPeO8hz=xoiwic!I=x0_>m%xNpYoP=)aQae#T3^&R0_4XzW z1O7pW=7!vn(tjsBQMVyl^B)?YpSr&eB3r1Zp0Ts$bGZ$_K#_B}KCq0__%dEhCr!zz zX%}TZZkL?1i(D{c0Oa|F!Bx*e0GFdJp*hcn9_Y4vbbX=TTEQy(rUZ>)+tu%CSwg?5 z?-!O*EfC=o{pV@%%#_InF`5~al@1&Ln+-2%*aCqjv>Fn(n1F#TzFdESWF1TZtqYF) zALIT4T)|yPn+n?%8q3pURGFFtd4Rxs0bkqg(15>nq{%tF>zrUA24LNj_^Guk5b(Uz z`uwVIp07)llcRb#6|d2?>IRD;O7lG;I4wuuOEjguoV=gxTI=*E(8!&JA*f)@gNM&yo~m@Qqz6;WAc2R+LrU;7F?oFN#t z8j0dxy50o~^F>Gt5N|wXD2+<%(nd0+1lS-*4$NGqVR-&th$D0T&sJ2B3u}m=X%rB@ zlOa!k8SVH4C2GpacR(MOwc-JvJ0C(}<4g9#W6G;SkNispIGG8ZH#n1z2n}ImV4En~L420n z99&>SihWhRs3nj#DYBoYgVr@4ERxdEMLzQK%)%`I!a3qG>*XSZgS#qTvW*bm1(s z37+RXW4-FL)|dZgR0huKN){URw|q0IqibMHA;~Rtcd*i5T9$Wk>c(}XtBwaT2ML%r zidiNTJB@z>>fyv^69H7)4_@RuUV?RQ?Z582wsk>evk!3-oR3rs6@rqhBwLVnHR^eq zwrvgcrBP(M2YQLggWf1igEbP?<|ARyY6a2lS~i3ZtL%iSF5RNslqTkykTk&KZ0AaO zk+rFsyPXgg!)1ht5RUm+7ps0z+R|(_93U?W#4CG|kjd~X`nAE!5c}-#ysW~xHYU&X z!`~$LSP)4TNA>?v;)aNhsN@?cJdAKk2^yn*>ZiBX>Fzj4PMQ~wVCcn-qg7{c`OmK` za^fJTLmPkx={}W!ke=QKeP;<|I&nAYu>Ck=%#vCquX$6o@-(_o1*r;hwZjHT`P2tz zon=&=-<*E+6Y^# zd_=rcjX4IC|N1BURZ;nz@Jdi(zx>6ehRi}=lL6jWhtndtV>fX^BE-=>?k8oB?hLI= zl2!t3%&Wtn2jFlSXwKz57?4uyZrgCkvfiWypbH#U;MncKTI$ZU9W0x*OrG!X0wJ2A zvMPsA!=F$+hk!$2O$EO0aH$qZz}=DyrmQiVlxvb;n6d>u45hoO+b9NM=9>FiGexlw z6l7Y9!LV^4_15hnbhya+$h{%zLw_$!?pnY8Fs5k8x?V- z8&spv#@rKfC$f6JVR z_S65$i1A0D5SOzS=^A~CV61RfcXH;#H$?wbR@NV*gElAf z&IeC{gps1Ub(Z9K%Wn&2AaVDt`1gQ_Cu*^>{Gu+cr3K(=bbU$^-;ug*Rzcp$*z`^r9(Mu z6UB&Hv&0~6{x&56svIb@Eu#i%W>d)Ck)XPS%41FpB@|sj7z;UnPkCC@qotKNU00^v z)Ymih44ea=cv6Yco5^pX*!Yo@gdY8p*FV!S%9~uxAbVCnuE9|@T-I)6@mByxKqVi2U0 zlD>hTR|ALYs*KKcOhIQH__m{Q!Tg-7$i6ETq1#48eU;EHZccuviGo0%E6X;Ev z&QG6#sYks3ybe(ZK>7HOgm|!}-8p1HgyBAw3eIPh?LIA#$$Kn7eNQ;B05H+eeTnJE zBu~=;>kJ?T9Ox<3REZZE$24ks_nRs~z(?Q*wMT`ob^*Z9}D-x&XpZYpoN(p14y?PVFdz z#&oggyl-zomB%KSfOQ!G0c$$xj(*(gjkH0;s}AdBgmw~^ zx#2Lpdc0{hPtJ@G(Wl5;2gK<}p|;4a=rBD2A;rR zwOHfE{>6F;0id;o5%yVI8f$5cPZ;P0^%vzW0IrNqn2Q+;i1_Xq%byljb-DAaLjQnM zZK676Un{e>r5QXQf^*`zv4}%Innc8#MbC!xE5mA|A8$i}77uv>{b)MNP2*s;llS#j zAs@SqO^GQ@(R<$TuM#g`ge}>MhogM!F>gBjo-a7bPU}+5*KAR43ZPH)kRDp1D{ly` zGgGv+;tRq~nox*lsfLrw-TCa64p@fu^PyIZZA^nL@bh<^ z-bqt2!}`M4$l#3b{?E4Rx0zx*E-4i3MP-p%CwjxdY@#5*dRx9#FKBo7cMyv-*+Ig6DY7m*ZNQJB3e!)Gr zy7B$Am486C%KQgV3+ptRw@+k&F+UdqP1}$ijx=u>;Z9jH-;S>v(DSBFi3wXUJFLg1F%- z;5-p#ND1fm8*pS;K|c$J&dCNOMlmCo&SU`VpXZF-Ba~&cS7Qo*b`RwBh30ur>`Ne# zTlll5Ep3Ct9p%+(_iep$R&-IQyg-G`n1dfci_sH`aBE{IR`0M>YBo&$s_D3HiO5;F zur%E%&)+iXhvcbv;4+HA+f5SPXhwxM$kL=G09`B3S47H$gQKjjJq>Z0574js_62Z# z8?Ni~0f0f#*zpPn?BF#@NB|4{qq9@pLN$$@NinLT$k1*f3f2_r;`RXPMv0aPMVDmg$@*- zYj=)0_=wLh&D0ng1MR3ERg1-GFKJ(ZXZc*^+U=%J@n<%A{RBYo{I%r@wFvnYkD##< zxcl}@Q=a|XH>iZk7(63|ME|JIz;RrXmjB2shppY$xVjn@vy|f*ClH{(Q1wJN4D1u*0xIP4x+s{q^X=hh##-9ZkHhyf@rY|qA>!{xjoZt) zTCwbH$}ED>%dr_sG7ZE{qb2pS*r31zlP5RZGUrANAzXj?I0<@}qC+j9kD`0#Fy95} zl=em*&w3*4sILy8N_kX2xA|MRfT3qu+t&&9gws7^scBz;zj4l2!XR&$M5x|B4`aJa zK{j1pC=<(_UjDt#4UatbFT7!lmN-;=8bBi!7-PJ)FpM6mqRuOeMXyu+Q)s*T)w^P; zNMZuQ0!L9LGpZE}&wxPoM{so{U-KOL4FsNh%Y?vJLbvWno?C(67r<)HNn*AMLvTlC zIPOg1?MMI7`{3N#nynCO%L2y!4?U@Dk`LZpM$Putu+X!1xovyi(>nc$B8U+f&Sn@S zmuMQE^Z8IkPr{}jUI+Yd4bP3ZvL@)?r)U+k`#2L$H*?hb{M=(ysa;uc{$h1%kjJx= zx{^8T3G4IOo4Zvgdfr%!lx?tU=o7M zIRbNe^U~>kGmdipDeo>t0hY{Rqd`p1cNWNQ5cn3(;RR)_)rSy*mj*wDiLz-B^e>*w z9;JBUpAi8ee7AoOC<$so^h;g->bf>1_A1h!N&FUPW(vokYM8p!T&#pdkuq6EVXgDu zN(KEt)VGPdVF00bVGwK-3XiZRps7YIQ<{r&=Et&A1WaYV*wOP)758_lM#6oX7Agd` z9W2|Ff{1^>k(6DecvN9uuH35{5HbKMOBI5=XRkIB9eTZ6jDBiJx@MGh{a-cDOvf$V zi%VHlXn2QR^3N zd1%sv$8BB>%xpNC>Jn^R5DH96ES;07vZU-GIb|+2Re61e4WI}tkVdI>Z)7cOau`85)VIZMIj`ty1hG z1;eR^BgS@$L~N_`VGXw>sqbaD_^(-9l6y`)#{}0Ra>P#ypZz2aa1F+67_HxiTk^|e z@W(6fcscZ;HLyw8BC3~(wA}qD; zr$&-o&@M|@{|@#6vx{jOeD$`im%0Kp9b;Zz!&c*GoBF3D=fM=`oKl!<1~BxH(4@=C zm%V4LTgJsedv2h^4sx*Onp@mbf&*CbwBmn(quU|U)5Ad}-S>MjJK2JXOt+j+8uO+Q zUk`x6kxj|tfORwxJLi|QD$iJ8dHG_S(&f&dJ{R30mFt*|HQ45_ot6bwPvTESbG$hQ z%?uFy<)k|TB_>8elmnV6_!@^G5?KAF8RR^3myfZklV8&x9?hpWX+a!jagB3SqA_MP z?m^@mP4&v5Di;Bax8vJ&#t5A1#OWRNVFTs=ZJbU|OyCNWo0ooZ6sKp=rQHpdTtc$L zz)4#JyhP*_^0oGeOIw&(A?tN$?OoB1B3hLF}4^X)*c!woGn?sm8;C$-&MEW8J z56-U78`GX{zW7+kR>Glv!(rzr!OaUyT8Pop3#(B~YxaH9DNA{L%==%+tA2k~HG;Nr zDGw!;#&Y)5+5KEv)LZVWaL}wgfgJd4iHCYNoaCotp6NX<{8wX4^3v$^-=&w40;0ZT z9ZCFN1h%BCH4e2j`2^6{xoGj+m!Avh?)L~Kczo3!V@gO@1R>2=$r-%+W%8Hra2;;y z#VPT92vC>bHUHT?c1T4f6xnFf8v!q;o?>uQ#RWwHvE`2|lZdx3g;`;r)1 zlswL&G^Sgz^p%dQl;V@KXi$)H;EySu*2<=v4k~2&V{iwNna?H+`Pm)rxA)aiO*L2@ za6uGBKU0DYOOslZobI6qlgI8AcO-)t`#Bj@xY}zPL6>`RVDk~Os66F}NyRZIg~X%6 z*a;>nyxVX8Mo%lTS|}c<^on9ypx}InO0f3)p1oA?`rM}Q^qmhe0O1xVqg0@8qJIbv zn-gdG?7bdKy#KN31M8DEjQ@E7qx1iezsRhhcz z-WQ@hg4QpJ=H!c<>O z7@NE}P|p}|GvvLiURyT_5ys)f9}LUO7NvbIWdBX=?0(t_#W`*v7I6G+kzQ3sV#~)U zuT8#x5cWBI@k=<$OOc(S7|S^2g9z|QSIs(_+?xOf-v~8ondg&_moscT$&+DNRrJD%Ys6Py^axM36%m(8U%novuPQgqET1vMDxg>w0@{B{( zO!GT>r@TeMmYJh|lbwd_uTL0K3CObfXL_@OgZ%K6Y&AJBieC{{f-NGw;NU6Jg2;oiCQpeAgVID-dlw#y^%w z!)4efR+8u8@(T0huqVSrCuzT$F})@zS~8#O{X7w0cAOj&%}-LGMBanxDFADGQq;Ww z7^Lml><{CfRp{0{N_njgDk=SGsV%tY!%h%mXODsBWyu$OU+g;-aVRsQwR2rGk5fa5 zO``6*MVP{ube#^*I9+iL@m*W-8>3z?I8g{ z<4<{-f_9Vszn~lOd>-)NgFnDGK<+&H4&EAlqw>CTbv4nTiF?Ho;cgq@Mw5fk`@n#b zG^#QhE}?L}sL78&pf-&Gf`$|_IO8rXOk=B&@xxTAR%-ry`dQMNk4W(4Nbs*q|Dz<4 zvzL7SN((d+)IAxohppGIDjaZ808=?3$~)(qyf^QcR_REM4BzNG{o`9|`bs7!1ZR7R@ca$ye{ZdH2>TntctkF$%r+PX|E z#u>}t_Zzfy)h}}_ij$@{x(2Zt7mNUPMj$-y%CQAyEOTJxycqEtfkkZ6Z;Q6EVv(n| zc13hQEX7~xXRmkMvP8%U(eh@KNtmGn8SYy=0y^X-y(IgEItsM{S%$3(*^X0?$ zH&|mbA?)D>qiKl!{7C?-1%@Tj1o=)_A{>cCLr)orVoad71wpmrT1QMb`(|R37jv?H zC2E}m&%m&!5{yKsC7!~m`zhCEUcq8gxZ*Fz*rn;>XfhUa8G^Rmkc-fEEt&&ZnOeH6 z=F~t|2;{C;w(--|lpsuGcG&OupGLGGTgbEx+*rHgGgED;QO? zp#9yuSMuAU8EaYE+zYqV@?j~`2w9lWK&dR8^V;D;=kwaDJNz=Ed-f3W)|n5m?%wJp zk$xSLxnm{`)=-DrHffWN0utOA-UUCt%Wn`M!Z?rvycJmH{bqJ?z=*EbmXh3Q)L@3> z}w%z}lbbhJQ{$^Dh)$o|c2`I~$W2jHf= zp@p!cfu7-q)^Y_XjIzGa431mr?WG*6gROIX**{kOp{MG`xN20Urh?Xw6~baXmG4ds z=4pJE@d0ES&K9p^8mSz(l@}*9l;xT_6$mq9_T4(reM3fSM*i)4mFq6Z5yrH+7RsVT zU1!mWIltl_7ttGTSaQ!$WxTo6J=u1YdHDV=4(~-OLGRZs=vyGl($^A93uvF&Rl=aDYuqr+mnZ5MSy`Ca=}6ccotF+2IG^9b>FihU8Fu9MzO6X(;u|` zYdcskH+XHN+I0pDJRW!J`v9M@W?8cPiV#yaZf(3`%q!aa2wPT&J8PV4xq`E;U3gcP zv7qpMGnir(wHsR@18AbeBHZ}9t-edBRse)a$j?XuYI`eyhcK^SMvH#C zE^=BM3xNv;C&+AQTnUYsnCliY2DHm;Hk8&nOAvJ(&%A$OPSAmzr+xPMNqeiX{a^Bjj!mt-4O1m`ju!P_GeJPirzlJhiGP z(ZcTfRFo8)SCc{hhjiA}!uRgWSZ30DlTR@%gs@zj`OF8F28bUci3;dn8M%8NRK0KU z1Hqb;ZI~y@R?e+q9o*#23bmdkEkdRAaS-kjk5Z~2u}BvEw?b4?nuDQ%w0adF7@J)x zXbcI#HwvkDC($SFGjcMF`rN`m!>b@u@WCt}5YbbDcfG$1y80SxL**I%A_MI*pIPM! z)0#l5NhkXJZ$lEC8)%tisd~6j##~Pj+LxYtZ|7`pmUhlQfCv2~278Wb z4fW=ph{r3m4niUifT_F^pM!U9kc*;-1*<>l!z7qtQ=)8Pb+wj11^FTX-RL3AWK=Mo{=Bil$f=JWIHw;uB}4I6FV$V9jM zGSROx#7|+?7a{V!l?D;n$o3!@ zk)3QeKiZA)Ds=x^e-9xE)-=T4UCpx>Uh;NabS1~le>pL+rX1IUHy?0)VpL@4*aUxM_r zD5_RI%qa8Kx(5f+w3Pj&6N6X}QrOWOhW;%@Miwqn+tCgl8ysu(k#JV^2J>JdyUW*; zQWV%jV=No^Xpc9BQ!^^K6KCpNg^b+im&IT{$opMA`4jve{c+PWUVfmla56^K0ldxI zYP?O;Om?|klBC`VQ>5bUE9HE00~`81aCh>Iu(Q7qu(8i_uMMAk1&~ z(ggXNJI^|Ez@gf~Xtw^q57zrpuoq;b{Mj^-x9>b^$5zkHbnE>kxh9pUQrG?fBOQ_!2ej z%nokz_kb6-6PM1b4-&56si}$5!_vlAm&V-NaWF`1@O?V8+Yd!5>6!~bGu-aK{|KcI zC{@!6rgcO&?|N)~4f*en7#`wu+zi*ZpZyrZVnFqT@CeKJMJvkq)g%Nz-KhC`FU@Lf zAUgopVt2k{N#r-DnZ#CTYC+K8wNWNsk!yPgZf5~jZ%@8a1IRTI*w#r?94nRln#tGgOGps<(UX9|GZsR-pQ4ks$LDO;(Jg zx~{Kv$|*mB#vF%81K2(|g{z5`SLbaHMPk>22pDntUD}O~Z|<&&9{qKm&x*3-0^fW} zlUUjUqxaJ)wtVIxH18SPL0;ReF zWBaXxJ~jx=#;BIh zn@izpmToBadwdgxWh@()w9+C#M3YKymA-s2{{O5zqFm>Ja;8a7khLrlc7V7Kl$ZEc z&Q_l6?s6C4NQeQOh8qxA^t(xOW%X(#z@vt)&Q<>-otNN{pDmHKX1NQBman9#Pi}qO z2!BaV1jYd7_M&k2XD~b7NGh~j@=w$6$m^jU*PHY5lbXOZ=_qq=0{aQ5{uamKXmp41 zXLFLw4z2XrAdW^msT32PGd2nc;nNw7URD3;DK8MBnCU{*p(#JIHdp=BmR^^)ee7rv zbhpMuR0o8cIpbVs-9u^xY1xhj!|l*CZdj!4f|u2NhL9gFMWO3oO3RN)EjS-d*x?yB z29hsYN6N_7q@~*Vah>aT3n~MN-$?!sb$?0p3OZ{s$#zMwz007IO!;0eHq{F+(}!1B z5C~?`y;c1b(IuN1B3E5I0o+;1 zlR{Vf>r)eImC0)X!@>f;Gr{b#V-!DdViYtRdT2T{^Y?`UhY zC1eBHc#XrVv9fmu-nobumdRbXl4i5r>_f6p%qL;kam96ye0+YFxWj*J1?)&QXT0^U zB%FTnp+52cbZOF*n!XtEK$E*N0{3JH@(YS z>EddNF>jUNrqu}I4zL}>D=PNO2P*eecogSDRJ!lJqRLnhaa5SRUEiOFJ+Mt}xA%by zQqtDo{@{^xHmZaPafUQhI<74h)gkqME)a?bW5i4`X177nvTdr!Eh>UwSn4}P0Ibf> z(htpk5^uL|7KhzgXJ-=_+)b)kNsH}l_V7=OmK)cNATltx9t z{wQlSWe_((7qVi8I#=YQ53|Pj7O87OI>S=^q+r{T7ZhMSprNL*6c;I+rQXaOy8OxP z=?jLNRbNKomv%@L?|Mz}4e}8Sw^Ksxx5qz@D_O3yWriHY!2~Q$XL0}0;L zuB6qhYOvjiQOzmn8%=pGKDwxnw0iC!_~~82A+u@~&Y}hpy_M(Kavv1t!!rbE(AWuB zU;;2dIH{wkUU@8Z%9}T0qS;%F@i~9P9 zW9pOwn3a)UGwkAMT8Ax8KWtQ81mAk4$-`0}1Tm%AZuY9{MN7EHIYk8|?6K3V`^*4} zb@HoQ{Z;upt{{pwz`!3JRB;`S>Kb*T%y#Y3?PHe+O7%0lS8wv>W0y!B>2BTQpjF!x ze&j(ImlfXnp#ro;x~F`BC^ez^h(U1rpf;&2;TP7ujepW(_bQ@FTNYe>Zd?QBT)yIL zr6gS;EDW;>aVP9}k{xA~93a?HFd&c@m~(P$yrC@*r>C{H3u}f~eb8CR@Rj6IVP^8D z85{z>$jB}z7lj_9(7b~Ekw%0MPGs#?vYO_R6!NleHrgLYSr6w{f1!h6`GuVWmScB%`D|7^4bS z*}G82tf7`S_HaTU#|AJdQ`;i4AEor@+_UcIYb-37tQQoMQ%{uaGnAEyDZAdrpuKIT z-N^tuK*YcDlq46sX#85yNf6@q7P#jU^?6%%+H2sTo;p{c`y= z^of+e@#@sVh})=Y=o)qng5hLB z%I1;NjcU`Ipg{HRiFJDf(QqLOhKgIQx5gjUnF(p%j!J6?XQJiB*Xe@dTb(NLGRa=a z`tsETISi7_bC9qu6oQ2Njg5>-jr`RclXFPN|*6QBA&@C{su?LrP_3Z9~#wA zATh9`p#+QsMF`~?U}Mh&Dgy#N#6u<?!h%kpOW@?gJY6_RE4Ah2N7#qXl4wr9jKX2`_cd4g;+voCdVYhCr^&;T zOq3^>vY$`ucwJF;0@ca?RCodIn=HXcUHYgS5A;0LM+?=5!4=y@fsA>cI(+64#-acF z9jo5wn#nVsK&#cmrrsDLs1s#!3HD~;DwXof*c2AeJrDcLAm2fn=a@hVl7d8dmtQk} zG6#X}v;wl=wZFy%lf{NDM>;(^ThL1Qg9dv4Lw-TC50}r{Qam|kV;*1s73zJ+@m9i$q8ew}2Xf!N3DfY$mbmTa!A~`aCc$d3dTE}Db(QQBFg{EtC z#%G$cLCbHD2(v^su>_K!&ryB~Oa%lm`=^{u)l;RJ^eZkc#CDDE(bW2fQv)|9kq=2$ zV#Nq{c!^+uF8=|QTV5Cuna+KpR3IZATHGgvi?J=5+SQG*;uX0Q&r3V%^Hz}7y;&wLS)cP`77 zU0oeaLw~U*S;tdTH*II}q}MVX9%Na#?TO@=PLC6OpGqHja9ho%;azG-fAXx2D;clS;NSt5 z@V{lc2yxmnI2T)^@pUqNe?D$bONoi`5pm8>A!PVpeJz$xx`NF2lcDvi$)T$q%@X1{ zfhyS3#;)>RmoSF5ljvxKlPD9mr~qGr@3CdirE|s@FfH{v1CBM49_%mrmmg6#5IBq@ zjUJ$&K`l!ap18h)E=jVWYbFAfr_(6t`bIacEI-%O8zs!_G`#d8g%cK1iFo7A*|Gpy z4tuAt1Q539;v5eIuc{hiYj=j0!dn=@091V%VDn!(El{p>$&3O^h;w0c8C30xN(E*d z*VNAbSiN;6$^uDC09DuOO5T+#r5zvovvW#)cM4hmL#9zz7M0Z0mWb$iQl+x5w6Aot zHPd%3Y&1g<`$~`p{9c3;}Nw(1E;h^_?3gquHYg)rp{}(D&{ADeowi#-$-i#6Z zcbw?XS(O4)RHnSKZa$OQ5(!%kD7tCFMD8$DP3Lv++@n7)j1Bfwbj7H`h=QamL|U@=GIPu)}Lm7U7(@r)3S zR;kVRVTe#lszWfWdjWVfjM~$A@=nB^KC}9eKprW5P-)?9$ZL&T`!44m9yTl*A(Gmi zGf6P4&+eVtmYEQ^D77mc`c!~iO9)C%`hON0oNqq)Q=+v8+MHNa*Ta!?+9$-v6zLNp zQR!gdS7Qz{%l4I&Ur@l&W#YrFdg9sEYN9#|3UE@y44~{J5?cGh-j0@ysr-}n4XyiI z&s{tL61J^Kee4E1c(CEjV*V*BTfjv2Kl@I^%U6FHxY&mTJfp$UpLKgOi1^kA%0NOi z(?gA$Fc8AgLLa`GJ}+7p!P*9}4Xm~^%T;zda@c$Nxm)#MY5pa{s-l+uP*0uD)%alrVAc;D85usBV&Vp&Z@Vi9$H+dBtaJ zN7nY|H532(p|x*#gn$WzS^AO!ZFg?s+RFyDNCaMas&o}-^7XcWwYA?yZ?9e=hLNON zc~iU^1px6}1g$42W8p5NRGyw;e$E4S+c<;TBLg4xjB{~YX(qbv$8w|$oOta7ae46KKaqmIpgKJT0rev;=rTo{ zo6M`uw$s|Dt{E4KFJr^M7!fKhNol!QRg|bTq4+&EtJFgiMnw&UUBV`d@j63@{ zr-f$;kxm;vE5)-%q2Ciw9eS;8zxbwm2ro)|8crO_BE70=Rxe8nlWF|8n##>NC;vOnfkPqp)}rV3AdcZ z3u!fc4M;SUq2XoUV|JTwgd?%4s`UoT-&Y7zd_==HMRA}_B2|bWkIN+j`E-6%io4M^ zKJDeygvg%|mc?n*dbtMb`&)d&ui# z7^Fi2b2$}+x!#ExLW#iVjLGv12Dv%RY2VY{I*+rG;vzq{ii=j(;paIEieg7His=u> zO4DxtIsE$ri^V}|V4qybnKl&yBKv^y-W1S32tM?=(CTs_Ae)%}pAPZK<68!e;3Mh3 z#l#vfTr5UDMRyGIc&ZC$UK<&zQVY16Bc=bPv&VNqLAN1kWfuetATAbh@B-geT8H3_ zLJf7p$ibjSQ@27FE_6_t%RJ++_;NGwk~AYda?Kme6swE8uHGw`wZBV@&C?mHs$LLz zEP734Ld?9STp6w_YT86q7wE6_3@*Jyg3LssA3epi24jT9#WABJTv@wsTMja(x|^GZ zYYE#kUhZqg@=-KJ^B7>$ACG%tJwmA;zX;puOTWnh#=}~9Uiyoex~Ib55~^sU$lG3M zVUORIK0i&Dpk5Lt`EjDm0SUggo*g}nH;ojxLpJsY%)`Dr@(azvI5n3| zBFMe79KW5?@uS3#{Gl2opY#UuNXqgnbgO48(fJPVIquUgvNK92mYAAi(K5%_pn=Oc znxt=C5-G^BMLbk|reC68qOW&+!Pa!w_7^L}xsRQ*V=n`E%z9)wmoH-W|71@P5V?Vk z5K$Qfle}4{Mi}^5p^h~pEy*ym?rVx`a7%I`Abka$(I$(#nDG!N3N^pY$w73AP$kbY z-uBH!7y$xM&)B*vi+Ac~&-TDAOUKl$x)Cyvn>Z^Fj|8R7KMPzE%oLmU8<@IN*>FM^ z!4KBB8fXAEF0qh-`;g7N{GSO%?g;B1h3I$hDhGjM5`W%ac(swXDg+0F*5ps+_TCQP zsS1&{aGHF~RS7JLsH8Gk{`HHuS2TwASDlW%&6dssP_mn!YwqN9s}hG}-@TG=3`RHy z8xoa!bT)C_nu1a1a!SE6WX9xHNJ9SxwC+2hH(L>6eO@zA?s}8>yK>uG>tTEs%$i*8 z;#3J$i+EjPhT!yFc5VW-ik?BNQwWgg-Ys{47&QYYLPTGH$Rbmzyu_w*f#VDrJ_AK& zV_UE1>5JCsY{(&{2ifMy2ereXlq|^k1mj^ge2!aW4CA+jnf3Lop_jo#^nf$>wTAu7 zVx9ti5UM{A*BVu19+GHNqUoii1qzU=yL5x2nQ}|YXvmecmUi%Q5yagIYM`J=wdRLS{Mps0 zM!tVo*q2X&KgPy;l8f{nS^_+!Dkcw-bD-^i!@L2MovF|N&R)_25#6*lR9txCjZ)5l z%735sZ<$Bxbq;9n$i!D9GAl&m>C%{g_yj?QLpc{EI{Q+q&P_QP&VB_~H3Mu@9tMPE zbfzBBp&_Hrwts9wv(D6{EO?C= zGF>fjkW}pqi*225CUm6QbXaYcNHmffm?egwKQ_-Qt24Z|Ac4+y!=|_KZUs#j@I_xZ zO+R{9UqUxj6ThaLlnfvAiqLJ-<6Q{!f~N=}4#H+MMwPL4up$C+Fs4Hw&k+y*mmZ`9 z!<5CT+M!_Bunjh1WZgVUTYAKRM&u}k3LdR7k%1%Ew&C*ryNaE%W@rR6Vk@5SBQw#K za6>x_?^9A@WA@F%m4Z_4xwJen{R4Pq42vEQX3S^`ORVQV!dW#MLaF?dy z#49u!=vIanY0QTal=mBii>(RUT@sg{54Q`__@~Vm^rtj7DbQw1Q-VZ0&_}l#GUF{RVm2G-ZHAgkZboKEEb|8cbKN@#dk6np*Z)U-|JR z{k|jVv&b$r)EL^ybqbe8@IoHo4za`jL;;xLw37NJ6(*lB^tf6^*`1@JL?jFnt?v7Y zHYMGRm_V~NV%je$nX~ePFas9)>jo=oh(5oCN_ubHdVw@d1NW?iaOU4{`gYj80Q_b- z8v~wB+h6)0MKZyY`E<&JBt0ql0rY_j#0R#-IyIqaEu5_`^~+k=R8E*2CN`9vwXf+d z{A39m3NhjB4oXv}`j-VVBEF}U`^+W9B(8qUe1o5Vd^+i{g{G>cgynnx|2?p|W*d59 zqZ1#q9K8iil?AVC)8*!X7uf8`FCQwyjSy8F{vNATQmn8xgandt0Tms*I;>lH zdwFMOX*w2i*BPTk%$7ZBtQu-M`=k2B;G^ z0Qjanq~o{^Do2P*nve327YWeM z?lWl8`COgu<5Z$&bqJj(ZG0W!nMdfkBe+Cf|BPpLa>eyj%;$*p!ng6|v8k2p1mL2! zHcOJ@XN_2G1Xm-7adjxf{%=wwk@gQXcHcCG@tXIQhSrIM`F@LZuRcE7Vs`GvtgH3P zB*U^g7f;n^L?e3-964r|c_9{R`}?A`t0vF;a+BJh@*m+&t0l6V$#K=UQ{*Q)Ei*`< zU?n01ff!l6(I8!7OYWFOjqBsw6a|fhAFZv@s7jr)PsdL%-$(7JiXY$zGo&Qsrj#+O zIFPlA=4%1BX(j-#&(0oeJYKNl8~-r#j(CZd2-gffUd#ZF7PZzw^!Br@9v-p=B$oQ? z@}+l=;!X}=D=EyW#V-U#1Km|4P7EK8{voVH{_=IvG`4QuBnKsrsYsu!4cty;MG-3) zmkZpU5WTAN5KMJK?>ucb&;1rCu7L@7tH*%a+y9Xq9+l{GARZ9}G%Tw=;8F>qPLE(; z2UNJa{eUq~kHLszq_M&0QBsj`#r1WpJ1bqk$N6V7X#_UA32e?QU|Um&q`DvHxk;cjAczWJz(wb0ay-wH!NcJW=S?@YOC+ufD|11c>uQ zWPrNjhlHWxn`#};zmk$n7qjVzhnJkX@m^mGIu8r5`^xx?VSaL{UA}1;w>fB%Rkx>c z!GOmaZYdX-?*(tG!wzR_uXC_jcq3yRT8H@K7ud;0HfpnMsKJzErjUOZ9o-!(S=qM;hg+01^oyWFaDLM$b59IZrm_>(vt z=T*e!I;|pwc@Ge*3tqNa!*%C8C5kWs*vO&7iA9sTfI=gT9M)?mMMZHk{$E1^9f!PX zN+RE~@g_Y7cWz4w+DSW0;u#rTof#|=Yy#%v+k879zYImu1Q9Y>_lFbK@~rNDQv#0v8heE7Z_1Pvb3rv>~Uh?+eRISuC=Zb=KBf zMf=YsdW~ye@91HLN?S_Z=FGPk9XD!69D^Fh=%0Bq>rpSz`&t8LoH)MoBRTH7i7x#6 z937`b%l#WuozeQb25ib!7CG{WvTi#BI z5gNI}F+Z2Di*v%}L-Xh%;i`u77JyeSA`4<74I8yX-582%<#g-#6(+}lc-je=cd(0A zVf{4(K5~Ub8ZC>WLtgPe7U~TwE9I1rYMz+3(TyO%VW>FW48wQua?#56UyNw&dP!l?x_@*C?WrSf3-21XiW`GB3qQY44*Pqif-)$Er2&Ho(4XkMKzv-l=nXy|xp23V?fCBz;vU3sv2nr5q58FT*_G zYaZ|IbODr#4F`a4DZVbYG6N8T+iu$QR$;-u(}IVWG@|w|U!tpJ!02z2GqZDLK>d1J zkPfu^$)!|o`Jjri1%Nl+Z)yFhzLt~yplCnp&WRtuSra^me<&+W6j2!j%5$?vuMsk# zOtl}RhS+?V%>^FJ+%aJ>Y59(LmY!|3+y0cgln}UK0#;?E-Q?YkoWqNyRAXH19)!uw zx^)9sk2UM|vNT2e;_(elPX4?*W*jzE9>%rGh555_Yx8Om1(<=0fgyj|e_jHjGbnRw zBSH18qWB1-Rr{W_lb5?k{zsL<(?@c-PGxR`+f|=jL{;51w*TKvN&ze$BN;tCBAc~P zgVwwF8Vsb_M-N=?8#yL!zorag(F&@PiHTTE-EO*Hvs;`CK1s!uL|<9qv96#C;N%g8 z=IhG)>vwg%%xsO+J+o527(C@e{M~##mM9FjcAbMRiJ9@#9`7NaI(%JET?7KUxL*F1 z(NI6zK5I?C5UK($(D|rR;sNVE2ScnWRNO(a4ox+7q!BVcKCbbdhjo^NQNYB+Av&bG zd%#kGYG?9`|DQ}yqbTTb0OoRuRGLBYvUJ7jOX0ASfFaDzmluHOu4%UD@2(QvYxC`1 z`f#2JBVQQd0IbbdFo^n>83{1Fn>Q99Fs9>NgFhNOgCNR9)X0i#jZe|DZ$rTQz`H3* zo$Doz1P6M#3Nu1!M?{Y^=DrY}@pX9|Qb%+Du+O7%1(`GP7|0WV<%AAznKdY(57fG& z(PavCo+3{n)|+Eeb3zk&Ed5RC6qn3diWf;=z9L9)|LJz53;+gB zKr`+)n0Vzpxa4$kWPO@xso;SCccyY&CeO$ z0^`_9R6}A--?I&?k;$P;3)J#8wLZanHxbnnp}+H)@T^twyMZRFMMu5RyKOYUVuhB# z4-nhs@mkEH`FOYdZEl6dsMgs?g)8-DLJ4ly?dCT*@&uZt_L6?|4NCm^607}Ab^e8L zmm8qi_51ZQ{R&YEu9?O3_Y(F+=Dl|v9$#oNLo;VfZEXAw6*xlk2n^`N#csVOqkq5z zFTbnfZ3A0KbD=|y!Qhc9$A+SNNG-`zMAhX}_x@|cg-CA%wtObGDKoVMor7qn8ATnN zgvvxSicGL9)PffM(dH;m=xb1z=|GZr|CV>Ddut_WiiR1Ni=ux{KiQ>;Ffm|;{R5rz zo5e>)DDn>O)nFY05lyg2HG1*@TTje%G3cy5xqfb!}g~QD|Pk+}_Ln9f^vJy@$qb zTf(qZ-W@`_!T2AD7;DHG93t-edg#nfmjd%$wj4!J+lFPPY@wDvM*n5%i4Ks2#@@{Y zyZ$$xj~?V_n_CzGDL}2T`bdB2^(z3}q5p53T{`R{6_yh(;y1WB5F+v7o)>6=Dk_5E zFLVPr%4?ek>?GsW@A6Y(2?>7$H)P5RN2`o=mK8m#kZ>hy!81<6DzFNx<^L|y2HxW{c(4WGqrMfI7|gw*jxu|j=ZJ9VJu z6=mM-^M_8AwkWE}1bZ7Ry{)ekMbHJ}3i&D>$&olOU2Hk=bz_JDIWe`*^n6wlXSVeN z#%R+>^{e==Ahg>-MGU5;pwF!ZIGkcdeG$6RIvDi6_(`%rNUwuLA`zB~{$k+!5zCy0 zUQ|PbjdX+Oi%uZTO^ikxmaIT7`5kj;&l;0i^#$mWPBs?lR^S^+G7z1%Xs%K&7%|j? z5F4!|-JE%toKXemYh2jhGa^>|o@{5&KY5=@KKlaWgAcd|_K(=1+PGVqVOR90=5?Km zkk&ea8lp@1I(@Rp)McZLDzwV2O9o~^*yyPSDm=5q-=QREb)zk-d0h6{&Ja7dF0%s(eXLU)vh&5qB zhWCc;?q(JjWYZcHcvjM;GFaoQCG43t+&|h=+=2^3(Pbe%W}dv?UypvzoEppe%mh#u z{s{xNIUlrjrX`YIof(LjRe1CJI4GR(YxXb5cfDaavbZ%?qa`{c5Eu!H9A-N|Xs=v4 zm*v(c_VA-DzA%Fs1F@@p`%%|;D%k73a?bvxdQf}IqJzl+O3*-nyeBJn@_j>EW~b_P z)~K9M{a6sedjgiKwynd|dI^09v`cB4+`*7akyf>ZS#NFXPwGHM>7ij8Mu1?zx1@yk zRAv7vDd@_e^&CfKVL8z4fOZozkx>KqQdiD}M00SZaLQT{gD6;EI3pS=52a3SFMXw^ zdmSg|toKik8 z+@3}(aDCcMx$iHAFm$Kv5e1h|r35Ty=<84e@8aR5F3vebxV{qhW_bV!EKLGg&3Z#2 zG>umRnMkvc=yF0AN^!96%PM1<0<3VWw?GfK8|9k{U=?LJFtW7NDryVbG_F0C827Xv z7jTCYX*cOluDc<)evH-3I?NsEfNeJ;19wf+E0lP)zb)?;%y!&BPH~>jPG>uY$)KXn zlTkQ?-Xpglia(zw$X)FTp`MWIojpmJjD5QwSx=DF;&BPsLVZ?q^Kp{DN^Ual#$vxca4$v3Rv(fh(le3X0A{sBR7e-CqaO8%oLRN4q&up<5v6 ztE(Z9Fe}=~AN&U5G+>^tah)J^XEXD!@frn|a1mv{MS$px%L8JlVe59`;}JsW-gIYN zSh;v=Rn4t6d5r=J3D76p5p*iwRyw4UA&6rsDo3Vo&qQp>iqG$r`pTT-_ZQA6J1K6; z-_%bLFJJ2(V8Z1`5l;DbdpKA2$s2R;sUN(O5d=#q20_9@6n2mdFul(fi?um7|MoMh z#;Kd|OnN;^&?W`pJ;v!&l zS`K`;$rIFV&&=L@i6+wc6FOf!;{F<|om>F|7s}<}FP6G9huFIk${7V^=suRo5)dg# zhyS6HF*2wgk^W{GI~#YbWuI@94vObf%C$HPsW{}9OWf`(Q(8D2E!QH=sS?fxUdJ1Q z;U2L;xNZsI*)Jn!<&ukbIbSSq`-r=C5+zhS<*-_Jp)%zn8GGG>v@|&WJL|gMmKN{^ z;S>tJ_;UYu8ZNh3bGIO{4RqvaQSnOr0kw#S^L z_UCExZ)N5+i+M6B4Wb^s_3GJrfH3sel=(4A!;CG;cnW6bx(0eC70?_W~# z(4|_qkGCgj;^5nS1(HCyCQ4p75F_1)HYQ`q&zwqUyWDl#gX3h6mLb*yQvuspugJb- zi~qu%OaE8AXF>Ki)n*z#;;Am53rhqy6m7dMAZKup#RYU+i%+{e?rD5T0V+a!hPVVA zD=`vobbICdm*5lC0%8Um^2cgz)0VZaSUxP6rM9dW>zX{pn;fRpPKq$=J;j4Y@y_LY z>LVx=`tU!^l+p?abOCt!7$=a=L=$bmQu^e(NX+EPLG!Kf+{tDz^TZt_cJT_!#Env)PVb^e_(?^R*wmVcLQZ*UZ>#! z-u9^Sx{Eg3e1U;SkwYPV(g#-$$Vv_ARL_cY5UxmS;}yiPzjaE!4eqJl+j1=OC88k{`}*UxBNQVnwRwob^YABKV$hI0f&Nr`^q<8PHDpzS zYwKCN%o*!efBE?{oC6PE-oyXgretnWw=Y~MclO;iqnXz<2U-xEdK2hzXwuM-fsQ!w zo;PlRhBmF6fP*@bV>WJkxbj>n>$;`jvyUrp^O~<=2Zezlmi+i}ywsXJaI@Z60Sl#e z|CA5UAZzmw-#@1S!cXrEWe~$SN2M4yc_HB5?Hpp=W&oXh0*yx}vWgD2_WYzdoDKWx z4D;nllU;C?RBC11&(4YD7J1xYR*0p&-ZwT*`o4N`Vn5JnSK=}U$ycmy8i z@J>j_Utk!EBi%mJ9MdSmI_2-Z%0qfLYo`#$=0l4RCt7VxoZWno8iZ$Md&gO=RcXg? zN2a;e@h63t)cqlV#F4b+1HtO*8YcRie~Q+{Mzy0d4~I8pmkVXzgUplWQv-Jq&92>^ zNn7Pqe52~M4avs$KlTW!t=D?e8>d8R{1)Qv21SRBCS9>cj7$3jE%!vWx3OUhHLQ=j zX^$_FdL*^t88dQ`v|V4W@?%3Q4sBb+W}9!V<+)xrB2s8zrjJST1{c|l{aFS=c+kET zz(EbDdq%)76dMgVS+-0eWC-O&G)k>c?10d-TS)U+C1EIgcCKyD&whR z68wnaL#omT`I zD}`pwmni~GyQQra+iSobqXHvxIi3)xFE534=s}0KtEQ^%LaS??Dn2e=f2x0fFj0y{ z7$?~Xjn+h+x8&nMEna?I#H(n~AQ_AY{6ZCXH5)u(IXz^(bAtyu?`50zPi<4-il10#yoi_%RftO8)f85n|e zItsZ2w+Lfe(6OT-T#N1g*~Bs|Y~x{k3pee?+6qTGSeXIR{63JbJutM(W6#YL{Cbr` zxqdllp1wJ<{t8u%1}WSjcWYF=Jnm*X#K=A?W3^|+J}uj9 zNXs#WN`Do@tOxBf&5%}7E@&HkWrvkZ7qsa_3GEW zT3W>33PwV*`N7bl?Xd<~hmnLLIR8zCJ_Ic#xlB`Hk_AKso`hg7CJh2AzZ!AonkMsP zRv!oC>ic|5I@9YZWDvd)VMy8+*vNuwbuXTnEt=Cqh3XNh&{pM>A;UQ&2_@C>H8A%c zAlz;J0iX{@SU#nMC~EO=OU#s$+Pru+pB0R#Pt~Yel~JKHqbRx;WdBrj7CePRJL+f$ z-72A!dSn%*7EPECIJUH7btMum7n{hrTfIC>We1{1YQE(s^?btmeAFNv+|<7I@(%z!X&l-34(9pgcac}=)5VKK@5WZpb81vM#m=I?^te2}5L9ZWr z@*bLu&wHj{#go#Ao;Fc+cFP7X52B?Dt_rJ59@f)%lmAR`IgLe$RLAoh7H;q0BXTUg zu$X(u7D1I$B5DJgTQS0iG-<+Cpz`TFF7{1DdUgP!UH-VGCX^4@bnC&?@!+8l#?)eM z%lSAvLAc>N13?;3yJWSBp1LC1`!C!5KV#^UU)+PNGiYkm{K~QAVJw?_*$Qsfxlg27 zv{*u@q_IH44IeJZv**t|1w#jow#n@KYN13YZ8$$%@9CJ@tk!y);VK?x@hfcXF-Z;I zYtFbA;P*!Oz3sj`3v=XfJh!*DkFnVgXrpn0*ZU!Pae#wDYh=H%u;B2-(zOQAWl|p;gcxIu8uEu!Ca-_s`KFcQw$j?73ZFNwu6HJJh{486jicf!rw7bgJ8pi6sAE6Ys!+gpcRd0k5KS%&K-tINxD544RQ2gz~BMmUl48A;#tT*NyTr zvRqE6E$%5J_5l=1!d@Nm1$&&KnPFDo^X8)hAX^W1Bg7A_N;LbDzV8cG+BhyO_D|d{ z6jQ0Bzc`mY&Km>DtAnXd!{abZZf%uYk@8i^NYuypM{-XLj&>0>#Tu*t-=zhIoPne- z4SM>sE>!?JVyb(QiRXyw5@%Ydat&ek9LM{>M3zRA8Ql{{FEx}+W_s6b*M}g3qFZl| zcNO*Sig*AM9icVj4U;2Wx;dVIJmt;!eBY!U#fNHwYZIaeU;^~TS5>t7k>+wBIUQbe zr`w(|9VEMk*7Kp*PU?{|Yy)ZV%fLs1s%GsUL;$T^Zf)`^W6cqwQ85etesr~57g>v+ zaST%oqO&0m9soPP-nRntA!B=1{{M@4+m*cVzdm7CVc+CF!8Q;Vr1XL3!tPCOCRtX* zRuO~RJ-7VX+Os7Yf9summ-2&IS5i;r`54W2Q48HY0E3gurBRh+0$}T1ImUpnbhK*X zICk%D5fhri{*-KF`1+T}7y=L2$5o{hc4JDHoVQv>%uD48+m-)GniPBF>6P~4)s5dR zj2ifgC0JuRyoarq?~+uCB{j!eKVx}#C_67)4DC9FnL!X(q*=N&p{`vw-z=a@=~WrB zAcOBV&hMXq%qxC8NJKNqRzvCQ?Xi{7xL?pT?#rJVGsiHY5KSX%6{h`@8(t-jyj3vk z$3q5VVA7~xe`rb^BBFD41x)P;$$^Xs|9;Z!coKaV4h@dSYey)>dLE1n5Pc1`3}OSm zW_NzzbV@PFv&sY|7FD)*D3FZv1z6(ORf&vIMM)d5N&}WVPPc)#{i`@yXp=Z-F?%qh zGNN>paJKQ0jz!fWFp711(3?+2bPRlVS`<1BTb~3JQ z5yUc+9fW{dQHTAe;EH}r$XoQdhcsG}(BA4e4X1%8FMM<=(`QIEi4saT;exT8qhclT zZD^y`s+fnS)k@~!Qa$!L!3XTGw)~3*)5FqIxQ~L$2es17dGQ@6seKj6}Kig+n2TJ(s<>3oXL{^ zya$VIS|Loe_I{a@aL@CBrp>p5v{gOMghdrQQ}GeXeede1wyY$1dn1jWbGJQw8kQ3C zBW?r#7sG)r8!z5aygY4tLb*xVlHn~jXp<8!IIf4WnDP$4)ZgwgV1=H`y!WsVUI!=w zVk^D8o9U7nFR)?I#`hY9!gM9WK~+VjJ31;)H*ZdboPKw^hR~+NPAlQ6v#JwVZgvJJ zp9a@KEXbC5TD!87Nu5wWrsMycdl};Vt>F@Qku0%IW|9ddn-+-&?*_yrjJxI|hGdOV zq^t)JKx7mGcRFtSpdsb=BH*Y1t=vOzuHv2Up+9o2gj99EvvL<(2L~9ZsqJUB6b={| z<^X!g@qrzBgviygta+or?H{Y|2`ojy^$Q$e#$YNB@pC;4oC}dx!ep2QQ!?|7I&jBC zya~*gx`ck^sy*;oVbd>{YLF+lF|U~cyys0;ZI3x}PF4R}*6+ON0+1Afh^{Y4aXHdE zwju0uCeYz}=YTmk8~KvTOWjIoIC)sG8^ckflvR!hLXTy8V^en*{WAn!Rp@O@@P5<< zh1sdGA{Ij`zNdW5eKJ3swZ{@XobVuGa6&9V~eDJQ8=p=n3h;9p)_@ z2*dBg=rJv$nD6(dr?+$GND=>M)juZS;5M0fubkj36kT7_Gkomn9%ive22C(V=h){# zY+C7q8|K3SB>U)ugb%LKw`Q?N~R;7tXy2VY@0eb$kFNtw(+SeUoXYnfo1!LOR@6*_=FdMg|a5AY&dgoS*wlWX zqXCPLN|GMK%xqaU26VwW)*0pIwIaOhK@8lYG%!~ycxAZX;*{1>B@3cB+Q5a)hJp!5 z4`{!fx<7U%njpEL@;W(^DyHe~RYuieFjZ_-dP~)ZO%#Av`}=@QhzkSC;=I?>O)@?{ z4`pA7KxW>bw4OBGOTgjJOUX(KWcu?mYejzn_3a=Ij2^aj$pKJ>{|+5(z_g=&jsFy+ zerU-qDBV+ZxOQA+m0xxbdaoF|;Zv&d&{E2BbLNw7gshpmgIO>&RGPkFunA-pzNr81 znjcbG*eXx*yfK4@ci!378V56@ap8uW@5~TfAQ6PGtV~uzdszvd67sIl;;XR=Yb)** ztIiTaW=`RC%bI-=N=n5~h>?WpdUKDH4wqRR(+=is4x(h(KB_fme+ab ztE?X}d^rzIEj!8{PS4P3!Oj^9QO-Jqs>Ri&*u9adhcs$8^VbR%eqsVYR|dvXpK96N zYcJ<`XLMUe2{-_iYd(|%p)t$gd2r$7-a?iS?_9T=gaBOrKnv z9h=)l=he&k&d}yh^O$9P5dsr^19nh+pq`~k{x)aa!Q6(!-F-s?XLrZQo|sr zgAiTKq=6<48p;}IF_KOICu|AI>85m7GWqv#Y}{rK@F8_lD052$z7COeHFmkqqEm%( zA|lMqJEH}9QK-6iY2|d(`-JsDB*cn-wrJ5kd;`=Ym5|vKX(0lVnQ3jf`IW7{q7tzg z55*5+YkPIY;cy=<;QEzjFf|aG7gXRBq@yssYr*`8GEboIP0zO2Te()402E$3H@fW zgL|5Wdx~6Xm%_$nw~gh{7_=8^M1uQ>J+)d+<nCt|0#nur z1yHU?(^Hyo;v4Y*c1?QAgN*~I$nGk>m5=N0VGt02-~F%l8*VG+I0425?Lt%{M^W4g zFe`RyUTKs4>-iH`t&zN}Q>C%W|3sBxuqD44fmE3g(LOv`%r)w`RX6;ePXBb8{$P>!%+lt*x=H%LE1Q!=aFU zup{=z4B3cE1Bck}*DaQt58i8i>HbF7vKKhM>bp0`-FJJfp1TmAhJWxmJ%hjCt)dBq z9Dvznj=f*a7X5bT!Iv_gqriaYKZ*m37^k55SHx}qLM=uGQa|9elIOWhQuakCl6PJ2 zF}BXD%tJ`Kz%W|0SWvwM09{*H4r;w;77Rf!oksd0p{QTrs^yJ`y&nvrNa-XCPegFe zK3jro$#Evs9m$YmVsQU4Id(IB?uQ zj)%;=;2Bh7$K~61$Bs!CQeA(SIMc!1T3TaeZT=)gdmTt_eR@IPHsY!vk(U#)Zbh~1 z$MXsI7)A#@=6-=ioHeojTHNT>@K*plc1+4*3$MrkMkHG%XaPbgXsZjhhQN^2ko!u$ zR(>`|kW1Flhr;7SpM`~_R+Xp2I%l>IonD>K4SAdAO&nDjScd1(X+arPx}AdK2?*{C z7g@q+f9kaRA)`vkpFk1VZF_Z;oap`vqOG1Aj>H^o1vQZ=AOf7oWTZ5&0ZZmWQsGop zBG_1~=c=;Do)hgyVeP}gC=KHHFV_pYPXCa@Nb9hHT8llCCuxZ*V!1MjSeYzSr*;M6 zs;Us1kF|xKZxaLuj^lGIxLpI4+(=cCCQnWD)%@!}(OvE_XhQ{@cwW=Q^Zc}N-07Ep zts@HlqS(-VAdoh69p!=$ac5Y`{FbT_qK_14c%FRCgF{VDGr7?PC`KH-^pv8C)>Ya= zFeLbUA-Z!`Y1%1KBTj}wts&TO<}?ojp9uXz&@7G7ODyp$)?Yh7*f z8<)wQq}iN1S{socMSpWWRVcisFBE9-T7_wz+R?-ESWa~6Hr z_R(+eu*ZE6B$F(e?a(_@O_h}&RX2f_V2T9Y8lJcp-WLA()L9_4196omh^vVbowBD_ z!Cq4q)96sb@`EV1Fq0~3P?%?$L7U`R68bCmk4Rs8Akj^al`r^;fmw@t-8n@R?)}j& zL3RAbLbLX)TC;!@IB10}d>arOZ>@*@jG6beoD4`HG|}y4(J7xEc$qNgk8dRuu?&!6 zM)!6+03q}}@k`c;hX%VSRDOd3pLCp_NNS`$!`FZT;6FN3;s*uby0YT~BEp|5LsJq~ z9uM5VJ#Q)T8S3PC2bF&G#Ov zd-eZ50^&qU$x_V^=V^&^t>7-!=nQd89qCBza*x?xMgO@X1RqcIK5-bj&2M(bW{1cI ze0Rw!8;Wh&?RcKtSm|&4xc|EjgERf7G2q+-zqxq%+ zyW`y|@JU#~ak=hOgr#;AW9PeS0XU4!>nBf0=j%V-x`Oe<3Y6-Hd$L`%*@kL`i4pq- z*-W^~w-ClWwSfw736@{8ugn0X>B$@hoRH{aHrW`L9Hj_WB-0G_5q7pSsE%&aUWozK zf{d?V&q6b=Eg-YiehqPBN~G+Pn?}ilH;!y!A5V`FSm=?9U_gl^sB#&nB8h(jurtq5O2~#TfiMEBc=>8(N4Nbu38BA&y3te` zFrGU->zSv>I}_~qvG90`s9=VmmK`5@Je!y8Kz7}9sYOnXi>Ja!ne^G2yhW( z)g$J^@r$?rAhabiQw9+{jD#jUQ9Yr(1M^jmY`gKJ*L9Xs#Nb})dLRIJPt1+llhlZk zsm}K9kRB5QpR^iQf>nnA7%&hLXpKGFbNEHaO1>)4c$Mj1BCkz8)r= zn)=0KNv-zuM&$wXanG>bA&z}QN5c%yb9^bO7n}jTvd(vHUE`7|J9>Qj#=dwOvDd!Y z#hEO@9?xHWXfOSH5OD}?_aW}0qv^nz;l6^qQF`#ReEV2qcXMKV_K+oy3obGBG}=Rs zEy{SVCZqTPO5#e*YwzPkHc4Qy|7#sYt}A0hjVjU=CtbP=CF(XS!;S&;CkA(IzoZEP zrM${~`kgMD#C*{f@&bRs%Q4wFEA4agWvHa6EMLW|wxRX$>pc?aZL1cceYos*p?Fl# zz^>vvU}FN5zpK~N`K(Y(CUL)SNb#bl ze_%)i%e~p!$Tukc-oa%jOSJ(y(;q-vDh8kOha3q%)zu0|(Jpg=_QL6(zTc_0&8ZWD zXvkXt)b)aaJT9hiDbi=$9Rh?{CnTlRG|UmKMG=PCMzDy6X;BC3?0mbQIp(SP6br&l zNq@xUcmbE^;ziLH2SP}A=kjp;SkAy`*8$3k4`>gj3Ww>4hBR#wpD`8Njn)PE&BvKf zGdb^Rq|M^$_N%Pz65m)gRy#158*T%Le_e7Fwaaj?+Ur&O1xq6+;ywOq1}m04Rg>@M z7yLV1vrSClId|of`?cWHjCRmGZgm_DK0G_d?H&ia zuZlx&!BNZx4~`-fEAO&_*){ibku*`~bVbA>z!^oiWUxvr}4P{v7a z7Ac-^=1D+B-M)kbr?RVAq~_Ih+mI{r5d-nb{?MR=(q7;rud;>g@)FtLc{@d|nteae*H;iTsOW9}8+H{-b_po~n*`0o{P!_S8V) zUB!k)FOHKtz6xd%+hCEaL7++Uux);#AsVx`zu(=Dk-Z(E*oYdtQv2#aI$dMOOVP!U zR5OAib>o_6;Et)V2AH|3Z_6*OqK>XaXv?||z#H&iXb~OxF16oHs5n{%A*WlNujN&& z(YP?7T*uYIQS^%%+XG~#BWt^v_;n#HUkn}Lyk{6|hb0_}D-&$;bVOg(D)S7j^J?%v zXv@t}XnO9>uTq%GBF4+iXvI0j!X z8ez!AlSPKXXJ z2RvX5os8$!rAr4oXsBOL>=5t|jL9|3c@*H>Wp~z897YdD(ZkWP?o~5l3i{ow(Qh9VmF+XcdYj9&xeRb1=CWK z%_sWAr|xBx!65&Ba7^EtT4gnaeTyLDgrmIqnAAH-)Q=0(hSa**hM6PqMupYa zgaGzK;XKd}@HufCr(gMw4BC}hVr#ObU4lkfc6aWd{rrFmL=iie}+p;%cs+N;MCOW z=vMXwrk|yxPUPeEEZYvHAea`RpC!ywlGuaR8DZ{Yi3~CSy!xNm>FKu|g3l1e{VV(l znCy^>^w5eOH(^2TAG{z+^r=1)zmGA*-6kQ+l?U|NB%LMvSZf##2#2hz}9RI~BLC z4f6eVm#Tg!0B%TrV8A#m_&-6XT7b|v-4-{*Ewl*bv!;$hR?*ga5={@CS-`Xg{rn@g zeek}^ck9lH+p@pg@n}s2IP2Y6@?IVtqM}r5HtV8Rr2@#F6@FK%%3BW#FZJWukagqp zzK>Kn=Gn--f+(W}oKt6o{xtZbdkw=3yvVotY=j~nqu7Z!*N_s~$s@Xo5}ce#XG|=e zEqnl!VBQ8g4~4M{y^3wm(et^4`ZNOePUArv!E?4HU!GL8@jxP9?I*5A+`-GoNYgfR z4mO?G!n&zx69PPmRE+T2EQJn1o>^4%&Aa&sP4|s3cGC^>JDFdp0;Pe*YSX=U09Z)W z3bHc4YRirozX03!bQ~wvmQD}U7I*?y2-=q_KIq1+`3^24F{4z@V_Moqc>JxZ%0Ev2 zxoL6%Y#KBycl}=ka$ZXPaiWa(xYAGc3K_??4tmV%+AvqncQk$kO22{@TZh1= zl4n|E1)Z1PcFuZZT6t8?BsQ>4=A|#<^sKo#_1!b`PhQHWCCb33iY^0$;@Y{*qg047 z@I(K@`qRK{c7HWA3R-2GoMqFi3Mx;OjWKw*~7TYWp{uHo(duYmvr ztp=8No-eW-_2FDIN$t*ju>YS+N1Y|457~jmejA*2yc9fr)_nRm+Nh9do3T5hLs{2^js9&1i4aQ*m|j%2S$$AB31p zQDVka=Fs4VurtBpA4A6}J6Ir_JLJx&nuYD@_P#4JoS10+%Gc zLWv{uiT1+F9aIkK{R^WsXBNu$(h%b5mjbGs!h9ligDBT3h{kS+57NOhd)25-qtpK? z(q?g4qb={0al!DT;5bA4@&W(NdOA3=jRLk;{8zW0$+ycNc{W@(;W2chdkujojdNND2!J>6$0{0DFp@x( zSio3*ni(}wDg-jA<gVe+jGfBuSMxS zd3*jp)qIOr@FIE5Wm=Hz+&yeOqAEa;oL`{Iz}|$mXxZ&zE^31jOsim-uX*-|K&}ml z^O2N)D$jwpDdXXmJwHsR)=VW)rQT--VOb@;B)=4N1Z?^j_WIH)YVeBYkhh$j$Q?&Y zeFki>=Bni#ZzzvnulXp5fG0_>6+JjiQt`m<>|c+4$3D_3;}vD{Yl$bcMy2o_Jx?rhw>J`&J5$xfnmcBAwg%i zyJ7ffni=V?R2!fy9oT3g-&KzR^`@bPCdta=gbew?GM+IP*n-ma5$12>o>$laBG{|e zbcIWiKWPtutk_}j5_Odu&r};YdT`4pa z2cE}+(-lJ^M3qj@UYkc2wyK+9{Tm+Elp@I(T1$?P9xsv;1-7m0xVdQ*bU4L z@R|1pP=Y=%z7^lmo{l%#P=4>A=Qi`#3&!$h=NenoX;$tq{-q}a zz{TfZvr;H8`9ld*#xBRc)|#sml}1V#JWQ_1!`(hwi*&WoD1IQuts|9y2eRB@kFHCs zKKj)Q7+#Wpc&p~tarO@s; zOyKGn4Rp*$9v@HTMW9$wWMyYCKJ@Q3{Mil=Aj3JR{hrsP5*2tb5dal?+iKB$LFDRs zi^O=(4#FkF}(BVjE2#iP7sK^FkY>T{q8|XsD#V_-GMvOrMt?pVjG!qqC z`*6#9t%Jrg2=H;ct9PpNrCcTrK*5PiK6SHfBknw?YwPng60bM6OS+eKC9CM`GD&Tq z@*`O0mpV0RjPN3pRXN^F{gc88vhalF=c z8JpPzsU3fiv6~^)KYht=fU9_a<@e(dvWK&@r(G)lNV;*IUew7AtL=T(V}sXrP+st< zNWTGSjWr5!0=tZjJxZufCl3j0_^h8m?Xy<1f)^_GVPd>xHClrG-&{l{8Gq7#m2FmT z?e&5msQ6`De+tO@WGrIe|t0Y>btip3L@;O1}>GICl)63vsC^m9hZn#`U_X{F5hqLB2s!RmtL% zg_eaS+6jTGik=V}^1c=QuM{NCjVH3GRCOb^dupNNi+96qfa#izT#BgA(!a#@2}akJ z&xFUc?<3Wt;++;8ieQOg<~Crv^^D{*8FKfLeZ*epJ=!#kj@WVE{JUh91P=S-rm-aL$(t(K-3Z##M=6K8$A2o?&SKOpxyy4!4ZS?@ZEmlYfJi z1E}$@56Px9von>wMb@;sxE0WQ3w#|EckQne-cJt~Nuh*chH}BHS~pbPc7{Py!F-6u zNJf6UaZ?2sd=!!=u79C-E1u{zp7yo?E1WOZDwRL&GXeiPJQ%DpHy|SLB#6GCEH6U$ zQy|uUc-lL+^OGM>rb;iZ9@(qhrsnQ-ZBI>hYhUpn!^8RK5bNFV__KcdLW2Pdb!rY;~f~;QVHtfx5x`Q zQmsumY~eb~(AF|GF;aVgYj25(;;;=8&mu(Cldv)oBprR4?08~(w7-SkvmScE0W41z zWzFR`Rx!!=j3kd2<5@FKYj#%W4-K`%4Im`XI$I#6a3TS`hzZqk?W?-ExOiw3eA?@0 zEC&aZjtK!~k$^OA(S{gFYbWtBF#3C5VVEYcDi3RWOOVd#f5uhE+jVoY>-OJmjwRVLcUr^ z`Q^X3fI~?yr-AzJcsp$Jkta~s)02^?lbZmi zkhikqF@J5*f=&b`1;-Ktq3E(8w{{4{*R?7JLLNMVIpk!i|DFqj8s!7ts`(;I_2~)W z{wAsIflUq_xiy$fB7wrP5o>CQ5?3}?}c~d{p4D%tG}Es zJzq?v@-m^7>f zl5(ojs@@gzNf+;p3hjmw9TEN6F|p0JKFO4z)~?xPY$pRHSUVtX>Kyb+W*+w9;! z)bw45NujiMy6NMOZCYOzGw;Bl0k;L7A`Xk2;0hpV~Rv45;78uQuZR(JahXbS3K`1h8f7o&puV%$F z@?;jpXaa80;WCSy?bEAH`JSF^lujECKGhj=(_Rgt7yUEZ#bchH3V+PF8z#tTRcVON zNQQOUj`2&T%S?kMf0fL@dqjKZT?b92VuOd^+EypkHeTJ@`OR0w3JGicP~4RC=wYar zJzL)I_&FOO8AF(9_R?%}$jdhyCG8I>%Eg+?lDXIipiYymX%dJ(pt{p$>eb%JoPIzN zJjiaFAC}*LHv{a>b=IW4iTj&ORBuH2FI}-&4T>AN|4?&Qgm~0FI0?28*bgJnSfWOP z4PWW(!B{2X=}C44+=R5AGPe+EUg$XoDU2MC(ct7?+p<5Icaqq^nN!I&JE<4}8!hd+ zz@U|QvRog1_hDqn;>Psph9zm>V3iJRC-h zBy{&ly{2QFI0;479PBX*zWCx?uofV75Mej={;xAj=bcV)hrtF_)iq^J{+0SG{%)q; zOzjf9O_ZC~X8edxzVsPsKdb(mdZ%!usGeS}qPaSmv|_6L1M+zslp?WX#!RX}C@>np zo~5mU6P!<8WuaaZ!gke1@c+55hwu$sDp56rl^Z{ApxYq+YyI@Mtiw2E8(jsL&!2pw z7?eUJZqFxxodqqFc~gNU1r}ckcqu@O{J+GhI;IDN;8|CMou@!|%64t^2TbZPMrenX zq*!e!Zh38O%<0QGwaHaQo+ z)owB9)%dBAW?S>hL=bP>oEiec%syzp$%+fdH4+lI-`I?xbY} z>sqe0e!>h4ak*NoQf$|lhaOEA>zzLfU};do?9}%7Ig1!K@2ce(ceebXX)=SUzrUJJ z+O})E{H`llHrGY6ik|cfDYGrkpAFJ?IFm|k2&%ocu3^Ox<9vuks4MurWqEB>}o>9Wd`dT8R<1H zA8>dF-b`1%`V-h4D6%1jVeq~}(3RxwWX7cJDQj{Nc&U)fq4zImq*OhUn1V@wF(_R~ zk%&g@=EAhLxR4aLn&we(rW5-1+|h0idJB)euKn4&Ha_J+j#B2^P2Rsn(i~M+nFyI7 zBs?~yAmc5~>WlxICdC>vwain(xp}Y%uA706H=n(0&@5^tbHWz3!!O$aF-~+4J=JU- z>d2DTAr(?>vD=~P;yfJRon=hnU>*yj14)EeWpNs4`hJciHvU42US|b$Q#$U3BmH1# zB?78Tiv6?8kbPO$YV(px9zv=ruNuz&&4hxTgX3V@5rKOBLblshpExJLyW*>=-%px9 zWn1W-JU?V+Qm*bc><0d-E)Sm|;TvQ1LqeUR%}kGP4}k^g#tmt7gpXpPJvTiC1_=7^ z3=+xwFazqrq*Mh0<*@c7+ypS&`#!lOl$6pe2(HV0JBC;QKfjE+b{hsHlCj5g+d%sY{+h8!^v)pr%No^I z3(?ceDT9FUIu$|4OHxPWKdv^Pdj9u3f&h5gM)a&VPJPE3LzPHxer~Jn&3}Zr{~g0a z*X}s?{n#MGA%N481<0b8)CM^Sk9L6E$|!#Mw)xks@pReexR>_l@Gp z6Y}s^9A#ozozfcF8@D1Tv=fZ_Q4sh7zmZqqW(bW7fB0ghcI2e-j1Fq^ZY1b5*dV=o zJj63gc7>Ld*_noq@t#-_4e(5P$|`vF#a3d^GriYoD~z9zY|<v&Fm40BE`mY`gZ7S zQ^1QYHmOAt=^vpyGw*tD?rGm|sMRcOTie%w-44`5T!t@(4_jo{rtF<1Oqg;wP<-Kr zP{6@PW&YKz8Q~EpXjsjZ)XI)N_Ys*U&oC;}GwWEO&e{BiNJ~GZ%dz-mDujv?dvF!$kIO4L;kTu3>t^}*vieGUn zvTJDt-$;{&zW)~C&3&{zVt_Dz+AQ#zHSO?Oh0Se1EcHRaqgB@lJ4uAt|Lc*+s?sO) zhFQ5mB6<+~{0R-#AAWHm&(VY5AzmBaxz2cbgL`JkG=U%KdacFkG*KwcqKt-yy0etm z>J`hEpPOpcoDW@7|JElxi`QBsg*XfSf13TzCC1uE9!Am{skLIUw&=3nt9>1(NV3o$ z%cW*wQno4Umz3+nYz}+K*<{5H?v=)G*3@7hhUsYpF{KvZE|~ZlG5BRVsA3J>HcI%v z{o08XA#_MRu(Yk4Bn?R8?h7yGEAl(#Y}T*FvJ?_NG&Ye8hAxymfFNeu+Q}jo5Iv3d z2iY7o+`_oQ)F}ozQbu<{V&XL~%W(T~(%4%l;zr`s-}71qts!_>yIWN4Q<5F9y|H6^ zYU5rYFFmwkopM;W|MnjLW9u|4wMHkD0OP>t$B}R@v}Tu%6>dePITQsH_l|(>N$YTG zHvUoi6k@wMYq*~`8ZiEF503+qv$`3>-C*;=B4ZRE6P|vXrM+gZ1&ws&7luIRm0x~6 za6GG@`c0GRz_I&)olAA*a(*Gfy{VR4-vWr_m@&Hw7c1s}m7DeoflpOabtwHEuL^m8 zeIn~|WN=LRck_{c7$|H1iH@|_1xq;JFTI`8X^R%$i0P?>ElatBMD|(S;iYg8vC_-_ zJA8K9`Z8w9pTa=yVQ-u|*qkuL+oO<$N>Z_m9(@g)@#;S{ zvK86T@rL^YE)Z4K(E#36zbh05xl}S2lT`1IxQ5BW=&6AZc~NX5A_#Hwlzm-0LuBsC zc(>_X%Rfd!++ZF!W9$a|PwCSEQI?W@e`3i3e$5USv++Soe``9;HM$${rSJY-h7KrH z3TyGJ3EYM#VKFF9v8MIZHq%eNj#HqS^sR$|CB$KML74>~$K}FphbrBXh`GH;nlf{I z%r7_xvv&h`OJm(4@qGy;PJ;E}3v6)LqkwZGPIf<@U*@$><;2iPoX?ugW<0q^rnUN3 zFZx;IQns*4A%ksfW?1!vUDmO^aF%m2JsSIzUwP|;dp+8FH38NWF+hnl&<&bTE>)#? zE3oG=>h?{e^jb;^@lmZ4XfiKQwIBwF(lW_K&y$~ka4KLu?G8roSSaWU$ScDxC1Y&a zvD^AjAV9cep%smOYhA*yu(i1+)(;NFUUSg{TBWMNpmudi^hL?N)~5tp43UOkB-Bs| zMu7j1rd<6%ywQLox>#00{Kxo;oR1Ms@PjJ&gqer%5b@0XektW2w-rD+J(iIrqf_W05D}%uJxSFk@7`L{F)hd2+2j}rEhhh!uR3Ij@ z$p#6`)}`oytLsY7?;f|fW*)Jb~3(& zVdyyj0n4Y%C`J$1POhz$4_CWsc9K#|25@_Sd;2<~-p|&}K(vwkCwQ zi=C<;)a%7b_K4i&Xhus*#gA{wq~@ReJLe&tgB@YNS8@*x6psB=)Po|yEGW4AVyp3`2;W6FzBq>B!Jn60?^(J)HJ?NR9edrYX7c1R- zZaiL=pdFF1w3xrj)0x`g9liA8+a$ zky^P5F&xIJ2yAIpQkSp^=!Uk~KS_LN;j!brm8N5EY(k1q3CSYPR1{GQHAk9zqLBpV zi)hPK0sQo_y82fMwaQ9NDu-l5VfnHFz^^Z-nWS0Z(cV-p?RKx0BZP18o)@JC|3|~L|8R7j$=N?mU)V~-|>bEPp zz5j5<;n@|-GvB{yAjo$v1zMcgD)#%cva_*>ChPT9#7)HxG=$fKMvbDu6RSFtDdZ=G zOkPI36SkSkDjndTKplRbUt-s~y@c>C6g5*o^C_|6%B`L|Zs7ng!IaLwpg(`T^psG zQrew`F+1iV3DAp>@6b0(L^B%}P{s8PI&qO79m=B#b9gQIjwG)dp_CwT`9(f$U8lFu ztOkI&ZNhLbt^prX(~_;U!}!`{<-E$vg34& zFj}fv3Nu6dSFmHuXZ=?|{c|5kFpD@OK6u?V;Atrib}E2#ITo;pDD!e zikKu~%P8#In8dAV8)2`ish?7>zkd8Xq~c81$dw%G4q01iOfC&wJkF*LqejcHe6K^&)D9)H zKTveOfx16=J54U&MNnUCd5M>dj=QYff3tb=B4$9zSE{Ao3!2CCqj0{rb%1+YwV(cN z9Tw8Im~6xKc<+n=Gk@ij(b~aq#oSRYR_q76^$?pXA7w)ksVv%QI+|yiNS{ZR>DJ4x z+!MiKNm}D==%$Pz=%^vzl=p;pJS~vGEj0<(V9H0mA`}q$#1wz)D*ZtX- zc_4HiLpID96>i`t$w32E0<5q{!>I6BC5JCrxt{N3@(*2yCpdUaFf(bybgM${YJcV4 z+y7H-xAxbiYS7=jqXz`e5>E|04o@JzjSh6a*$N6zEs;eE@Y?JxKb zBb=7&l}H*yU=O!nCO=YhxYDPO$pz)-ZMySHG*jd^NFc>OH%dEBzTi!A<&FxAQ4g42 z5HxjFfr*bwu$ZEI47a778gnHB?`kioO7{#1v?=|%Dqp#@ZGQ||$d5>?^hfYQJx@bq z5Pp0z%_Ig5=m4#m!0=qU^Gx4Jys{pqe+33Zc_Y);*nU({@AnZwOapkKn@Yh$n#}e} z@I0p%8hRxr1`yO-h=%9_dOqmu>t|CtY-;^#s-yqw{5$`(xMX?V(QB~7b|PX>ERiAG zah2;$O$V4b0A4Z~?C=BC8`zAqO`^Xh-@~~DR_BM@-rSOMDr!NCie{Ipl8k;5mfwp$ zK_zgNptY=xo)(3|&XdHtnErejGh0nV6UKgtM`G9778io>@R~Xa2F}-C3@*1u8Qrv) zs-%1cWMLdFs`?$O_vC^QvZCUh`_hlmB_={t5l1UCGSX_^E2b~z6Ysbt%2HwSr{TKV z<^pL=A#8erQ!XsJxFM?40i$#u=m7@&An(j`fJF|jD)(jx^eL$N3M%ebUjQp3TdU3q z9N2}6&XWo?9Eor~Z8H!Ckkx-<5rO8rl_eO<>X~ZIYgmcd7NB-v^ zL`(y&?+WmLCi7xn=8r5r6c*-h%$HWl^8l$qdsU~yj4+{a<VcsaI0&UrkQBnMy*LCd1e7_dyUU!vJxCH=&mFoA46L#hyhrh6xFAD`w|4UNR-&77EB_JOxHR6x4$Hc~!{tu_gisR$k;*2Xk>tdZ?YlJs)5V0| z2(r+(`t=NZUC}51Tw*?zEqj&XtZL6;=&m*IK{}+fu;%$zpPfaM(j}ugGJv9?Hp&r` z>&#BzS_^BJ(@Mf4Jj?7A-rB}?u7&zqI+338=@0vQDM}xe{ z!}r!&0XRfVoCzgfR)>Hr!Y6?i*H{nvqMT36ZCc#?o*C#x?B(;|60$3H^V>P_ZtTqO7+Be6 z*&JNOzEi(k;_g8UVAgbx*^Px6BowxE2n?_~&rNnym@|_n#7gbU%FxFE_tc}z4QqVS zRJz#xU{-8C=MMSMQxlVdo2WKVx35&>4v+<8xCFPSSY|ah54<7{7h48f7Ktre;4b_o z8f@_l(!~?z_nOBy$Wg~vY%;L+e(dni6A%18i=8y`mtt(7@7*Nfobm=_h8}0Yc`|c+ zVI}B%D)=tw#2Eptt~epL7&4TKOcwA_2%=MumjTZhXhM~;p?YYBtbe^_3-)wV7+t`f z!hV#YvUDp9^@vl>*P)SvrmEhp56x&S)Q#$YiMNBa6{`-S%vqV-W+_91QRupaOdDnU zqGX}9&8;xo*s*1}DSPX3=ZS)+uN*wXw9}aKau_tm^z@cL2JI@?!i88+%LI?Ug-mvb zmt$@;+;OxJy}8Gl&~lV^Cz^^lAq1>9I*Q<)Z0bB%(d;tbi=+T;n*0N!q)7N3vpjOd z0xO2n49G<7ScVS`&G5gZT)!uMH1i=%g{%sF0NGU%=gZmM+_i@)B0-QOnDq-)5GU)y z{X=5@wT{X_mDH6C)qaM{+231nh3q2(@yvu3Es1yoS3<9H2*%?TEe z;N)k3YQ3sb>RwNbDVS27E&9X~t?%Uq?P=1hQ=EBmWew@NZHRDB#hqS#WE7eh9Y$qZ z$Yv^?1jWPko0mIVciL1ol=E&DuyxAuv5j}nagEG0YT}6H*-eWE9xZiU&|Hwx2-h~E zG2l_#2uhv$mvho5J|0H0UL?Q+qO=W%rO5XdDKyeN_jFp&IxVQZ36ssoQRciIVDwXg+x6Aeyjrcd~ zq_7ty3b3?u`f=`G9x6(y($_p1pEG&m4kwXetX?JzP+BR>2P@;cQDme$K6utY(sK3I za02qj5~1s@9`)OKmS%lFWpy6y^0#G1%~iVUe$7cz{wnvk&Ne?bntnuggwr};ZIK%3 zUJ4GHHWrF0=PvX#YHbl|{u5ynJiu}2I6Dul?F=DWw#)c9*{FX)i6)geB#S;dycR?L z3y|C}yf(XG6R+;5DgmLM2xsY!nh$-ft}^P}E4V3?I+Dh$fF#m`x;OA}%4G=2N(OVA zVtO$_$+?l6+!nWvdeL4et2rI=!<#eTcg7HF zp}I>z8F_T|GkIMB_ZPydmd2Gk2-cfoK5lJ((Pf$hfH-LtN7)B6mXil?w9a5F=5Q4z z8=VXO64U-q2JEheY+bSROVky={SBzfNk{t*lCY(=f^E3m31MB0K2jD58(HS&X5=`V zipWLkdTeS`h=B#2wF{1~1s2-b>CtVJ>lQsM!nwTpU#+9PSK7nPz90J<-DISe#!AYv zztfIuk6ufy2vl^8q;E0{xdzfP}^?VAsvChI#=Q2eY5d1~gaq8WeQ=F*5&K zTm0?aUip%IV5_BfdxlPSqml-t;p?6xpow%=BqbjAV~OVLJ|jCOqh8x%AFS^Gj9BN2 zGZH%0_#hO^1Q}zKiy(pUs!2zD29vypsXT+&Da@81BNC&rXC|JJiIsS+>MaPL=Ef8R z$gnBMUp6-rUW<|Bz~2pVQDF-uXdt%Ib1-YrXY&C_d8KSSs7BZO^b?YNy?NfpeQc2o zplxpNMe1`i&>ga)Z=$!;Y_`80fo6o|?wHcad{nwFyi9bl@Iafvtw}xV3|gQd*c80K z6E@3FA@;>2>|iekR@$~7sPJz*-5YH4n>ENwBm&X@uwUD5&?&8P_B@q^069R$zr+wt z#7cNu7*4k0_S!5&-L8B$<6}-$K=1kjV5A>58WJ7vQ0Q6dnyNOz<4)6`bk#a48Ms>E zVrPCdqKo`MNXMBF*txB~R&PV0&c`iq$gFD2#iD|%01SkyGf?sw5?qeX03!F0jg)ua zYyc3}z>G6(XZg0G$<8MDPn&{yyFP*XLk*BZi)HK|px43N*)BBTIbToPgQmw(q=2ft z)19K0qxJ$@v&|w_h?MVK#jGiOAr}zUfaVFxH3REWrOdPO0fu^cmIso>=7mRopyQq| zJVQ|l+t=rsj6U23lZs&&)ObUmJdnq)!VC2uGLpTNh@K`k+f4~0k%WdkISSOaxP_*k_Q}Ax*dN%I(^PtGcE}? z8Gm}O0VxU+o33$rf^R{1^ONPA9&27&{jxAv@5_e4jcN=2eG0~km;q=~IRPR=>FA5% zvU=ibr_2nW%M>r>4<`IZzA0BMvRGQTGowMVC0z~#f`nvCXi;xTEUT5wZs1C#OU26h zPGgF3&Jfs)7+H_PH~f8Q2b;9U{Ne0>13Uyrmjns2UVpnDrMJ^1-gt@jE=`{yX+8bcok2t$=wDo^#!0a_AhI|^-Rac~9gjyW zi#2N&_j&H2q`PlJrB)2ZMP#Gs|0_@sK*A=DcS+JW(n<2I!ZF|x;IdF^(A&lr3mvBv zN0H?eyDrQ6@VsX~hDR^ltTa+u8}?@eavw5)<&Jgk1>aVIv(T6qb9*6K61?nev3qr{ zi-IBckUZ7t$Rpk28e zKAewU+IrPJa>K^`FsCz%;JkDbh^9-A%X~@|%J->xH{C7-99@GFqqc@ zXu`sXX7ZDHE<`9n{(g|Q;jjE!N?S=>5S%~IH$idlkZ<(?2T37q7pnQ+o?^CumDy(O zPkY^0>$aJyvipsA2k`|Xxhv5Zw5HSqb)D=np@x;}(R~_w=j3+5(<79=u4-pV!V3pv zAp-KgNJv?^|BILDD6Dr#t3|k?wda-f#Ikb!9tu{dH05??iKWPK?s{x+ExRYY2ro=& z_IdWHleu`2buoU7rhid+fdWapSTM??a8;3+@$$sP^BdN|`gwzU%Fvlc(h{9r;jD+8 zVHrhlUoxCL)%+n*w}97$vhscST5sOe)i@?}vXcpltc+sD>@G$DF6q%D>hN3PlBg5I z4Gs|ajyHjyvCh-75r}@lgM>9M$XzE_1_k;6J9?$G@4&Vn<>$ZM}=)4_=7XX9oxdpq$ST5R=FQW&+oE|dY9wNA)VPlx1SbP8(Ar{ z1|ipGTMf(@H!?7GRvqujlFPcLTlB^M%6b3O#seA>QB$=1IOt|8Hh7HCF|N%#ueiVA z^=qvvRhMxzFV7xlzE`5)wovInM3G}hRdLkEIc=K&zzEL(r5!r$9$@Kc$9*v+CeC3K zrI@2mst@J7gI3WaV|SBkOdx0Q#gVbfGz1)R30Xkvz|5Y@Xl&R~mT@{})+MZ3NBbp} zdswt78I;wkN*0moECH)sOYKY*$=WIwb8 z)?3^)<1lKzo@fSPJEDoCXaynmo-_gxgG_xhtL zjuEUp*(X#rBgX7a)RT-zJi0RQc^tiuvbRfrR2rM_8I#1K^dmWc?9)q7E7ZcqTWyb- z`i%r$Fl_%Ze%NJ+rzqRZT7 z40Zv1P(aQbD_R{O_lY_@B}p-=Eco*Bmbb_#qq}lmI}w3l$M$mnu>l+*NVu+sLZqg# z$?m%?t&zbAq3C`0#3u_yt3)01-v4U^9g=77F@p|^ENo*;nMMFNl0 z2pQ(I>lI;GmW*D-XAG5G6ES$X93>$O`nVRqta9^y zV$+1S{(_+V{_`d67_q0=^67ZfhLF{a~0$mF!kAb?-cY6Az%L>5TQEAL@<>oY)R_XKRM zQg(Z0fkk1WG;N?}3agNHVUHS4Uy5aa$?%~9jCL*}XcreO+ppET;l|zz?bfmFNsxZV zi^Zzoae^c;Rrr@cW3fv);a!gQp!sNNYlgpFtf+B)YME{iT|1Qb5*SHb{(Z9r2Ky10dAg^fupPeEAjC@f)z0 zhI9AdnRa7vUebIG2pAEhe~?;>I`EuzYN{0lyI}E@61_V&<=yid(%z)vX&zV8A^N#} zgNVpaGlf~>Bd6e~kg$V&e?EEPZW*gZ((J~`5M5T*V19E+wM&8Hb~9SoXG$x)Yv8rm z>sS2D{5LUg8PCNl-RM((+bq=~Dp!Tk@cP9}h=K5=;o4Vtt6+W#H4>W)rz=yOWFFq| zknV$>XYIhNba~hX5#yV9ZuXObX-&&^x&v6j` zkc=5;DS{%BsKwB}8dEH>doSA~X)3bHC4+$fmab6Tw~_ntG)P>JTXdWeC`fQUu0qb# z&a)GSdah{$a3mTFLVziW>6EJK6J>f=tjQ&H4l*%8vXg;Op&p1f2acTnS{WdcJJ^P-J*CpZqmS|9(eVI2 zJtgU`kF$ljZueV@EjbMNpk?J~Nb6M-UVQE|exmNM3!IdHVX1*+8?9#K>qy-Hf+snTc2~YB|Hrv{2*KrdE(QZumdTsuF3NhQU zcB8e+w;)_w7AQJJcuu8SxXG;w2-zCa|Ug1?*lW(qrIy<>H9r%4{ALglS2+>XrBI4EhW!@|2mc z5xk>LsmHr_L2R))sw)u9Itv@t;@Rr)7}_NO97&B1@?7$lqHw97dG#%?L4*vn@-9h{ zEz-lA+%9@P7Gawu$p)L2sr;lP=PC5a2v_js?Yz z*;b(FTtt#L{OjQfJL8FD^8^A@aOLsqW=+LC)6Ndu*p_HL2`i+YzwRu>E*KaEcKLu< zp+hlcVmP^;lZhvoyd$KPr*Hgs{7-ZFvWIn3ktio|NyPH-k^+iE0=~t>_!Tx>BMV;% z^|vc~>h?v~{F5e37)1ldyPaYPF?6UbPI3={&f?o>Vdaf>CRv%or*RE%gKY8{tV_g9 zHt8H*F3I;7U=6VOo1gWNKDeB^j^_EspO{Z%Va)j=?APC*io_*ub@!Jb(5he8rUT?B zD-lyg#tO^I-xT7qn+#98k$;=*CyIdbhD5sJqB2GRGk!FV1gz?`fV5)aVuL9wQNxFf z;03xQ`t+TFqVO@F;&q{! z8drR^Ig6jz7d0qt+Ub(PqW6FnFSMpDMFuo+&W%{-@@Vk#%pza|@nlt}3? z>vP*C7NAAzBXWDU3>xlmOi0!D1TLERrE8Z+o?Q|Wo8M^zz1a!3Btbt$vS~}duX3g- z`w+BhR6CqOY0&`q`nnQJg*-eW=AZ)xP~9}Sy7FE?u5^pw&;aj39(jv-(X%=&qY^Kc z3Rz|-_n|LvTyFmKmhE}+(^TsH%4Te^h>+FB8$tCrX6#*Nck@(<{cK+dUUpm5&SH`$ zG-NJW0sWdQt8Z#zZ8JI&5jmD}^n#bIj6r^}VP4kFM#IH>`u*3YO9zS=P3Az~yyAU! z7gHM!n1HzPjT54HDEd1ke-06E43CX!$R|X+k48y@vH6ejYE5e+Q}GqieSX>i`WVQ~ zZ@AoS5jY3PW%7rdHVWv7cG&GDa^~nVH*eI_TVXB){f@@ zgmhuy08v>UB(Yw$q!5W}du@2gVLzs!Xkb%S+zkC+y1;r1#xZ56oKh@CKS{i7yPz7i zY&7eXY+$-nyV`$kSPEg5{<_;+nKW5}V*MdKO};psDtLq1^U2s#n#ACoWxrDng zBW!zh6L)$oYN#{rVrc2>khjkgrJn-j<)u_aAQ40G-h~vly4>HscZN{;wg0ko9)xOX zPFwA*FkiW%OqytPW=Wlac)MrT`pT;BQ+~?k&z?OV&uotD~ls!Du&uWsS(uEzZJpb2P5*<$nVpcBzQvFHVq zGqAcftYek{&jHXwCbz)gYcI1ic}aD17}5a zCkiyGsM9wD%lH+>(aWE)DJQFB)dykHg~3*pa@c1?e4QQqLyPcDb&qq~!+z&pnPBL+Prb6*&;rTyv z#ZPK_SkQf9c?7DI%zrPr5lb8HmS!I}Wg#f8e^sM?&YS`&(Z2`BY@Y?`;ULj^k$ATR z1xSUQ5p-xxwYCUy%FMo3eC?q`WnYw2)RA8o%@T&UzRcB!%!+0OhjX3S`M{~EldXTZ0Q-M z!|rWM?1;O7utqxzR|}uwQ9J<%($+MQZS140g+tx&gzdeVFW|Zk>$#m!4d* zs@ji^iT-19t5U_wu6=joxqar>*iH{1TsoNHoC|UCXCf2cLHZ`jrUY~)#=j3&@=#lO zC|^^S3o*FRH;KYcOb%yl26RW*alFQOWt1Za)VO6pL_XIWCt_ew@aJpEVEOLA7bTza zLrB(OBJTJ^fkWIL0$h;`{Wxmi+wZ-g;S&-@xJVdEdu)ze4x|+m*D!WpPvPh<{P`a} zh*bSYzZ$v5A&&RFOH&uiT%d5&0wH|n!ZaGvxd(CbvMk2cq}S&Gr$)rS`t8d>LvmT-$w;0o?7x97rGn0~RtV0!No>d<6mb%^zE3Gl^`goyT;n1S`2-N@VXp zxp3Ij;zJ0_c3WfZ`;*qIst!_=Zm<*!zVmB9i!Rc ztu0mqwN8(t_~zW~>&j*sml2sxN!lO=ro@LQlRL-+o{gS4+dgq_8rS0_+;5NPfl&iQ56vs*tbK;2HB*-s1J<5&7GP z8q~&SoU)xI0zf39Oah{Q+0n9U&~t5qR)FbG2lr%#OEawgIqZ%1?#O^OWGRr6*(&{l zdWRq-kg9AEpdLzAZH{_bmuySOXL8U;p?DDapUIn>^yQ9F6;X#j1ebygTNWBM222O; z#nw})3YzCGluUSBN4I(Xk7NWNd*q|M5m>`^fYWj&lwB7Le{@#o^1H)sZ3^Sl@g@nM zOp7w;xWkcWsL;qOsJekIVsf77F8J!Bm$tYpde62;;1qMOF>Nme&1Ti|Yk)_j2>Z4q z)j>-7>*f_47GuoTtjeSoQO^S*m^F*EYp(dI0UxD3(s_H0swrO@G^1dt8*)gKG?msV z(iN{InqQ4U0MYLQomD)c>^#7D$nLtg9*B0>JT??JB4UXkhs{n1l`aizm1lYHZ#IYYwg?Ps5kM)plBwX(`1GGv~`<0-Z zO;!!mk_^<1OBL?)f`thwU#d4Y!xE}j#)-~uyT#<~JT1ND@{>994kik=`H+|ch+_Hu(H-Ym(S4#@va>LUqG z-EFEKlYx9t*&T6D=?b`<^=L0PCVK#bfW+Ls9liM7O?X(rS(F6$m5_6~ev9SZO|I5` zdaBUQxte{3K)cV)P~I8)zD^pN7H(ar)2L@EF@R@7ssv zV_pC3kWFKEY70FCwq`)Y?TDaSHI8hft)cz^2F3+}!(mZX=rH2niaf9Ti2v!|T62eZ zBk&NiSaIRE)px(hsl6G5-ROv94w3l zExkmgsW8n`dSL{4=NF}9&mSO;+-^6f9V!8~3=*S1g2kZy@6b-d@9iqGe9t{vj}ifO z-WWy3p@^K#Ns){|0lU<@Qqlevr)_->3r-SrsL7mgUpnl#ZH2$lf9H3jYSv!&jzh9# zqMzjlHEF~Lt%B7NB!nZo ztorq*^^ut8$g|nGT72@{4`Tngv_E>Y_Lj;IhsM9s15#`}#R-GWdL@BK1r~@C?zUx1 z7V;63)Xns30b0fjYFvjE$_*ouU2kye^eac6Vmhpa#8bjYbP%dYR&?q_TYS>1K4{anD=v1E?}xpA}Ewy{cPwd2~Cgm4Zvu0v#i(kPZlY;gk5rS z?QoKSvJIMA?|&uh-t-{|BOzalTlre$wIl*^poaTk6liRe*~Df}86hUsDYDKuc$?EN z-Gr>118JjT>r-`5O_ZTt=_Og4Wh%(Fork9u7HL(p-Q!N1j2-{roTKqbC4FQT5?}?P zuuUmCIq)=NS{(M`8%S0MRtDUxJJiwFAB+V(L4y=CYnYu-EqExyFMQW?KPUkAimLNs zFkK_|_K>axR}AArqc46i^ano9 zp=^qxBdZYS6XDwKhmvS-F|5!9g|in2q`2Ni;iB;L_*MJJ2=bm%M2fx)p8>l=QI%9- zrjByVE#~n<9iZk6FqUO|mRD<#yhi?HB0ZJTgea4ecB!6f5@YlB8a1`x$Mpk24fgV< zjRTq8D+QV&c@Ah^j{r-&SE`?xn1A<@t1HBOtR~H0jxz(kR;NzvC1stl!CB^HW9Oa5 z;vYh*nL`~ctMmrXvz1N9YM5vJb4!+TOY9pMkah;F_Aicb9N!YYP=5LBCjohrpnDKYz&wp!*NlOY8uAH(BufU0^4pD;M2-&c4?VWHHzf^TwtHT+ zHz^{L6UW(X#F*j8O1H{mL=(~?D-sod;rY^w=u4dth+W~Wl04ZH9c_f+U!5+VJZ?dv zlA6&^SVVwXsmB^|@|<6btfvp~z1pcAUV_I_c*$EJc|Xpz6+~z|r_1xgbXn!fNiRE6 z%=glxW8JZv`@&~0nZDOC@dj$M&+7jSp3i#+|6OFKx_LiRFZ9xNrlI;Fpfs^2uhzhX z)1x_+YD_G}qb*R(H?1-m8Yy(7hESQcXd5XIrEy#b&wYC5t7L+|9}37EL6qnc-p(=6 z(e>szNso|ecSAXlgUykLOt^x$3kNq<6Hn4LfYmI8po)EHvQ^RTFwIU9ZdzlCU3ySK zg0~6&Ui^Ec1oIplUlE_2kYuC-{#toZxe4_lx@Zv{)pU1D>A`8;Pn2>*cKcUY>2jbK zip<}*+&A3@gR|}i%j!=DBGdBgJAdH3Fn+2Q+glRrP%)4L6k=7tP8=avyp2XhB$w6C z2==;Dg@za?SF|XQJve+Yr&NVF+d$;T{pe-*F_I7xS!eWXo_C&rUzD*=?VVAX-tTC_ z<`S>GJ7+lr)7~ifvbu7x`r&NyQ6YF^AHFETf`uyyY(TWo2izrf3Vug(Qf39TBvUah z3W4a$TE)59RQ>Iv)gistRp}*uR)hS(uZ5Ows$64C(39q_`daP;kO#E}Fhu?m<|PrC+f?F2OdL7)nNzXD z_`1bD*+xucec`HSjX;r?ttmfjP+IkB@b9dOUQvwc97g;Y`=XPK5u)Ci;j-q*tNsnC zjEe|~;V4kl+3KQzqN?AX6o>&+C5>m~(l+MZavu?SM(pl0hMYJvOh1i_Np>k&wIp~b zUxsSP;ZYle>7#xfS|w=HGfd(3>Vk75lNr(g;DgN}NCLXOHq4eDm-MPhPB2=4t9dHN zT-ED59XhR;kyP_hO4?tDL{tn{HoYL(S`Hg5Yagw}NN)Yw43ojU#(L0#3r-$39H=>? zxq-MVzOEJ>^qB2h-*e|G2WU3&e*EpsB9P!)aeTM!CD!)*;q@HI40a`i*ifypO`Bwf zR`hT~yXrjh2LS3@Luo4ewJaZD&b1OKE5JARXTSF(rRNpPgnka#^59wdc*uN&U@_DK zpmoM9X*f&i-XA=)nq3mu^=?0{Ls?O$$H_sOREE} zp(6|vLb4yi6WlT0eaQeyGHgxx0;K24ll|&HSwS%t6-5HBKE6v{{?XA1_3-v`))k40 zjGOalcYq>Q5`^1g+o_CjTn;S|J;#ci{dQk#tS(@6%>7cU+xb+QTnyfAHT0GAEgYxK zBicCWZc1v~=O1Cz1>7pM;_9h0G%6(?%c@2iR*792mwKeM_$B*4>4ELLLJw&ZGmiC^ zB5CyHxsoz~KOx-n@dodZ{0{(SHWF;|;CSBJ~GEY+Z|qe+Rfc;8$cI8c}5KuU2SD@z*P3I zxY4kx1&rWm(ztG^>p`lkZIyEhB`m%U>K7YBbR*7mN^=RsbWX-%q_DsC2Y%&XEFKBL z0V|;`$lMfe_N8}jhvvk`DALJ-n!d94 zYYx&@h8+_L`Ne~W;|+)L(a@H;c}Pk@-eG60%D9&e5=8a$!JS9(UL%m-2~o|pP(v+4 zofmP+?mvsVC7lew?sV1u+X`eAg4S-MRDyNgo#Ki*E~8n4!_~KB;_hnrWG$Ysq-KcG z=fJ(cfC)21`d01`+6%&E=|X1Hw?yW03}Xpc9-R20VqT*FOHQI$DFwAFb!L`?ty|}@ z2dpBWbWhtAD~g<*kejO}A_&zpVb482pYSHMlr)TF1Gk>ZYYtA35Qtbw*}bt7{%lSf z40GL$5CI~`Q6EdZOBaF^YA>2X)r4e^gA@_)Bu8Ka{t71sVGEuOa!U~rJd0Vk17URz z4#q!!5a2C_3YvE8X!$=xVT|ecY-1W}Emq$w{*Xt&2(b074{I7LKSEOUkK+2*=`A3@ z@nC6CzffL^V>d^`ELR%1j@=UqlR|N=3WpcW%K zCA}L$%j_ie!fVe%o|VW}X9SS$&f`oXw#Qpddoy|o5r)6on80vrhIA03&ki@HXwPr> zu{gwqM?!d9xy`hTJeO`dzd=)qIMZ^Ej6?#1@Mb@-Xt&m}E&r~g+|aCkO9_?MxQM7^{BvZ-GTh`bE})+{eeFlK%FlN zjlbo{hjhNyl~)*8VB0tcl>16wh>pmI+Ep~b!WXW2*zHCF0QL*sZ!%DFLOd7vrZwbk z{;Rc&BnqOU{boF#2k7+%nX2M75C~YB`xx2sz~^+P%m-@^tkViy)}cEqPtj+eBN}P^ zE)JlvSmJQx0m&8$o_u-gthQXB(QMw&$sn5`!(<$W=5y;bIrWT~LW1;pQq@PuB1Yxw5RkirqM7F&AVA;De({ ziieK|1>4U5v`@Foc)Wa>lVXFB`n5ck8xK%P<@IY$c`8smFa5nM<{0nRz%@(1x@ZGj zEO0&3fOB&ak3yr}?E(RSPs#@!hXQQzeH4na8w`W=Ys!csk4%M;T`>jwll2iaI@@{U z5we$cuKZ=gG^3K3bEANR34t?-o=!6*etIXiORsQqrjeWw)^q-aG+K1x2ahZNUY7FC zT^~}zG5e5Uy|?Sj1!#9&d4FoYBF-_GX0Rcc5TEqa#c;fUC`Aca3c-@Y^2ay#Q*fUK zYT~6F1S)5i!PNnO;)-vEXV)p}y?j^YWRrx{u#_bFhY!xqNY2lXC%t#Jb4ozn()(;7E?)nd)1w3Bys12I=((%ZNw;E9mUQEj%;b@)RLrgm z*wq!yNHk-thm_1SvhEE-{cXHg+KshNq znPM>Kg3&ckf#F*C>@>h2(-MY**o`v3H7wFr$@8hWvBZ>CY){J)WK|yX+BMnk`5|JC1o^T}=UHlLM-%9B zc4VizWPNB5Hz1939eAI*eIddkUrV8928>U-9G^e;KY6dCij>kZaah_g`$3^q-EP z!><%!?F+=dpI-iz?PN6aOD&;#y1L@Mr_>-h?R0q>Wg2pW=kMumb8FW)u%VcsxGBA< zCe$Y_v7s*mSsmHBt;L-+&b5vyy6k^gTRRlp$hwq6slIeg^M7nkvdr^2tk|^KsjT<@ z1)=$b`9Gi+-Ji({lVKE&li`8oL7iia^Pa5>{W>OO=Ym zy7Mpy!+6*J?TN3&p1zbSDs2n~;QEaJUJP3UL$kh@(s=XsDO#HUnxM2fM)qj zlI-4)i&N2vx#LiO`3i`H;E=&NP(zYBY`$*u>5S<@94hi15WK+iJ?B7f zeaWP?;*Noeo{l^(5yfnzLU-e9&RdK!q+z_qu-RDPeaMeer03aI3E-bMz>_XU*N&FZL5uDBx%^{P-ao0|l=_6;rDUfD^ z3Dn8c7j2u7CuAtTm91KvKtufR{xY-YS&_CYPS4OZb&_|%vq&`Y2vkFBu4zrMi((xs zE_TqBQ_#ky9bN^mF_8Wj-MVyS&84Y}|=5Gh3$!ab8Y0L<_!Ht>yX$4rxey zKbIVjL1BSUH3xdmQ!SC9HB-=yUn?igzhp2QS5GjR)}XPdR0YO)loVg2RA8^mEo~jH z8XCBUlWtjfDc1W2G~u{8&0o0LH!JPJ^Q!vB&RGq>d#Me?_^;BhW03QR`YOSz_D~fb zr5%@XX<-@X+Z{Mu|j;RU_dor1OHhQx%YX zEy7?%Q^0|1F8iz~4%h57<57T8y^=G=Yov_6lqT>41!&F&6k)UMZ`KjAF=caSFl>rT zCgTjk;(KfQB4dxV+DBhSbps2~WWs!wf3l!<%%Wg=H062!QERXA>Twc8_P6{NK*6Kt zEMY&D-W%n0?(e&S51Hkj>P;?v`v=#OlEIi`1EEm7dGhz-*ytVR;XT;F7l=yTVOUCx za4^n+U<3f_FO9F*sgGg8xFVV;nnCBgkX#tr$4hK?clewAZPwUD9bmROHZBF(&3e{| zLv;&qtxx0t?K>@B@u)Zk<7VXl_?b04*)b-lX|WeWfvBf8iI-q&=4brUy6*<+UPDbi zftK7K8SY{uy7*aJ>KmRhC$A6$<8NzWeN6NRt<~wX;Cg_x2j49CI1GT08)I9g-KTBUYFxJg$9-i*Qd3UjzM`@3RZ>anCA$}pp<8Gl20~p2b+6Q zmYs$;BRowM<`l_{y!xrcicyKI2b>n|V?SIs238%OJL=d11neJb#uKmWEEv}irS_#A?SE=QOE5)3U>EVWVKeKqD0K0V(lNDO^pmX&pnQr0JJ zTq%Q|!Vjv$;q3K94c!62>w4772_j`E{{yWWde(7Mw%jRK2TXe=qtK@R|2Od&Z+PWO zO9@wr*DZbDG6s-Q>dH-wZKaxc)+>#mZH^Gv}-GpF$V>al8*51uP}JRfckwwf_! zGVbo1E!ENS$MA+&Fhn9cGbWE~Kha@Gru(5p+7&`D<59Gjs0OA7bESyZz9A&kWhDFH zYtT(_E2SyzWP0t&zK#-lawHGcV&Mr<>rLR$t~>^?-dpzSd$<$5cjdPK+5`Dr4%rb% zw(Uige@wyma}OGe@}*Zw%Yg*ee7yDxMSBdsz@C}bzs>83uYo&H{3O)Hs7%Yq)%9<{ z4tgIK+e9==3c5@F1hRS`fQ=*IF{T6V;D=vEASKVUQ}D$UvG#lmA!_(pI&cRx+CC|* zh&M-R9BsL_@hK!#Jz(74YYxz;4`eoT6HmPf(Dy5wYl$tT7;%;5CZ!3uBYN+2aM=f+ zXDJS)uKVlsWi~Y*lZHWY*^Q#BnaP}Z+4FA~yZ6K95`Y&@M;A3JB(l_Ne^w6P4%|*z zrwjAh;4T-GnWoFnm617ta$Fk`Mb;+TBa$B|tFEWt={1UgQd}OjV;h4&q`v`&kK5gA zz7G90EMX=&IuC7@RO~5-#0QpUtaK1@Iufiqxob@ zYE_B@o@(8?v|vKhUB(+NUxV|_DV$4vv3RrWHgVq)R>EhW76FiOyPB!nf3Z4f9*0QZ z=j^^+fBtJyit-+9;LrEesMx5K%jfXI{8qSPhTM$d^g%*gRbY$qU?BDhfgg#=`Dd6l?zXmNZ%YqRHh$ z&sKV`0tHK=(T7zW&t;otGX%XD^*J)K7z)}Ry!t{qwFHX^{<$!;!Rp3ViFZ^{!ZBb~ zRC`B?C_93VWmyvLqLwh7vp9o68c%q!N+wFRgb|}`uBMqKv5SfZNM{RkHX5^eRS}GY zBDKiGPl@u1hIVA^P*sx~-t1EzJupxjw)EfBjX~L9w}AMsh8^+8q3f|3W;}V)n~e*4 zAIe8-lKCsCPBEAUUypX8^%QojK)_%1Wbze_bz@BOwm|mLX86Y;0N^(}3j$|$xw~X! z^JE9*J5BubXQzIG=b37(0YSRnHL0sInkrOH9PEh3_;EOWaQelrOy^iqA!X!blPt=! zzeuf(@fFQ=k#|bqw@IJ5MoVhfk8kng114z>p*y3Y>qv*eQURDE=+w!cCKg z;cfl%#tw(ep}MISVZrhfDPZr{IC4g-xwSLe}t3HGC?Di#60gpXOR<#?h1eX_@kNgau$nB3*{ zpSj|J5l49NgBo+J>Trw5sIH1K5I9Thf=YO)pIUzB#VA$p>l!pynIc+6L-~UV$b*xp z>Ik1jDh50-GWTM3OKcY&0#Z9Z*Tqo0rlQAvlnrXEOn&~j_c(kKs zQf=~@WkM2srZ0>bgw_Fl0*kg>^>OcdXdZ$QR5k4S4PZR)tMm(qqvP3@v%7-^`{@=p zQZ*I`gjmAzwqj!?8R6CXt^!AYnDT%Tzb9%*b;}PwK*#;3BQck~oQq!76psDH6Owr9 z08Dd)Kd-g5D|MHdQSRHIUhP=M)Qe5z&9%CeMNg8(-A0G4mmE+w*)N=_+fjL>czCNQ9do zL~=?DhoD1JNPn=^UcUF!;qY#ZR12V&g;)8O34_&7r5#(NfAYC3Hm+As_rM2cy3jB| zZBZUeC+BLZhnYrj`ERK8xjh1-n$yIcs*7$1y$pcScWM&~d6G;d!5(14;z@w5jXE$F zO(`f~YK7E|4M|Kf7{26)a||X^8NH#cdp#Y`u6gRG$|wGIfe@S^o-3h$On(jDT1CA)8G5- zbl2cmFzZl67x>-mgkk(JKOC#+fv?aUH`$>3FTlMGj_TSd9+fr2^vkbY==6LC%Rv}0Rc=_(Lhg7hTDlG&sthweZ zNqED+lYl}HTMm6vRu_PnG8DHZY(6|miFmN$Mk0%#!f)dFs?$L`6ZREeUQA7DSr6vL z(4FgP+^(!b_pf)3<_{OdlnrKRpU4hSG}ez^H{e2Q5RJizPfn;(G&G17;C~;d zi5=QZP$lA5UtroP?U(C!%8a)gA>X9iRlV(uFNQ2{b)Q$~Q-#$9c_MIR0PR$ga%47H zPODua(@oIyi_T*!IAqQMf|h%y?-dl!3-y25GV+NUivqb;aaYk-HspX1HN}4{F?V9L zt^nVg&7F#{Ku1ZfN&TqzmNm;bstNsW@`|#3*}0w3R!Fx1*jBoA`2d;DpvQW~@|%sO zU|ay957wUy10+|t!}-rSQim`7osVT;Rsf_0wm>qBQDB#t10`i%U;W0eOy*s*`ag-$ z5El3KZmpV9WUAf+duB)gh71vpZ-%d$q)J@3v>#{AtcCpv0qlcT7@QfgQoC}$Y$uDg zlzb8bgejI7u+hnIqVNORHC9UF&o7KyD|1Jw*&`#x_X+U_LuZy)Vmhdxe88&wV1GHk zHE>i!2!PJsPr4H=plgXwRh~7ub+`XBB#$?0&%5jFUaz-N$^1Q(F2R|`;`09e?SVP? zYRhSU=x9XJ9jXEAIIi zu%Vn6hITMCw5&M7nH%sp=Ui?GCBc8;Ppj14nlVqbu5QVO7&0asaj#i?(VtY+u4394 z>9^#MNHNGuN+lZVfCv~r`XcIO=3*s;$ zB|{sO?c2)3)tJO1Q0pbYVR(q*-*z=ez^AzxqW22c{d7tzu?^BnoWuMy);X3~L>_=I z!wTUw?e_=(xln#L?fyIB=(%h4RYAt+3fnkBO0QtlScO1o{p3VjT$k~h>8v6UScpD) zB@R4jJ+>jn{}kjwG}RQJ<%E(TO90l1$fV-Yf^tTmQ&oCAv0wqd5q&6WccpfCUNOJ6 zqeq8*@wPil!dYfW<|{1(i+}&*Hzv;*OK;k*j_$2X0$%1e#j)xE8;zvDu(49W#f_mn zhSks4zu0(2RI-DVbbU`!gl0X(w&MP&@}41A_-0ojJN-PGSbjecsyI!%(!UB0Tc%j1 zktA<=(0__bUXV~c*8NUmz7i$MHb zn8I0o85=M@Qap61zZswNLqTMdQL$!#OYYwnJYEUv@Pbm zR^@?!mZ0reS>h(-ti^|9*$%RKbv(V%+G~6x;Y%*v7ue{}K+VT@>g(y)358kw}ihr92VZG=1c}K z_o^;3SB!OAnNQ0u5AUIX>H2C6%FwU!bbC>RN&b^PAJ4mTfB3K6uEXADr`PbHDg#L` zAIQy|F`SwG3gY^0lY2Yy4GtckF%AKSgk%TBb1M5_FC^Bye;6Zo9Q%6R9F}r>ZXC=& zQ_6T=R;>UnK+?bWv5q}hxKFtIlB<`6KT$UeK}6qU#dGPOIB_xH&!f;F3tPrPSY$aC zQlfRqy_WueoWW4JT;+1>fb;l^IJ}036W2P2Pi(+#n>cyjkA;j|Dy$Dd!l{Yu5?m#N zzvf=A`?LnPM=TuN$Y#!h5fE-?1n=rxf_V5GopA$o8D4v!<_^4BQ_N?i1Tv#}Y^pEw zn+R~k+fOp4rOIS$p3z?7j{EJ1eUhtY)ce)u&r8`H7LID!DBTw`xt4q#EHW?R>W^`du%`%eIuhmqV%uL%%lme$9R zr^sBMdyJ;k{xO9or7%;jw*F*tZtTF9_&LxO54EV}%Rd5YS{g*@T1kqr5m{nJs%7Kd z3S6cOYbV&N<@KQTuc9);6$QNB;Fs$a<^3HcK)n^&oLYoK(+G3>o6ea@-}|p)SxG4g zWJ$xx9D^T3op*3M%k4gh=~UhPvXw>>Z734FZf~OP!TQ_66D*o-zS=%Qh5ZE2zg}P@ zF5kjwK?}?|)W?{IrxB+NH=n11ep&Z56VC(xouTj~lVU`3_$S!cHE$4|NjAkNG)Cot z03nqOm-IDlB3#SXGN!{NhUMBTUu5JrJ?-ie;p4$I?pJpIgc{LWLeXW;Gt>u6OU#P{ zarXSWO-!1;qxG>a!3KED$Zihy-&WUpzeOR+z!!8!ljG9A3r%p43db=Isq6nm0R$2Z zCvyu62)gg7ZMd26Fqd|lR?0M5U#C?NFkaE$A86<-#5AxWh6GWt=0FX6@z<@R6XT7F zB;}{l-20?qjJRceHH|b`%!w7g2|K2t#_y*xTU(N#CGIcBJ;fU{6O8LlAD-h zC^!(oB@GHd(WCKd3{nUVXF)~BM2fSz!Swe`yu{OLjQ*eH@pZjG>0oor+~^ff8R_M= zN7^WhU{>?lNpg z7LGMdO*A2t{7Jg*A6>d-4*sjmnC z%$?{s<5LBPf%E4S@iMT(H!>_W3e8G{oe!KW%)4tYlfB6=psD*k0Zfj12F6K{772wH=5~% z>fB>BZbOQgYBbx5mcJ*J;nBVqbW|N#cv_!NL7sUIek-ppC!&K8hHLC}*v$~Bq=uri zIuwUbUmk*faSB31Z8_txisT;~j8qT3-}eb!tHrq^zAymM$w_`iTn*Ml9|F~&S%yiQQOCmb3=#t>2)+OyAaWOB~T;^N$ z1&!*1;*fL!A=eIjfD~3CMzo5z}B;VF&y*PnXxXs zmF9$8rHCxe67@{{xg*n$OLS>^P%?f&j^!8`ia|j<>w!Xx3ul{-TYT*M#qF<>3lpHM#J`o?K#~QzOcBTTh3HfUWDmnA^mODA$yjJ$0t86tn!o(iAQ< z(jTZm|5?fN{%1yG5^&gRm2&tK5n*}4n~yl}@EOWNt>}BZuS~+6R`z)Ck=D`2zvOEa?uKUEl6M5FKe$rxKgE0}4xCrnnx zqxeaqa2@=!9<3u&lPa$&O0IqpEsMkqa??C0{NVi*c93iB6RUlU8xLC}ZA$ym@n|AF7)E6yDRrejn?khT8v#WPOu%%^fCMg@*u$7BA2J_-GSGb6DS$~6thOFZ+j z1=PDMT~g~7`XIM>oen$sR8o*pjx&*dHJSfy8=ng$W0(#4U&nFj=SC?{rRAj+M~$>w zEU0E0FD>B=?2;o)6IojY!61u9>q9--iu~U-<3@;HF=|$ADYWOJCV}FYg8qXL=3Psj z+ELLE_7=s>s-fQcI`-`3d+QdD6hwvl3>$h#QM3bR(fd-_6#io9ge{$gN8%Xii2IOVVe{M^a>>{Mv$?vmEQ>kl*5>#^zj6 zw38YR6HNSh z1hZJ2di>j2zjZLP+fcRpPn>CZ@$Q1wgN?1wC@&56$&*x}k^`nkNIC(< z0GDW6+>x^(RS|4^W3_S6(tp|oIaZKWLMIrx5DOtq!z92LdYKsj_x7M;not2dK`m|! zw%=9I_Ct&fe|5AO6I*W!ag($3`X((~OMQuLykEZ6aoG`d+0Ad}_% zRquwJj!N(#^3^dC%+-%)B6jYh?`Mvp_GjN8Ml7=31!LG-*^B{aOPax9JIBwztXr^+ zao42+^A=&2xR2j?%6cX^$s}V(C`m>r$dLz(nmuf%GB8QN1h<)$w_Y)lt9qQ4Z)a$F zAZg|#1Ze%Zqyi2VJeM6J^H2RoQ3v>c(#CSFd|Cd4zb+{vvO* z&N{K@O{EJjMf=nQ2UO6@$R#M^x?Resd4%90r1V2G+sWEM?^Q}MV=w`vPDVF ziKVjKkvVNhjEs3tzgJE<1|CquIM2K++w6tbvPk0m?h}C8kvTOBNfJW34m})73fZ&w zFq%aall@cz>qY!=&F1a0{%$M#X5MPO*w4}&3HBJb-HQPu4E7gv0l5}_Rr$#U54Fc$ z7b!$-ooOfmc#|7So+hY}`4VyFhMw$mgkn43K%ThOqm%Do9WSYtw!-uQ!hI;1I==;$ zrA0#2jYF+VJyx`a5Nt8glt9nh3VLKhKnxG-hIGz-Yuy5qdIuNf!(pz;BQ97C&+hoY zjPNDv`oT1f53g{P8QvA*X;Y=Ye(jybhYZl0y62o}r4o`Xy0fHp0?1S9lgk!)y?Tm0}sCDR72JUh6S9avj zp>*87bz>^ELRoFl!IZVuA4tKsTb*t5EgiTZ4wyUJ2Jd>mFE1z03|>>nM4i^@Ah7BT zO1J`!&rw!ttRNNH1zP}M3SNAsMHndqHDgDJ-_33`w|S=bh$JXft!Z@S+xi*6xGKVu zs=wbZCRE1k`o!Hax9Nd15rkO16LRo4xa#kO#RO!y(H_@FrCEiQ5M;~{McqU)vOX7b zup;Wn+fPFE_rB4IUJ8?n$$Mt!_}vDzM)+1)d|i3VM4gTnV&0apMuyzUvrX^_dm(H= zBp76W`~5b+`?^vXZ$Mxm8o^!S1>iHou(RC_Ui$&{w0=8hr;`N}L&@&C3M(v`vy2Gc zzloN;s9g;dg_EDFT-vxVNHOT>+^3CP=7yq!?q|Q9!Qjm9z`!#MZ8du2VS))PE7wrj zojq^Go@%ok=z2F9YMn2pqZAh>L72vv$%gm2C%{)DCDr_F;)1I`O?ZZfXpbHr-I-ag ze@gX@$rP{1js#+Lt?mwQ%&^oz-DTciokz=`Tt+r^xY=dE*R&&#ahq#hTnN}`fT%6*pMOjzF7rAjsyMe zep;nf(*3obs4MfXxTL`gAi6A7@h9XC5T7K%Rjq*Ni;<^>g}dm?sNN1fYFqZX6g~N( zhZRt_{~}Yw1%iWf1B-xhn6f#niLNb@1!YuD8a3@Z`adNdvrwHD;JL>X;6=MHb%(b| zVZJemPqJg68?(;!#Fypz=4J>fulI>8y|USO8=h-n3zwc_YP5rbptx^u))QHzLz?Ti z+$*btE{~{{6dk%VSUNckQR{ymlfZuvx*9N5?lcvJ{*ob6SYPvcVpr-bHwWDh_MRG{VNjD-VlN_&N{eV zm4#t5r-1P!WmdvEo!Kd=pu;ZjUYiTpM_D<;-!xf7nXYhT^ohUcp=Qd>G%V%GG2%w>M#Ya?Ppz6<&aFX?AAx;pOI8XH2(I`zdW7)1ZevDuRYH)5SpIiv8d)cczW3Ybof7C(N3nO9&|n;vw5lK2L==yS5r+$i#Cm<9LO#n%1-9~ zI)}G)ZQ>2afdP%d^W}%aLPFO<&;I*)383CHP5CTVe6tUvxkKee{NfBNpiWp@OksHL zrJLgw^Sc4!+|V*iqx%7Z>CsNU(JR_|fA=`b9bEhW#XQ}7q|X@Bw8 z{2qB`>Z#f+R8+^~Har^c&eInvG$H`EQ1&dIVRv}>#lSAFhmp{WGa^zy{}e+~0MwrZ zErc*EC>q@63ies=x^TXm5uD~QD>)=4$rb>6<+EC%N9;znOqMY*R4gj$GsG~EB%B3m zKm~%13FQ=<=W$QMD91E#n3)IM2J1CI%8uAX<8R)!^j_n0(Ji=yvR7fKyRs{4Td2i0W=$?yU~p|Mzdhr_^~~P4v1zr+COHnFWpka*IW1Pe*kA7 zgO*L23*_%k3K+fW&H&g}?t?>+oO)R$mN^7^Ud8_o8iR0j^r(5AfO^gEQ`qT{pQV0a^XUPpde3 zv5EI|kPNdoI#a&k*$vL+;>JS0uv%7lgVC{9BFk}(J~skjl1o|S@^o|azuM;hwsE+@2-*+ngCMJU<96>y*MBIG^N`bqF`V7THm{V^r)8 zE%M&;LzReg(e&n+pS!wJxGPsQghy`3dgS>Z(Pr~J2ns4R2u}D22_VL%Wes03;wijV z(8u3M-9X;ca-Z|jic$VIn^Lc1iEbC548z{WezoY%BzixoV8SNNLWGu^nt*B0y52?G zj(}W8Y~Y4#YQI%L%eCdgGgk?lMgnqbcJ>Z;JYIZ06L`M19cZ7t*i(uZ=Y|IG;>{uU z%cb^LU#9ftbEtkUh;m%_PMS>XkV$#@Ld6b@g;$6O!ZLjC#VTX|ws=paPQ1#hRH)s+bC2MA;@`o#@J2h}xB!62Bi3 zS^Ku&P-7#R8&|E*2`8{9e`y9|a{%cah&Fdq-9>VHKTPAp18~2&t5K_uxL$4fK85Gp zmD#$=IOWwIuR6|EbjEkD0DQ2+0O)uqVFF!7IX4~v=FNB6jj6rP?F)b3TnV_VY;-&~ zO{h2!q9+|LB_F_TwV*h%S~xxP2>^Ua@7g^jMJ`}el^V^D%~yF5pHiyp;|MFj_Q@QL zDNtgqwNFL~Z4$yFo?|G|rre0;D~G8!=Av!O$pIpVGOx-DYYMVH{FaL$F=5|qm>zzb zY8NnZRR1L^Ad_%c6|47Y6NMoZpvQh+sN|7P8eA<4XT#cZ3BBWj`j##Mlgf|xy)RSK zwXr*H;vOJA2jO}XOkQa`5gx~&Nw3`ZN5(GJ3QqftFS%&3|@Gg=+FB2*wNNqju|1@ z%`DN{qbm!OW6t^7bXemeL1NJlDh|_(Vi?$5gHG@b z5S2!2Cf!BhEm-L_T@VJK!DBCy!8ssCaF}OvADP4ZM`c2;khL8gf*B#IZRPWoz)$U+ znjg{Dc!t+;+ot=dlJGv7*%a?3^jh6MnRgimB-@9a{xQ7zUr0ra z0TTBWNSrOPDPE*6mHdvd+X`;Y$J*u!y^j+$mekd7n##j3p`t>@47u4x*=_7{GtD2y znq2Xn*}%TYx!q|rqQOT3?)F?at;UVTa|KhHTd^%Sk=lPq+d_%UogNv34mEix$TDh| z%=>iR0hhQMma~5IIX;1PXgRaB_{gl39{kLT%K?k5 zc+NPfs1?w4=vQsZoKGgr=OJn$?GlLVqt9>Y-c%&Np?lN5fI3(p9lp?5q8UdWA?pt( z-6ncJ|BNAerBdohTaU*tKydGzVzW?8D^r%owM~5wayKO0Vr+<>o^D@YfG>&Czt4ws z-}*Waea(ztVn@ic#>^#|Kr0?V=x+I>QeJf6;<7bmkQNyG((+8cn#eeTEy^mUWI|Vw zN>A!@2<)K|AHdN3Or6&>0v~0$r=BUWe}zzG73m$}Bynh^G@@xv2}d3!FTN;k`3TH` zv4@otCZRE?d7W%AqJ!D+%lvmHEq+Rz1G_3dv^_`=y9Hjfd+DzT2rFef11m;w(>k{+ z5~_U0fQa*?OR>_!w+38?2y@t~3yxMYv4$##*MXNHel(HNHwcGC+5K z#<#0B{)EJUbKs~iwrH}U=$~0CC_T5$%>}_qfMEAVY5Ku_Dv6854PxFl@<&;7hpVjN z7nPZ}7F_0Qf$rOd7!y;f6wSt?MvnCH*8N&hncJXNntjW-qo_RK2NB%CA<*>OX}<0p z$we@5tFB)>L`J%~^0>`dZv?>=cYpFtgRs!YxXwzqrumiFSGWJdG6sK`ZQV!#>^-cW zh9JE+3eb@pm{z+{X#Pz7r#^TdESmQIRC^jz==(T|qWRR34{wA2)FS^eA<#o%6sYBT zwvKXGcO2`^;zVD#y!54dAeeTvt^9;0pR(WSnis40(F;(iEEqI&?9S*PuA*I{9DV#)55N}q|FPUaJHu5hEnbOY0MWrl z_U;I^duxt;OyY4>(|pvqkMjai6tE06^2ZN=N*OfmArS z9Z9~y z9cNL@)ts1CxIY*#htg?^>APx%fyTro-*J6^I{Z_YxS~Fd{<5?3tSA5P6b_$T^})il zYSB0(ggs1)sx+S=NppY`(@f%qKk92HqC2+mmKw!d{A}{=t9nv|ljMxT#+?l8h#0A5 z#<2*Bkt;My)zCa#X2@8rC+-Z2N%CuoJ7>JsFg*JR#F|^Ijg!Xf^tagt5Xr zC8jMperU-bqb`DiQzuL}ziQ(Jx z#W8dyv`+4!I)XQZu9pUFZIv7SRu>x*vasV5;(fBSaz!FN2Sk}~5fcpI|f0<_z+=_5zo;I{_mp!d3j2@R%DW@+fZ1F_87nF2LeW<;z{A(G z2A3>47Tf3w&Cg_258(n6p#|33?3ddUutTkiOl(0vi=k-OM7w^I04*{kWHnm0mj&qT zwT7NuvOhb5s#`TNPM=~Of~VySZRfnLl;yp*u6CuND16*3tElta0xQdLBhkA8ZeaZA zoehW#IhWeOG}HCwLUGt+;-E51QXEc1HaFEb^RE zpyV?M36ab7#+ji(m%vJm&ph0Bi3|#K(`;9W?896jgxUC_>cPS=#0~ZJP_`Iy+bzHt z15e6L1OVrg=sRzd7Bjh$1E&MD#xe0;n;NP95|L-tpmH*OZzL=* z$3{1uR~%&4`JbgqH4LEavG$qaykpk4fRE>EvjPOwuYwp?k{l0y0Z(i#P^8QfO$wG> zL23D2zN{ zl_;9mw_PojXn=iIXZJ{Rm!in^prlKSt!cx@m(dmjY6^uy-u#rc;AyC`?dBo0?w#IxqMSaBt#!lZLvb0pj2h6iN6 zlHdtd5i^{6Fhs-e`_x;0KJyLHDI}Z5JPHC^2la0 zKE1$4raH*B>F6fp!B4wEZ$?2+)DFBii~~6=k88T;xeJznp_PlU(P^FrfB?p(yr~f` znWWPpssvxk1%Wu$6jFP&5PsL*8Q4X+(|aGb7pz){-^5kBoqmv%&Bm82tvu83-oo-| z5r8il0NM!17(Z2%aSh?i2p8RfltrU6BuL8GI+AUYSt_;nPC;cu=Vc#;cm$vHf|i?I zGzS)m--`rcB;_uxgIr*M8b3&>%;FOtcd~9WFX%_SsKH>#zfkNUz}r zM7AwSVV%b>jF`Q;e(nd7`#ay7PO(#JyUCvg%OAMUSr=x7vxywB4lTtB4+98dqks2( zt$*bpr(PV+*Swi9b2K>s8bK3_)z9_qJbGeq z-pOpeLIu_}dn>K&t!Ex~tf6DURD(Lo%cDuS$Y3=4c~<6Dz4-5PQ9z5P6HY*GcP!++ z@??%zIZ$oW3L2OF3SdDsugMK-bnU`-SX9RivtJrL=2f_jkXH9mz)QAYkNt`h-GRS) zFn%d;)KfkI7%(QQO0KJoqK-omctd8YS}6|AU9{* zjMZvCtxAqA0DMxT%ImPd_gmg~ii<&pPF~a&8-wOYTv5tkag70EL=T7h^Ng6;Rm7Wr1&$ zbh<*jZs|rL)EmCzt~8D7P!?fB?de2c;y*Lg^l4nj(qfJQq^Ny(0AN8yAUdySg{FFv zM=e6>9b=nCGym~4wyNcAJbV@J{E?ZG zI@Aqpy>ZCIk`py)Be523L?#Mmy@JMMhMOKM2LM^tIj6Uyo#tpFw9O-Y$Bp>tb?+T> zMnD{dsYE>npxF4{wLCvpM7@a9|EZ?iK`~_9@r?f_ZT&VcRcqr3@O`C^h?~H`28=iGA&vd-$+srp0LxBjtP_ z?(Xbn@202R+iE%m1quY#+P8)4g@iYN-bY3}&%e`+p=uVaPB_{hvU546G@@6leWQcl z>lD17tOHEFjvcCqDGdCoFd!|7CmSg-RskqFs*8i2++l)epA!~B`P_bo<{*th5CMxx zXh8k{|E;>vsJjyC*{5Ox_f^DNZ_H5E{->Qr*s9lt%{aX(U<=ialJJ4p_0FldkAvD* zNhITFzdUxp!WNutJE40#{hDItbG=sBX4rRq_p|X>nPXlc3mliTknd+Jj#c>8lxzK( zuTcW9a5m=v+xnP(zJv2C5=93-{I4P>tT{qo_*rin^bNVsD;5P@96x6k=SX=oYiT=bMz)ft{ajx*`R2Xa6Pa!)u0lV_U?J-?Or-%liu-Nt9o(sPpQVYF>zjgc3; z4mh2LE%pN0&gcOYxl1fD-A!$YRCdv94%Ws6-qoA|_OX(9vsuHne)J%Pg!B*cG=*6F z1xN8EOWm)ut#mURBg9mn*%$^%hYxAgil3LPj)YF)4)=RCUJ%?{#LE(?1Vr7yXA z!!t9MKPK_%J1Nlh96hvKg%)N>)5xzdN82Ys_lGm*RaHb`~{MMZJLs&PWw)uBTp#WBMc(EUiG5lmME1?=NUP4kFuTMUr*jHQ;L zxD{_!C4aEn)@lWy<7KH*qCt52R%&6R%=BP4_)nFMK5;*|n->VdAlf>WNML-0k{4zAormYvg=HayL`py!Mb%?k_LD*p z#J;EEry}5TY=)&TtnVi_B=!iggn! z+#ufNwGHP0B!}L6G(-bprD$yMUrfK13tKPrw6MobSd*sL6*J*_)`4d3D}cPa@NwNF z(9k&Jxp)YMFNu_S4 zR>;o`8aopJ8YKA1?!Cubn)jUEF3NNz)e>WeQ;8}6denV4g1pRhel%|PL4JYX^t+V}qN)xhJA~yQ23@iAcBz$SCj_?BX|8Lbs{IKY<&CGtlIQagf=rr7quPx$r&;{w^A3W zNl6YZWtrnQ%0f`(L&#hAEQQbpMkW&#*Fm+B2SQ!_!gW3Aq5r<&!onU6_kZK-kaMvnf;+woR`U|Pt*BSEN+97eDANXxEvO{gNf{%Y z!@xDZI@4)t5;||7iId{>%F#b9F*YA5g$EEk*xFR~p8RJw64yfKriw|6t>weOmcPT0 zLeh@i@ln<(q1w*j^+Ws^3BYb%Mz9g)1!7Qt6y_&>3I_l!P@jQ*IRP~V;g-i_Wd>yR zzXYyoC%uZ^K(Py#UtLiwo#_cUlfOK*$8t8n*00h)YHC1_%fJg85aNV+gGOr}94O!0 zI`OL{k@2{utz|oJQ-MzJR5(!~&8yAmuH z3K}@f$i1^1mm-&WvaK$CWy*?bq?`893ceKd)6Y_<`z%xS4b zbuwSwgFzRjy%Xlss#dZk%YnD1aUAsl`dAM=uP(<=K|q1aXL zTxbn+)XR^2#nYKU*G%mal0*1JsG&6--izR=4yj=H?Aj$j_`u$UN|DKRHp?)nuK0u| zfwE#l%a}`HMsR|c$`JOC zyeYnNuC>mPjADBE5k{TCgIq$iT*~nRipWr-MkAckOb9t|Q5`n4!0Ta%t{>Z20eOZ> z`y@TxaSa0$?lS+#;FKiBE>7?&2=wkZmAJQn#vv6O{%^8xNY(2LFXwNEKDoE^=9mpE zl(0jlTbhcajkbVT6P)^TZznV7EUQj*z76$}PLKhZzRQ78HKqLXhHmsz0`6#C@~QnT z2)S38MA2)}R=RLZC`}R#sJQ_K^jBFI6o+Sa(>+$-VF$?5sVPS}s`~T4;jjCF3(i?v zBtzeeaIRR8JBhQXgEU0CcskKjLjJx)>l5C5Sx`Q zavu#(E7X^|>egSjz{D<2Oo7dcHtCK!?#%luvF75Ni)N^h(D*4p@s2-*g)6ZX9kDrB zYHoAo7HZv-m_Ds;Tw?ubvXy@gse@~2SfHX|tNv)#nccuBRdYVTiyjfI8iV_ayj&Ti zaV+HSuB@Ie{RfT#n4ZOA%jcM_YmJ<)S}N7GQngECReG~~K$sD0yrby)M9E%Q zgr8x*E@1M#W11e$1S_18oW}F;Nt=Z}Be!{Jxmi9KLQX8|YsKwp`10uFIp#&is--mk z0P4#9a0J(wOHTndQRx$1hkGzjm(q}T#2J8OX!Xl7aNQ*>#EvUPRPe@0_e@pQdg|^x z2UT&u`2pqM*^X?z#sO?wXiHZsFeu_a*Q-kn^t5=@5pm2DUA|vrungz2shqv5D+hYc zx_cKsPuR|WYo+aSv#rCvwJaTN{43JhLMA*$lXBBz+PyL?1iE6x#U80|F=(82v-V6q zy|hqd7SS%Xh!n!w_BS(KELMdFuH0}d;${?7uh|-OQ&u$Z)JHm%zq8oR=dOWA4)}gkQ9}`dZxVrQkn)|%GDgDAq+vn^h?$Bvd2FrybdZe} z0{Xca*@O}<`1QN{i^nGqOVFF?Hvt;J*mO6jM+;_cpax{~j- zhf#c6bWS-{^MNUS#f*{2CiKq4$6}jf>|3!8w;lTN?OBvMqn###7-mA{)3;F8AnmEM zP=uGbC8YUGwaL+%r@^|63tn3@W1lqZBKfK#H_uFfH z&{^37G>kZSm3@uz@$!)i9ol}~-R0%_ZJV8_sF?=H4}`t8tC2J5HDPF0rcV-~NOc+( zhTT0I| z-8^%D_9XLHm%1z6=Z14QAbHRfe>j4iv(^qfeZj2-5HAQiL}yu?4+bYhxxb&Y!$Ru| zkI+*_L-jP2g|4pX3JL2P^025r`fnYNc5s9ltpRt>B=^fT2IQ0zfQLn*gyFuS43jV; z3_?+~S!{3WxjHdqSv0<8?-N@>S z(!qSU;ZMPNu#S5!c_z7QDtbOv-hsb?7^at)&?Dg}2SoSD9{hRU%o+NU(XuVc>4Jt!hfY?z~!SA@wYb`f9{1!EiuF;!{;=@)`s5W(Mi(o>Cl1G$<8_ zucp`9hKd;xol66mWJKMGo1!hZUHk}q5VV*My5kYDPHcC zfYg#*dojCwt$@lZS1Q?-`!9&J76{Y#i<{9{0P%3)o)!{x<^>u$3|?4v<_^pvxO})L z)snS3=f3#RFw2c9O>#doQ-v!U6Z)}Gv`jD=&U@YK&wfz%#Qqcj&TeF`hDOm%xAP!x zHc>~>$>hPPd0)vCDdQ6zAADQ5$zGELsyzxNVkZCKO5=V-SBi={3lA0QQqPv1 zQjTnG!%HmcL%oLI63PyK#4wu8F8ixXc9e^g{N5U)d=uGcDH>uqdAXDNPW&TW#Z2fq z=LzF8f8^N~N9M1`Y^SNo|mRty@lNzTQ9x)k0Y zJhBg9^oRiq{fG=*7JJvo6pJ*@jR;vTqpk1!ym~-?h5ETGbDjD~N$_((T|E))*T@z* zj475T5eV7Vc&TZjCnTTZOC0z1>4GrWJ&v~~&1V9_P8&6CN~|{BoKC-L&Ta-wK4ZJnay64D`Nr{67Af01Dd;wY6IUdWOvg7L0v3D1~tEA>C@0lusx0hpH1P4p&7j4W>z2E)qRF8gb zJ)z*``kt(VyY0(HKxkWle6Zu*2DG(BP{@(ktK3x&okv|xGDaUxP}#uHH�IzdrI);q3_ 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⁢ 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 z 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

UtUngA4%sj1-2Ef5IDAd%_E-h<`26_8t`L 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 V?T529fbrcFw{IG1RlseL{{XCn>^lGe literal 0 HcmV?d00001 diff --git a/bsp/renesas/ra6m3-hmi-board/docs/picture/lvgl/10.png b/bsp/renesas/ra6m3-hmi-board/docs/picture/lvgl/10.png new file mode 100644 index 0000000000000000000000000000000000000000..853d26a5fecd32b756964ecd2fe5141658470d71 GIT binary patch literal 6191 zcma)BcQoA5wjLsC^eEAdArVnV^v)=whbSR>52Hu#C5$?H)QCa!E_(Eq=wY%F_)`D1=l&e`Scy}z^1H&M?tl!yuG2mt^9u`*O%8vwwDV%`Vi<6>Ta ziKUqW05m7c^0GSK*?WsYvFJ@7ykETgZP{a4mQA8NwIU8?O+0bQPO`Q=@T@N*n=BO} z@#-<(8E7HnAIc{IT|XSZk|v7i9@Q;ph+64a$n&}LV07moq1(NJkkH`7yFq1Zz*1n?o=-Qdt~I~ z?po+sKNpLZi>U71+Ew6j>^7Zhx9WQ`9u~}3c z9PVGY@yE3T@?K$gaU`pZXC35ttBZyMdaH})NexEF-KpLkO7FF)r-K^rx`r2Y0iEMt zcgPJInM@a4m=&EK9Ef%=_1zlvD40p)l21duJ+!0kXr^hKdgVjo&jEgbbDLzOsi_2F z>}F*MUj7oX?|-h<0ohajhxFk)k<9(hOWwpaFP-lKdWFA>+(c@wuc2x9;Hvn`)f8xF zW5jaX0Ubtm_1MG-$6wR1_z%u;ZZ)Bu+Q~Z^r2H2H0X9jmU!mNaa98LyU5MSA*29F? zrZ%|Jy#u;u(*4LOK|ml9;Dd3a=`4WDWqY38sL8toX5b$d->f^f+TEwxSA|$$=%y@s zcfdLSPlse~RZszVJ{flwHWE<{t<%3QHwr>F`ERc@mY{1wfSG3{eno%oL`q4zcs5bOmFA`E~{${OWTTO zG57vqUNcFjco>SZpywee+X1ub9o&$-!m?*CJPBqzc-s`hZbPmWyZ~+?NOsQd3LdD% z%v&#^$?f`)Dtsrb6OaZBstFcX6!wrDH5m}S4I$QHAMvUA=DhB`dprtQ`Y~0^Qa-eZ zj%sH8Dr4^U_SbU&o62tom^o)uPGc6g33i`_tufZ@s72lTXr3zE=?^8q#_jh<8YaAF zot+oBWG$@WR6}}ZKP;HCW*paY8MXmkeD`|xS>SNH18=XR&9zh2c;-`Zl9}JiuO1Pp zGotc9Q+%#8Vza+maI!&{ecd)T8_(`xa5iWCjE+NhVs+zMb1wpeZxZQM)h%I*Mx zx`rLnbS|Vcn{m1fU<|peta95Z4om+#XKIj}?awGT1MA_Pzl+G5`To!Hn2-~c3>*BZ zpO}3jp0LzYG>gemGeYQ3KdPuT^&rvy(@MqRv4r{l0GJGHz&93gPNQXM18%rr_VEZNch*=UR;@vxf73Mc8{UY?yl8#d2G4gCFjycok&r%wVS05S?LNwJ?q93~`5&lCris;ID2!kY`}i zw@F&DTkm{;f6}6hc2Z0gS@_0n``OhOH!nxf=fBwD4M+#3)Enk92xnRO-KU0;wb}*e7Z_2<39j! z<832c_3_JjoSfv)uqPO;BZF-E37}~GvPG8KXO37ANzR;L1x1)DoC}Z<3DQRDi|;+- zZP(hN{WKb-|FR+*P4X9uyZC%1E%0ny?0oT84U^-`(zKRJ76Vax5}P+K^7WhCiDN(A z>C@Iba`Y=vi_R1db{Sm%X75@r7ScT7{?*R^xZc-EJUF>N3X=zEY=I9GX7$%gDkpZx zv);*mb?wn)b{P$NHR*YV?bZVkv5Sk{sI5cgA{_)jD86uX_L2g7`r;Bi8Ib%LUZ}@F zHDr?r`_5Vacx&Ug=n-dw&01LzCT7_2n3~Zt3va9pAUx!!EF4K7Dd}BnSTc=!g05e`Z?Qhv%Y1k>6>3|M}k#a zX@&#eO>7#7-mkq_*o(N8D~8wQqoJtZGYbZoy^s2{Fpol{?$ui+HJH&xOhkBM&MLaY zpPM6n`)?Vfe_Dbh->-2B*+(21`rjT?)_>0c?q|)rPuzO$&>n~I`}%T^fqi%a$6v6T@uGy5#Q^s2XLD$jFUL2$UyUs(8`C{VjGBE0-t92W>Ql-Cn$ z-;#u1*4Os)OKob(%eNbFDhEc&Y`pqhs#|s$9|DI{Cwg7o9+BB$w}LmirS()X&zSj* z4Uk;kvpENbe@B>G9Pyp?+y4|Pmj~$KtA@?-cl59t^4(f;%-6$*8NuyR)c4?-U8K<< z;16>M1meB_>GYB$%&u$oB_R;WB=q!Y*!6W_M-Pjk%fCB7umRfJ(rk~9dHU32<|&V+ zUYjRosV5Lb7z~k?3MtcHc6x=r@VZpU%4Y>4O{fQPw%3O5jlyoE04rf7h_&*|qv-vd zG=y|~ZeWn`^^f(SXn!fwgIDQO;!@WctyxQ(gQxHIWI*!rQ$yGpELb-DI{SX;H#@4! zG=y*B`xUM)K8FPHUYu1Tt{?ooYIR=eco(oxgxTog85|+mmc2l7fXmt|Mla_MQoygW z1#mg>vPpx<>M8EKz-yJ6bvD3wo?`wp4;k(I-%D{hlS6>^2@tvhe?slZlgmQ9ea=AX z+PypghZ5?%f4`}8TvtBdIJO3TvD088ErnEIsZOrfl&DzmofHE+1)uBwd@*-=GDB}` z3VSceXfF`{Z19X7vSW66{gp)=p*vm5Q%Ccv)=x6IQjt8mbX@WTS;nsee&a8N&?(~2 zd#uq+%kOubJAb9hhOw}IiQV;ywpmG(-F?R@eFgz;vIDCg@=P%dsU-xPCB+rYNg95 zKe(NPIoR$eVQtl@&>>4no<4Bl8IsW%$;tpJ2Y+aGf{6*JM;1K#`E;ATvNv z8e^p+FeTQb{K4H8SiIYaaDVM`#eJ3;)%KS0he;r;mY-1n;hhI9xFfF79>$T6l;6#G z4`F+ZMioYOmBtvk%>ESKbU8L&$TOE@F@VW`TEaCM1b~RZuB1^lOrqTj$tyPqVNq7Z1pf6 z<#)m&>OvRD*`StaJJjqKgn2ugfcQ5}i>rdZ;DYy`=?W~iWkNZ`ZzhxTxE|=g%Da@VUOUN9a~(8R$@ms`cv?=OO*KT1R$2!Y zXeXgaQyrnv*flR~>b^K6dEuHP+Tbc5G@7-;7_?b!RIDYHV@Atj|5*J{@;)rFJ+S&= zAaOQ@_=S1?CXzcStNP>2d~TmQYj0n$?@`>M^F&`Zbwqhi@S@*%Qw__|Jx8nM!>&U? z-!)3NI1^v_@X32$CbWObfFotzqoj=3mlxcr9y`ogURi|=>?JApUS;AcCk?x08v9Oq z3}gWqO9=}kf|kqnswM(U8%%O`Wc69gEI2u&l{Vni8J%gf*_t&}N{INY`libhG<~k0 zRoSDW`=*+*L<;1!DjG-!16NAr5TN1+|NUWdc&xkKQnS(FY`cM><%L~ziky^lJ6BwU z+~$~P5u5_l>R6-xO;9}ymk}QEUd)7ARWLqHB-g@k_hlp|_@NVc5IzG@)#IYHFxn@l#=(ofD8oMm5D-)7=89rcY3#X!he7fCGZ`IYpgwg>uku2LKNonwY7m)ZFTt61zi-!+xG>4| zW&B8XN`=AJRJ>9W$S#v`(MQT-(I4LRMe4^%fcR7^Q}obo?;yA+8ZKtv6~}_r`G%;d z+ICE@?efssbyB_aV);fX;oH6Qiwm%X(I<6vlDywa(BT^wc|ofYaSB%8U4N!?X3_85EUbR-@wM3z?|FArgz)uq(>oFdJw z6oX%dhkQ?HbxWVjN3shc=i5|ZApy~tkMKd>|J0TKle)1cV7|fJDS?mwUM>H{w){Vq z{*(0~x}^*LwNMp9@Yu1=*4ZMKS;v9LgKUUDjMx*%UYw|6*)}b$Mlkr{A?g3xHM@{# zzlAL{)oeRzypxyI*WV==1f-91!!6a2DB?~Kth^`Gx zpDn}z#o`wfeB+32Sp7bczr?kX1jpaR4>zAR1sAX>Z?w?c6Wd@5Pal_$R9*2rTNSBQ zY*j)8M;Vc<{(}0^vjY#YRAE?PjD#FpvH%M+FA{8a|v`I3+9eW zO%Ts=H~6Wjwk}mzSXe68Hxkx3oHdUj>Q}J@g%n1h4EHuBS$@&Yn(}GSlfl@J3rrPX z*vVbXo#PkMFQ6O2ztb%jOC4trrY@uef_0{29$E}hWe*e~*)@g%=y5xfGq4yb_-(9r zil*^ar)8^(N5f}!a?S?R{rTdcdx=&g+u*t@Bj6hR6G{pQJfxv4;1Tov{iwka9Z^zJ zvgSa{t_0vq!S48-h6T3E@c$#K*D-`b**661?bSX zeilcdP2)IMd)Hy6vTrm;9JALbZ?_G02Bql$O7)^dMUp7!HlrU9PfcystA&r^giPlT zQ*U>i6JBqBj_?lO+PZ5e(_XP)%7hHsdM9E?>9YmcHhR1_(4hhyepXU zXIHABwP+R~L6xb8Q|hf*rF?3wD$Cd_pD5cCdBNaX+#IQAnK>4i6$d7>nEpN?Yu2ip zWWgN`AEZ%BXc^7`2@1R2he%+7fPzk$w~}y@tP5*!zo?8j2`55E!J!G_DV0)11sM%o z(<7|g3)LA{(}sBo3?cL2@MKIX18E>nZ2GN*$Q32B6oA10PuCLTnQQZemVlh#h*L1!P(_O4g4H${Jn4P3OU?7KmLcrmd9JCSUe;9i$ zs$JLnKS(QQ1=)i{PIl+Ql$d-9PE;5#ruOxuLd0cq=l7*QK=~daXSK>Ot1LWn2Zj*b}?pYN9TOeO7oW*Q7kUjAu zM{X9PvDFs+deb>s7p>nwtUTzC$k)T<*Ijx_5K`~W`XHSv;_l|8o#O)e+MN9!YE~cC z4z6DnDLugu7S*mvLKr?U@xNg%Z5B>fZ#%}+0l`q+Jgb)1nA>@Mv5(~D*ezG^uX+Du ft^X5_9^O2~LEXfEyy(UJ5dctD(2%c`GYkDMt3t5x literal 0 HcmV?d00001 diff --git a/bsp/renesas/ra6m3-hmi-board/docs/picture/lvgl/11.png b/bsp/renesas/ra6m3-hmi-board/docs/picture/lvgl/11.png new file mode 100644 index 0000000000000000000000000000000000000000..93dc95697bae5218a89ca8bae4967556c85d7af5 GIT binary patch literal 4174 zcmV-U5V7xxP) ze{d9Kn#Vsq%mUHuY295x>6UoPj{uY7PRJgz1+HsiNRWU8GHT4>4}zdZWx-WfaVI(O zN>3BHQ=~xRdJqC(NFs!gkYB6983VyxtpraLx5Nt8vdS)8AoHuc?~h3j(~}v}GnvT* zct2HR_w)AK&-=DRzVkfq`*yc<;J^VDVCKx37~!3Fws6mV_u+8LD2j@rf~sv*71gh9 zVuG2nE$>iJ@Myn&*S+)%c+TK(y68UFLw9!%XS>gH=IlAnoIS_c?jE|k&vUNFiNoo_ zB*AyzpE1;DjX!?#EnQt*oIigaMN#^GWCdA~@pwD{D2jrrsN~&$uOa_Ccl|GQwO`?M z$arKYZg&qJ*EyW7Zd~qjxLxM~_@9qnHQeXo;$l{ka+=(Gtr4|rHY$i3 z4?nyZfU6UJWT?IoQ3P1=!heL-k4U)b#v8cl#v5Yh-@0fb)VQjp+ z5f$#9KR4c85L{y1J#XOuW=v7&hd>|@TvnL6y1F=c@L;_AArJ@zLk20_F-CzvAh_I- zR8>{`uO<)(1Xm7Xj8PyE2m&zI*4Dy>rjM&%e*S6^F{AWsZ_WXxm(Al%H3x<^cP-L$?sk4_p zTN0vXboubWM>;$3yQ!?&t+UI@cSN;)Ns{`MrDW!Ztdo+NAM_l7V9+^m;D9<1TH6k* zt!;g=E1wNz&Z{=r=A4=7k$(e!VG1#7z0#cz1j z#cz1j)ZcWglkac#9ow^KkDC8X@qqmI$My=l&VF}Gna&OrL?Z$jjxcFLrx8pDr)4bZ zBZz_LMcTgL%BHfiQvK$eZ^HU$!WhvQV_khCM}Ge)scESsBqWfKkkF@2YFaAqZYc}P zZ)16}&OWqv6L29FZLiy`J056<<3D@tNuPf$y=$-AtV?^t^&d#p>g)Nxzy67?KRfvD zcpIH%cK}dRQv<-fndAGUmeJ&1>mmT(_wc~K-mkMCT$~rwjuz80mgwvw^`*M)w2URR z*KPLI^Dh?&;z?LzjM^AtYFa98x0}yD{~Umxo*q8=8vA0*)qt=Hb z^`*LTLseBt$;?OXy{90UP)d?C;2$J`V4xUY$EXQnYFa7)Q>RV^yrKy3{rBIKo}TWj zUtV5Ld3m|vD8%7%_9@F=dy)sS!+^B!>isHPP z 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 YKP=lt8MtX0UH||907*qoM6N<$g0m7o$^ZZW literal 0 HcmV?d00001 diff --git a/bsp/renesas/ra6m3-hmi-board/docs/picture/lvgl/12.png b/bsp/renesas/ra6m3-hmi-board/docs/picture/lvgl/12.png new file mode 100644 index 0000000000000000000000000000000000000000..157ba26fa9df83f05173d9e51de3b43f62b31b16 GIT binary patch literal 18017 zcmdqJby$>N_dYs^fYP9}v~-uG4ALPWqI4r5B3)85NH<7J4GoHfbO=MIG)Oa2(%np* z!O#1B-{1E-?{&^~oj=e110J61nLYd2d+oLEb+3C9`9e#D2%i=o000oFsVcq%0Pd_{ zu7BUd#r!M}Ze#!em;h>u&t84V+RrwPc%+}Y8SiU%92B}fKIZtWnA-1gM?QHeoULps zC*0{$-te?KsjjGAFx6rU#4BdR9D@)1fD}|E3@v#(UC@V}X#cpZbg`tKpneG{=%l|P z`=M6V_F2&o8QN`2`R*`-@FTq)FQ&cf_g1FI`sdn<_TP7ZGR8{XiF_ohT$wX__~`v)_9ZZH zA$~Clz8wygP{w0eDu`c(<@d2hSs`aNRm{PW7w;=34-ey{_%pCMZ0&c(InKuaT$C1& zzsVn(Y3yUfd_nsAcf6g3idAyHN0tHIh4e;uwf99p&3@5N{#P&1^rRqmlI=_A4<(X` zpiw_`V*+PFw1vq~T5&x#-RA!~X{L1te!T<8(G9JsX#5`ZWI5PCInf1rDsrIA%Rz}LVbLI$ z-L9RewIXa72Zw~z)dLYp8g&G2Fov^PU0CBs?Dxv17(q8(u_Y~WZCs(K!gkdH2gk4OOj4o;slT@V5yO< zso-%R(ER4scyg)3NLLoQv=8;^0}8h!{1b{VzDJx$?Kw6hcm1aPvwJAKPb$RrKXMq= zZ+9#?w%Ik@EKradZB3F=HX=QKSA`tji&7!^a=FDsU`Y>p9if_d4jmK#$C6gok{|4&ggoB@$Ctw6*nBg6y+!Wb>ucU_;dujz zn>oOVgI%mF@xCbw0MW)vI?Ci-zKxc>DT2R0PFX%Qj%al_VC#-geu+> zk%+C%93Zb+J_JXKK=EXeW_9UF*y=9OrD^3%>gQfY49Hf6XG~YS_1% z_A=Vg_xxNTkJw0Cn+G~u3O@i1tZITyN?e!p4_=>Irfm{`*AmYHvzk6#KX}@F+W$O0 zqhOKe>?A<#g9vlha^JA`8Vn-APZxBrpOInY1i@ElrB>xHSys>wv3}WhvFE<(ePz&& zx0E`2CN^^T^arrz1B2(^6_yj43jh3$?V+z)f81p5AGwg*1qT3L2>r)jLKi&Of#?Pu6&8UVg(l#2V*L%;c}nL?0`gt? zCL_bLQY-pAA}3Bt%2Uy+&L0W)@VH5sPq3X?!aJLWHgkLejrU8f0gDyTzVQr?D=vf& zw#DBg94AX;-e7-&A_P=CnwBr|nrpqIcDOufM9GW&*n}=mU=}N{4;PKSj9) z1(hi&BI|W^>~+#&LzGpS=+A6rdMdt`dm~@bp%?jt7rE~_HlA)V1e~E#p~DD8)>Zym zy2^%eQqscK#_wNxW-$&_PBIrcF#LN*b-LKH0@3hnu>XvaW&Y6;zt|yhTUp`26f4@B zLflz@`30PT4n(Ou+qTdRtN<$@v6-W&R@(1at4Y_56Nnom*RiNmuW>#1z}8$8ESDy# zso_J0Ru_w3xh zHrd|um0C@b1E%=Q3P>O}pIj4&-|s|y zzCZ+~FeBcVeU4baveQQM?!GxJ;Ud=UJmrHecx2LXo@NA!i6#I~_WlzeK7hK5rT8Pa zsm}d5;(CmCS#Q1GR*nux((%ePvl6I{Cy_()9tJ#@d=~vPw^VSFi5lc~L-7zu0zwam zi+XkjfG=sf(qLArj1bw-nMz?hc`p;V?vp1QeeB?*!8FZB_&X4JnYLTM_ounhc?g!Z zC&&oANt8{rrcBWdFDe&ZqjQ20Fy#ek9{}GE>NC8*5f6^I!Ska0!h)DK|M?Z|jBsnM z3O~q}?T?+3T5?f|T(o!u0a24;ea%bjT}va$R)(k~dV4BKxdhRr-^PGuOP!R#ro({( z$N3g*ZaqY4_3Wl}>frYNib}OP`eRo>&YETpqs7GOgA&%JPyU#X<#w6mEotdatQ|b9 z48j<~_O)M0JkA90!GwiI3HieBZLRmCwux*X#5G$%FAQm&WZa~(>_NabSqUQbMQUmJ z$*qWqVs{eNo2D5ajh<(|Co3*@WE_w>KIi9Y9mJo9&K^j;UAITTjq?=8ow{C%^nZMC zyi%eao_XxfYt7Nd`~2QIA5^Iu6Oc}3D$g#yyzqJne~=%8;wuNuuUDG4RnI^=;T%c- z#1=7$rhL@LY=y7)yy-aX zzwOa|MS?btj(FOw8IG?*mp-rJ6WGzTHs`Cwwn2)Xo;1+f_i2a9+IGlm_5C*P@t({H z;C<7^|NHvg&ai)*^_NUy?Qt8q$Zwkp(4MEj*l-WKQ>NBVBG#qp*olu_ir%38-Wg$( z{V4Fg5j%k*ZwFig^gY#L7+d=x-svdCy)JNgm3h$&c0-4kbawJb(?^E8qYR)p?k=oG z|D%=zAyA|r+QX|XKK*faA}&Q&IAa?Gy}Vkx9;eHzKeroxflR)Vb%`V3f=aGotn7Nt zZd#UNfY=EfwhOC`@bjDp5*xov+KJah5hp_*)E^qlqaQNuC6aq6-TzH3nB3ExJC`+e zu~d!jUyyyM{t6l0K`$CKU?~^EVN)HTa4zU3HPQ7gi$Cwvnzd6q64&Q8QubKm(7gUi z><*>)iP}i7<#X<5D~c& zMXtQDkb25&Z5glKmyhQB5zw!oh>R|nrJ;L)hpYJE6}w#>`Qt94yW(=|np6~sl!h4Y z%ct6Y#O@^nM5EaOcun80u+jT^KUs3jzmeo;bUuKrv}#rP5`2; zuA7eY5JhR+HK-~@Pfk4S$!Y8m9PNCx`S_8AW_N|hBZRhU4Q=LnIdBjkB=JT}FZQe+ z`KoB)T1oir>&lQA?6NnE!(>+gyC`tZRm!5Qa#hki5?{yY4|BpvGEsbrE9WFJ6kjsWlc(i;QX2!pw;EU0Qlc`N$N8~?L@ib}@}~|L zOC!%u1`3uuEHZdjW)?oiSzK*uU>BD36RcFBB-T5^m7Zky4!VrWK7IY6Z!aq<4$8Xo z&GI9sc`Xmr;ZS9B*Y#T0Up+hC_=o#oz^a*8{*b%3k^Y7mYUBHfT?Oz2CF3IF)P^=! zEis*f?^csNM+>_ysy!dlWxyAJ+P{ebKRc#t4j3HNasbP};%N`qJDtJ25+9Owa>~;Toc)ohflh9ngR-H8NfrR!q-H$G{u3hV$aMRG)M>v zNg$hk+3>?uNLB+z9@L z3jM~*3vMm^9!+_1Uw|JhcDy0Lhm78Wqz63eGkZI0*%s;p z`h!!C!b|p0UChj=0c2)E3F@Po_5Yw8Kq=9n`Ke*EwbtfWSWbx&#N3Gd$CP690I-2Mgt zO4EO)9u14frIL~SbHj`9=sw=x%Umm_&VS%fDYbw4eat=1oIEIeofJ9QA$>L@1YcT& zdPkTo_$o8*f#o0!L)BD!caM(%^w5oiR(LW9H9?8|)*Vm;NLT#ZQ4A3yEF)iB0Z!if z;cYa?^T?iU6ny-fGQf9?Yz^lStANzi?~n_*Q&hRt(|-S{+|@9u!#hRP$GZXTXOT-v z+5dgT&XS~c;0|KL`ZzdcqAC)+2w*;HDIToGmZOev!3@y4XXK%l_Vxx+dwVI|ZyWVY zH}D`2CgZOT^ijJ74>EbsoTdDHdzgt4WR9r20+10@fLGB#Jt$57P|F|E*4_QP zXaO?4>8EFZd>4^VTm?G?#%wlvHX&ot#(rCC`;~-47iKpf#0jh6uu)ejsw(z zYiFFv`*sE)eU`=aM1_?Ob!Z2v--f%J;1p5nW zFkrtRyb^o>0JPsdCTxWdTyBk;H7h_yoW4ugSb81O9PT0gVAh}bH?vO9OnoOM1pNJn zTFtxjyjrU^){J@Ey@5wvFx&4m_~5r*z+%WAC=7I3#JJpNevn6X3Dje`ltl+XaIS~g zu5F`JuCH#A*Cv>){01c`&zQDQdF669ZItRzxbf=XX-e}S{qUTLzATR8d|7N^rj=)t z+ST`Nmb4}JKfKThb07n7t=ETCR#sB|H7@C_xjDnKUBzyC*hzd>>Qq{Mlk8X=LEnYQ zj`K=SFv*tPa!T-K@Z~9N6v*7%vwAT5fI#C*V_3w-Vx2#*2tx1Q85~$eFi;g@`ZB13 z6Dzr_$GfgEw)VoV?>u~_ZCX@9;poUOD;0staR@iaLx+M+)i{xlWk>b`>kk};d@T=z z4QG+y*HZI+TRlu~|P}yWd#& zp00w^vU}R^xY}L>$EAfSo@|hiFn*45H{zq*I%r>OIL-2<3 z_u~WdKk6)M757%r@0oc6s&5kP6q^eD^_vQRH1bt&8k;Se`KQ9{rPoEw#1@##yz zI!gUlYkgGDs*5zD+*X*|NQQWV$N-RAvzEqZ(+k}{9M3dX(>t)+Iy~6FZ{(Ep;*Mk{ ziH}#U#vn2rZ%QQ{=(C(oHjAb}`d^Bi9h3+8f2---J`?^dd!=% zD)rd1v_(pN>YU`fFHeB6OXahLXgfJE0ATU$9z0~Br9>tV!sx4Bxs>rzcKG19g<0dO zZ~59~HZMhc3qYSHHq=V-B4=XMY&9Z)g;9|B0Wf_3aKd31cK$D?*5UyHlYm0FMxhD< zZiuc+yZhh|XT0s1yUHll`G>6tb9uz{C6=g7BFcI7|)VUANJm>n`{CPqn%WQ@f@|M2RH6{rJhF`M^$X4 z2q$`jb>8OlSM}AKs3R1&X_hJ(UQ}+&%LBQRy`yI`i5EHj9w?jPXtfcjvR`C{X{%P+ z!tg|n(7-kxzWmKr3d1npPhIONS1#&gboNie;W|H$B9?taW3uH#C(^pn@kjCM%`aB0 z`w6pc@?7>O*2TthRl9dwK1$_D9pGzTntu)w5wSupxKh3q6ngj)DS*)br#d5M9eo3PF(ixlC#uoYsH-2CgeV!n-Y?YvQ=mYuQJCSEZe z?WxBcS@c0`hn9J9ApeU>$1uxiI4@bzW~og`!yo+kUy{xBf@_Lqw5q}tu{V4kV5U9M z^<|so(1Uy&GGG$6=6EXt0f8t2=mEHcp8-wN`1nzo?_8 zmFpTA#mV?(U&SHkPdD3}@t;Y&h10M{8+{k31kxlemH8ie69T&MBrmArb<7uVT`ACK zvgD0hntAciw#KPY@Y)sX^-{(>u;kMOnEelUmqd0QMK(6cS?)L3|U zUJ3rpB3p$jQAwvu*QDF(>}D;C)5A)dpeuDd_9r0jRtd+YD=r?}h4QRm?ZXO}4KJQH z)^1t?jT|Mm?Q5sm@nE*-GtCZme`L(n+0dy!eLMGgq3%vjJ`c~+=|IPvmEJ%)DYb&L zqomUYN(mN0lO5{wUk_F?1-vY%d&vAd39g@3i;_N``?4V|i4MM|;{|@% zfaQa=us6WZ-~Jr)Sd(X}9Lh~S;9QNG&=1Y_$U9VNEbQ+e;qoAAEAEi5a&|XUK4Lj) zz0*UKcvX8WVl&0Tvem^3!O{0%0}hf?wy}%Dt7ma{Xk5qsUpP zyTlx8bhBD|^VN;ApX^lQLMS8|TA&GF@xm! z3=g;n#U&8a8#p!^X`M|hs;;a_++A5YIk229M`HUc`P`!S^Z8ph2D)QyACTMP59}`&p*cq<-0bVrk zJ``6Sbdv-};?6_IJV48**l&2CPBc+$U%;LM1FxWjgM&bokOdEGd!+jgk`vA4%G-pn zD`o8QRaVpml2s_upgDLRr$fbYO<#tAl}kH67g(@$UK{d0?2cFWFKgx{hf@-1Ff}{& zZ92Msrp2bon&70JWD?GQUpGQz!lD=Bup@x9Tu|axuYF%y88qOMN8`dHw8~-6rt5lP zzeZ^LMja9Jz{GE$YS2&yn4$yEO+g}bpymu`uRa*_IeMvUXX>F?dI}*KxRhlR(?vfm z*=Arrjy0OiNrF!2y-w09Z`)@J1db1I3YBabTf2#BRvqTTh-n+~z z7cX>6ExbK@Ta#3m;E+t}?07e=S%>0-!nI3JK}ke2{dHpp#3-ueNoHmYy;;YuN&xeo zmX2#q>6ga$1&ehRHE!yigH!{f-pZvqx@UUZnOg6!zKBzvBC5MCi)WjM#x-11S`|yL zg56pV(rOV5pss>j&N>?GMN*? z=0d`72Ashy-lL70m9Agw^3A_e1fb_ry5_Qv-jj%%vbMc;KUwMeOk{UX^8GG98K2n^ zZ%1c)a;&H=&#Ep%g~^IQeAn@4^o38$*0AE%THOn^q_ekKhQ(q&URH=l(G76s;uC#o zF+uu2Q0V^Y=(vgggy(DY?|>D@&uv`Y;Sgn^Q2_z}{eq^Ztz_^>e2qUWMTZyrEAE2k z`MzRF-NPdtJ=qodwTaG?%0R?Q+$KH|d_~6ysTpmqj;#IwJQp{8k*zxA6YwYv=^rq;!x#&eu4sN^MCD!Gc2GBV&g504IyO5u5>4_9%3CJ*q-KKMO43wIDbYr#wU zlD)-i7<%cLO7{dNK`UWqZeB7sHz&`EbN6$vVbPzWq5-4u*VoqPZ=Kpz9D<8E_D!(> z7A)gd4mGbQ8t95X*)>@v-QS0NRGG)OSJDA`Kg=B)x*FCt!-+p4nVJO6$@=49atQ8P zrDUn0Iepv=0DC;EldCUO7 zp4^mh@KdSQYV~sZYLS!f%h5p9fXT5pnlCj!he`hnD^Xy3Kl}@V0Nl7NkN#c-Mt!`^ zTre%y>K$jN&3)$0wQ%w-0qbDW1e{h+C;QBfshpE#^YZU}mP61xPwKW(Yx9UBaIeM9 z-e|(|PsKBY-kMKW3}{JZHC3_d8)8{l>8pHs7u$F9J?{zdevIWe@r=1`2|6Ot&h4Vf zTJza3=?xY-0TYMa5!9;I?(9^?DX+{=VS(&`61B9xH#m6fFz!z}Gl>0Z4r`nu`fMnJ z?~L-?vJA|3X*?G#o?eB58RzxpHVz-1B#D6@@N{}hf!2ycH?~unUn{nHBDaLZOUbPK97BWv>{F5R((`E2t?vwhAO8SPU4OjPkY(&I=&wqPG$6dBfWP` z0;c>E?eW5GJ?%~7R~hR+q1~4ab?YqX)zeBLg~F$tVurxp4ZO5fZ_Z{aMaDbqd7MARx8>v9#6ff3yHUgo3Tl zMNV^no{&8pSa+Vcz1MoS*;k@nj{>sgu${+yS|lT(6kPj$CoM%Xz&d2zTXXyvb0Xl+ zsahEwHX^sAn}Cv4ubvxyRFRQU?_iuK;_A!&+VPLif9(W;>dBXv z&oxne$t$1NbSdXAwG`EIzj1!gU0eM9QK_rud0{J5VIIEWkDf*7A17fYJOF;rIQB$c zdrXDvXtBk7lOvj|NHw_PmtGb373HNka%<_^D7}i0T7^OAdg9hMo80Q3QxaG*p}QWw zl08ur;zK`t$*)(J5N+9rsQCasSmZA|srh>HwT`r!oEdF(I?A^>!G7LUun^f2*CaEj`a*M)NM4)4Q<(H$m%kA7oEPxzWiQQH?}dx|gC4=nz4>=2%D# z{>Av{VVJy)L_KmO@F!=Kk|gO_=}@>PvRW1LBY6&}*Ku`$u1C82rw@!W79+(L(pJ~R zb66H>>cr&x3}4)5meq+Knxam3Qa!eO`D=z?kcEdeLvMGnolQ8ZxfnJ7g7r)ED@UcD zm(xDYB>MC4luOj&v#*jOhRf<`79V@(*B-^z8>k*#Un8j#rMlTej#qlH8SgLhU?6?v zIKM<1)Sock5%r06J@w0EJm}!)It_&qE@~Or?=wUJN&;TPh~0bH`6 zI!~2IrRz7l@f#QzCGXO#M0@g)E16V1qQRr+qC)qMvGz)LLCM=@de;hw_H}0qjbqQJ zaew+5*E(NtQu<|$EQHKkYBsy~hi^b*uO{ze+Mh4Lb=twNK^HwiFV6AAeQ#c0_iWzl z@jf&nZi80ed6&lMNuPGy{>n&agVp)EVG#JGL=%+OajLKh8HRh;F*Y`qM)F{Lrp9hR zUx(yZoC}nL)ilh*XA$4KYo^XOSdW9k-zR!wJ8>QaM?0ZKtgaEYXKK6X@DWJ!6r{RT z0}ZJOhyb^l!ZYXF9#TVvYD0E)GGd(Wn9GKj7{8Hf9AeECDMN{o#l~GN57r*{h|rDf z&R7PlDKYzO;yt;cDaW$P*d#UXQ{kBOTUB7QsJP0|RYWJ9X zp$mFPTk)lh=mq2W+!M+Q3j0zLZMQa{5Kqg$uEzH26_#+T$| zl*n2Toh+eFz^jic`t%EGQ0Q!hD%_~NP=RhWJ=j`1ddGfT7&^MCUwcGQn`e8?o$pVm zIe)r8!O@1+9)kQhRzRE2!Z~UW2RECoO){8~NekxH&gS@0unN=D!+^{TYTQicM?{Y> zwBY34-uqN0_K>Y}=4S((;C6=L&#bS`7jQLM1$yyE=LOj_w*r~^G2C{4AGJ~E?#Gtr zX7!jyomdbe=d}fEJj6TkEy}y?H$xV@awsf-9CJH)4w9VThJqo zZO|#Q3ZBMS#yPqD8?ZKVRsJtRsXhI_aYpBqEARBXbw{8CyO9dK8ZF3Jx?F}rRq<8xB!A2kB~ zab6O0Bd+#F6Y_3na|CPKIdK{K`~t489gA`EEl)NUKw^D0qj$Yu(Q3-Piz1AZ8m5Oz zJzvCqHc{$aUon}rH*fn0zM*n>wave1F77k&!dRZe8ISL<_E)JF&!2pncflMzSDUcz z{0qXdg^U)TU1#7^8XnI5Ekrq%^i!nw4V+3dK&jD)#FyPh<4QOo?zLB^32lLCgIuF>9f#ie)Xx>kT}I-z`Ku^N=wc&N;AAae&{3#AdIj3E1{)U;1r#}vu@ zq+Ht9<{*mdItJgHyIC5`c)I1RpT>4 zgZ-bPrI{%ld;z$2w1r(+r?e-9@N=d}%0FKks4r2$#$8Y5S0tod`>RY5Rid;ugnw2~ zVBbgTktck|#F>QC@qBeitXuV@^@U_xx6RaVsvPd1`pY$WDYesct--{P1TZH9&_SR8o8PC)|V1{-Rv3Z$> zEo&11q8u>#rHrTu@gE^yE8(_?SNcNNd;XEQzJ=u%9tWZqw|u&PQp##GRG#ntcWhnPDAX&)WOf`p z#Dh}iwtr4R%4x)&+HbZM(nSo(2%8yCVFy}Z&HwJrUfYNyZp-OOU6xu32zT$D%JR6U zxpS!yD)4HM_X$J40)UJ4vLe!cn$B$E~>>T4^5yL$`7E~R5kJ#^)fC^@ia z_o9BvaP+>)fJZgm@Jzc%#}{Q#4DJ>DgyN?>UywIf?9=eGwrK-upoLE^ED_Y&WKNWv zYmE;ZkFp${$9gKRe?Hdfz!^JEatH4HyrB3_`9&=8l|n+YtVtdl+4M=$4HeDNT@@s$ z<7XG3GM%T4$y6?Rtdq?4hH2C-|DFImlVqxP*` z|Jp_&p2$N7=&QY!S93t6m$sI_;eu{k7VODfu5$je)Y4$|mO6SD11z(- z=>?jfsI~kk?Q_L`uphtg?<{z+ne? zf_707+E;jgty%`OKW?Z1OMY@z=O5Mu_lxzX0QQC~zFT}x_ysg99v#DQt8jaQ31G(J zwzEET|2#BKqY+#M1vY~t;|-KHoP($pG#VLfA{h-WY{K$opW_Fl?1ehtNSGS2kW;0I zpx96|L-UOL`R{R8yY=H{gi9$XC{16m_zEI2aurcu!FvIg*@?1)kV6axNI`?_w==^o zRHXNdp(m9aVeEZnzdlvyw{_YV1TcwHW#8o4x@9b`GVB{vn*>wH#1vU@vfG z(|$wnq2-7pE%{`>7Pu-ks z^@mOcyKi@QS5#Ws_-$eP-2%jTmcTqV)N#xswa!-MxlrabA%8f|SFCG1K)TErdo11B zX55|L%zJ2={a?SYqW((l_5i(O^f)nMKL-S6%g0MaQr)>tyk^4+;5r|xc5WaaZL{dSJMAUAaq=kaNi*)>`q zTSJmFFs;^477nHT;VQL12UymKT~#EqI}o8S+vS*f6Rf*NJ8?}dv6hV@7{4WlX(HBe z?|p=cy-uYE0H`@`M~sb86HXQCm8m%_5$!Z+Vl_X@Tw>QWpV-dB;}Y?>*dezM__-Qj zlX64gqv#z0ioX$6aR0Xyz})*EDS%|jWHD5o%E!X}lb4mx9YEll+pcLy9gc-DN&p6Q zCDEU-t&@r-Ifn|079mE<*GsuPcB=;sk-=o3kNiBbzX-*o=%)5Z=~5kKovN5pF={>s z(_0OI4w>)&0^0dmT|we^ka!x}T&^V4jUB}VB@XVPW76B}9XIeObsu4Y>mjhE39Qx#P8 z9{L7>;v?4>NdwVLLRQsmjuVEn-VL9zA*<+a`jKfcaGjy2);4ElBOCDNZ?PYq?8>|K z?1j0BSIk)}wK{NrP^7YgjKCx9w2*X^fhOT7*Ip_*!%6htWqv@+ttvJUOGao5K>&|v zpfq88yWcr}2+yw@m!+yo3>(Ee+=Lqbe&=cz+!*$A%y9H%snE+$IeP7z08Qira{-w? ziXw^?b><36Ct5yARyVqeM!iE0k-Iao*2OLA4oI4eQxoZ0ie@q`pv}i$m!(*kx@PN} zNT9lVhDc4W#Gk%awI&ZWFY))&t-VoZ+!7mSejVH|mxJa~*zMm1h4J2rRYiI4?Z|D1n+&02FIZ&|z`b_Hj-Plf{q zG!`*2?tXKTs_Q@N@SdoAYCfzIFVmhxVcg8q8=iNt!>KdlT?Yj@U@_X<0mxAs+*&y& z#HFjJbNQ(foX6Y*Q{awWt4omI_1)~U4A+y*vylo2i=lXtG1XS9So`4_I!6+8KoAAI z{7NS05=yq8*x8x*uZq1EQ5^UR#k)chpM%rr*4xjhmYJW1)`)-_*(;^mpP2-mNv-@z zjO%cp`944j04P@79xQ>`Hd&s=7JOVgKljYY&Zd{TbE1>v|KYFH2+*#D_5a-~2YYs6 zl`>byT~K(7C;xPKJ|s1avgLkfx*0jgrBunf?9c~In$MeD`q^u2?vFQNT0FU2tnAC@ z{B4E^0652Dc@&tD=z~p5GB>95YuWp*!#J77%9^q6*`Kc8&H@bc`R4TgMgym8OBHqW zLT0`7sVq*?!x0}pX&ny#vS=H~eOJDMW}xN_!Et+kWjNLn754^U`vBdDCI8!7v)-3< zd5?=Fru)ipk&$-2w^#d#jL{UG?B`K@!YVGOggu#pD$N`K!1FG~<-U-39d&S%+t6aZ z>+}NplyUZ%Tg^h@wuVuuJsCT85t|*4x81^J=$#%ts7k5Ozn{R3RZ>w`2{nj|YzxU){?m#rsid~AAYwr;=sYoYU^@0 z1kaME&?{r#>pnoR<5o4ntr$&h)iG`CQ672gtAxIN`t(a~l9r|o#!jq!h12|PYyUvJ zbO9o+NWmy>KsqE8T~SwI02;okJ~B>^Cv<*`@lvdB2Z%~AG9{qKP)=Q&MDz`AxobLk z&LM5m5sJJalp%WJ^-g`wx~rOpB>Ki=S;kVfp!-B=#QNQ}O(_gh2U=}x@SWO!95VBk zIMw0%g!#tV?~XyEV`q#GjqFy_^g`&Vk+BJ;%(CmTze66a%lFgdCi^wzw%drLb{X&U zAT6;aic1h#`22Zi>H&UqX0Id=fvR4iO?*JPFd56>=!HCL<{e9xNb`QcBWXU#Jph&a z_7f8u-Atqu-$R7saJmv53J-f;+}P{q_;|(|1hr&wgnqc_4-5(2^`I0h4|(U@o-ZRT z-`UjB_wkvw`5@1D*6`0T5xLVLYy$sA2%yUPRs{BN1X-@&;U6#vr@A0>=4+fhoDVI4 zT`D;g1n^t15kW|nN5RoJFC(Sty2V05*3A(`7Ucvg`(?^|q8HkjXekumW7t$kg*hnkve8QmyFJjA0ir^&`Mw zVCWqii5S8VM2Aip(Ku1N77k{A1$GW>JU9T2*`iY4NP6-Xd09rMPf@N~Q1>(i-!*x8 z6UH;x9(p>zFBiaRFuTUblFt9mbf{G};X~@9lE+zC?Sc?as(6O>Y%@zN$4A~RS{ZI; zX4^vmcCPvgSW_;}bq}hF(GnZbOM`(3aNx+*%ddYIhjhCFtBgWGjL`LwM4a=OQa7e-1QOwI-2Hdkw5 zP_r_VsiAFDiYq|wWXJnVKPSN`dZdXO3jlz3;XLnZ!H$V3Eh^a~%42Ss)K&M^-^;Gg zxthLAomNT5(og;+Gc1OQg)bB0J@vY?gPt?`b0FtWr~S`n)Ae~U!7qkHVQE??zvA#6 z82L+{NOmwrj)=4c6`sL&XpGxMq&ob#J79LlzjS^+&tVR`s_P@$?RFjH@E-!!duzMu zWeOIq#{3QLr$OtFn1=f^;()2xO-44 zt@_?phi88<<;jr`M~;EOqrk{Fe}$m`8(m9#++ANwc6et^1_;#n;GVXk3Nt0Yg|-F% zhtI`GJxjR)?6_s%uRL5tD5*O--jL3};e7rvlOIExQDA(-3xzwz#&*h;Bt-3RKDrSB z(s?oPrj%?F>@IzbI0T)wbe{rmmg1wL2?4n;J7FeR0Cu{o|NDWMTg)xCzJ3kO2e)h^ z{5J7C9MWb2mKti>tM!}3NgJe~G746P;Aw50 z$u_{Gkc<~adD-zhMc^>CeRiJ2H7q>Xh{y?L%%Z7YZ?voUSjJMbgzGcNG!P+-2#{!H%pU;>8Gn@iA6G?XD$D zT{5y*_bP*5gn6i7%`I^+F3AI``3Uv(VOq*45E&%9=`C$=ZAqJt zeM$oMr}u$oAwWT5krFgj?V!BxPP_Xjy8;QHmjo^b^;iIVj42A*HXd-4>6(vKoPyO= zX3(FVzQs%F8IqDAux}6u*rc~s6t%VGg|7Mfqw8&w2$bH4Wcg1Gu8s$P(v=T1-@d9 z)7#}{JVj<3#%Md@HQ(HflBA=q4Dli{OMmBfdPTbFZKBXnpPbO;Z(tJ+)ZQrL1RCLv zz5*jIv1_lONNX7RPNRz`L>Ei|0UsGthVlQSe}#ZLSWKd&Va+t*5szJ!t~v?O`1ZZrq8GIu7x);Ch*TTtf^ccNXA8&-1IRVU>upy1~{`MiP(p1HaXh|SA8SE|~ z7|@$SM@rH;1^CloW+47y%%|@j@B##AkGq2bR6;g8+1BH$`M4OIE#C7fN@a$g0LEmOM#8K6AZxzlLif~F!7vV!@MC99b51{Odf^d>c&I3e8=+3X=^x;U z7>bDhhQY@@l8Bc46We6ULcZhF!b@>f@5gTh9GjFrUXhHoB@86r0n~rOTlozrg0?X z01vRod7J3fb)BzJlwIL*Bz;>P9XI9(mKP^uOQ^X{uu~x@V-*4FF=F8&B7w-5W!sOa zUtqreJ}Dl|sg0!V;KM@L@F=f|5B~2CyLUYpyVL~Q+j%CI?#81H_%^*yvth(kz?9`) zxUCjC`D7zm+ck0`0@~8nrzATilRvTa=k`tS{EhGT|4MWHpE<)2VNQOsO*dENW4s4@Im|K_QmiaypI`Tg+chM(HMk(w=^Ibm`0&0 z|Boj31T5|p=ARgC#xKB(THSfJ%CX;ccUwj%&4Vx}`gps(^Z43s9Q~_=ek0W?31xeY zU##8ePt>d3rY~WYS{XR%eRJ#Py8bEbY=mKs5#Ywn%*@z(c|G~F0P30&O=Y!Rg7DgohF^Um+pwj!P#&A@VHx0L4g7m-~3y?(g?^6lXnBf0H_lM0- z;TD#V`k(x4UVvAc-Ki(+20J7GLEFDEtJ~S@!|^wL^oP3kD}bQyiwaB+IJY5)Wr;)d z8ev=3*mxTXb7g)%_;0dcz*NG)AXlA#$xTC}Icwu={sfk z98?0@41##^&`m3q7pofn6%o^pd!$(pdHbj$4T>YbQUU_MV-S8|#>88JFJfnvrWqw+ z$1M@uWO=d5A}$+N@z($VF6r(61=tf&u-j-W(-5^=HXyq_3bD4^0j^x~E3V#b+4gE$ zdJg?SZ53L;z@&J8xr&sS@Zm@Zt}ZKCF>5Y{deHY3ZLmmozUGtpfM29y5x9eJpM2uf zPWFveM0Dn0JS97!7Z7L^Od^6sEn-A46RG$@=KwpGKZg9`f+sqY4TxA5eyhxXw9}{P0MkMH1~) z8^rPa`uekvu=)m>gU@=u3H=^&nkS;WY=OzLUSbfj#ZOnh)wPcX(HMn`%LS!r8i1^D zldywr#w1s4=J{ND$xvG7ooNrQdobq*c&v!ODr1o|y3e9UB2!ycfqSFy)kGzq2B88w zwi^tIktymu5aXOQpT*Ea<_nC}mtOgCjk5Agy;75bBY@~OF67FIt_%&&5LE*K7CEZ`yDKTbKZd5+whfYK|i zV$#EV5z*$Sjt~`S;uoP)cln1ysdUhPgvmEN*w(GaOkEG57&40&U*rlDEr2vy%VGq9 znnpS=YyWHp;!Wt5@PkI907h{Y>?|aJEb^>m9>owww23 zCCgL`^W-BdNt81z7i;z>=b|s_F?)&|qsVVhXOXY1z(fHmS6a#dvkuajha>`)=l`JdGv`ccWVIh#7=GhPZ^@ zb71&6>{;jRQ#p#A7oi&cw&9o=L!1cTrdv}HM0M{%{j0o($qcQ|f22R2S2VCC4>Jtt z7nvB-GjUb>L_$bc&L-eA|B~*6rZOw*urfr3h9~1p*yy;3n;znWLo?GI{~v8%FlVI5Z`qkCVr}YkJY+}kS?Q$Og#a<`H)LSVRf1igr<$Q2 zqb071jsf+ESochG;l^?Dy>n!i4dB6*8Pg%W;Y|UA3UjQt!mH$~{SVHDlZn zoF!HlQo^rt%+K}2NeFXtoS_N>nekPwL!7VsE)KZnVOROza2y|1hCXz_q!wP9_bLgi zpO=g#e7|##phZJNF`DY^@ROxME}}_477)Y}@;2>Z>sQqy*5^Jb&v*UgNqO*^5XSh6 zOWFNm66oc|6OuP~Mn_Lk^HHFUpE$5k<%uV2-0Z7;V4EH*8*;V26dTNO)zLwY|7&*& z9&%1+ociwEU)_ECwd>wJ+z`1YzpK9b?7ro|C5AF6n=tn5+vm4=^JZsv2fI}h*S}$8 zuv0R+E+yIekRfWqtEqZi-BJv!3r;^v)6SQapO^GXf`NgDA6$lq^lUb(O1In*o#Cos zKKGx^+*Ss5h8_W6=P|2mJ5Thpr?0=f65k|Sb)%QL;g*7)8TZ*we;y|b&i|%1_w25N zz=0(Zo*MAT&$sVe7rqzUAG@QX(a_<~N$v8flYRxB;R8n71a{EC7YM9?Z2khWNFTRG gtc(Oz^mH=q=YOLF|9Tla?*@>Cp00i_>zopr03@*%0RR91 literal 0 HcmV?d00001 diff --git a/bsp/renesas/ra6m3-hmi-board/docs/picture/lvgl/13.png b/bsp/renesas/ra6m3-hmi-board/docs/picture/lvgl/13.png new file mode 100644 index 0000000000000000000000000000000000000000..037318c39d64695b363bde3178bfb35ff1753c7e GIT binary patch literal 11663 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 jO@Q3<5~T9JLnHha#LF6IvhSOK^903GRM}Wbgf* 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 k<{9 literal 0 HcmV?d00001 diff --git a/bsp/renesas/ra6m3-hmi-board/docs/picture/lvgl/16.png b/bsp/renesas/ra6m3-hmi-board/docs/picture/lvgl/16.png new file mode 100644 index 0000000000000000000000000000000000000000..2a11ac9060bfef18624be4c9b2a87faa12560fdf GIT binary patch literal 4849 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 MIW^fT={JG@1KK4CHUIzs literal 0 HcmV?d00001 diff --git a/bsp/renesas/ra6m3-hmi-board/docs/picture/lvgl/tft-pin.png b/bsp/renesas/ra6m3-hmi-board/docs/picture/lvgl/tft-pin.png new file mode 100644 index 0000000000000000000000000000000000000000..ac3d5d10b6e2259a03e5718c1aa19eb60d224525 GIT binary patch literal 5295 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 + + + -6.1 + +

### uVision Project, (C) Keil Software
+ + + E:\workspace_work\rt-thread-5.0\bsp\renesas\ra6m3-ek + + + + + + + 38003 + Registers + 140 90 + + + 346 + Code Coverage + 1010 160 + + + 204 + Performance Analyzer + 1170 + + + + + + 35141 + Event Statistics + + 200 50 700 + + + 1506 + Symbols + + 80 80 80 + + + 1936 + Watch 1 + + 200 133 133 + + + 1937 + Watch 2 + + 200 133 133 + + + 1935 + Call Stack + Locals + + 200 133 133 + + + 2506 + Trace Data + + 75 135 130 95 70 230 200 150 + + + 466 + Source Browser - *** Not Enabled *** + 500 + 300 + + + + + + + + 0 + 0 + 0 + 50 + 16 + + + + + + + 44 + 2 + 3 + + -1 + -1 + + + -1 + -1 + + + -8 + -8 + 1928 + 1058 + + + + 0 + + 60 + 010000000400000001000000010000000100000001000000000000000200000000000000010000000100000000000000280000002800000000000000 + + + + 0 + Build + + -1 + -1 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F40000004F00000090050000E0000000 + + + 16 + F40000006600000090050000F7000000 + + + + 1005 + 1005 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 0300000066000000ED00000042030000 + + + 16 + 70000000870000006001000054010000 + + + + 109 + 109 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 0300000066000000ED00000042030000 + + + 16 + 70000000870000008C010000CE020000 + + + + 1465 + 1465 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000370200008D050000AC020000 + + + 16 + 70000000870000003803000018010000 + + + + 1466 + 1466 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000370200008D050000AC020000 + + + 16 + 70000000870000003803000018010000 + + + + 1467 + 1467 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000370200008D050000AC020000 + + + 16 + 70000000870000003803000018010000 + + + + 1468 + 1468 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000370200008D050000AC020000 + + + 16 + 70000000870000003803000018010000 + + + + 1506 + 1506 + 0 + 0 + 0 + 0 + 32767 + 0 + 16384 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 70000000870000006001000054010000 + + + + 1913 + 1913 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000008D050000C7000000 + + + 16 + 70000000870000003803000018010000 + + + + 1935 + 1935 + 0 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 03000000370200008D050000AC020000 + + + 16 + 70000000870000006001000054010000 + + + + 1936 + 1936 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000370200008D050000AC020000 + + + 16 + 70000000870000006001000054010000 + + + + 1937 + 1937 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000370200008D050000AC020000 + + + 16 + 70000000870000006001000054010000 + + + + 1939 + 1939 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000370200008D050000AC020000 + + + 16 + 70000000870000003803000018010000 + + + + 1940 + 1940 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000370200008D050000AC020000 + + + 16 + 70000000870000003803000018010000 + + + + 1941 + 1941 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000370200008D050000AC020000 + + + 16 + 70000000870000003803000018010000 + + + + 1942 + 1942 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000370200008D050000AC020000 + + + 16 + 70000000870000003803000018010000 + + + + 195 + 195 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 0300000066000000ED00000042030000 + + + 16 + 70000000870000008C010000CE020000 + + + + 196 + 196 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 0300000066000000ED00000042030000 + + + 16 + 70000000870000008C010000CE020000 + + + + 197 + 197 + 1 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 000000007303000080070000F0030000 + + + 16 + 70000000870000003803000018010000 + + + + 198 + 198 + 0 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 000000002002000090050000C5020000 + + + 16 + 70000000870000003803000018010000 + + + + 199 + 199 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000760300007D070000D7030000 + + + 16 + 70000000870000003803000018010000 + + + + 203 + 203 + 0 + 0 + 0 + 0 + 32767 + 0 + 8192 + 0 + + 16 + F7000000660000008D050000C7000000 + + + 16 + 70000000870000003803000018010000 + + + + 204 + 204 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000008D050000C7000000 + + + 16 + 70000000870000003803000018010000 + + + + 221 + 221 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 00000000000000000000000000000000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 2506 + 2506 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 70000000870000006001000054010000 + + + + 2507 + 2507 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000370200008D050000AC020000 + + + 16 + 70000000870000003803000018010000 + + + + 343 + 343 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000008D050000C7000000 + + + 16 + 70000000870000003803000018010000 + + + + 346 + 346 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000008D050000C7000000 + + + 16 + 70000000870000003803000018010000 + + + + 35141 + 35141 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000008D050000C7000000 + + + 16 + 70000000870000006001000054010000 + + + + 35824 + 35824 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000008D050000C7000000 + + + 16 + 70000000870000003803000018010000 + + + + 35885 + 35885 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 70000000870000006001000054010000 + + + + 35886 + 35886 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 70000000870000006001000054010000 + + + + 35887 + 35887 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 70000000870000006001000054010000 + + + + 35888 + 35888 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 70000000870000006001000054010000 + + + + 35889 + 35889 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 70000000870000006001000054010000 + + + + 35890 + 35890 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 70000000870000006001000054010000 + + + + 35891 + 35891 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 70000000870000006001000054010000 + + + + 35892 + 35892 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 70000000870000006001000054010000 + + + + 35893 + 35893 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 70000000870000006001000054010000 + + + + 35894 + 35894 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 70000000870000006001000054010000 + + + + 35895 + 35895 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 70000000870000006001000054010000 + + + + 35896 + 35896 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 70000000870000006001000054010000 + + + + 35897 + 35897 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 70000000870000006001000054010000 + + + + 35898 + 35898 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 70000000870000006001000054010000 + + + + 35899 + 35899 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 70000000870000006001000054010000 + + + + 35900 + 35900 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 70000000870000006001000054010000 + + + + 35901 + 35901 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 70000000870000006001000054010000 + + + + 35902 + 35902 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 70000000870000006001000054010000 + + + + 35903 + 35903 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 70000000870000006001000054010000 + + + + 35904 + 35904 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 70000000870000006001000054010000 + + + + 35905 + 35905 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 70000000870000006001000054010000 + + + + 38003 + 38003 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 0300000066000000ED00000042030000 + + + 16 + 70000000870000008C010000CE020000 + + + + 38007 + 38007 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000760300007D070000D7030000 + + + 16 + 70000000870000003803000018010000 + + + + 436 + 436 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000760300007D070000D7030000 + + + 16 + 70000000870000008C010000CE020000 + + + + 437 + 437 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000370200008D050000AC020000 + + + 16 + 70000000870000006001000054010000 + + + + 440 + 440 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000370200008D050000AC020000 + + + 16 + 70000000870000006001000054010000 + + + + 463 + 463 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000760300007D070000D7030000 + + + 16 + 70000000870000008C010000CE020000 + + + + 466 + 466 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000760300007D070000D7030000 + + + 16 + 70000000870000008C010000CE020000 + + + + 470 + 470 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000008D050000C7000000 + + + 16 + 70000000870000003803000018010000 + + + + 50000 + 50000 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 70000000870000006001000054010000 + + + + 50001 + 50001 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 70000000870000006001000054010000 + + + + 50002 + 50002 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 70000000870000006001000054010000 + + + + 50003 + 50003 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 70000000870000006001000054010000 + + + + 50004 + 50004 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 70000000870000006001000054010000 + + + + 50005 + 50005 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 70000000870000006001000054010000 + + + + 50006 + 50006 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 70000000870000006001000054010000 + + + + 50007 + 50007 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 70000000870000006001000054010000 + + + + 50008 + 50008 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 70000000870000006001000054010000 + + + + 50009 + 50009 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 70000000870000006001000054010000 + + + + 50010 + 50010 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 70000000870000006001000054010000 + + + + 50011 + 50011 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 70000000870000006001000054010000 + + + + 50012 + 50012 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 70000000870000006001000054010000 + + + + 50013 + 50013 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 70000000870000006001000054010000 + + + + 50014 + 50014 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 70000000870000006001000054010000 + + + + 50015 + 50015 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 70000000870000006001000054010000 + + + + 50016 + 50016 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 70000000870000006001000054010000 + + + + 50017 + 50017 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 70000000870000006001000054010000 + + + + 50018 + 50018 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 70000000870000006001000054010000 + + + + 50019 + 50019 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 70000000870000006001000054010000 + + + + 59392 + 59392 + 1 + 0 + 0 + 0 + 966 + 0 + 8192 + 0 + + 16 + 0000000000000000D10300001C000000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 59393 + 0 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 00000000F00300008007000003040000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 59399 + 59399 + 1 + 0 + 0 + 0 + 476 + 0 + 8192 + 1 + + 16 + 000000001C000000E701000038000000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 59400 + 59400 + 0 + 0 + 0 + 0 + 612 + 0 + 8192 + 2 + + 16 + 00000000380000006F02000054000000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 824 + 824 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000370200008D050000AC020000 + + + 16 + 70000000870000006001000054010000 + + + + 3334 + 000000000B000000000000000020000000000000FFFFFFFFFFFFFFFFF4000000E000000090050000E4000000000000000100000004000000010000000000000000000000FFFFFFFF08000000CB00000057010000CC000000F08B00005A01000079070000D601000045890000FFFF02000B004354616262656450616E650020000000000000F40000006600000090050000F7000000F40000004F00000090050000E00000000000000040280046080000000B446973617373656D626C7900000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFF0F53797374656D20416E616C797A657200000000D601000001000000FFFFFFFFFFFFFFFF104576656E742053746174697374696373000000004589000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFF9C0400004F000000A004000030020000000000000200000004000000010000000000000000000000FFFFFFFF2B000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C000050C3000051C3000052C3000053C3000054C3000055C3000056C3000057C3000058C3000059C300005AC300005BC300005CC300005DC300005EC300005FC3000060C3000061C3000062C3000063C3000001800040000000000000A0040000660000009005000047020000A00400004F000000900500003002000000000000404100462B0000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFF000000000050C3000001000000FFFFFFFFFFFFFFFF000000000051C3000001000000FFFFFFFFFFFFFFFF000000000052C3000001000000FFFFFFFFFFFFFFFF000000000053C3000001000000FFFFFFFFFFFFFFFF000000000054C3000001000000FFFFFFFFFFFFFFFF000000000055C3000001000000FFFFFFFFFFFFFFFF000000000056C3000001000000FFFFFFFFFFFFFFFF000000000057C3000001000000FFFFFFFFFFFFFFFF000000000058C3000001000000FFFFFFFFFFFFFFFF000000000059C3000001000000FFFFFFFFFFFFFFFF00000000005AC3000001000000FFFFFFFFFFFFFFFF00000000005BC3000001000000FFFFFFFFFFFFFFFF00000000005CC3000001000000FFFFFFFFFFFFFFFF00000000005DC3000001000000FFFFFFFFFFFFFFFF00000000005EC3000001000000FFFFFFFFFFFFFFFF00000000005FC3000001000000FFFFFFFFFFFFFFFF000000000060C3000001000000FFFFFFFFFFFFFFFF000000000061C3000001000000FFFFFFFFFFFFFFFF000000000062C3000001000000FFFFFFFFFFFFFFFF000000000063C3000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFFF00000004F000000F40000005B030000010000000200001004000000010000000000000000000000FFFFFFFF05000000ED0300006D000000C3000000C400000073940000018000100000010000000000000066000000F000000072030000000000004F000000F00000005B0300000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73010000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7301000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657301000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273000000007394000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000000000000FFFFFFFFFFFFFFFF000000001C020000900500002002000000000000010000000400000001000000000000000000000000000000000000000000000001000000C6000000FFFFFFFF0F0000008F070000930700009407000095070000960700009007000091070000B5010000B801000038030000B9050000BA050000BB050000BC050000CB09000001800080000000000000000000003702000090050000DC020000000000002002000090050000C502000000000000404100460F0000001343616C6C20537461636B202B204C6F63616C73000000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031000000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF09554C494E4B706C7573000000003803000001000000FFFFFFFFFFFFFFFF084D656D6F7279203100000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFFFFFFFFFF0000000001000000000000000000000001000000FFFFFFFFC802000020020000CC020000C502000000000000020000000400000000000000000000000000000000000000000000000000000002000000C6000000FFFFFFFF8F07000001000000FFFFFFFF8F07000001000000C6000000000000000080000001000000FFFFFFFFFFFFFFFF000000005B030000800700005F030000010000000100001004000000010000000000000000000000FFFFFFFF06000000C5000000C7000000B4010000D2010000CF010000779400000180008000000100000000000000760300008007000007040000000000005F03000080070000F00300000000000040820056060000000C4275696C64204F757470757401000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657300000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF24536F757263652042726F77736572202D202A2A2A204E6F7420456E61626C6564202A2A2A00000000D201000001000000FFFFFFFFFFFFFFFF0E416C6C205265666572656E63657300000000CF01000001000000FFFFFFFFFFFFFFFF0742726F77736572000000007794000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000000000000000000 + + + 59392 + File + + 2930 + 00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000400020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000004000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000004000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000004000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000004000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE80300000000040000000000000000000000000000000000000100000001000000960000000200205000000000124C45445F434F4E4E45435445445F504F525496000000000000001400124C45445F434F4E4E45435445445F504F525412496D6167652053796D626F6C205461626C65346378785F6372745F696E69742E6F282E746578742E2453756224245F5F6370705F696E697469616C697A655F5F61656162695F29185F5F6370705F696E697469616C697A655F5F61656162695F0A6472765F636F6D6D6F6E0C6378785F6372745F696E69741F72745F7468726561645F7377697463685F696E746572727570745F666C61670852575F4952414D310A307832343030303030300A307832343030303030340A307830383030333761340C41524D5F4C49425F48454150025A490A3078313030303732663508484541505F454E440C72745F70696E5F77726974650A535441434B5F53495A4506554E494E49540468656170087761726E696E67730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000004001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E2280000002000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B46350000000000000000000000000100000001000000000000000000000001000000020021802280000000000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B4635000000000000000000000000010000000100000000000000000000000100000000002180E0010000000000007500000021456E65726779204D6561737572656D656E742026776974686F75742044656275670000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000400160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000003002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000000002180E50100000000000078000000264B696C6C20416C6C20427265616B706F696E747320696E204163746976652050726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180E601000000000000790000002F4B696C6C20416C6C20427265616B706F696E747320696E204D756C74692D50726F6A65637420576F726B73706163650000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000021804C010000020001001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002180DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002180E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002180E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000218018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000021800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002180D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002180E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65C6030000 + + + 1423 + 2800FFFF01001100434D4643546F6F6C426172427574746F6E00E1000000000000FFFFFFFF000100000000000000010000000000000001000000018001E1000000000000FFFFFFFF000100000000000000010000000000000001000000018003E1000000000000FFFFFFFF0001000000000000000100000000000000010000000180CD7F000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF000000000000000000010000000000000001000000018023E1000000000000FFFFFFFF000100000000000000010000000000000001000000018022E1000000000000FFFFFFFF000100000000000000010000000000000001000000018025E1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001802BE1000000000000FFFFFFFF00010000000000000001000000000000000100000001802CE1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001807A8A000000000000FFFFFFFF00010000000000000001000000000000000100000001807B8A000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180D3B0000000000000FFFFFFFF000100000000000000010000000000000001000000018015B1000000000000FFFFFFFF0001000000000000000100000000000000010000000180F4B0000000000000FFFFFFFF000100000000000000010000000000000001000000018036B1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180FF88000000000000FFFFFFFF0001000000000000000100000000000000010000000180FE88000000000000FFFFFFFF00010000000000000001000000000000000100000001800B81000000000000FFFFFFFF00010000000000000001000000000000000100000001800C81000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180F088000000000000FFFFFFFF0001000000000000000100000000000000010000000180EE7F000000000000FFFFFFFF000100000000000000010000000000000001000000018024E1000000000000FFFFFFFF00010000000000000001000000000000000100000001800A81000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001802280000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180C488000000000000FFFFFFFF0001000000000000000100000000000000010000000180C988000000000000FFFFFFFF0001000000000000000100000000000000010000000180C788000000000000FFFFFFFF0001000000000000000100000000000000010000000180C888000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180DD88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180FB7F000000000000FFFFFFFF000100000000000000010000000000000001000000 + + + 1423 + 2800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000000004000000000000000000000000000000000100000001000000018022E100000000000005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000000000700000000000000000000000000000000010000000100000001802CE10000000000000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000000000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000000000C0000000000000000000000000000000001000000010000000180F4B00000000000000D000000000000000000000000000000000100000001000000018036B10000000000000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF880000000000000F0000000000000000000000000000000001000000010000000180FE880000000000001000000000000000000000000000000000010000000100000001800B810000000000001100000000000000000000000000000000010000000100000001800C810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F088000000000000130000000000000000000000000000000001000000010000000180EE7F00000000000014000000000000000000000000000000000100000001000000018024E10000000000001500000000000000000000000000000000010000000100000001800A810000000000001600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018022800000000000001700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000180000000000000000000000000000000001000000010000000180C988000000000000190000000000000000000000000000000001000000010000000180C7880000000000001A0000000000000000000000000000000001000000010000000180C8880000000000001B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180DD880000000000001C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001D000000000000000000000000000000000100000001000000 + + + + 59399 + Build + + 976 + 00200000010000001000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F0000000004001C0000000000000000000000000000000001000000010000000180D07F0000000000001D000000000000000000000000000000000100000001000000018030800000000000001E000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6EC7040000000000006A0000000C4261746368204275696C2664000000000000000000000000010000000100000000000000000000000100000004000580C7040000000000006A0000000C4261746368204275696C266400000000000000000000000001000000010000000000000000000000010000000000058046070000000000006B0000000D42617463682052656275696C640000000000000000000000000100000001000000000000000000000001000000000005804707000000000000FFFFFFFF0B426174636820436C65616E0100000000000000000000000100000001000000000000000000000001000000000005809E8A0000000000001F0000000F4261746326682053657475702E2E2E000000000000000000000000010000000100000000000000000000000100000000000180D17F0000000004002000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000002100000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6EBA000000000000000000000000000000000000000000000000010000000100000096000000030020500000000008546172676574203196000000000000000100085461726765742031000000000180EB880000000000002200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000230000000000000000000000000000000001000000010000000180B08A000000000400240000000000000000000000000000000001000000010000000180A8010000000000004E00000000000000000000000000000000010000000100000001807202000000000000530000000000000000000000000000000001000000010000000180BE010000000000005000000000000000000000000000000000010000000100000000000000054275696C64DC010000 + + + 583 + 1000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F000000000000FFFFFFFF0001000000000000000100000000000000010000000180D07F000000000000FFFFFFFF00010000000000000001000000000000000100000001803080000000000000FFFFFFFF00010000000000000001000000000000000100000001809E8A000000000000FFFFFFFF0001000000000000000100000000000000010000000180D17F000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001804C8A000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001806680000000000000FFFFFFFF0001000000000000000100000000000000010000000180EB88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180C07F000000000000FFFFFFFF0001000000000000000100000000000000010000000180B08A000000000000FFFFFFFF0001000000000000000100000000000000010000000180A801000000000000FFFFFFFF00010000000000000001000000000000000100000001807202000000000000FFFFFFFF0001000000000000000100000000000000010000000180BE01000000000000FFFFFFFF000100000000000000010000000000000001000000 + + + 583 + 1000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F000000000000000000000000000000000000000000000001000000010000000180D07F00000000000001000000000000000000000000000000000100000001000000018030800000000000000200000000000000000000000000000000010000000100000001809E8A000000000000030000000000000000000000000000000001000000010000000180D17F0000000000000400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000000500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001806680000000000000060000000000000000000000000000000001000000010000000180EB880000000000000700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000080000000000000000000000000000000001000000010000000180B08A000000000000090000000000000000000000000000000001000000010000000180A8010000000000000A000000000000000000000000000000000100000001000000018072020000000000000B0000000000000000000000000000000001000000010000000180BE010000000000000C000000000000000000000000000000000100000001000000 + + + + 59400 + Debug + + 2373 + 00200000000000001900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000000002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000000002A00000000000000000000000000000000010000000100000001801C800000000000002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000000000002D0000000000000000000000000000000001000000010000000180F07F0000000000002E0000000000000000000000000000000001000000010000000180E8880000000000003700000000000000000000000000000000010000000100000001803B010000000000002F0000000000000000000000000000000001000000010000000180BB8A00000000000030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000000000000310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380D88B00000000000031000000085761746368202631000000000000000000000000010000000100000000000000000000000100000000001380D98B00000000000031000000085761746368202632000000000000000000000000010000000100000000000000000000000100000000001380CE01000000000000FFFFFFFF0C576174636820416E63686F720000000000000000010000000000000001000000000000000000000001000000000013800F01000000000000320000000E4D656D6F72792057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000094D656D6F7279202632000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000094D656D6F7279202633000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000094D656D6F72792026340000000000000000000000000100000001000000000000000000000001000000000013801001000000000000330000000E53657269616C2057696E646F77730000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000000013809407000000000000330000000855415254202326320000000000000000000000000100000001000000000000000000000001000000000013809507000000000000330000000855415254202326330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000001626446562756720287072696E746629205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000000000007200000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380658A000000000000340000000F264C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E0000001526506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000E26436F646520436F766572616765000000000000000000000000010000000100000000000000000000000100000000001380CD01000000000000FFFFFFFF0F416E616C7973697320416E63686F7200000000000000000100000000000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720000000000000000010000000000000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720000000000000000010000000000000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000013800189000000000000360000000F26546F6F6C626F782057696E646F7700000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730000000000000000010000000000000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000010000000000000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F72000000000000000001000000000000000100000000000000000000000100000000000000000005446562756764020000 + + + 898 + 1900FFFF01001100434D4643546F6F6C426172427574746F6ECC88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001801780000000000000FFFFFFFF00010000000000000001000000000000000100000001801D80000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001801A80000000000000FFFFFFFF00010000000000000001000000000000000100000001801B80000000000000FFFFFFFF0001000000000000000100000000000000010000000180E57F000000000000FFFFFFFF00010000000000000001000000000000000100000001801C80000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001800089000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180E48B000000000000FFFFFFFF0001000000000000000100000000000000010000000180F07F000000000000FFFFFFFF0001000000000000000100000000000000010000000180E888000000000000FFFFFFFF00010000000000000001000000000000000100000001803B01000000000000FFFFFFFF0001000000000000000100000000000000010000000180BB8A000000000000FFFFFFFF0001000000000000000100000000000000010000000180D88B000000000000FFFFFFFF0001000000000000000100000000000000010000000180D28B000000000000FFFFFFFF00010000000000000001000000000000000100000001809307000000000000FFFFFFFF0001000000000000000100000000000000010000000180658A000000000000FFFFFFFF0001000000000000000100000000000000010000000180C18A000000000000FFFFFFFF0001000000000000000100000000000000010000000180EE8B000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001800189000000000000FFFFFFFF000100000000000000010000000000000001000000 + + + 898 + 1900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000000000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000000100000000000000000000000000000000010000000100000001801D800000000000000200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000000300000000000000000000000000000000010000000100000001801B80000000000000040000000000000000000000000000000001000000010000000180E57F0000000000000500000000000000000000000000000000010000000100000001801C800000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000000700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B000000000000080000000000000000000000000000000001000000010000000180F07F000000000000090000000000000000000000000000000001000000010000000180E8880000000000000A00000000000000000000000000000000010000000100000001803B010000000000000B0000000000000000000000000000000001000000010000000180BB8A0000000000000C0000000000000000000000000000000001000000010000000180D88B0000000000000D0000000000000000000000000000000001000000010000000180D28B0000000000000E000000000000000000000000000000000100000001000000018093070000000000000F0000000000000000000000000000000001000000010000000180658A000000000000100000000000000000000000000000000001000000010000000180C18A000000000000110000000000000000000000000000000001000000010000000180EE8B0000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180018900000000000013000000000000000000000000000000000100000001000000 + + + + 0 + 1920 + 1080 + + + + 1 + Debug + + -1 + -1 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 650100005A030000DC050000F0030000 + + + 16 + 6501000071030000DC05000007040000 + + + + 1005 + 1005 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000660000005E010000D7030000 + + + 16 + A4000000BB0000009401000088010000 + + + + 109 + 109 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000660000005E010000D7030000 + + + 16 + A4000000BB000000C001000002030000 + + + + 1465 + 1465 + 1 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + E3050000660000007D070000D7030000 + + + 16 + 1B07000020020000AB0C0000C5020000 + + + + 1466 + 1466 + 0 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + E3050000660000007D070000D7030000 + + + 16 + 1B07000020020000AB0C0000C5020000 + + + + 1467 + 1467 + 0 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + E3050000660000007D070000D7030000 + + + 16 + 1B07000020020000AB0C0000C5020000 + + + + 1468 + 1468 + 0 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + E3050000660000007D070000D7030000 + + + 16 + 1B07000020020000AB0C0000C5020000 + + + + 1506 + 1506 + 0 + 0 + 0 + 0 + 32767 + 0 + 16384 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + A4000000BB0000009401000088010000 + + + + 1913 + 1913 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 6801000066000000D9050000C7000000 + + + 16 + A4000000BB0000006C0300004C010000 + + + + 1935 + 1935 + 1 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + E3050000660000007D070000D7030000 + + + 16 + 1B07000020020000AB0C0000C5020000 + + + + 1936 + 1936 + 1 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + E3050000660000007D070000D7030000 + + + 16 + 1B07000020020000AB0C0000C5020000 + + + + 1937 + 1937 + 0 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + E3050000660000007D070000D7030000 + + + 16 + 1B07000020020000AB0C0000C5020000 + + + + 1939 + 1939 + 0 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + E3050000660000007D070000D7030000 + + + 16 + 1B07000020020000AB0C0000C5020000 + + + + 1940 + 1940 + 0 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + E3050000660000007D070000D7030000 + + + 16 + 1B07000020020000AB0C0000C5020000 + + + + 1941 + 1941 + 0 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + E3050000660000007D070000D7030000 + + + 16 + 1B07000020020000AB0C0000C5020000 + + + + 1942 + 1942 + 0 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + E3050000660000007D070000D7030000 + + + 16 + 1B07000020020000AB0C0000C5020000 + + + + 195 + 195 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000660000005E010000D7030000 + + + 16 + A4000000BB000000C001000002030000 + + + + 196 + 196 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000660000005E010000D7030000 + + + 16 + A4000000BB000000C001000002030000 + + + + 197 + 197 + 1 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 6801000071030000D9050000D7030000 + + + 16 + A4000000BB0000006C0300004C010000 + + + + 198 + 198 + 0 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 000000004B030000DC050000F0030000 + + + 16 + A4000000BB0000006C0300004C010000 + + + + 199 + 199 + 1 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 6801000071030000D9050000D7030000 + + + 16 + A4000000BB0000006C0300004C010000 + + + + 203 + 203 + 0 + 0 + 0 + 0 + 32767 + 0 + 8192 + 0 + + 16 + 6801000066000000D9050000C7000000 + + + 16 + A4000000BB0000006C0300004C010000 + + + + 204 + 204 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 6801000066000000D9050000C7000000 + + + 16 + A4000000BB0000006C0300004C010000 + + + + 221 + 221 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 00000000000000000000000000000000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 2506 + 2506 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + A4000000BB0000009401000088010000 + + + + 2507 + 2507 + 0 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + E3050000660000007D070000D7030000 + + + 16 + 1B07000020020000AB0C0000C5020000 + + + + 343 + 343 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 6801000066000000D9050000C7000000 + + + 16 + A4000000BB0000006C0300004C010000 + + + + 346 + 346 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 6801000066000000D9050000C7000000 + + + 16 + A4000000BB0000006C0300004C010000 + + + + 35141 + 35141 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 6801000066000000D9050000C7000000 + + + 16 + A4000000BB0000009401000088010000 + + + + 35824 + 35824 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 6801000066000000D9050000C7000000 + + + 16 + A4000000BB0000006C0300004C010000 + + + + 35885 + 35885 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + A4000000BB0000009401000088010000 + + + + 35886 + 35886 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + A4000000BB0000009401000088010000 + + + + 35887 + 35887 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + A4000000BB0000009401000088010000 + + + + 35888 + 35888 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + A4000000BB0000009401000088010000 + + + + 35889 + 35889 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + A4000000BB0000009401000088010000 + + + + 35890 + 35890 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + A4000000BB0000009401000088010000 + + + + 35891 + 35891 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + A4000000BB0000009401000088010000 + + + + 35892 + 35892 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + A4000000BB0000009401000088010000 + + + + 35893 + 35893 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + A4000000BB0000009401000088010000 + + + + 35894 + 35894 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + A4000000BB0000009401000088010000 + + + + 35895 + 35895 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + A4000000BB0000009401000088010000 + + + + 35896 + 35896 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + A4000000BB0000009401000088010000 + + + + 35897 + 35897 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + A4000000BB0000009401000088010000 + + + + 35898 + 35898 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + A4000000BB0000009401000088010000 + + + + 35899 + 35899 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + A4000000BB0000009401000088010000 + + + + 35900 + 35900 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + A4000000BB0000009401000088010000 + + + + 35901 + 35901 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + A4000000BB0000009401000088010000 + + + + 35902 + 35902 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + A4000000BB0000009401000088010000 + + + + 35903 + 35903 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + A4000000BB0000009401000088010000 + + + + 35904 + 35904 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + A4000000BB0000009401000088010000 + + + + 35905 + 35905 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + A4000000BB0000009401000088010000 + + + + 38003 + 38003 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000660000005E010000D7030000 + + + 16 + A4000000BB000000C001000002030000 + + + + 38007 + 38007 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000410300007D070000D7030000 + + + 16 + A4000000BB0000006C0300004C010000 + + + + 436 + 436 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000410300007D070000D7030000 + + + 16 + A4000000BB000000C001000002030000 + + + + 437 + 437 + 0 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + E3050000660000007D070000D7030000 + + + 16 + 1B07000020020000AB0C0000C5020000 + + + + 440 + 440 + 0 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + E3050000660000007D070000D7030000 + + + 16 + 1B07000020020000AB0C0000C5020000 + + + + 463 + 463 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000410300007D070000D7030000 + + + 16 + A4000000BB000000C001000002030000 + + + + 466 + 466 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000410300007D070000D7030000 + + + 16 + A4000000BB000000C001000002030000 + + + + 470 + 470 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 6801000066000000D9050000C7000000 + + + 16 + A4000000BB0000006C0300004C010000 + + + + 50000 + 50000 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + A4000000BB0000009401000088010000 + + + + 50001 + 50001 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + A4000000BB0000009401000088010000 + + + + 50002 + 50002 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + A4000000BB0000009401000088010000 + + + + 50003 + 50003 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + A4000000BB0000009401000088010000 + + + + 50004 + 50004 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 50005 + 50005 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + A4000000BB0000009401000088010000 + + + + 50006 + 50006 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + A4000000BB0000009401000088010000 + + + + 50007 + 50007 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + A4000000BB0000009401000088010000 + + + + 50008 + 50008 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + A4000000BB0000009401000088010000 + + + + 50009 + 50009 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + A4000000BB0000009401000088010000 + + + + 50010 + 50010 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + A4000000BB0000009401000088010000 + + + + 50011 + 50011 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + A4000000BB0000009401000088010000 + + + + 50012 + 50012 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + A4000000BB0000009401000088010000 + + + + 50013 + 50013 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + A4000000BB0000009401000088010000 + + + + 50014 + 50014 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + A4000000BB0000009401000088010000 + + + + 50015 + 50015 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + A4000000BB0000009401000088010000 + + + + 50016 + 50016 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + A4000000BB0000009401000088010000 + + + + 50017 + 50017 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + A4000000BB0000009401000088010000 + + + + 50018 + 50018 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + A4000000BB0000009401000088010000 + + + + 50019 + 50019 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + A4000000BB0000009401000088010000 + + + + 59392 + 59392 + 1 + 0 + 0 + 0 + 966 + 0 + 8192 + 0 + + 16 + 0100000000000000D20300001C000000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 59393 + 0 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 00000000F00300008007000003040000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 59399 + 59399 + 0 + 0 + 0 + 0 + 476 + 0 + 8192 + 1 + + 16 + 000000001C000000E701000038000000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 59400 + 59400 + 1 + 0 + 0 + 0 + 612 + 0 + 8192 + 2 + + 16 + 000000001C0000006F02000038000000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 824 + 824 + 0 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + E3050000660000007D070000D7030000 + + + 16 + 1B07000020020000AB0C0000C5020000 + + + + 3608 + 000000000E000000000000000080000001000000FFFFFFFFFFFFFFFF6501000056030000DC0500005A030000010000000100001004000000010000000000000000000000FFFFFFFF02000000C5000000C7000000FFFF02000B004354616262656450616E6500800000010000006501000071030000DC05000007040000650100005A030000DC050000F00300000000000040820056020000000C4275696C64204F757470757401000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657301000000C700000001000000FFFFFFFFFFFFFFFF01000000000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000020000000000000FFFFFFFFFFFFFFFF65010000E0000000DC050000E4000000000000000100000004000000010000000000000000000000FFFFFFFF08000000CB00000057010000CC000000F08B00005A01000079070000D601000045890000018000200000000000006501000066000000DC050000F7000000650100004F000000DC050000E00000000000000040280046080000000B446973617373656D626C7900000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFF0F53797374656D20416E616C797A657200000000D601000001000000FFFFFFFFFFFFFFFF104576656E742053746174697374696373000000004589000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFF9C0400004F000000A004000030020000000000000200000004000000010000000000000000000000FFFFFFFF2B000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C000050C3000051C3000052C3000053C3000054C3000055C3000056C3000057C3000058C3000059C300005AC300005BC300005CC300005DC300005EC300005FC3000060C3000061C3000062C3000063C3000001800040000000000000A0040000660000009005000047020000A00400004F000000900500003002000000000000404100462B0000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFF000000000050C3000001000000FFFFFFFFFFFFFFFF000000000051C3000001000000FFFFFFFFFFFFFFFF000000000052C3000001000000FFFFFFFFFFFFFFFF000000000053C3000001000000FFFFFFFFFFFFFFFF000000000054C3000001000000FFFFFFFFFFFFFFFF000000000055C3000001000000FFFFFFFFFFFFFFFF000000000056C3000001000000FFFFFFFFFFFFFFFF000000000057C3000001000000FFFFFFFFFFFFFFFF000000000058C3000001000000FFFFFFFFFFFFFFFF000000000059C3000001000000FFFFFFFFFFFFFFFF00000000005AC3000001000000FFFFFFFFFFFFFFFF00000000005BC3000001000000FFFFFFFFFFFFFFFF00000000005CC3000001000000FFFFFFFFFFFFFFFF00000000005DC3000001000000FFFFFFFFFFFFFFFF00000000005EC3000001000000FFFFFFFFFFFFFFFF00000000005FC3000001000000FFFFFFFFFFFFFFFF000000000060C3000001000000FFFFFFFFFFFFFFFF000000000061C3000001000000FFFFFFFFFFFFFFFF000000000062C3000001000000FFFFFFFFFFFFFFFF000000000063C3000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFF610100004F00000065010000F00300000100000002000010040000000100000082FEFFFFF7050000FFFFFFFF05000000ED0300006D000000C3000000C4000000739400000180001000000100000000000000660000006101000007040000000000004F00000061010000F00300000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73010000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7301000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657301000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273000000007394000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000000000000FFFFFFFFFFFFFFFF0000000047030000DC0500004B03000000000000010000000400000001000000000000000000000000000000000000000000000001000000C60000000000000001000000000000000000000001000000FFFFFFFFC802000020020000CC020000C502000000000000020000000400000000000000000000000000000000000000000000000000000001000000C600000001000000C6000000000000000080000000000000FFFFFFFFFFFFFFFF0000000026030000800700002A0300000000000001000000040000000100000043FDFFFFD9000000FFFFFFFF04000000B4010000D2010000CF010000779400000180008000000000000000000000410300008007000007040000000000002A03000080070000F00300000000000040820046040000000A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF24536F757263652042726F77736572202D202A2A2A204E6F7420456E61626C6564202A2A2A00000000D201000001000000FFFFFFFFFFFFFFFF0E416C6C205265666572656E63657300000000CF01000001000000FFFFFFFFFFFFFFFF0742726F77736572000000007794000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFB401000001000000FFFFFFFFB4010000000000000040000001000000FFFFFFFFFFFFFFFFDC0500004F000000E0050000F003000001000000020000100400000001000000FBFCFFFF0B03000000000000000000000000000001000000FFFFFFFF0F0000008F070000930700009407000095070000960700009007000091070000B5010000B801000038030000B9050000BA050000BB050000BC050000CB09000001800040000001000000E0050000660000008007000007040000E00500004F00000080070000F003000000000000404100560F0000001343616C6C20537461636B202B204C6F63616C73010000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031010000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF09554C494E4B706C7573000000003803000001000000FFFFFFFFFFFFFFFF084D656D6F7279203101000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFF0000000000000000000000000000000000000000000000000000000001000000FFFFFFFF8F07000001000000FFFFFFFF8F070000000000000000000000000000 + + + 59392 + File + + 2732 + 00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000004000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE8030000000000000000000000000000000000000000000000010000000100000096000000020020500000000012496D6167652053796D626F6C205461626C659600000000000000060012496D6167652053796D626F6C205461626C65346378785F6372745F696E69742E6F282E746578742E2453756224245F5F6370705F696E697469616C697A655F5F61656162695F29185F5F6370705F696E697469616C697A655F5F61656162695F0A6472765F636F6D6D6F6E0C6378785F6372745F696E69741F72745F7468726561645F7377697463685F696E746572727570745F666C6167000000000000000000000000000000000000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E2280000002000300150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B46350000000000000000000000000100000001000000000000000000000001000000020021802280000000000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B4635000000000000000000000000010000000100000000000000000000000100000000002180E0010000000000007500000021456E65726779204D6561737572656D656E742026776974686F75742044656275670000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000003002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000000002180E50100000000000078000000264B696C6C20416C6C20427265616B706F696E747320696E204163746976652050726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180E601000000000000790000002F4B696C6C20416C6C20427265616B706F696E747320696E204D756C74692D50726F6A65637420576F726B73706163650000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000021804C010000020001001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002180DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002180E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002180E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000218018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000021800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002180D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002180E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65C6030000 + + + 1423 + 2800FFFF01001100434D4643546F6F6C426172427574746F6E00E1000000000000FFFFFFFF000100000000000000010000000000000001000000018001E1000000000000FFFFFFFF000100000000000000010000000000000001000000018003E1000000000000FFFFFFFF0001000000000000000100000000000000010000000180CD7F000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF000000000000000000010000000000000001000000018023E1000000000000FFFFFFFF000100000000000000010000000000000001000000018022E1000000000000FFFFFFFF000100000000000000010000000000000001000000018025E1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001802BE1000000000000FFFFFFFF00010000000000000001000000000000000100000001802CE1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001807A8A000000000000FFFFFFFF00010000000000000001000000000000000100000001807B8A000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180D3B0000000000000FFFFFFFF000100000000000000010000000000000001000000018015B1000000000000FFFFFFFF0001000000000000000100000000000000010000000180F4B0000000000000FFFFFFFF000100000000000000010000000000000001000000018036B1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180FF88000000000000FFFFFFFF0001000000000000000100000000000000010000000180FE88000000000000FFFFFFFF00010000000000000001000000000000000100000001800B81000000000000FFFFFFFF00010000000000000001000000000000000100000001800C81000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180F088000000000000FFFFFFFF0001000000000000000100000000000000010000000180EE7F000000000000FFFFFFFF000100000000000000010000000000000001000000018024E1000000000000FFFFFFFF00010000000000000001000000000000000100000001800A81000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001802280000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180C488000000000000FFFFFFFF0001000000000000000100000000000000010000000180C988000000000000FFFFFFFF0001000000000000000100000000000000010000000180C788000000000000FFFFFFFF0001000000000000000100000000000000010000000180C888000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180DD88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180FB7F000000000000FFFFFFFF000100000000000000010000000000000001000000 + + + 1423 + 2800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000000004000000000000000000000000000000000100000001000000018022E100000000000005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000000000700000000000000000000000000000000010000000100000001802CE10000000000000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000000000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000000000C0000000000000000000000000000000001000000010000000180F4B00000000000000D000000000000000000000000000000000100000001000000018036B10000000000000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF880000000000000F0000000000000000000000000000000001000000010000000180FE880000000000001000000000000000000000000000000000010000000100000001800B810000000000001100000000000000000000000000000000010000000100000001800C810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F088000000000000130000000000000000000000000000000001000000010000000180EE7F00000000000014000000000000000000000000000000000100000001000000018024E10000000000001500000000000000000000000000000000010000000100000001800A810000000000001600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018022800000000000001700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000180000000000000000000000000000000001000000010000000180C988000000000000190000000000000000000000000000000001000000010000000180C7880000000000001A0000000000000000000000000000000001000000010000000180C8880000000000001B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180DD880000000000001C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001D000000000000000000000000000000000100000001000000 + + + + 59399 + Build + + 976 + 00200000000000001000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F0000000004001C0000000000000000000000000000000001000000010000000180D07F0000000004001D000000000000000000000000000000000100000001000000018030800000000004001E000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6EC7040000000004006A0000000C4261746368204275696C2664000000000000000000000000010000000100000000000000000000000100000004000580C7040000000000006A0000000C4261746368204275696C266400000000000000000000000001000000010000000000000000000000010000000000058046070000000000006B0000000D42617463682052656275696C640000000000000000000000000100000001000000000000000000000001000000000005804707000000000000FFFFFFFF0B426174636820436C65616E0000000000000000010000000000000001000000000000000000000001000000000005809E8A0000000000001F0000000F4261746326682053657475702E2E2E000000000000000000000000010000000100000000000000000000000100000000000180D17F0000000004002000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000004002100000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6EBA000000000004000000000000000000000000000000000000010000000100000096000000030020500000000008546172676574203196000000000000000100085461726765742031000000000180EB880000000004002200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000400230000000000000000000000000000000001000000010000000180B08A000000000400240000000000000000000000000000000001000000010000000180A8010000000004004E00000000000000000000000000000000010000000100000001807202000000000400530000000000000000000000000000000001000000010000000180BE010000000004005000000000000000000000000000000000010000000100000000000000054275696C64DC010000 + + + 583 + 1000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F000000000000FFFFFFFF0001000000000000000100000000000000010000000180D07F000000000000FFFFFFFF00010000000000000001000000000000000100000001803080000000000000FFFFFFFF00010000000000000001000000000000000100000001809E8A000000000000FFFFFFFF0001000000000000000100000000000000010000000180D17F000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001804C8A000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001806680000000000000FFFFFFFF0001000000000000000100000000000000010000000180EB88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180C07F000000000000FFFFFFFF0001000000000000000100000000000000010000000180B08A000000000000FFFFFFFF0001000000000000000100000000000000010000000180A801000000000000FFFFFFFF00010000000000000001000000000000000100000001807202000000000000FFFFFFFF0001000000000000000100000000000000010000000180BE01000000000000FFFFFFFF000100000000000000010000000000000001000000 + + + 583 + 1000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F000000000000000000000000000000000000000000000001000000010000000180D07F00000000000001000000000000000000000000000000000100000001000000018030800000000000000200000000000000000000000000000000010000000100000001809E8A000000000000030000000000000000000000000000000001000000010000000180D17F0000000000000400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000000500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001806680000000000000060000000000000000000000000000000001000000010000000180EB880000000000000700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000080000000000000000000000000000000001000000010000000180B08A000000000000090000000000000000000000000000000001000000010000000180A8010000000000000A000000000000000000000000000000000100000001000000018072020000000000000B0000000000000000000000000000000001000000010000000180BE010000000000000C000000000000000000000000000000000100000001000000 + + + + 59400 + Debug + + 2362 + 00200000010000001900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000004002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000000002A00000000000000000000000000000000010000000100000001801C800000000000002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000020000002D0000000000000000000000000000000001000000010000000180F07F0000020000002E0000000000000000000000000000000001000000010000000180E8880000020000003700000000000000000000000000000000010000000100000001803B010000020000002F0000000000000000000000000000000001000000010000000180BB8A00000200010030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000002000100310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380D88B00000000000031000000085761746368202631000000000000000000000000010000000100000000000000000000000100000000001380D98B00000000000031000000085761746368202632000000000000000000000000010000000100000000000000000000000100000000001380CE01000000000000FFFFFFFF0C576174636820416E63686F720100000000000000010000000000000001000000000000000000000001000000000013800F0100000200010032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000094D656D6F7279202632000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000094D656D6F7279202633000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000094D656D6F72792026340000000000000000000000000100000001000000000000000000000001000000000013801001000002000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000000013809407000000000000330000000855415254202326320000000000000000000000000100000001000000000000000000000001000000000013809507000000000000330000000855415254202326330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000001626446562756720287072696E746629205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000000000007200000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380658A000000000000340000000F264C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E0000001526506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000E26436F646520436F766572616765000000000000000000000000010000000100000000000000000000000100000000001380CD01000000000000FFFFFFFF0F416E616C7973697320416E63686F7201000000000000000100000000000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720100000000000000010000000000000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720100000000000000010000000000000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000013800189000002000000360000000F26546F6F6C626F782057696E646F7700000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730100000000000000010000000000000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000010000000000000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F72010000000000000001000000000000000100000000000000000000000100000000000000000005446562756764020000 + + + 898 + 1900FFFF01001100434D4643546F6F6C426172427574746F6ECC88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001801780000000000000FFFFFFFF00010000000000000001000000000000000100000001801D80000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001801A80000000000000FFFFFFFF00010000000000000001000000000000000100000001801B80000000000000FFFFFFFF0001000000000000000100000000000000010000000180E57F000000000000FFFFFFFF00010000000000000001000000000000000100000001801C80000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001800089000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180E48B000000000000FFFFFFFF0001000000000000000100000000000000010000000180F07F000000000000FFFFFFFF0001000000000000000100000000000000010000000180E888000000000000FFFFFFFF00010000000000000001000000000000000100000001803B01000000000000FFFFFFFF0001000000000000000100000000000000010000000180BB8A000000000000FFFFFFFF0001000000000000000100000000000000010000000180D88B000000000000FFFFFFFF0001000000000000000100000000000000010000000180D28B000000000000FFFFFFFF00010000000000000001000000000000000100000001809307000000000000FFFFFFFF0001000000000000000100000000000000010000000180658A000000000000FFFFFFFF0001000000000000000100000000000000010000000180C18A000000000000FFFFFFFF0001000000000000000100000000000000010000000180EE8B000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001800189000000000000FFFFFFFF000100000000000000010000000000000001000000 + + + 898 + 1900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000000000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000000100000000000000000000000000000000010000000100000001801D800000000000000200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000000300000000000000000000000000000000010000000100000001801B80000000000000040000000000000000000000000000000001000000010000000180E57F0000000000000500000000000000000000000000000000010000000100000001801C800000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000000700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B000000000000080000000000000000000000000000000001000000010000000180F07F000000000000090000000000000000000000000000000001000000010000000180E8880000000000000A00000000000000000000000000000000010000000100000001803B010000000000000B0000000000000000000000000000000001000000010000000180BB8A0000000000000C0000000000000000000000000000000001000000010000000180D88B0000000000000D0000000000000000000000000000000001000000010000000180D28B0000000000000E000000000000000000000000000000000100000001000000018093070000000000000F0000000000000000000000000000000001000000010000000180658A000000000000100000000000000000000000000000000001000000010000000180C18A000000000000110000000000000000000000000000000001000000010000000180EE8B0000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180018900000000000013000000000000000000000000000000000100000001000000 + + + + 0 + 1920 + 1080 + + + + + diff --git a/bsp/renesas/ra6m3-hmi-board/project.uvoptx b/bsp/renesas/ra6m3-hmi-board/project.uvoptx new file mode 100644 index 0000000000..660ea9d106 --- /dev/null +++ b/bsp/renesas/ra6m3-hmi-board/project.uvoptx @@ -0,0 +1,762 @@ + + + + 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 + 3 + + + + + + + + + + + BIN\CMSIS_AGDI.dll + + + + 0 + CMSIS_AGDI + -X"Any" -UAny -O206 -S0 -C0 -P00000000 -N00("ARM CoreSight SW-DP") -D00(5BA02477) -L00(0) -TO65554 -TC10000000 -TT10000000 -TP20 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO15 -FD20000000 -FC2000 -FN3 -FF0RA6M3_2M.FLM -FS00 -FL0200000 -FP0($$Device:R7FA6M3AH$Flash\RA6M3_2M.FLM) -FF1RA6M3_DATA_C2M.FLM -FS140100000 -FL110000 -FP1($$Device:R7FA6M3AH$Flash\RA6M3_DATA_C2M.FLM) -FF2RA6M3_CONF.FLM -FS2100A100 -FL280 -FP2($$Device:R7FA6M3AH$Flash\RA6M3_CONF.FLM) + + + 0 + UL2CM3 + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC2000 -FN3 -FF0RA6M3_2M -FS00 -FL0200000 -FF1RA6M3_DATA_C2M -FS140100000 -FL110000 -FF2RA6M3_CONF -FS2100A100 -FL280 -FP0($$Device:R7FA6M3AH$Flash\RA6M3_2M.FLM) -FP1($$Device:R7FA6M3AH$Flash\RA6M3_DATA_C2M.FLM) -FP2($$Device:R7FA6M3AH$Flash\RA6M3_CONF.FLM)) + + + 0 + JL2CM3 + -U831004110 -O78 -S2 -ZTIFSpeedSel5000 -A0 -C0 -JU1 -JI127.0.0.1 -JP0 -RST0 -N00("ARM CoreSight SW-DP") -D00(5BA02477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -TB1 -TFE0 -FO15 -FD0 -FC800 -FN0 + + + + + 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\cstdio.c + cstdio.c + 0 + 0 + + + 1 + 5 + 1 + 0 + 0 + 0 + ..\..\..\components\libc\compilers\common\cstdlib.c + cstdlib.c + 0 + 0 + + + 1 + 6 + 1 + 0 + 0 + 0 + ..\..\..\components\libc\compilers\common\cstring.c + cstring.c + 0 + 0 + + + 1 + 7 + 1 + 0 + 0 + 0 + ..\..\..\components\libc\compilers\common\ctime.c + ctime.c + 0 + 0 + + + 1 + 8 + 1 + 0 + 0 + 0 + ..\..\..\components\libc\compilers\common\cwchar.c + cwchar.c + 0 + 0 + + + + + CPU + 0 + 0 + 0 + 0 + + 2 + 9 + 1 + 0 + 0 + 0 + ..\..\..\libcpu\arm\common\atomic_arm.c + atomic_arm.c + 0 + 0 + + + 2 + 10 + 1 + 0 + 0 + 0 + ..\..\..\libcpu\arm\common\backtrace.c + backtrace.c + 0 + 0 + + + 2 + 11 + 1 + 0 + 0 + 0 + ..\..\..\libcpu\arm\common\div0.c + div0.c + 0 + 0 + + + 2 + 12 + 1 + 0 + 0 + 0 + ..\..\..\libcpu\arm\common\showmem.c + showmem.c + 0 + 0 + + + 2 + 13 + 2 + 0 + 0 + 0 + ..\..\..\libcpu\arm\cortex-m4\context_rvds.S + context_rvds.S + 0 + 0 + + + 2 + 14 + 1 + 0 + 0 + 0 + ..\..\..\libcpu\arm\cortex-m4\cpuport.c + cpuport.c + 0 + 0 + + + + + DeviceDrivers + 0 + 0 + 0 + 0 + + 3 + 15 + 1 + 0 + 0 + 0 + ..\..\..\components\drivers\ipc\completion.c + completion.c + 0 + 0 + + + 3 + 16 + 1 + 0 + 0 + 0 + ..\..\..\components\drivers\ipc\dataqueue.c + dataqueue.c + 0 + 0 + + + 3 + 17 + 1 + 0 + 0 + 0 + ..\..\..\components\drivers\ipc\pipe.c + pipe.c + 0 + 0 + + + 3 + 18 + 1 + 0 + 0 + 0 + ..\..\..\components\drivers\ipc\ringblk_buf.c + ringblk_buf.c + 0 + 0 + + + 3 + 19 + 1 + 0 + 0 + 0 + ..\..\..\components\drivers\ipc\ringbuffer.c + ringbuffer.c + 0 + 0 + + + 3 + 20 + 1 + 0 + 0 + 0 + ..\..\..\components\drivers\ipc\waitqueue.c + waitqueue.c + 0 + 0 + + + 3 + 21 + 1 + 0 + 0 + 0 + ..\..\..\components\drivers\ipc\workqueue.c + workqueue.c + 0 + 0 + + + 3 + 22 + 1 + 0 + 0 + 0 + ..\..\..\components\drivers\misc\pin.c + pin.c + 0 + 0 + + + 3 + 23 + 1 + 0 + 0 + 0 + ..\..\..\components\drivers\serial\serial_v2.c + serial_v2.c + 0 + 0 + + + + + Drivers + 0 + 0 + 0 + 0 + + 4 + 24 + 1 + 0 + 0 + 0 + ..\libraries\HAL_Drivers\drv_common.c + drv_common.c + 0 + 0 + + + 4 + 25 + 1 + 0 + 0 + 0 + ..\libraries\HAL_Drivers\drv_gpio.c + drv_gpio.c + 0 + 0 + + + 4 + 26 + 1 + 0 + 0 + 0 + ..\libraries\HAL_Drivers\drv_usart_v2.c + drv_usart_v2.c + 0 + 0 + + + + + Finsh + 0 + 0 + 0 + 0 + + 5 + 27 + 1 + 0 + 0 + 0 + ..\..\..\components\finsh\shell.c + shell.c + 0 + 0 + + + 5 + 28 + 1 + 0 + 0 + 0 + ..\..\..\components\finsh\msh.c + msh.c + 0 + 0 + + + 5 + 29 + 1 + 0 + 0 + 0 + ..\..\..\components\finsh\msh_parse.c + msh_parse.c + 0 + 0 + + + 5 + 30 + 1 + 0 + 0 + 0 + ..\..\..\components\finsh\cmd.c + cmd.c + 0 + 0 + + + + + Kernel + 0 + 0 + 0 + 0 + + 6 + 31 + 1 + 0 + 0 + 0 + ..\..\..\src\clock.c + clock.c + 0 + 0 + + + 6 + 32 + 1 + 0 + 0 + 0 + ..\..\..\src\components.c + components.c + 0 + 0 + + + 6 + 33 + 1 + 0 + 0 + 0 + ..\..\..\src\device.c + device.c + 0 + 0 + + + 6 + 34 + 1 + 0 + 0 + 0 + ..\..\..\src\idle.c + idle.c + 0 + 0 + + + 6 + 35 + 1 + 0 + 0 + 0 + ..\..\..\src\ipc.c + ipc.c + 0 + 0 + + + 6 + 36 + 1 + 0 + 0 + 0 + ..\..\..\src\irq.c + irq.c + 0 + 0 + + + 6 + 37 + 1 + 0 + 0 + 0 + ..\..\..\src\kservice.c + kservice.c + 0 + 0 + + + 6 + 38 + 1 + 0 + 0 + 0 + ..\..\..\src\mem.c + mem.c + 0 + 0 + + + 6 + 39 + 1 + 0 + 0 + 0 + ..\..\..\src\object.c + object.c + 0 + 0 + + + 6 + 40 + 1 + 0 + 0 + 0 + ..\..\..\src\scheduler_up.c + scheduler_up.c + 0 + 0 + + + 6 + 41 + 1 + 0 + 0 + 0 + ..\..\..\src\thread.c + thread.c + 0 + 0 + + + 6 + 42 + 1 + 0 + 0 + 0 + ..\..\..\src\timer.c + timer.c + 0 + 0 + + + + + :Renesas RA Smart Configurator:Common Sources + 0 + 0 + 0 + 0 + + 7 + 43 + 1 + 0 + 0 + 0 + .\src\hal_entry.c + hal_entry.c + 0 + 0 + + + + + ::Flex Software + 0 + 0 + 0 + 1 + + +
diff --git a/bsp/renesas/ra6m3-hmi-board/project.uvprojx b/bsp/renesas/ra6m3-hmi-board/project.uvprojx new file mode 100644 index 0000000000..7a2d65915b --- /dev/null +++ b/bsp/renesas/ra6m3-hmi-board/project.uvprojx @@ -0,0 +1,669 @@ + + + + 2.1 + +
### uVision Project, (C) Keil Software
+ + + + Target 1 + 0x4 + ARM-ADS + 6160000::V6.16::ARMCLANG + 1 + + + R7FA6M3AH + Renesas + Renesas.RA_DFP.4.2.0 + https://www2.renesas.eu/Keil_MDK_Packs/ + IRAM(0x1FFE0000,0x020000) IRAM2(0x20000000,0x080000) IROM(0x00000000,0x200000) CPUTYPE("Cortex-M4") FPU2 DSP CLOCK(12000000) ELITTLE + + + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC2000 -FN3 -FF0RA6M3_2M -FS00 -FL0200000 -FF1RA6M3_DATA_C2M -FS140100000 -FL110000 -FF2RA6M3_CONF -FS2100A100 -FL280 -FP0($$Device:R7FA6M3AH$Flash\RA6M3_2M.FLM) -FP1($$Device:R7FA6M3AH$Flash\RA6M3_DATA_C2M.FLM) -FP2($$Device:R7FA6M3AH$Flash\RA6M3_CONF.FLM)) + 0 + + + + + + + + + + + $$Device:R7FA6M3AH$SVD\R7FA6M3AH.svd + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\Objects\ + rtthread + 1 + 0 + 1 + 1 + 0 + .\Listings\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + cmd /c "start "Renesas" /w cmd /c ""$Slauncher\rasc_launcher.bat" "3.5.0" --gensecurebundle --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 + + + SARMCM3.DLL + -MPU + DCM.DLL + -pCM4 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM4 + + + + 1 + 0 + 0 + 0 + 16 + + + + + 1 + 0 + 0 + 1 + 1 + 4096 + + 1 + BIN\UL2CM3.DLL + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M4" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 2 + 0 + 0 + 1 + 0 + 8 + 1 + 0 + 0 + 0 + 3 + 4 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x1ffe0000 + 0x20000 + + + 1 + 0x0 + 0x200000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x200000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x1ffe0000 + 0x20000 + + + 0 + 0x20000000 + 0x80000 + + + + + + 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 -Wunused -Wuninitialized -Wall -Wmissing-declarations -Wpointer-arith -Waggregate-return -Wfloat-equal + RT_USING_LIBC, RT_USING_ARMLIBC, __STDC_LIMIT_MACROS, __RTTHREAD__, __CLK_TCK=RT_TICK_PER_SECOND + + ..\..\..\include;..\..\..\components\finsh;..\..\..\components\libc\compilers\common\extension\fcntl\octal;..\..\..\components\libc\compilers\common\extension;.;..\libraries\HAL_Drivers\config;..\..\..\components\drivers\include;..\..\..\components\drivers\include;..\..\..\components\libc\posix\io\stdio;..\..\..\libcpu\arm\common;..\..\..\components\libc\posix\ipc;..\libraries\HAL_Drivers;board\ports\ili9341;board;board\ports;..\..\..\components\drivers\include;..\..\..\libcpu\arm\cortex-m4;..\..\..\components\libc\posix\io\poll;..\..\..\components\libc\compilers\common\include + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 4 + + + + + + + + + 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 + + + cstdio.c + 1 + ..\..\..\components\libc\compilers\common\cstdio.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 + + + cwchar.c + 1 + ..\..\..\components\libc\compilers\common\cwchar.c + + + + + CPU + + + atomic_arm.c + 1 + ..\..\..\libcpu\arm\common\atomic_arm.c + + + backtrace.c + 1 + ..\..\..\libcpu\arm\common\backtrace.c + + + div0.c + 1 + ..\..\..\libcpu\arm\common\div0.c + + + showmem.c + 1 + ..\..\..\libcpu\arm\common\showmem.c + + + context_rvds.S + 2 + ..\..\..\libcpu\arm\cortex-m4\context_rvds.S + + + cpuport.c + 1 + ..\..\..\libcpu\arm\cortex-m4\cpuport.c + + + + + DeviceDrivers + + + completion.c + 1 + ..\..\..\components\drivers\ipc\completion.c + + + dataqueue.c + 1 + ..\..\..\components\drivers\ipc\dataqueue.c + + + pipe.c + 1 + ..\..\..\components\drivers\ipc\pipe.c + + + ringblk_buf.c + 1 + ..\..\..\components\drivers\ipc\ringblk_buf.c + + + ringbuffer.c + 1 + ..\..\..\components\drivers\ipc\ringbuffer.c + + + waitqueue.c + 1 + ..\..\..\components\drivers\ipc\waitqueue.c + + + workqueue.c + 1 + ..\..\..\components\drivers\ipc\workqueue.c + + + pin.c + 1 + ..\..\..\components\drivers\misc\pin.c + + + serial_v2.c + 1 + ..\..\..\components\drivers\serial\serial_v2.c + + + + + Drivers + + + drv_common.c + 1 + ..\libraries\HAL_Drivers\drv_common.c + + + drv_gpio.c + 1 + ..\libraries\HAL_Drivers\drv_gpio.c + + + drv_usart_v2.c + 1 + ..\libraries\HAL_Drivers\drv_usart_v2.c + + + + + Finsh + + + shell.c + 1 + ..\..\..\components\finsh\shell.c + + + msh.c + 1 + ..\..\..\components\finsh\msh.c + + + msh_parse.c + 1 + ..\..\..\components\finsh\msh_parse.c + + + cmd.c + 1 + ..\..\..\components\finsh\cmd.c + + + + + Kernel + + + clock.c + 1 + ..\..\..\src\clock.c + + + components.c + 1 + ..\..\..\src\components.c + + + device.c + 1 + ..\..\..\src\device.c + + + idle.c + 1 + ..\..\..\src\idle.c + + + ipc.c + 1 + ..\..\..\src\ipc.c + + + irq.c + 1 + ..\..\..\src\irq.c + + + kservice.c + 1 + ..\..\..\src\kservice.c + + + mem.c + 1 + ..\..\..\src\mem.c + + + object.c + 1 + ..\..\..\src\object.c + + + scheduler_up.c + 1 + ..\..\..\src\scheduler_up.c + + + thread.c + 1 + ..\..\..\src\thread.c + + + timer.c + 1 + ..\..\..\src\timer.c + + + + + :Renesas RA Smart Configurator:Common Sources + + + hal_entry.c + 1 + .\src\hal_entry.c + + + + + ::Flex Software + + + + + + + + + + + + + + + + + + + + + + + + + + + + + project + 1 + + + + +
diff --git a/bsp/renesas/ra6m3-hmi-board/ra/SConscript b/bsp/renesas/ra6m3-hmi-board/ra/SConscript new file mode 100644 index 0000000000..1057357156 --- /dev/null +++ b/bsp/renesas/ra6m3-hmi-board/ra/SConscript @@ -0,0 +1,25 @@ +Import('RTT_ROOT') +Import('rtconfig') +from building 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 ['gcc', 'armclang']: + 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/ra6m3-hmi-board/ra/arm/CMSIS_5/CMSIS/Core/Include/cachel1_armv7.h b/bsp/renesas/ra6m3-hmi-board/ra/arm/CMSIS_5/CMSIS/Core/Include/cachel1_armv7.h new file mode 100644 index 0000000000..abebc95f94 --- /dev/null +++ b/bsp/renesas/ra6m3-hmi-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/ra6m3-hmi-board/ra/arm/CMSIS_5/CMSIS/Core/Include/cmsis_armcc.h b/bsp/renesas/ra6m3-hmi-board/ra/arm/CMSIS_5/CMSIS/Core/Include/cmsis_armcc.h new file mode 100644 index 0000000000..a955d47139 --- /dev/null +++ b/bsp/renesas/ra6m3-hmi-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/ra6m3-hmi-board/ra/arm/CMSIS_5/CMSIS/Core/Include/cmsis_armclang.h b/bsp/renesas/ra6m3-hmi-board/ra/arm/CMSIS_5/CMSIS/Core/Include/cmsis_armclang.h new file mode 100644 index 0000000000..6911417747 --- /dev/null +++ b/bsp/renesas/ra6m3-hmi-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/ra6m3-hmi-board/ra/arm/CMSIS_5/CMSIS/Core/Include/cmsis_armclang_ltm.h b/bsp/renesas/ra6m3-hmi-board/ra/arm/CMSIS_5/CMSIS/Core/Include/cmsis_armclang_ltm.h new file mode 100644 index 0000000000..1e255d5907 --- /dev/null +++ b/bsp/renesas/ra6m3-hmi-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/ra6m3-hmi-board/ra/arm/CMSIS_5/CMSIS/Core/Include/cmsis_compiler.h b/bsp/renesas/ra6m3-hmi-board/ra/arm/CMSIS_5/CMSIS/Core/Include/cmsis_compiler.h new file mode 100644 index 0000000000..adbf296f15 --- /dev/null +++ b/bsp/renesas/ra6m3-hmi-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/ra6m3-hmi-board/ra/arm/CMSIS_5/CMSIS/Core/Include/cmsis_gcc.h b/bsp/renesas/ra6m3-hmi-board/ra/arm/CMSIS_5/CMSIS/Core/Include/cmsis_gcc.h new file mode 100644 index 0000000000..67bda4ef3c --- /dev/null +++ b/bsp/renesas/ra6m3-hmi-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/ra6m3-hmi-board/ra/arm/CMSIS_5/CMSIS/Core/Include/cmsis_iccarm.h b/bsp/renesas/ra6m3-hmi-board/ra/arm/CMSIS_5/CMSIS/Core/Include/cmsis_iccarm.h new file mode 100644 index 0000000000..65b824b009 --- /dev/null +++ b/bsp/renesas/ra6m3-hmi-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/ra6m3-hmi-board/ra/arm/CMSIS_5/CMSIS/Core/Include/cmsis_version.h b/bsp/renesas/ra6m3-hmi-board/ra/arm/CMSIS_5/CMSIS/Core/Include/cmsis_version.h new file mode 100644 index 0000000000..2f048e4552 --- /dev/null +++ b/bsp/renesas/ra6m3-hmi-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.4 + * @date 23. July 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 __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 ( 4U) /*!< [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/ra6m3-hmi-board/ra/arm/CMSIS_5/CMSIS/Core/Include/core_armv81mml.h b/bsp/renesas/ra6m3-hmi-board/ra/arm/CMSIS_5/CMSIS/Core/Include/core_armv81mml.h new file mode 100644 index 0000000000..33df455436 --- /dev/null +++ b/bsp/renesas/ra6m3-hmi-board/ra/arm/CMSIS_5/CMSIS/Core/Include/core_armv81mml.h @@ -0,0 +1,4217 @@ +/**************************************************************************//** + * @file core_armv81mml.h + * @brief CMSIS Armv8.1-M Mainline Core Peripheral Access Layer Header File + * @version V1.4.1 + * @date 04. June 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_ADR; /*!< Offset: 0x04C (R/ ) Auxiliary Feature Register */ + __IM uint32_t ID_MMFR[4U]; /*!< Offset: 0x050 (R/ ) Memory Model Feature Register */ + __IM uint32_t ID_ISAR[6U]; /*!< Offset: 0x060 (R/ ) Instruction Set Attributes Register */ + __IM uint32_t CLIDR; /*!< Offset: 0x078 (R/ ) Cache Level ID register */ + __IM uint32_t CTR; /*!< Offset: 0x07C (R/ ) Cache Type register */ + __IM uint32_t CCSIDR; /*!< Offset: 0x080 (R/ ) Cache Size ID Register */ + __IOM uint32_t CSSELR; /*!< Offset: 0x084 (R/W) Cache Size Selection Register */ + __IOM uint32_t CPACR; /*!< Offset: 0x088 (R/W) Coprocessor Access Control Register */ + __IOM uint32_t NSACR; /*!< Offset: 0x08C (R/W) Non-Secure Access Control Register */ + uint32_t RESERVED3[92U]; + __OM uint32_t STIR; /*!< Offset: 0x200 ( /W) Software Triggered Interrupt Register */ + __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[4]; + __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: 0xFE0 (R/W) PMU Peripheral Identification Register 1 */ + __IOM uint32_t PIDR2; /*!< Offset: 0xFE0 (R/W) PMU Peripheral Identification Register 2 */ + __IOM uint32_t PIDR3; /*!< Offset: 0xFE0 (R/W) PMU Peripheral Identification Register 3 */ + uint32_t RESERVED14[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) */ +/*@} */ + + + +/******************************************************************************* + * 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/ra6m3-hmi-board/ra/arm/CMSIS_5/CMSIS/Core/Include/core_armv8mbl.h b/bsp/renesas/ra6m3-hmi-board/ra/arm/CMSIS_5/CMSIS/Core/Include/core_armv8mbl.h new file mode 100644 index 0000000000..932d3d188b --- /dev/null +++ b/bsp/renesas/ra6m3-hmi-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/ra6m3-hmi-board/ra/arm/CMSIS_5/CMSIS/Core/Include/core_armv8mml.h b/bsp/renesas/ra6m3-hmi-board/ra/arm/CMSIS_5/CMSIS/Core/Include/core_armv8mml.h new file mode 100644 index 0000000000..2bd9e76064 --- /dev/null +++ b/bsp/renesas/ra6m3-hmi-board/ra/arm/CMSIS_5/CMSIS/Core/Include/core_armv8mml.h @@ -0,0 +1,3197 @@ +/**************************************************************************//** + * @file core_armv8mml.h + * @brief CMSIS Armv8-M Mainline Core Peripheral Access Layer Header File + * @version V5.2.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 */ +#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_ADR; /*!< Offset: 0x04C (R/ ) Auxiliary Feature Register */ + __IM uint32_t ID_MMFR[4U]; /*!< Offset: 0x050 (R/ ) Memory Model Feature Register */ + __IM uint32_t ID_ISAR[6U]; /*!< Offset: 0x060 (R/ ) Instruction Set Attributes Register */ + __IM uint32_t CLIDR; /*!< Offset: 0x078 (R/ ) Cache Level ID register */ + __IM uint32_t CTR; /*!< Offset: 0x07C (R/ ) Cache Type register */ + __IM uint32_t CCSIDR; /*!< Offset: 0x080 (R/ ) Cache Size ID Register */ + __IOM uint32_t CSSELR; /*!< Offset: 0x084 (R/W) Cache Size Selection Register */ + __IOM uint32_t CPACR; /*!< Offset: 0x088 (R/W) Coprocessor Access Control Register */ + __IOM uint32_t NSACR; /*!< Offset: 0x08C (R/W) Non-Secure Access Control Register */ + uint32_t RESERVED3[92U]; + __OM uint32_t STIR; /*!< Offset: 0x200 ( /W) Software Triggered Interrupt Register */ + uint32_t RESERVED4[15U]; + __IM uint32_t MVFR0; /*!< Offset: 0x240 (R/ ) Media and VFP Feature Register 0 */ + __IM uint32_t MVFR1; /*!< Offset: 0x244 (R/ ) Media and VFP Feature Register 1 */ + __IM uint32_t MVFR2; /*!< Offset: 0x248 (R/ ) Media and VFP Feature Register 2 */ + uint32_t RESERVED5[1U]; + __OM uint32_t ICIALLU; /*!< Offset: 0x250 ( /W) I-Cache Invalidate All to PoU */ + uint32_t RESERVED6[1U]; + __OM uint32_t ICIMVAU; /*!< Offset: 0x258 ( /W) I-Cache Invalidate by MVA to PoU */ + __OM uint32_t DCIMVAC; /*!< Offset: 0x25C ( /W) D-Cache Invalidate by MVA to PoC */ + __OM uint32_t DCISW; /*!< Offset: 0x260 ( /W) D-Cache Invalidate by Set-way */ + __OM uint32_t DCCMVAU; /*!< Offset: 0x264 ( /W) D-Cache Clean by MVA to PoU */ + __OM uint32_t DCCMVAC; /*!< Offset: 0x268 ( /W) D-Cache Clean by MVA to PoC */ + __OM uint32_t DCCSW; /*!< Offset: 0x26C ( /W) D-Cache Clean by Set-way */ + __OM uint32_t DCCIMVAC; /*!< Offset: 0x270 ( /W) D-Cache Clean and Invalidate by MVA to PoC */ + __OM uint32_t DCCISW; /*!< Offset: 0x274 ( /W) D-Cache Clean and Invalidate by Set-way */ + __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) */ +/*@} */ + + + +/******************************************************************************* + * 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/ra6m3-hmi-board/ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm0.h b/bsp/renesas/ra6m3-hmi-board/ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm0.h new file mode 100644 index 0000000000..6441ff3419 --- /dev/null +++ b/bsp/renesas/ra6m3-hmi-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/ra6m3-hmi-board/ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm0plus.h b/bsp/renesas/ra6m3-hmi-board/ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm0plus.h new file mode 100644 index 0000000000..4e7179a614 --- /dev/null +++ b/bsp/renesas/ra6m3-hmi-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/ra6m3-hmi-board/ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm1.h b/bsp/renesas/ra6m3-hmi-board/ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm1.h new file mode 100644 index 0000000000..76b4569743 --- /dev/null +++ b/bsp/renesas/ra6m3-hmi-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/ra6m3-hmi-board/ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm23.h b/bsp/renesas/ra6m3-hmi-board/ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm23.h new file mode 100644 index 0000000000..55fff99509 --- /dev/null +++ b/bsp/renesas/ra6m3-hmi-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/ra6m3-hmi-board/ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm3.h b/bsp/renesas/ra6m3-hmi-board/ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm3.h new file mode 100644 index 0000000000..74fb87e5c5 --- /dev/null +++ b/bsp/renesas/ra6m3-hmi-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/ra6m3-hmi-board/ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm33.h b/bsp/renesas/ra6m3-hmi-board/ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm33.h new file mode 100644 index 0000000000..f9cf6ab183 --- /dev/null +++ b/bsp/renesas/ra6m3-hmi-board/ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm33.h @@ -0,0 +1,3265 @@ +/**************************************************************************//** + * @file core_cm33.h + * @brief CMSIS Cortex-M33 Core Peripheral Access Layer Header File + * @version V5.2.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 */ +#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_ADR; /*!< Offset: 0x04C (R/ ) Auxiliary Feature Register */ + __IM uint32_t ID_MMFR[4U]; /*!< Offset: 0x050 (R/ ) Memory Model Feature Register */ + __IM uint32_t ID_ISAR[6U]; /*!< Offset: 0x060 (R/ ) Instruction Set Attributes Register */ + __IM uint32_t CLIDR; /*!< Offset: 0x078 (R/ ) Cache Level ID register */ + __IM uint32_t CTR; /*!< Offset: 0x07C (R/ ) Cache Type register */ + __IM uint32_t CCSIDR; /*!< Offset: 0x080 (R/ ) Cache Size ID Register */ + __IOM uint32_t CSSELR; /*!< Offset: 0x084 (R/W) Cache Size Selection Register */ + __IOM uint32_t CPACR; /*!< Offset: 0x088 (R/W) Coprocessor Access Control Register */ + __IOM uint32_t NSACR; /*!< Offset: 0x08C (R/W) Non-Secure Access Control Register */ + uint32_t RESERVED3[92U]; + __OM uint32_t STIR; /*!< Offset: 0x200 ( /W) Software Triggered Interrupt Register */ + uint32_t RESERVED4[15U]; + __IM uint32_t MVFR0; /*!< Offset: 0x240 (R/ ) Media and VFP Feature Register 0 */ + __IM uint32_t MVFR1; /*!< Offset: 0x244 (R/ ) Media and VFP Feature Register 1 */ + __IM uint32_t MVFR2; /*!< Offset: 0x248 (R/ ) Media and VFP Feature Register 2 */ + uint32_t RESERVED5[1U]; + __OM uint32_t ICIALLU; /*!< Offset: 0x250 ( /W) I-Cache Invalidate All to PoU */ + uint32_t RESERVED6[1U]; + __OM uint32_t ICIMVAU; /*!< Offset: 0x258 ( /W) I-Cache Invalidate by MVA to PoU */ + __OM uint32_t DCIMVAC; /*!< Offset: 0x25C ( /W) D-Cache Invalidate by MVA to PoC */ + __OM uint32_t DCISW; /*!< Offset: 0x260 ( /W) D-Cache Invalidate by Set-way */ + __OM uint32_t DCCMVAU; /*!< Offset: 0x264 ( /W) D-Cache Clean by MVA to PoU */ + __OM uint32_t DCCMVAC; /*!< Offset: 0x268 ( /W) D-Cache Clean by MVA to PoC */ + __OM uint32_t DCCSW; /*!< Offset: 0x26C ( /W) D-Cache Clean by Set-way */ + __OM uint32_t DCCIMVAC; /*!< Offset: 0x270 ( /W) D-Cache Clean and Invalidate by MVA to PoC */ + __OM uint32_t DCCISW; /*!< Offset: 0x274 ( /W) D-Cache Clean and Invalidate by Set-way */ + __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) */ +/*@} */ + + + +/******************************************************************************* + * 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/ra6m3-hmi-board/ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm35p.h b/bsp/renesas/ra6m3-hmi-board/ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm35p.h new file mode 100644 index 0000000000..552c29464d --- /dev/null +++ b/bsp/renesas/ra6m3-hmi-board/ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm35p.h @@ -0,0 +1,3265 @@ +/**************************************************************************//** + * @file core_cm35p.h + * @brief CMSIS Cortex-M35P Core Peripheral Access Layer Header File + * @version V1.1.2 + * @date 04. June 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_ADR; /*!< Offset: 0x04C (R/ ) Auxiliary Feature Register */ + __IM uint32_t ID_MMFR[4U]; /*!< Offset: 0x050 (R/ ) Memory Model Feature Register */ + __IM uint32_t ID_ISAR[6U]; /*!< Offset: 0x060 (R/ ) Instruction Set Attributes Register */ + __IM uint32_t CLIDR; /*!< Offset: 0x078 (R/ ) Cache Level ID register */ + __IM uint32_t CTR; /*!< Offset: 0x07C (R/ ) Cache Type register */ + __IM uint32_t CCSIDR; /*!< Offset: 0x080 (R/ ) Cache Size ID Register */ + __IOM uint32_t CSSELR; /*!< Offset: 0x084 (R/W) Cache Size Selection Register */ + __IOM uint32_t CPACR; /*!< Offset: 0x088 (R/W) Coprocessor Access Control Register */ + __IOM uint32_t NSACR; /*!< Offset: 0x08C (R/W) Non-Secure Access Control Register */ + uint32_t RESERVED3[92U]; + __OM uint32_t STIR; /*!< Offset: 0x200 ( /W) Software Triggered Interrupt Register */ + uint32_t RESERVED4[15U]; + __IM uint32_t MVFR0; /*!< Offset: 0x240 (R/ ) Media and VFP Feature Register 0 */ + __IM uint32_t MVFR1; /*!< Offset: 0x244 (R/ ) Media and VFP Feature Register 1 */ + __IM uint32_t MVFR2; /*!< Offset: 0x248 (R/ ) Media and VFP Feature Register 2 */ + uint32_t RESERVED5[1U]; + __OM uint32_t ICIALLU; /*!< Offset: 0x250 ( /W) I-Cache Invalidate All to PoU */ + uint32_t RESERVED6[1U]; + __OM uint32_t ICIMVAU; /*!< Offset: 0x258 ( /W) I-Cache Invalidate by MVA to PoU */ + __OM uint32_t DCIMVAC; /*!< Offset: 0x25C ( /W) D-Cache Invalidate by MVA to PoC */ + __OM uint32_t DCISW; /*!< Offset: 0x260 ( /W) D-Cache Invalidate by Set-way */ + __OM uint32_t DCCMVAU; /*!< Offset: 0x264 ( /W) D-Cache Clean by MVA to PoU */ + __OM uint32_t DCCMVAC; /*!< Offset: 0x268 ( /W) D-Cache Clean by MVA to PoC */ + __OM uint32_t DCCSW; /*!< Offset: 0x26C ( /W) D-Cache Clean by Set-way */ + __OM uint32_t DCCIMVAC; /*!< Offset: 0x270 ( /W) D-Cache Clean and Invalidate by MVA to PoC */ + __OM uint32_t DCCISW; /*!< Offset: 0x274 ( /W) D-Cache Clean and Invalidate by Set-way */ + __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) */ +/*@} */ + + + +/******************************************************************************* + * 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/ra6m3-hmi-board/ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm4.h b/bsp/renesas/ra6m3-hmi-board/ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm4.h new file mode 100644 index 0000000000..e21cd14925 --- /dev/null +++ b/bsp/renesas/ra6m3-hmi-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/ra6m3-hmi-board/ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm55.h b/bsp/renesas/ra6m3-hmi-board/ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm55.h new file mode 100644 index 0000000000..ecee4e0afb --- /dev/null +++ b/bsp/renesas/ra6m3-hmi-board/ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm55.h @@ -0,0 +1,4278 @@ +/**************************************************************************//** + * @file core_cm55.h + * @brief CMSIS Cortex-M55 Core Peripheral Access Layer Header File + * @version V1.2.1 + * @date 04. June 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_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_CM55 + @{ + */ + +#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 SCB Register + - Core SysTick Register + - Core Debug Register + - Core MPU Register + - Core SAU Register + - Core FPU Register + ******************************************************************************/ +/** + \defgroup CMSIS_core_register Defines and Type Definitions + \brief Type definitions and defines for Cortex-M processor based devices. +*/ + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CORE Status and Control Registers + \brief Core Register type definitions. + @{ + */ + +/** + \brief Union type to access the Application Program Status Register (APSR). + */ +typedef union +{ + struct + { + uint32_t _reserved0:16; /*!< bit: 0..15 Reserved */ + uint32_t GE:4; /*!< bit: 16..19 Greater than or Equal flags */ + uint32_t _reserved1:7; /*!< bit: 20..26 Reserved */ + uint32_t Q:1; /*!< bit: 27 Saturation condition flag */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} APSR_Type; + +/* APSR Register Definitions */ +#define APSR_N_Pos 31U /*!< APSR: N Position */ +#define APSR_N_Msk (1UL << APSR_N_Pos) /*!< APSR: N Mask */ + +#define APSR_Z_Pos 30U /*!< APSR: Z Position */ +#define APSR_Z_Msk (1UL << APSR_Z_Pos) /*!< APSR: Z Mask */ + +#define APSR_C_Pos 29U /*!< APSR: C Position */ +#define APSR_C_Msk (1UL << APSR_C_Pos) /*!< APSR: C Mask */ + +#define APSR_V_Pos 28U /*!< APSR: V Position */ +#define APSR_V_Msk (1UL << APSR_V_Pos) /*!< APSR: V Mask */ + +#define APSR_Q_Pos 27U /*!< APSR: Q Position */ +#define APSR_Q_Msk (1UL << APSR_Q_Pos) /*!< APSR: Q Mask */ + +#define APSR_GE_Pos 16U /*!< APSR: GE Position */ +#define APSR_GE_Msk (0xFUL << APSR_GE_Pos) /*!< APSR: GE Mask */ + + +/** + \brief Union type to access the Interrupt Program Status Register (IPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:23; /*!< bit: 9..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} IPSR_Type; + +/* IPSR Register Definitions */ +#define IPSR_ISR_Pos 0U /*!< IPSR: ISR Position */ +#define IPSR_ISR_Msk (0x1FFUL /*<< IPSR_ISR_Pos*/) /*!< IPSR: ISR Mask */ + + +/** + \brief Union type to access the Special-Purpose Program Status Registers (xPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:7; /*!< bit: 9..15 Reserved */ + uint32_t GE:4; /*!< bit: 16..19 Greater than or Equal flags */ + uint32_t _reserved1:4; /*!< bit: 20..23 Reserved */ + uint32_t T:1; /*!< bit: 24 Thumb bit (read 0) */ + uint32_t IT:2; /*!< bit: 25..26 saved IT state (read 0) */ + uint32_t Q:1; /*!< bit: 27 Saturation condition flag */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} xPSR_Type; + +/* xPSR Register Definitions */ +#define xPSR_N_Pos 31U /*!< xPSR: N Position */ +#define xPSR_N_Msk (1UL << xPSR_N_Pos) /*!< xPSR: N Mask */ + +#define xPSR_Z_Pos 30U /*!< xPSR: Z Position */ +#define xPSR_Z_Msk (1UL << xPSR_Z_Pos) /*!< xPSR: Z Mask */ + +#define xPSR_C_Pos 29U /*!< xPSR: C Position */ +#define xPSR_C_Msk (1UL << xPSR_C_Pos) /*!< xPSR: C Mask */ + +#define xPSR_V_Pos 28U /*!< xPSR: V Position */ +#define xPSR_V_Msk (1UL << xPSR_V_Pos) /*!< xPSR: V Mask */ + +#define xPSR_Q_Pos 27U /*!< xPSR: Q Position */ +#define xPSR_Q_Msk (1UL << xPSR_Q_Pos) /*!< xPSR: Q Mask */ + +#define xPSR_IT_Pos 25U /*!< xPSR: IT Position */ +#define xPSR_IT_Msk (3UL << xPSR_IT_Pos) /*!< xPSR: IT Mask */ + +#define xPSR_T_Pos 24U /*!< xPSR: T Position */ +#define xPSR_T_Msk (1UL << xPSR_T_Pos) /*!< xPSR: T Mask */ + +#define xPSR_GE_Pos 16U /*!< xPSR: GE Position */ +#define xPSR_GE_Msk (0xFUL << xPSR_GE_Pos) /*!< xPSR: GE Mask */ + +#define xPSR_ISR_Pos 0U /*!< xPSR: ISR Position */ +#define xPSR_ISR_Msk (0x1FFUL /*<< xPSR_ISR_Pos*/) /*!< xPSR: ISR Mask */ + + +/** + \brief Union type to access the Control Registers (CONTROL). + */ +typedef union +{ + struct + { + uint32_t nPRIV:1; /*!< bit: 0 Execution privilege in Thread mode */ + uint32_t SPSEL:1; /*!< bit: 1 Stack-pointer select */ + uint32_t FPCA:1; /*!< bit: 2 Floating-point context active */ + uint32_t SFPA:1; /*!< bit: 3 Secure floating-point active */ + uint32_t _reserved1:28; /*!< bit: 4..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} CONTROL_Type; + +/* CONTROL Register Definitions */ +#define CONTROL_SFPA_Pos 3U /*!< CONTROL: SFPA Position */ +#define CONTROL_SFPA_Msk (1UL << CONTROL_SFPA_Pos) /*!< CONTROL: SFPA Mask */ + +#define CONTROL_FPCA_Pos 2U /*!< CONTROL: FPCA Position */ +#define CONTROL_FPCA_Msk (1UL << CONTROL_FPCA_Pos) /*!< CONTROL: FPCA Mask */ + +#define CONTROL_SPSEL_Pos 1U /*!< CONTROL: SPSEL Position */ +#define CONTROL_SPSEL_Msk (1UL << CONTROL_SPSEL_Pos) /*!< CONTROL: SPSEL Mask */ + +#define CONTROL_nPRIV_Pos 0U /*!< CONTROL: nPRIV Position */ +#define CONTROL_nPRIV_Msk (1UL /*<< CONTROL_nPRIV_Pos*/) /*!< CONTROL: nPRIV Mask */ + +/*@} end of group CMSIS_CORE */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_NVIC Nested Vectored Interrupt Controller (NVIC) + \brief Type definitions for the NVIC Registers + @{ + */ + +/** + \brief Structure type to access the Nested Vectored Interrupt Controller (NVIC). + */ +typedef struct +{ + __IOM uint32_t ISER[16U]; /*!< Offset: 0x000 (R/W) Interrupt Set Enable Register */ + uint32_t RESERVED0[16U]; + __IOM uint32_t ICER[16U]; /*!< Offset: 0x080 (R/W) Interrupt Clear Enable Register */ + uint32_t RSERVED1[16U]; + __IOM uint32_t ISPR[16U]; /*!< Offset: 0x100 (R/W) Interrupt Set Pending Register */ + uint32_t RESERVED2[16U]; + __IOM uint32_t ICPR[16U]; /*!< Offset: 0x180 (R/W) Interrupt Clear Pending Register */ + uint32_t RESERVED3[16U]; + __IOM uint32_t IABR[16U]; /*!< Offset: 0x200 (R/W) Interrupt Active bit Register */ + uint32_t RESERVED4[16U]; + __IOM uint32_t ITNS[16U]; /*!< Offset: 0x280 (R/W) Interrupt Non-Secure State Register */ + uint32_t RESERVED5[16U]; + __IOM uint8_t IPR[496U]; /*!< Offset: 0x300 (R/W) Interrupt Priority Register (8Bit wide) */ + uint32_t RESERVED6[580U]; + __OM uint32_t STIR; /*!< Offset: 0xE00 ( /W) Software Trigger Interrupt Register */ +} NVIC_Type; + +/* Software Triggered Interrupt Register Definitions */ +#define NVIC_STIR_INTID_Pos 0U /*!< STIR: INTLINESNUM Position */ +#define NVIC_STIR_INTID_Msk (0x1FFUL /*<< NVIC_STIR_INTID_Pos*/) /*!< STIR: INTLINESNUM Mask */ + +/*@} end of group CMSIS_NVIC */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SCB System Control Block (SCB) + \brief Type definitions for the System Control Block Registers + @{ + */ + +/** + \brief Structure type to access the System Control Block (SCB). + */ +typedef struct +{ + __IM uint32_t CPUID; /*!< Offset: 0x000 (R/ ) CPUID Base Register */ + __IOM uint32_t ICSR; /*!< Offset: 0x004 (R/W) Interrupt Control and State Register */ + __IOM uint32_t VTOR; /*!< Offset: 0x008 (R/W) Vector Table Offset Register */ + __IOM uint32_t AIRCR; /*!< Offset: 0x00C (R/W) Application Interrupt and Reset Control Register */ + __IOM uint32_t SCR; /*!< Offset: 0x010 (R/W) System Control Register */ + __IOM uint32_t CCR; /*!< Offset: 0x014 (R/W) Configuration Control Register */ + __IOM uint8_t SHPR[12U]; /*!< Offset: 0x018 (R/W) System Handlers Priority Registers (4-7, 8-11, 12-15) */ + __IOM uint32_t SHCSR; /*!< Offset: 0x024 (R/W) System Handler Control and State Register */ + __IOM uint32_t CFSR; /*!< Offset: 0x028 (R/W) Configurable Fault Status Register */ + __IOM uint32_t HFSR; /*!< Offset: 0x02C (R/W) HardFault Status Register */ + __IOM uint32_t DFSR; /*!< Offset: 0x030 (R/W) Debug Fault Status Register */ + __IOM uint32_t MMFAR; /*!< Offset: 0x034 (R/W) MemManage Fault Address Register */ + __IOM uint32_t BFAR; /*!< Offset: 0x038 (R/W) BusFault Address Register */ + __IOM uint32_t AFSR; /*!< Offset: 0x03C (R/W) Auxiliary Fault Status Register */ + __IM uint32_t ID_PFR[2U]; /*!< Offset: 0x040 (R/ ) Processor Feature Register */ + __IM uint32_t ID_DFR; /*!< Offset: 0x048 (R/ ) Debug Feature Register */ + __IM uint32_t ID_ADR; /*!< Offset: 0x04C (R/ ) Auxiliary Feature Register */ + __IM uint32_t ID_MMFR[4U]; /*!< Offset: 0x050 (R/ ) Memory Model Feature Register */ + __IM uint32_t ID_ISAR[6U]; /*!< Offset: 0x060 (R/ ) Instruction Set Attributes Register */ + __IM uint32_t CLIDR; /*!< Offset: 0x078 (R/ ) Cache Level ID register */ + __IM uint32_t CTR; /*!< Offset: 0x07C (R/ ) Cache Type register */ + __IM uint32_t CCSIDR; /*!< Offset: 0x080 (R/ ) Cache Size ID Register */ + __IOM uint32_t CSSELR; /*!< Offset: 0x084 (R/W) Cache Size Selection Register */ + __IOM uint32_t CPACR; /*!< Offset: 0x088 (R/W) Coprocessor Access Control Register */ + __IOM uint32_t NSACR; /*!< Offset: 0x08C (R/W) Non-Secure Access Control Register */ + uint32_t RESERVED3[92U]; + __OM uint32_t STIR; /*!< Offset: 0x200 ( /W) Software Triggered Interrupt Register */ + __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 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; + __IOM uint32_t DPDLPSTATE; +} PwrModCtl_Type; + + +/* PWRMODCTL Core Power Domain Low Power State (CPDLPSTATE) Register Definitions */ +#define PWRMODCTL_CPDLPSTATE_CLPSTATE_Pos 0U /*!< PWRMODCTL CPDLPSTATE CLPSTATE Position */ +#define PWRMODCTL_CPDLPSTATE_CLPSTATE_Msk 3UL /*!< PWRMODCTL CPDLPSTATE CLPSTATE Mask */ + +#define PWRMODCTL_CPDLPSTATE_ELPSTATE_Pos 4U /*!< PWRMODCTL CPDLPSTATE ELPSTATE Position */ +#define PWRMODCTL_CPDLPSTATE_ELPSTATE_Msk 3UL /*!< PWRMODCTL CPDLPSTATE ELPSTATE Mask */ + +#define PWRMODCTL_CPDLPSTATE_RLPSTATE_Pos 8U /*!< PWRMODCTL CPDLPSTATE RLPSTATE Position */ +#define PWRMODCTL_CPDLPSTATE_RLPSTATE_Msk 3UL /*!< PWRMODCTL CPDLPSTATE RLPSTATE 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 3UL /*!< PWRMODCTL DPDLPSTATE DLPSTATE Mask */ + +/*@}*/ /* end of group CMSIS_PWRMODCTL */ + + +/** + \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[4]; + __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: 0xFE0 (R/W) PMU Peripheral Identification Register 1 */ + __IOM uint32_t PIDR2; /*!< Offset: 0xFE0 (R/W) PMU Peripheral Identification Register 2 */ + __IOM uint32_t PIDR3; /*!< Offset: 0xFE0 (R/W) PMU Peripheral Identification Register 3 */ + uint32_t RESERVED14[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 PWRMODCTL_BASE (0xE001E300UL) /*!< Power Mode Control 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 PWRMODCTL ((PwrModCtl_Type *) PWRMODCTL_BASE ) /*!< Power Mode Control 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) */ +/*@} */ + + + +/******************************************************************************* + * 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_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/ra6m3-hmi-board/ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm7.h b/bsp/renesas/ra6m3-hmi-board/ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm7.h new file mode 100644 index 0000000000..010506e9fa --- /dev/null +++ b/bsp/renesas/ra6m3-hmi-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/ra6m3-hmi-board/ra/arm/CMSIS_5/CMSIS/Core/Include/core_sc000.h b/bsp/renesas/ra6m3-hmi-board/ra/arm/CMSIS_5/CMSIS/Core/Include/core_sc000.h new file mode 100644 index 0000000000..dbc755fff3 --- /dev/null +++ b/bsp/renesas/ra6m3-hmi-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/ra6m3-hmi-board/ra/arm/CMSIS_5/CMSIS/Core/Include/core_sc300.h b/bsp/renesas/ra6m3-hmi-board/ra/arm/CMSIS_5/CMSIS/Core/Include/core_sc300.h new file mode 100644 index 0000000000..d66621031e --- /dev/null +++ b/bsp/renesas/ra6m3-hmi-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/ra6m3-hmi-board/ra/arm/CMSIS_5/CMSIS/Core/Include/mpu_armv7.h b/bsp/renesas/ra6m3-hmi-board/ra/arm/CMSIS_5/CMSIS/Core/Include/mpu_armv7.h new file mode 100644 index 0000000000..d9eedf81a6 --- /dev/null +++ b/bsp/renesas/ra6m3-hmi-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/ra6m3-hmi-board/ra/arm/CMSIS_5/CMSIS/Core/Include/mpu_armv8.h b/bsp/renesas/ra6m3-hmi-board/ra/arm/CMSIS_5/CMSIS/Core/Include/mpu_armv8.h new file mode 100644 index 0000000000..3de16efc86 --- /dev/null +++ b/bsp/renesas/ra6m3-hmi-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/ra6m3-hmi-board/ra/arm/CMSIS_5/CMSIS/Core/Include/pmu_armv8.h b/bsp/renesas/ra6m3-hmi-board/ra/arm/CMSIS_5/CMSIS/Core/Include/pmu_armv8.h new file mode 100644 index 0000000000..f8f3d8935b --- /dev/null +++ b/bsp/renesas/ra6m3-hmi-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/ra6m3-hmi-board/ra/arm/CMSIS_5/CMSIS/Core/Include/tz_context.h b/bsp/renesas/ra6m3-hmi-board/ra/arm/CMSIS_5/CMSIS/Core/Include/tz_context.h new file mode 100644 index 0000000000..0d09749f3a --- /dev/null +++ b/bsp/renesas/ra6m3-hmi-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/ra6m3-hmi-board/ra/arm/CMSIS_5/LICENSE.txt b/bsp/renesas/ra6m3-hmi-board/ra/arm/CMSIS_5/LICENSE.txt new file mode 100644 index 0000000000..8dada3edaf --- /dev/null +++ b/bsp/renesas/ra6m3-hmi-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/ra6m3-hmi-board/ra/board/ra6m3/board.h b/bsp/renesas/ra6m3-hmi-board/ra/board/ra6m3/board.h new file mode 100644 index 0000000000..2b5ff259f5 --- /dev/null +++ b/bsp/renesas/ra6m3-hmi-board/ra/board/ra6m3/board.h @@ -0,0 +1,66 @@ +/*********************************************************************************************************************** + * Copyright [2020] Renesas Electronics Corporation and/or its licensors. All Rights Reserved. + * + * This file is part of Renesas RA Flexible Software Package (FSP) + * + * The contents of this file (the "contents") are proprietary and confidential to Renesas Electronics Corporation + * and/or its licensors ("Renesas") and subject to statutory and contractual protections. + * + * This file is subject to a Renesas FSP license agreement. Unless otherwise agreed in an FSP license agreement with + * Renesas: 1) you may not use, copy, modify, distribute, display, or perform the contents; 2) you may not use any name + * or mark of Renesas for advertising or publicity purposes or in connection with your use of the contents; 3) RENESAS + * MAKES NO WARRANTY OR REPRESENTATIONS ABOUT THE SUITABILITY OF THE CONTENTS FOR ANY PURPOSE; THE CONTENTS ARE PROVIDED + * "AS IS" WITHOUT ANY EXPRESS OR IMPLIED WARRANTY, INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A + * PARTICULAR PURPOSE, AND NON-INFRINGEMENT; AND 4) RENESAS SHALL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL, OR + * CONSEQUENTIAL DAMAGES, INCLUDING DAMAGES RESULTING FROM LOSS OF USE, DATA, OR PROJECTS, WHETHER IN AN ACTION OF + * CONTRACT OR TORT, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE CONTENTS. Third-party contents + * included in this file may be subject to different terms. + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * File Name : board.h + * Description : Includes and API function available for this board. + **********************************************************************************************************************/ + +/*******************************************************************************************************************//** + * @ingroup BSP_Boards + * @defgroup BOARD_RA6M2_CPK for the RA6M4_CPK Board + * @brief BSP for the RA6M4_CPK Board + * + * The RA6M4_CPK is a development kit for the Renesas RA6M2 microcontroller. + * + * @{ + **********************************************************************************************************************/ + +#ifndef BOARD_H +#define BOARD_H + +/*********************************************************************************************************************** + * Includes , "Project Includes" + **********************************************************************************************************************/ + +/* BSP Board Specific Includes. */ +#include "../ra6m3/board_ethernet_phy.h" +#include "../ra6m3/board_init.h" +#include "../ra6m3/board_leds.h" + +/*********************************************************************************************************************** + * Macro definitions + **********************************************************************************************************************/ +#define BOARD_RA6M3 + +/*********************************************************************************************************************** + * Typedef definitions + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Exported global variables + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Exported global functions (to be accessed by other files) + **********************************************************************************************************************/ + +/** @} (end defgroup BOARD_RA6M4_CPK) */ + +#endif diff --git a/bsp/renesas/ra6m3-hmi-board/ra/board/ra6m3/board_ethernet_phy.h b/bsp/renesas/ra6m3-hmi-board/ra/board/ra6m3/board_ethernet_phy.h new file mode 100644 index 0000000000..52efc903c9 --- /dev/null +++ b/bsp/renesas/ra6m3-hmi-board/ra/board/ra6m3/board_ethernet_phy.h @@ -0,0 +1,60 @@ +/*********************************************************************************************************************** + * Copyright [2020] 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_RA6M4_CPK + * @defgroup BOARD_RA6M4_CPK_ETHERNET_PHY Board Ethernet Phy + * @brief Ethernet Phy information for this board. + * + * This is code specific to the RA6M4_CPK 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 BOARD_PHY_TYPE (0) +#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_RA6M4_CPK_ETHERNET_PHY) */ diff --git a/bsp/renesas/ra6m3-hmi-board/ra/board/ra6m3/board_init.c b/bsp/renesas/ra6m3-hmi-board/ra/board/ra6m3/board_init.c new file mode 100644 index 0000000000..6524a5b4bb --- /dev/null +++ b/bsp/renesas/ra6m3-hmi-board/ra/board/ra6m3/board_init.c @@ -0,0 +1,66 @@ +/*********************************************************************************************************************** + * Copyright [2020] Renesas Electronics Corporation and/or its licensors. All Rights Reserved. + * + * This file is part of Renesas RA Flexible Software Package (FSP) + * + * The contents of this file (the "contents") are proprietary and confidential to Renesas Electronics Corporation + * and/or its licensors ("Renesas") and subject to statutory and contractual protections. + * + * This file is subject to a Renesas FSP license agreement. Unless otherwise agreed in an FSP license agreement with + * Renesas: 1) you may not use, copy, modify, distribute, display, or perform the contents; 2) you may not use any name + * or mark of Renesas for advertising or publicity purposes or in connection with your use of the contents; 3) RENESAS + * MAKES NO WARRANTY OR REPRESENTATIONS ABOUT THE SUITABILITY OF THE CONTENTS FOR ANY PURPOSE; THE CONTENTS ARE PROVIDED + * "AS IS" WITHOUT ANY EXPRESS OR IMPLIED WARRANTY, INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A + * PARTICULAR PURPOSE, AND NON-INFRINGEMENT; AND 4) RENESAS SHALL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL, OR + * CONSEQUENTIAL DAMAGES, INCLUDING DAMAGES RESULTING FROM LOSS OF USE, DATA, OR PROJECTS, WHETHER IN AN ACTION OF + * CONTRACT OR TORT, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE CONTENTS. Third-party contents + * included in this file may be subject to different terms. + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * File Name : bsp_init.c + * Description : This module calls any initialization code specific to this BSP. + **********************************************************************************************************************/ + +/*******************************************************************************************************************//** + * @addtogroup BOARD_RA6M4_CPK_INIT + * + * @{ + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Includes , "Project Includes" + **********************************************************************************************************************/ +#include "bsp_api.h" + +#if defined(BOARD_RA6M3) + +/*********************************************************************************************************************** + * 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_RA6M4_CPK_INIT) */ diff --git a/bsp/renesas/ra6m3-hmi-board/ra/board/ra6m3/board_init.h b/bsp/renesas/ra6m3-hmi-board/ra/board/ra6m3/board_init.h new file mode 100644 index 0000000000..9926214f5b --- /dev/null +++ b/bsp/renesas/ra6m3-hmi-board/ra/board/ra6m3/board_init.h @@ -0,0 +1,63 @@ +/*********************************************************************************************************************** + * Copyright [2020] Renesas Electronics Corporation and/or its licensors. All Rights Reserved. + * + * This file is part of Renesas RA Flexible Software Package (FSP) + * + * The contents of this file (the "contents") are proprietary and confidential to Renesas Electronics Corporation + * and/or its licensors ("Renesas") and subject to statutory and contractual protections. + * + * This file is subject to a Renesas FSP license agreement. Unless otherwise agreed in an FSP license agreement with + * Renesas: 1) you may not use, copy, modify, distribute, display, or perform the contents; 2) you may not use any name + * or mark of Renesas for advertising or publicity purposes or in connection with your use of the contents; 3) RENESAS + * MAKES NO WARRANTY OR REPRESENTATIONS ABOUT THE SUITABILITY OF THE CONTENTS FOR ANY PURPOSE; THE CONTENTS ARE PROVIDED + * "AS IS" WITHOUT ANY EXPRESS OR IMPLIED WARRANTY, INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A + * PARTICULAR PURPOSE, AND NON-INFRINGEMENT; AND 4) RENESAS SHALL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL, OR + * CONSEQUENTIAL DAMAGES, INCLUDING DAMAGES RESULTING FROM LOSS OF USE, DATA, OR PROJECTS, WHETHER IN AN ACTION OF + * CONTRACT OR TORT, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE CONTENTS. Third-party contents + * included in this file may be subject to different terms. + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * File Name : board_init.h + * Description : This module calls any initialization code specific to this BSP. + **********************************************************************************************************************/ + +/*******************************************************************************************************************//** + * @ingroup BOARD_RA6M4_CPK + * @defgroup BOARD_RA6M4_CPK Board Specific Code + * @brief Board specific code for the RA6M4_CPK Board + * + * This is code specific to the RA6M4_CPK 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 defgroup BOARD_RA6M4_CPK_INIT) */ diff --git a/bsp/renesas/ra6m3-hmi-board/ra/board/ra6m3/board_leds.c b/bsp/renesas/ra6m3-hmi-board/ra/board/ra6m3/board_leds.c new file mode 100644 index 0000000000..feb04500ef --- /dev/null +++ b/bsp/renesas/ra6m3-hmi-board/ra/board/ra6m3/board_leds.c @@ -0,0 +1,74 @@ +/*********************************************************************************************************************** + * Copyright [2020] Renesas Electronics Corporation and/or its licensors. All Rights Reserved. + * + * This file is part of Renesas RA Flexible Software Package (FSP) + * + * The contents of this file (the "contents") are proprietary and confidential to Renesas Electronics Corporation + * and/or its licensors ("Renesas") and subject to statutory and contractual protections. + * + * This file is subject to a Renesas FSP license agreement. Unless otherwise agreed in an FSP license agreement with + * Renesas: 1) you may not use, copy, modify, distribute, display, or perform the contents; 2) you may not use any name + * or mark of Renesas for advertising or publicity purposes or in connection with your use of the contents; 3) RENESAS + * MAKES NO WARRANTY OR REPRESENTATIONS ABOUT THE SUITABILITY OF THE CONTENTS FOR ANY PURPOSE; THE CONTENTS ARE PROVIDED + * "AS IS" WITHOUT ANY EXPRESS OR IMPLIED WARRANTY, INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A + * PARTICULAR PURPOSE, AND NON-INFRINGEMENT; AND 4) RENESAS SHALL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL, OR + * CONSEQUENTIAL DAMAGES, INCLUDING DAMAGES RESULTING FROM LOSS OF USE, DATA, OR PROJECTS, WHETHER IN AN ACTION OF + * CONTRACT OR TORT, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE CONTENTS. Third-party contents + * included in this file may be subject to different terms. + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * File Name : board_leds.c + * Description : This module has information about the LEDs on this board. + **********************************************************************************************************************/ + +/*******************************************************************************************************************//** + * @addtogroup BSP_RA6M4_CPK_LEDS + * + * @{ + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Includes + **********************************************************************************************************************/ +#include "bsp_api.h" + +#if defined(BOARD_RA6M4_CPK) + +/*********************************************************************************************************************** + * 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_01_PIN_06, ///< USER LED +}; + +/*********************************************************************************************************************** + * 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 BSP_RA6M4_CPK_LEDS) */ diff --git a/bsp/renesas/ra6m3-hmi-board/ra/board/ra6m3/board_leds.h b/bsp/renesas/ra6m3-hmi-board/ra/board/ra6m3/board_leds.h new file mode 100644 index 0000000000..10a644f212 --- /dev/null +++ b/bsp/renesas/ra6m3-hmi-board/ra/board/ra6m3/board_leds.h @@ -0,0 +1,75 @@ +/*********************************************************************************************************************** + * Copyright [2020] Renesas Electronics Corporation and/or its licensors. All Rights Reserved. + * + * This file is part of Renesas RA Flexible Software Package (FSP) + * + * The contents of this file (the "contents") are proprietary and confidential to Renesas Electronics Corporation + * and/or its licensors ("Renesas") and subject to statutory and contractual protections. + * + * This file is subject to a Renesas FSP license agreement. Unless otherwise agreed in an FSP license agreement with + * Renesas: 1) you may not use, copy, modify, distribute, display, or perform the contents; 2) you may not use any name + * or mark of Renesas for advertising or publicity purposes or in connection with your use of the contents; 3) RENESAS + * MAKES NO WARRANTY OR REPRESENTATIONS ABOUT THE SUITABILITY OF THE CONTENTS FOR ANY PURPOSE; THE CONTENTS ARE PROVIDED + * "AS IS" WITHOUT ANY EXPRESS OR IMPLIED WARRANTY, INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A + * PARTICULAR PURPOSE, AND NON-INFRINGEMENT; AND 4) RENESAS SHALL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL, OR + * CONSEQUENTIAL DAMAGES, INCLUDING DAMAGES RESULTING FROM LOSS OF USE, DATA, OR PROJECTS, WHETHER IN AN ACTION OF + * CONTRACT OR TORT, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE CONTENTS. Third-party contents + * included in this file may be subject to different terms. + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * File Name : board_leds.h + * Description : This module has information about the LEDs on this board. + **********************************************************************************************************************/ + +/*******************************************************************************************************************//** + * @ingroup BOARD_RA6M4_CPK + * @defgroup BSP_RA6M4_CPK_LEDS Board LEDs + * @brief LED information for this board. + * + * This is code specific to the RA6M4_CPK board. + * + * @{ + **********************************************************************************************************************/ + +#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_LED3 = 0, ///< TB LED - Red +} 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 /* BOARD_LEDS_H */ + +/** @} (end defgroup BSP_RA6M4_CPK_LEDS) */ diff --git a/bsp/renesas/ra6m3-hmi-board/ra/fsp/inc/api/bsp_api.h b/bsp/renesas/ra6m3-hmi-board/ra/fsp/inc/api/bsp_api.h new file mode 100644 index 0000000000..c3fd642f1e --- /dev/null +++ b/bsp/renesas/ra6m3-hmi-board/ra/fsp/inc/api/bsp_api.h @@ -0,0 +1,107 @@ +/*********************************************************************************************************************** + * Copyright [2020-2021] 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) + +/* 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_arm_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 + +/* 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" + +/* BSP TFU Includes. */ +#if BSP_FEATURE_TFU_SUPPORTED + #include "../../src/bsp/mcu/all/bsp_tfu.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/ra6m3-hmi-board/ra/fsp/inc/api/r_ioport_api.h b/bsp/renesas/ra6m3-hmi-board/ra/fsp/inc/api/r_ioport_api.h new file mode 100644 index 0000000000..5983dcba0f --- /dev/null +++ b/bsp/renesas/ra6m3-hmi-board/ra/fsp/inc/api/r_ioport_api.h @@ -0,0 +1,384 @@ +/*********************************************************************************************************************** + * Copyright [2020-2021] 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. + * + * IOPORT Interface description: @ref IOPORT + * + * @{ + **********************************************************************************************************************/ + +#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 + **********************************************************************************************************************/ + +/* Private definition to set enumeration values. */ +#define IOPORT_PRV_PFS_PSEL_OFFSET (24) + +/********************************************************************************************************************** + * Typedef definitions + **********************************************************************************************************************/ + +/** IO port type used with ports */ +typedef uint16_t ioport_size_t; ///< IO port size on this device + +/** 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 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), + + /** 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 a DALI peripheral pin */ + IOPORT_PERIPHERAL_DALI = (0x0EUL << 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), + + /** 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), +} ioport_peripheral_t; + +/* DEPRECATED Superset of Ethernet channels. */ +typedef enum e_ioport_eth_ch +{ + IOPORT_ETHERNET_CHANNEL_0 = 0x10, ///< Used to select Ethernet channel 0 + IOPORT_ETHERNET_CHANNEL_1 = 0x20, ///< Used to select Ethernet channel 1 + IOPORT_ETHERNET_CHANNEL_END ///< Marks end of enum - used by parameter checking +} ioport_ethernet_channel_t; + +/* DEPRECATED Superset of Ethernet PHY modes. */ +typedef enum e_ioport_eth_mode +{ + IOPORT_ETHERNET_MODE_RMII = 0x00, ///< Ethernet PHY mode set to MII + IOPORT_ETHERNET_MODE_MII = 0x10, ///< Ethernet PHY mode set to RMII + IOPORT_ETHERNET_MODE_END ///< Marks end of enum - used by parameter checking +} ioport_ethernet_mode_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; + +/* PFS writing enable/disable. */ +typedef enum e_ioport_pwpr +{ + IOPORT_PFS_WRITE_DISABLE = 0, ///< Disable PFS write access + IOPORT_PFS_WRITE_ENABLE = 1 ///< Enable PFS write access +} ioport_pwpr_t; + +/** Pin identifier and pin PFS pin configuration value */ +typedef struct st_ioport_pin_cfg +{ + uint32_t pin_cfg; ///< Pin PFS 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 PFS registers by R_IOPORT_Init() */ +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 +} ioport_cfg_t; + +/** IOPORT control block. Allocate an instance specific control block to pass into the IOPORT API calls. + * @par Implemented as + * - ioport_instance_ctrl_t + */ +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. + * @par Implemented as + * - @ref R_IOPORT_Open() + * @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. + * @par Implemented as + * - @ref R_IOPORT_Close() + * + * @param[in] p_ctrl Pointer to control structure. + **/ + fsp_err_t (* close)(ioport_ctrl_t * const p_ctrl); + + /** Configure multiple pins. + * @par Implemented as + * - @ref R_IOPORT_PinsCfg() + * @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. + * @par Implemented as + * - @ref R_IOPORT_PinCfg() + * @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. + * @par Implemented as + * - @ref R_IOPORT_PinEventInputRead() + * @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. + * @par Implemented as + * - @ref R_IOPORT_PinEventOutputWrite() + * @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); + + /* DEPRECATED Configure the PHY mode of the Ethernet channels. + * @par Implemented as + * - @ref R_IOPORT_EthernetModeCfg() + * @param[in] channel Channel configuration will be set for. + * @param[in] mode PHY mode to set the channel to. + */ + fsp_err_t (* pinEthernetModeCfg)(ioport_ctrl_t * const p_ctrl, ioport_ethernet_channel_t channel, + ioport_ethernet_mode_t mode); + + /** Read level of a pin. + * @par Implemented as + * - @ref R_IOPORT_PinRead() + * @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. + * @par Implemented as + * - @ref R_IOPORT_PinWrite() + * @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. + * @par Implemented as + * - @ref R_IOPORT_PortDirectionSet() + * @param[in] port Port being configured. + * @param[in] direction_values Value controlling direction of pins on port (1 - output, 0 - input). + * @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. + * @par Implemented as + * - @ref R_IOPORT_PortEventInputRead() + * @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. + * @par Implemented as + * - @ref R_IOPORT_PortEventOutputWrite() + * @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. + * @par Implemented as + * - @ref R_IOPORT_PortRead() + * @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. + * @par Implemented as + * - @ref R_IOPORT_PortWrite() + * @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/ra6m3-hmi-board/ra/fsp/inc/api/r_transfer_api.h b/bsp/renesas/ra6m3-hmi-board/ra/fsp/inc/api/r_transfer_api.h new file mode 100644 index 0000000000..83e8f0a862 --- /dev/null +++ b/bsp/renesas/ra6m3-hmi-board/ra/fsp/inc/api/r_transfer_api.h @@ -0,0 +1,371 @@ +/*********************************************************************************************************************** + * Copyright [2020-2021] 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). + * + * Implemented by: + * - @ref DTC + * - @ref DMAC + * + * @{ + **********************************************************************************************************************/ + +#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. + * @par Implemented as + * - dtc_instance_ctrl_t + * - dmac_instance_ctrl_t + */ +typedef void transfer_ctrl_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; + +/** 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; + +/** 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; + +/** 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; + +/** 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; + +/** 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; + +/** 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; + +/** 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; + }; + 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; + +/** 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. + * @par Implemented as + * - @ref R_DTC_Open() + * - @ref R_DMAC_Open() + * + * @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. + * @par Implemented as + * - @ref R_DTC_Reconfigure() + * - @ref R_DMAC_Reconfigure() + * + * @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. + * @par Implemented as + * - @ref R_DTC_Reset() + * - @ref R_DMAC_Reset() + * + * @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 ELC_EVENT_ELC_NONE is chosen as activation source). + * @par Implemented as + * - @ref R_DTC_Enable() + * - @ref R_DMAC_Enable() + * + * @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 ELC_EVENT_ELC_NONE 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. + * @par Implemented as + * - @ref R_DTC_Disable() + * - @ref R_DMAC_Disable() + * + * @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 ELC_EVENT_ELC_NONE is chosen as the DMAC activation source. + * @note Not supported for DTC. + * @par Implemented as + * - @ref R_DMAC_SoftwareStart() + * + * @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 ELC_EVENT_ELC_NONE is chosen as the DMAC activation source. + * @par Implemented as + * - @ref R_DMAC_SoftwareStop() + * + * @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. + * @par Implemented as + * - @ref R_DTC_InfoGet() + * - @ref R_DMAC_InfoGet() + * + * @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. + * @par Implemented as + * - @ref R_DTC_Close() + * - @ref R_DMAC_Close() + * @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); +} 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/ra6m3-hmi-board/ra/fsp/inc/api/r_uart_api.h b/bsp/renesas/ra6m3-hmi-board/ra/fsp/inc/api/r_uart_api.h new file mode 100644 index 0000000000..14e7ee445c --- /dev/null +++ b/bsp/renesas/ra6m3-hmi-board/ra/fsp/inc/api/r_uart_api.h @@ -0,0 +1,293 @@ +/*********************************************************************************************************************** + * Copyright [2020-2021] 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) + * + * Implemented by: + * - @ref SCI_UART + * - @ref SCI_B_UART + * + * @{ + **********************************************************************************************************************/ + +#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 */ +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; + +/** 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; + +/** 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; + +/** 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. + * @par Implemented as + * - sci_uart_instance_ctrl_t + */ +typedef void uart_ctrl_t; + +/** Shared Interface definition for UART */ +typedef struct st_uart_api +{ + /** Open UART device. + * @par Implemented as + * - @ref R_SCI_UART_Open() + * - @ref R_SCI_B_UART_Open() + * + * @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(). + * @par Implemented as + * - @ref R_SCI_UART_Read() + * - @ref R_SCI_B_UART_Read() + * + * @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(). + * @par Implemented as + * - @ref R_SCI_UART_Write() + * - @ref R_SCI_B_UART_Write() + * + * @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. + * + * @par Implemented as + * - @ref R_SCI_UART_BaudSet() + * - @ref R_SCI_B_UART_BaudSet() + * + * @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. + * @par Implemented as + * - @ref R_SCI_UART_InfoGet() + * - @ref R_SCI_B_UART_InfoGet() + * + * @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. + * @par Implemented as + * - @ref R_SCI_UART_Abort() + * - @ref R_SCI_B_UART_Abort() + * + * @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. + * @par Implemented as + * - R_SCI_Uart_CallbackSet() + * - R_SCI_B_Uart_CallbackSet() + * + * @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_api_ctrl, void (* p_callback)(uart_callback_args_t *), + void const * const p_context, uart_callback_args_t * const p_callback_memory); + + /** Close UART device. + * @par Implemented as + * - @ref R_SCI_UART_Close() + * - @ref R_SCI_B_UART_Close() + * + * @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. + * @par Implemented as + * - @ref R_SCI_UART_ReadStop() + * - @ref R_SCI_B_UART_ReadStop() + * + * @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/ra6m3-hmi-board/ra/fsp/inc/fsp_common_api.h b/bsp/renesas/ra6m3-hmi-board/ra/fsp/inc/fsp_common_api.h new file mode 100644 index 0000000000..478b41a5f3 --- /dev/null +++ b/bsp/renesas/ra6m3-hmi-board/ra/fsp/inc/fsp_common_api.h @@ -0,0 +1,364 @@ +/*********************************************************************************************************************** + * Copyright [2020-2021] 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 + +/** 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 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 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 + + /* 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 + **********************************************************************************************************************/ + +#endif diff --git a/bsp/renesas/ra6m3-hmi-board/ra/fsp/inc/fsp_features.h b/bsp/renesas/ra6m3-hmi-board/ra/fsp/inc/fsp_features.h new file mode 100644 index 0000000000..09bd6b7f3e --- /dev/null +++ b/bsp/renesas/ra6m3-hmi-board/ra/fsp/inc/fsp_features.h @@ -0,0 +1,294 @@ +/*********************************************************************************************************************** + * Copyright [2020-2021] 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 + * @{ + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * 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_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_t; + +typedef void (* fsp_vector_t)(void); + +/** @} (end addtogroup BSP_MCU) */ + +#endif diff --git a/bsp/renesas/ra6m3-hmi-board/ra/fsp/inc/fsp_version.h b/bsp/renesas/ra6m3-hmi-board/ra/fsp/inc/fsp_version.h new file mode 100644 index 0000000000..e8b2bfc502 --- /dev/null +++ b/bsp/renesas/ra6m3-hmi-board/ra/fsp/inc/fsp_version.h @@ -0,0 +1,80 @@ +/*********************************************************************************************************************** + * Copyright [2020-2021] 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 + * @{ + **********************************************************************************************************************/ + +/********************************************************************************************************************** + * Macro definitions + **********************************************************************************************************************/ + +/** FSP pack major version. */ +#define FSP_VERSION_MAJOR (3U) + +/** FSP pack minor version. */ +#define FSP_VERSION_MINOR (5U) + +/** 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 ("3.5.0") + +/** Unique FSP version ID. */ +#define FSP_VERSION_BUILD_STRING ("Built with Renesas Advanced Flexible Software Package version 3.5.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 + { + 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 + }; +} fsp_pack_version_t; + +/** @} */ + +#endif diff --git a/bsp/renesas/ra6m3-hmi-board/ra/fsp/inc/instances/r_glcdc.h b/bsp/renesas/ra6m3-hmi-board/ra/fsp/inc/instances/r_glcdc.h new file mode 100644 index 0000000000..eb58dd547a --- /dev/null +++ b/bsp/renesas/ra6m3-hmi-board/ra/fsp/inc/instances/r_glcdc.h @@ -0,0 +1,244 @@ +/*********************************************************************************************************************** + * Copyright [2020-2021] 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 GLCDC + * @{ + **********************************************************************************************************************/ + +#ifndef R_GLCDC_H +#define R_GLCDC_H + +/*********************************************************************************************************************** + * Includes + **********************************************************************************************************************/ +#include "bsp_api.h" +#include "r_display_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 + **********************************************************************************************************************/ + +/** Display control block. DO NOT INITIALIZE. */ +typedef struct st_glcdc_instance_ctrl +{ + display_state_t state; // Status of GLCDC module + + /* Parameters to Event processing for display devices */ + void (* p_callback)(display_callback_args_t * p_args); // Pointer to callback function + void const * p_context; // Pointer to the higher level device context + const display_cfg_t * p_cfg; // Pointer to initial configurations +} glcdc_instance_ctrl_t; + +/** Clock source select */ +typedef enum e_glcdc_clk_src +{ + GLCDC_CLK_SRC_INTERNAL, ///< Internal + GLCDC_CLK_SRC_EXTERNAL, ///< External +} glcdc_clk_src_t; + +/** Clock frequency division ratio */ +typedef enum e_glcdc_panel_clk_div +{ + GLCDC_PANEL_CLK_DIVISOR_1 = 1, ///< Division Ratio 1/1 + GLCDC_PANEL_CLK_DIVISOR_2 = 2, ///< Division Ratio 1/2 + GLCDC_PANEL_CLK_DIVISOR_3 = 3, ///< Division Ratio 1/3 + GLCDC_PANEL_CLK_DIVISOR_4 = 4, ///< Division Ratio 1/4 + GLCDC_PANEL_CLK_DIVISOR_5 = 5, ///< Division Ratio 1/5 + GLCDC_PANEL_CLK_DIVISOR_6 = 6, ///< Division Ratio 1/6 + GLCDC_PANEL_CLK_DIVISOR_7 = 7, ///< Division Ratio 1/7 + GLCDC_PANEL_CLK_DIVISOR_8 = 8, ///< Division Ratio 1/8 + GLCDC_PANEL_CLK_DIVISOR_9 = 9, ///< Division Ratio 1/9 + GLCDC_PANEL_CLK_DIVISOR_12 = 12, ///< Division Ratio 1/12 + GLCDC_PANEL_CLK_DIVISOR_16 = 16, ///< Division Ratio 1/16 + GLCDC_PANEL_CLK_DIVISOR_24 = 24, ///< Division Ratio 1/24 + GLCDC_PANEL_CLK_DIVISOR_32 = 32, ///< Division Ratio 1/32 +} glcdc_panel_clk_div_t; + +/** LCD TCON output pin select */ +typedef enum e_glcdc_tcon_pin +{ + GLCDC_TCON_PIN_NONE = -1, ///< No output + GLCDC_TCON_PIN_0, ///< LCD_TCON0 + GLCDC_TCON_PIN_1, ///< LCD_TCON1 + GLCDC_TCON_PIN_2, ///< LCD_TCON2 + GLCDC_TCON_PIN_3, ///< LCD_TCON3 +} glcdc_tcon_pin_t; + +/** Bus Arbitration setting */ +typedef enum e_glcdc_bus_arbitraion +{ + GLCDC_BUS_ARBITRATION_ROUNDROBIN, ///< Round robin + GLCDC_BUS_ARBITRATION_FIX_PRIORITY ///< Fixed +} glcdc_bus_arbitration_t; + +/** Correction circuit sequence control */ +typedef enum e_glcdc_correction_proc_order +{ + GLCDC_CORRECTION_PROC_ORDER_BRIGHTNESS_CONTRAST2GAMMA, ///< Brightness -> contrast -> gamma correction + GLCDC_CORRECTION_PROC_ORDER_GAMMA2BRIGHTNESS_CONTRAST ///< Gamma correction -> brightness -> contrast +} glcdc_correction_proc_order_t; + +/** Timing signals for driving the LCD panel */ +typedef enum e_glcdc_tcon_signal_select +{ + GLCDC_TCON_SIGNAL_SELECT_STVA_VS = 0, ///< STVA/VS + GLCDC_TCON_SIGNAL_SELECT_STVB_VE = 1, ///< STVB/VE + GLCDC_TCON_SIGNAL_SELECT_STHA_HS = 2, ///< STH/SP/HS + GLCDC_TCON_SIGNAL_SELECT_STHB_HE = 3, ///< STB/LP/HE + GLCDC_TCON_SIGNAL_SELECT_DE = 7 ///< DE +} glcdc_tcon_signal_select_t; + +/** Clock phase adjustment for serial RGB output */ +typedef enum e_glcdc_clut_plane +{ + GLCDC_CLUT_PLANE_0 = 0, ///< GLCDC CLUT plane 0 + GLCDC_CLUT_PLANE_1 = 1, ///< GLCDC CLUT plane 1 +} glcdc_clut_plane_t; + +/** Dithering mode */ +typedef enum e_glcdc_dithering_mode +{ + GLCDC_DITHERING_MODE_TRUNCATE = 0, ///< No dithering (truncate) + GLCDC_DITHERING_MODE_ROUND_OFF = 1, ///< Dithering with round off + GLCDC_DITHERING_MODE_2X2PATTERN = 2, ///< Dithering with 2x2 pattern + GLCDC_DITHERING_MODE_SETTING_MAX +} glcdc_dithering_mode_t; + +/** Dithering mode */ +typedef enum e_glcdc_dithering_pattern +{ + GLCDC_DITHERING_PATTERN_00 = 0, ///< 2x2 pattern '00' + GLCDC_DITHERING_PATTERN_01 = 1, ///< 2x2 pattern '01' + GLCDC_DITHERING_PATTERN_10 = 2, ///< 2x2 pattern '10' + GLCDC_DITHERING_PATTERN_11 = 3, ///< 2x2 pattern '11' +} glcdc_dithering_pattern_t; + +/** Output interface format */ +typedef enum e_glcdc_input_interface_format +{ + GLCDC_INPUT_INTERFACE_FORMAT_RGB565 = 0, ///< Input interface format RGB565 + GLCDC_INPUT_INTERFACE_FORMAT_RGB888 = 1, ///< Input interface format RGB888 + GLCDC_INPUT_INTERFACE_FORMAT_ARGB1555 = 2, ///< Input interface format ARGB1555 + GLCDC_INPUT_INTERFACE_FORMAT_ARGB4444 = 3, ///< Input interface format ARGB4444 + GLCDC_INPUT_INTERFACE_FORMAT_ARGB8888 = 4, ///< Input interface format ARGB8888 + GLCDC_INPUT_INTERFACE_FORMAT_CLUT8 = 5, ///< Input interface format CLUT8 + GLCDC_INPUT_INTERFACE_FORMAT_CLUT4 = 6, ///< Input interface format CLUT4 + GLCDC_INPUT_INTERFACE_FORMAT_CLUT1 = 7, ///< Input interface format CLUT1 +} glcdc_input_interface_format_t; + +/** Output interface format */ +typedef enum e_glcdc_output_interface_format +{ + GLCDC_OUTPUT_INTERFACE_FORMAT_RGB888 = 0, ///< Output interface format RGB888 + GLCDC_OUTPUT_INTERFACE_FORMAT_RGB666 = 1, ///< Output interface format RGB666 + GLCDC_OUTPUT_INTERFACE_FORMAT_RGB565 = 2, ///< Output interface format RGB565 + GLCDC_OUTPUT_INTERFACE_FORMAT_SERIAL_RGB = 3, ///< Output interface format Serial RGB +} glcdc_output_interface_format_t; + +/** Dithering output format */ +typedef enum e_glcdc_dithering_output_format +{ + GLCDC_DITHERING_OUTPUT_FORMAT_RGB888 = 0, ///< Dithering output format RGB888 + GLCDC_DITHERING_OUTPUT_FORMAT_RGB666 = 1, ///< Dithering output format RGB666 + GLCDC_DITHERING_OUTPUT_FORMAT_RGB565 = 2, ///< Dithering output format RGB565 +} glcdc_dithering_output_format_t; + +/** GLCDC hardware specific configuration */ +typedef struct st_glcdc_extended_cfg +{ + glcdc_tcon_pin_t tcon_hsync; ///< GLCDC TCON output pin select + glcdc_tcon_pin_t tcon_vsync; ///< GLCDC TCON output pin select + glcdc_tcon_pin_t tcon_de; ///< GLCDC TCON output pin select + glcdc_correction_proc_order_t correction_proc_order; ///< Correction control route select + glcdc_clk_src_t clksrc; ///< Clock Source selection + glcdc_panel_clk_div_t clock_div_ratio; ///< Clock divide ratio for dot clock + glcdc_dithering_mode_t dithering_mode; ///< Dithering mode + glcdc_dithering_pattern_t dithering_pattern_A; ///< Dithering pattern A + glcdc_dithering_pattern_t dithering_pattern_B; ///< Dithering pattern B + glcdc_dithering_pattern_t dithering_pattern_C; ///< Dithering pattern C + glcdc_dithering_pattern_t dithering_pattern_D; ///< Dithering pattern D +} glcdc_extended_cfg_t; + +/* GLCDC hardware specific control block */ +typedef struct st_glcdc_ctrl +{ + display_coordinate_t back_porch; ///< Zero coordinate for graphics plane(Back porch end) + uint16_t hsize; ///< Horizontal pixel size in a line + uint16_t vsize; ///< Vertical pixel size in a frame + void * p_context; ///< Pointer to the function level device context + // (e.g. display_ctrl_t type data) +} glcdc_ctrl_t; + +/********************************************************************************************************************** + * Exported global variables + **********************************************************************************************************************/ + +/* @cond INC_HEADER_DEFS_SEC */ +/* Filled in Interface API structure for this Instance. */ +extern const display_api_t g_display_on_glcdc; + +/* @endcond */ + +/********************************************************************************************************************** + * Public APIs + **********************************************************************************************************************/ + +fsp_err_t R_GLCDC_Open(display_ctrl_t * const p_api_ctrl, display_cfg_t const * const p_cfg); +fsp_err_t R_GLCDC_Close(display_ctrl_t * const p_api_ctrl); +fsp_err_t R_GLCDC_Start(display_ctrl_t * const p_api_ctrl); +fsp_err_t R_GLCDC_Stop(display_ctrl_t * const p_api_ctrl); +fsp_err_t R_GLCDC_LayerChange(display_ctrl_t const * const p_api_ctrl, + display_runtime_cfg_t const * const p_cfg, + display_frame_layer_t layer); +fsp_err_t R_GLCDC_BufferChange(display_ctrl_t const * const p_api_ctrl, + uint8_t * const framebuffer, + display_frame_layer_t layer); + +#if GLCDC_CFG_COLOR_CORRECTION_ENABLE +fsp_err_t R_GLCDC_ColorCorrection(display_ctrl_t const * const p_api_ctrl, + display_correction_t const * const p_correction); + +#endif + +fsp_err_t R_GLCDC_ClutUpdate(display_ctrl_t const * const p_api_ctrl, + display_clut_cfg_t const * const p_clut_cfg, + display_frame_layer_t layer); +fsp_err_t R_GLCDC_ClutEdit(display_ctrl_t const * const p_api_ctrl, + display_frame_layer_t layer, + uint8_t index, + uint32_t color); +fsp_err_t R_GLCDC_StatusGet(display_ctrl_t const * const p_api_ctrl, display_status_t * const status); + +/*******************************************************************************************************************//** + * @} (end defgroup GLCDC) + **********************************************************************************************************************/ + +/* 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/ra6m3-hmi-board/ra/fsp/inc/instances/r_ioport.h b/bsp/renesas/ra6m3-hmi-board/ra/fsp/inc/instances/r_ioport.h new file mode 100644 index 0000000000..9e1861cde8 --- /dev/null +++ b/bsp/renesas/ra6m3-hmi-board/ra/fsp/inc/instances/r_ioport.h @@ -0,0 +1,359 @@ +/*********************************************************************************************************************** + * Copyright [2020-2021] 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" +#include "r_ioport_cfg.h" + +/*********************************************************************************************************************** + * Macro definitions + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * 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; + +/********************************************************************************************************************** + * 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); +fsp_err_t R_IOPORT_EthernetModeCfg(ioport_ctrl_t * const p_ctrl, + ioport_ethernet_channel_t channel, + ioport_ethernet_mode_t mode); + +/*******************************************************************************************************************//** + * @} (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/ra6m3-hmi-board/ra/fsp/inc/instances/r_sci_uart.h b/bsp/renesas/ra6m3-hmi-board/ra/fsp/inc/instances/r_sci_uart.h new file mode 100644 index 0000000000..520240450a --- /dev/null +++ b/bsp/renesas/ra6m3-hmi-board/ra/fsp/inc/instances/r_sci_uart.h @@ -0,0 +1,192 @@ +/*********************************************************************************************************************** + * Copyright [2020-2021] 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_UART_H +#define R_SCI_UART_H + +/*******************************************************************************************************************//** + * @addtogroup SCI_UART + * @{ + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Includes + **********************************************************************************************************************/ +#include "bsp_api.h" +#include "r_uart_api.h" +#include "r_sci_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_clk_src +{ + SCI_UART_CLOCK_INT, ///< Use internal clock for baud generation + SCI_UART_CLOCK_INT_WITH_BAUDRATE_OUTPUT, ///< Use internal clock for baud generation and output on SCK + SCI_UART_CLOCK_EXT8X, ///< Use external clock 8x baud rate + SCI_UART_CLOCK_EXT16X ///< Use external clock 16x baud rate +} sci_clk_src_t; + +/** UART flow control mode definition */ +typedef enum e_sci_uart_flow_control +{ + SCI_UART_FLOW_CONTROL_RTS = 0U, ///< Use SCI pin for RTS + SCI_UART_FLOW_CONTROL_CTS = 1U, ///< Use SCI pin for CTS + SCI_UART_FLOW_CONTROL_CTSRTS = 3U, ///< Use SCI pin for CTS, external pin for RTS + SCI_UART_FLOW_CONTROL_HARDWARE_CTSRTS = 8U, ///< Use CTSn_RTSn pin for RTS and CTSn pin for CTS. Available only for some channels on selected MCUs. See hardware manual for channel specific options +} sci_uart_flow_control_t; + +/** UART instance control block. */ +typedef struct st_sci_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_SCI0_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_uart_instance_ctrl_t; + +/** Receive FIFO trigger configuration. */ +typedef enum e_sci_uart_rx_fifo_trigger +{ + SCI_UART_RX_FIFO_TRIGGER_1 = 0x1, ///< Callback after each byte is received without buffering + SCI_UART_RX_FIFO_TRIGGER_MAX = 0xF, ///< Callback when FIFO is full or after 15 bit times with no data (fewer interrupts) +} sci_uart_rx_fifo_trigger_t; + +/** Asynchronous Start Bit Edge Detection configuration. */ +typedef enum e_sci_uart_start_bit_detect +{ + SCI_UART_START_BIT_LOW_LEVEL = 0x0, ///< Detect low level on RXDn pin as start bit + SCI_UART_START_BIT_FALLING_EDGE = 0x1, ///< Detect falling level on RXDn pin as start bit +} sci_uart_start_bit_detect_t; + +/** Noise cancellation configuration. */ +typedef enum e_sci_uart_noise_cancellation +{ + SCI_UART_NOISE_CANCELLATION_DISABLE = 0x0, ///< Disable noise cancellation + SCI_UART_NOISE_CANCELLATION_ENABLE = 0x1, ///< Enable noise cancellation +} sci_uart_noise_cancellation_t; + +/** Register settings to acheive a desired baud rate and modulation duty. */ +typedef struct st_baud_setting_t +{ + union + { + uint8_t semr_baudrate_bits; + + struct + { + uint8_t : 2; + uint8_t brme : 1; ///< Bit Rate Modulation Enable + uint8_t abcse : 1; ///< Asynchronous Mode Extended Base Clock Select 1 + uint8_t abcs : 1; ///< Asynchronous Mode Base Clock Select + uint8_t : 1; + uint8_t bgdm : 1; ///< Baud Rate Generator Double-Speed Mode Select + uint8_t : 1; + }; + }; + uint8_t cks : 2; ///< CKS value to get divisor (CKS = N) + uint8_t brr; ///< Bit Rate Register setting + uint8_t mddr; ///< Modulation Duty Register setting +} baud_setting_t; + +/** UART on SCI device Configuration */ +typedef struct st_sci_uart_extended_cfg +{ + sci_clk_src_t clock; ///< The source clock for the baud-rate generator. If internal optionally output baud rate on SCK + sci_uart_start_bit_detect_t rx_edge_start; ///< Start reception on falling edge + sci_uart_noise_cancellation_t noise_cancel; ///< Noise cancellation setting + baud_setting_t * p_baud_setting; ///< Register settings for a desired baud rate. + sci_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_uart_flow_control_t flow_control; ///< CTS/RTS function of the SSn pin +} sci_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; + +/** @endcond */ + +fsp_err_t R_SCI_UART_Open(uart_ctrl_t * const p_api_ctrl, uart_cfg_t const * const p_cfg); +fsp_err_t R_SCI_UART_Read(uart_ctrl_t * const p_api_ctrl, uint8_t * const p_dest, uint32_t const bytes); +fsp_err_t R_SCI_UART_Write(uart_ctrl_t * const p_api_ctrl, uint8_t const * const p_src, uint32_t const bytes); +fsp_err_t R_SCI_UART_BaudSet(uart_ctrl_t * const p_api_ctrl, void const * const p_baud_setting); +fsp_err_t R_SCI_UART_InfoGet(uart_ctrl_t * const p_api_ctrl, uart_info_t * const p_info); +fsp_err_t R_SCI_UART_Close(uart_ctrl_t * const p_api_ctrl); +fsp_err_t R_SCI_UART_Abort(uart_ctrl_t * const p_api_ctrl, uart_dir_t communication_to_abort); +fsp_err_t R_SCI_UART_BaudCalculate(uint32_t baudrate, + bool bitrate_modulation, + uint32_t baud_rate_error_x_1000, + baud_setting_t * const p_baud_setting); +fsp_err_t R_SCI_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_UART_ReadStop(uart_ctrl_t * const p_api_ctrl, uint32_t * remaining_bytes); + +/*******************************************************************************************************************//** + * @} (end addtogroup SCI_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/ra6m3-hmi-board/ra/fsp/src/bsp/cmsis/Device/RENESAS/Include/base_addresses.h b/bsp/renesas/ra6m3-hmi-board/ra/fsp/src/bsp/cmsis/Device/RENESAS/Include/base_addresses.h new file mode 100644 index 0000000000..8542eaa843 --- /dev/null +++ b/bsp/renesas/ra6m3-hmi-board/ra/fsp/src/bsp/cmsis/Device/RENESAS/Include/base_addresses.h @@ -0,0 +1,623 @@ +#ifndef __BASE_ADDRESSES_H +#define __BASE_ADDRESSES_H + +#if 33U == __CORTEX_M // NOLINT(readability-magic-numbers) + +/* =========================================================================================================================== */ +/* ================ Device Specific Peripheral Address Map ================ */ +/* =========================================================================================================================== */ + +/** @addtogroup Device_Peripheral_peripheralAddr + * @{ + */ + + #define R_ACMPHS0_BASE 0x400F4000 + #define R_ACMPHS1_BASE 0x400F4100 + #define R_ACMPHS2_BASE 0x400F4200 + #define R_ACMPHS3_BASE 0x400F4300 + #define R_MPU_BASE 0x40000000 + #define R_TZF_BASE 0x40000E00 + #define R_SRAM_BASE 0x40002000 + #define R_BUS_BASE 0x40003000 + #define R_DMAC0_BASE 0x40005000 + #define R_DMAC1_BASE 0x40005040 + #define R_DMAC2_BASE 0x40005080 + #define R_DMAC3_BASE 0x400050C0 + #define R_DMAC4_BASE 0x40005100 + #define R_DMAC5_BASE 0x40005140 + #define R_DMAC6_BASE 0x40005180 + #define R_DMAC7_BASE 0x400051C0 + #define R_DMA_BASE 0x40005200 + #define R_DTC_BASE 0x40005400 + #define R_ICU_BASE 0x40006000 + #define R_CACHE_BASE 0x40007000 + #define R_CPSCU_BASE 0x40008000 + #define R_DBG_BASE 0x4001B000 + #define R_FCACHE_BASE 0x4001C000 + #define R_SYSC_BASE 0x4001E000 + #define R_TSN_CAL_BASE 0x407FB17C + #define R_TSN_CTRL_BASE 0x400F3000 + #define R_ELC_BASE 0x40082000 + #define R_TC_BASE 0x40083000 + #define R_IWDT_BASE 0x40083200 + #define R_WDT_BASE 0x40083400 + #define R_CAC_BASE 0x40083600 + #define R_MSTP_BASE 0x40084000 + #define R_KINT_BASE 0x40085000 + #define R_POEG_BASE 0x4008A000 + #define R_USB_FS0_BASE 0x40090000 + #define R_USB_HS0_BASE 0x40111000 + #define R_SDHI0_BASE 0x40092000 + #define R_SSI0_BASE 0x4009D000 + #define R_IIC0_BASE 0x4009F000 + #define R_IIC0WU_BASE 0x4009F014 + #define R_IIC1_BASE 0x4009F100 + #define R_OSPI_BASE 0x400A6000 + #define R_CAN0_BASE 0x400A8000 + #define R_CAN1_BASE 0x400A9000 + #define R_CEC_BASE 0x400AC000 + #define R_CANFD_BASE 0x400B0000 + #define R_CTSU_BASE 0x400D0000 + #define R_PSCU_BASE 0x400E0000 + #define R_AGT0_BASE 0x400E8000 + #define R_AGT1_BASE 0x400E8100 + #define R_AGT2_BASE 0x400E8200 + #define R_AGT3_BASE 0x400E8300 + #define R_AGT4_BASE 0x400E8400 + #define R_AGT5_BASE 0x400E8500 + #define R_AGTW0_BASE 0x400E8000 + #define R_AGTW1_BASE 0x400E8100 + #define R_TSN_CTRL_BASE 0x400F3000 + #define R_CRC_BASE 0x40108000 + #define R_DOC_BASE 0x40109000 + #define R_ETHERC_EDMAC_BASE 0x40114000 + #define R_ETHERC0_BASE 0x40114100 + #define R_SCI0_BASE 0x40118000 + #define R_SCI1_BASE 0x40118100 + #define R_SCI2_BASE 0x40118200 + #define R_SCI3_BASE 0x40118300 + #define R_SCI4_BASE 0x40118400 + #define R_SCI5_BASE 0x40118500 + #define R_SCI6_BASE 0x40118600 + #define R_SCI7_BASE 0x40118700 + #define R_SCI8_BASE 0x40118800 + #define R_SCI9_BASE 0x40118900 + #define R_SPI0_BASE 0x4011A000 + #define R_SPI1_BASE 0x4011A100 + #define R_SPI_B0_BASE 0x4011A000 + #define R_SPI_B1_BASE 0x4011A100 + #define R_GPT320_BASE 0x40169000 + #define R_GPT321_BASE 0x40169100 + #define R_GPT322_BASE 0x40169200 + #define R_GPT323_BASE 0x40169300 + #define R_GPT164_BASE 0x40169400 + #define R_GPT165_BASE 0x40169500 + #define R_GPT166_BASE 0x40169600 + #define R_GPT167_BASE 0x40169700 + #define R_GPT168_BASE 0x40169800 + #define R_GPT169_BASE 0x40169900 + #define R_GPT_OPS_BASE 0x40169A00 + #define R_GPT_ODC_BASE 0x4016A000 + #define R_GPT_GTCLK_BASE 0x40169B00 + #define R_ADC120_BASE 0x40170000 + #define R_ADC121_BASE 0x40170200 + +/* Not included in SVD */ + #if (BSP_FEATURE_DAC_MAX_CHANNELS > 2U) + #define R_DAC120_BASE 0x40172000 + #define R_DAC121_BASE 0x40172100 + #else + #define R_DAC12_BASE 0x40171000 + #endif + #define R_FLAD_BASE 0x407FC000 + #define R_FACI_HP_CMD_BASE 0x407E0000 + #define R_FACI_HP_BASE 0x407FE000 + #define R_QSPI_BASE 0x64000000 + #define R_TFU_BASE 0x40021000 + +/* Not included in SVD */ + #if (2U == BSP_FEATURE_IOPORT_VERSION) + #define R_PORT0_BASE 0x4001F000 + #define R_PORT1_BASE 0x4001F020 + #define R_PORT2_BASE 0x4001F040 + #define R_PORT10_BASE 0x4001F140 + #define R_PORT11_BASE 0x4001F160 + #define R_PORT12_BASE 0x4001F180 + #define R_PORT13_BASE 0x4001F1A0 + #define R_PORT14_BASE 0x4001F1C0 + #define R_PFS_BASE 0x4001F800 + #define R_PMISC_BASE 0x4001FD00 + #else + #define R_PORT0_BASE 0x40080000 + #define R_PORT1_BASE 0x40080020 + #define R_PORT2_BASE 0x40080040 + #define R_PORT3_BASE 0x40080060 + #define R_PORT4_BASE 0x40080080 + #define R_PORT5_BASE 0x400800A0 + #define R_PORT6_BASE 0x400800C0 + #define R_PORT7_BASE 0x400800E0 + #define R_PORT8_BASE 0x40080100 + #define R_PORT9_BASE 0x40080120 + #define R_PORT10_BASE 0x40080140 + #define R_PORT11_BASE 0x40080160 + #define R_PFS_BASE 0x40080800 + #define R_PMISC_BASE 0x40080D00 // does not exist but FSP will not build without this + #endif + #define R_GPT_POEG0_BASE 0x4008A000 + #define R_GPT_POEG1_BASE 0x4008A100 + #define R_GPT_POEG2_BASE 0x4008A200 + #define R_GPT_POEG3_BASE 0x4008A300 + + #define R_RTC_BASE 0x40083000 + + #define R_I3C0_BASE 0x4011F000 + #define R_I3C1_BASE 0x4011F400 + +/** @} */ /* End of group Device_Peripheral_peripheralAddr */ + +/* =========================================================================================================================== */ +/* ================ Peripheral declaration ================ */ +/* =========================================================================================================================== */ + +/** @addtogroup Device_Peripheral_declaration + * @{ + */ + +// #define R_MPU ((R_MPU_Type *) R_MPU_BASE) + #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_TZF ((R_TZF_Type *) R_TZF_BASE) + #define R_SRAM ((R_SRAM_Type *) R_SRAM_BASE) + #define R_BUS ((R_BUS_B_Type *) R_BUS_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_DMA ((R_DMA_Type *) R_DMA_BASE) + #define R_DTC ((R_DTC_Type *) R_DTC_BASE) + #define R_ICU ((R_ICU_Type *) R_ICU_BASE) + #define R_CACHE ((R_CACHE_Type *) R_CACHE_BASE) + #define R_CPSCU ((R_CPSCU_Type *) R_CPSCU_BASE) + #define R_DEBUG ((R_DEBUG_Type *) R_DBG_BASE) + #define R_FCACHE ((R_FCACHE_Type *) R_FCACHE_BASE) + #define R_SYSTEM ((R_SYSTEM_Type *) R_SYSC_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_PFS ((R_PFS_Type *) R_PFS_BASE) + #define R_ELC ((R_ELC_Type *) R_ELC_BASE) + #define R_TC ((R_TC_Type *) R_TC_BASE) + #define R_IWDT ((R_IWDT_Type *) R_IWDT_BASE) + #define R_KINT ((R_KINT_Type *) R_KINT_BASE) + #define R_WDT ((R_WDT_Type *) R_WDT_BASE) + #define R_CAC ((R_CAC_Type *) R_CAC_BASE) + #define R_MSTP ((R_MSTP_Type *) R_MSTP_BASE) + #define R_POEG ((R_POEG_Type *) R_POEG_BASE) + #define R_USB_FS0 ((R_USB_FS0_Type *) R_USB_FS0_BASE) + #define R_USB_HS0 ((R_USB_HS0_Type *) R_USB_HS0_BASE) + #define R_SDHI0 ((R_SDHI0_Type *) R_SDHI0_BASE) + #define R_SSI0 ((R_SSI0_Type *) R_SSI0_BASE) + #define R_IIC0 ((R_IIC0_Type *) R_IIC0_BASE) + #define R_IIC0WU ((R_IIC0WU_Type *) R_IIC0WU_BASE) + #define R_IIC1 ((R_IIC0_Type *) R_IIC1_BASE) + #define R_OSPI ((R_OSPI_Type *) R_OSPI_BASE) + #define R_CAN0 ((R_CAN0_Type *) R_CAN0_BASE) + #define R_CAN1 ((R_CAN0_Type *) R_CAN1_BASE) + #define R_CEC ((R_CEC_Type *) R_CEC_BASE) + #if BSP_FEATURE_CANFD_LITE + #define R_CANFD ((R_CANFDL_Type *) R_CANFD_BASE) + #else + #define R_CANFD ((R_CANFD_Type *) R_CANFD_BASE) + #endif + #define R_CTSU ((R_CTSU_Type *) R_CTSU_BASE) + #define R_PSCU ((R_PSCU_Type *) R_PSCU_BASE) + #if BSP_FEATURE_AGT_HAS_AGTW + #define R_AGT0 ((R_AGTW0_Type *) R_AGT0_BASE) + #define R_AGT1 ((R_AGTW0_Type *) R_AGT1_BASE) + #define R_AGT2 ((R_AGTW0_Type *) R_AGT2_BASE) + #define R_AGT3 ((R_AGTW0_Type *) R_AGT3_BASE) + #define R_AGT4 ((R_AGTW0_Type *) R_AGT4_BASE) + #define R_AGT5 ((R_AGTW0_Type *) R_AGT5_BASE) + #else + #define R_AGT0 ((R_AGT0_Type *) R_AGT0_BASE) + #define R_AGT1 ((R_AGT0_Type *) R_AGT1_BASE) + #define R_AGT2 ((R_AGT0_Type *) R_AGT2_BASE) + #define R_AGT3 ((R_AGT0_Type *) R_AGT3_BASE) + #define R_AGT4 ((R_AGT0_Type *) R_AGT4_BASE) + #define R_AGT5 ((R_AGT0_Type *) R_AGT5_BASE) + #endif + #define R_AGTW0 ((R_AGTW0_Type *) R_AGTW0_BASE) + #define R_AGTW1 ((R_AGTW0_Type *) R_AGTW1_BASE) + #define R_TSN_CTRL ((R_TSN_CTRL_Type *) R_TSN_CTRL_BASE) + #define R_CRC ((R_CRC_Type *) R_CRC_BASE) + #if (2U == BSP_FEATURE_DOC_VERSION) + #define R_DOC_B ((R_DOC_B_Type *) R_DOC_BASE) + #else + #define R_DOC ((R_DOC_Type *) R_DOC_BASE) + #endif + #define R_ETHERC_EDMAC ((R_ETHERC_EDMAC_Type *) R_ETHERC_EDMAC_BASE) + #define R_ETHERC0 ((R_ETHERC0_Type *) R_ETHERC0_BASE) + #if (2U == BSP_FEATURE_SCI_VERSION) + #define R_SCI0 ((R_SCI_B0_Type *) R_SCI0_BASE) + #define R_SCI1 ((R_SCI_B0_Type *) R_SCI1_BASE) + #define R_SCI2 ((R_SCI_B0_Type *) R_SCI2_BASE) + #define R_SCI3 ((R_SCI_B0_Type *) R_SCI3_BASE) + #define R_SCI4 ((R_SCI_B0_Type *) R_SCI4_BASE) + #define R_SCI9 ((R_SCI_B0_Type *) R_SCI9_BASE) + #else + #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) + #endif + #define R_SPI0 ((R_SPI0_Type *) R_SPI0_BASE) + #define R_SPI1 ((R_SPI0_Type *) R_SPI1_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_GPT0 ((R_GPT0_Type *) R_GPT320_BASE) + #define R_GPT1 ((R_GPT0_Type *) R_GPT321_BASE) + #define R_GPT2 ((R_GPT0_Type *) R_GPT322_BASE) + #define R_GPT3 ((R_GPT0_Type *) R_GPT323_BASE) + #define R_GPT4 ((R_GPT0_Type *) R_GPT164_BASE) + #define R_GPT5 ((R_GPT0_Type *) R_GPT165_BASE) + #define R_GPT6 ((R_GPT0_Type *) R_GPT166_BASE) + #define R_GPT7 ((R_GPT0_Type *) R_GPT167_BASE) + #define R_GPT8 ((R_GPT0_Type *) R_GPT168_BASE) + #define R_GPT9 ((R_GPT0_Type *) R_GPT169_BASE) + #define R_GPT_ODC ((R_GPT_ODC_Type *) R_GPT_ODC_BASE) + #define R_GPT_OPS ((R_GPT_OPS_Type *) R_GPT_OPS_BASE) + #define R_GPT_GTCLK ((R_GPT_GTCLK_Type *) R_GPT_GTCLK_BASE) + #define R_ADC0 ((R_ADC0_Type *) R_ADC120_BASE) + #define R_ADC1 ((R_ADC0_Type *) R_ADC121_BASE) + #define R_ADC_B ((R_ADC_B0_Type *) R_ADC120_BASE) + #if (BSP_FEATURE_DAC_MAX_CHANNELS > 2U) + #define R_DAC0 ((R_DAC_Type *) R_DAC120_BASE) + #define R_DAC1 ((R_DAC_Type *) R_DAC121_BASE) + #else + #define R_DAC ((R_DAC_Type *) R_DAC12_BASE) + #endif + #define R_FLAD ((R_FLAD_Type *) R_FLAD_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_QSPI ((R_QSPI_Type *) R_QSPI_BASE) + #define R_TFU ((R_TFU_Type *) R_TFU_BASE) + #define R_I3C0 ((R_I3C0_Type *) R_I3C0_BASE) + #define R_I3C1 ((R_I3C0_Type *) R_I3C1_BASE) + +/* Not in SVD. */ + + #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) + #if (2U == BSP_FEATURE_IOPORT_VERSION) + #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) + #endif + #define R_PFS ((R_PFS_Type *) R_PFS_BASE) + #define R_PMISC ((R_PMISC_Type *) R_PMISC_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_RTC ((R_RTC_Type *) R_RTC_BASE) + +/** @} */ /* End of group Device_Peripheral_declaration */ + +#else + +/* =========================================================================================================================== */ +/* ================ Device Specific Peripheral Address Map ================ */ +/* =========================================================================================================================== */ + +/** @addtogroup Device_Peripheral_peripheralAddr + * @{ + */ + + #define R_ACMPHS0_BASE 0x40085000 + #define R_ACMPHS1_BASE 0x40085100 + #define R_ACMPHS2_BASE 0x40085200 + #define R_ACMPHS3_BASE 0x40085300 + #define R_ACMPHS4_BASE 0x40085400 + #define R_ACMPHS5_BASE 0x40085500 + #define R_ACMPLP_BASE 0x40085E00 + #define R_ADC0_BASE 0x4005C000 + #define R_ADC1_BASE 0x4005C200 + #define R_AGT0_BASE 0x40084000 + #define R_AGT1_BASE 0x40084100 + #define R_AGTW0_BASE 0x40084000 + #define R_AGTW1_BASE 0x40084100 + #define R_BUS_BASE 0x40003000 + #define R_CAC_BASE 0x40044600 + #define R_CAN0_BASE 0x40050000 + #define R_CAN1_BASE 0x40051000 + #define R_CRC_BASE 0x40074000 + #define R_CTSU_BASE 0x40081000 + #define R_CTSU2_BASE 0x40082000 + #define R_DAC_BASE 0x4005E000 + #define R_DAC8_BASE 0x4009E000 + #define R_DALI0_BASE 0x4008F000 + #define R_DEBUG_BASE 0x4001B000 + #define R_DMA_BASE 0x40005200 + #define R_DMAC0_BASE 0x40005000 + #define R_DMAC1_BASE 0x40005040 + #define R_DMAC2_BASE 0x40005080 + #define R_DMAC3_BASE 0x400050C0 + #define R_DMAC4_BASE 0x40005100 + #define R_DMAC5_BASE 0x40005140 + #define R_DMAC6_BASE 0x40005180 + #define R_DMAC7_BASE 0x400051C0 + #define R_DOC_BASE 0x40054100 + #define R_DRW_BASE 0x400E4000 + #define R_DTC_BASE 0x40005400 + #define R_ELC_BASE 0x40041000 + #define R_ETHERC0_BASE 0x40064100 + #define R_ETHERC_EDMAC_BASE 0x40064000 + #define R_PTP_EDMAC_BASE 0x40064400 + #define R_ETHERC_EPTPC_BASE 0x40065800 + #define R_ETHERC_EPTPC1_BASE 0x40065C00 + #define R_ETHERC_EPTPC_CFG_BASE 0x40064500 + #define R_ETHERC_EPTPC_COMMON_BASE 0x40065000 + #define R_FACI_HP_CMD_BASE 0x407E0000 + #define R_FACI_HP_BASE 0x407FE000 + #define R_FACI_LP_BASE 0x407EC000 + #define R_CTSUTRIM_BASE 0x407EC000 + #define R_FCACHE_BASE 0x4001C000 + #define R_GLCDC_BASE 0x400E0000 + #define R_GPT0_BASE 0x40078000 + #define R_GPT1_BASE 0x40078100 + #define R_GPT2_BASE 0x40078200 + #define R_GPT3_BASE 0x40078300 + #define R_GPT4_BASE 0x40078400 + #define R_GPT5_BASE 0x40078500 + #define R_GPT6_BASE 0x40078600 + #define R_GPT7_BASE 0x40078700 + #define R_GPT8_BASE 0x40078800 + #define R_GPT9_BASE 0x40078900 + #define R_GPT10_BASE 0x40078A00 + #define R_GPT11_BASE 0x40078B00 + #define R_GPT12_BASE 0x40078C00 + #define R_GPT13_BASE 0x40078D00 + #define R_GPT_ODC_BASE 0x4007B000 + #define R_GPT_OPS_BASE 0x40078FF0 + #define R_GPT_POEG0_BASE 0x40042000 + #define R_GPT_POEG1_BASE 0x40042100 + #define R_GPT_POEG2_BASE 0x40042200 + #define R_GPT_POEG3_BASE 0x40042300 + #define R_I3C0_BASE 0x40083000 + #define R_ICU_BASE 0x40006000 + #define R_IIC0_BASE 0x40053000 + #define R_IIC1_BASE 0x40053100 + #define R_IIC2_BASE 0x40053200 + #define R_IRDA_BASE 0x40070F00 + #define R_IWDT_BASE 0x40044400 + #define R_JPEG_BASE 0x400E6000 + #define R_KINT_BASE 0x40080000 + #define R_MMF_BASE 0x40001000 + #define R_MPU_MMPU_BASE 0x40000000 + #define R_MPU_SMPU_BASE 0x40000C00 + #define R_MPU_SPMON_BASE 0x40000D00 + #define R_MSTP_BASE (0x40047000 - 4U) /* MSTPCRA is not located in R_MSTP so the base address must be moved so that MSTPCRB is located at 0x40047000. */ + #define R_OPAMP_BASE 0x40086000 + #define R_OPAMP2_BASE 0x400867F8 + #define R_PDC_BASE 0x40094000 + #define R_PORT0_BASE 0x40040000 + #define R_PORT1_BASE 0x40040020 + #define R_PORT2_BASE 0x40040040 + #define R_PORT3_BASE 0x40040060 + #define R_PORT4_BASE 0x40040080 + #define R_PORT5_BASE 0x400400A0 + #define R_PORT6_BASE 0x400400C0 + #define R_PORT7_BASE 0x400400E0 + #define R_PORT8_BASE 0x40040100 + #define R_PORT9_BASE 0x40040120 + #define R_PORT10_BASE 0x40040140 + #define R_PORT11_BASE 0x40040160 + #define R_PFS_BASE 0x40040800 + #define R_PMISC_BASE 0x40040D00 + #define R_QSPI_BASE 0x64000000 + #define R_RTC_BASE 0x40044000 + #define R_SCI0_BASE 0x40070000 + #define R_SCI1_BASE 0x40070020 + #define R_SCI2_BASE 0x40070040 + #define R_SCI3_BASE 0x40070060 + #define R_SCI4_BASE 0x40070080 + #define R_SCI5_BASE 0x400700A0 + #define R_SCI6_BASE 0x400700C0 + #define R_SCI7_BASE 0x400700E0 + #define R_SCI8_BASE 0x40070100 + #define R_SCI9_BASE 0x40070120 + #define R_SDADC0_BASE 0x4009C000 + #define R_SDHI0_BASE 0x40062000 + #define R_SDHI1_BASE 0x40062400 + #define R_SLCDC_BASE 0x40082000 + #define R_SPI0_BASE 0x40072000 + #define R_SPI1_BASE 0x40072100 + #define R_SRAM_BASE 0x40002000 + #define R_SRC_BASE 0x40048000 + #define R_SSI0_BASE 0x4004E000 + #define R_SSI1_BASE 0x4004E100 + #define R_SYSTEM_BASE 0x4001E000 + #define R_TSN_BASE 0x407EC000 + #define R_TSN_CAL_BASE 0x407FB17C + #define R_TSN_CTRL_BASE 0x4005D000 + #define R_USB_FS0_BASE 0x40090000 + #define R_USB_HS0_BASE 0x40060000 + #define R_WDT_BASE 0x40044200 + +/** @} */ /* 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_ACMPLP ((R_ACMPLP_Type *) R_ACMPLP_BASE) + #define R_ADC0 ((R_ADC0_Type *) R_ADC0_BASE) + #define R_ADC1 ((R_ADC0_Type *) R_ADC1_BASE) + #define R_AGT0 ((R_AGT0_Type *) R_AGT0_BASE) + #define R_AGT1 ((R_AGT0_Type *) R_AGT1_BASE) + #define R_AGTW0 ((R_AGTW0_Type *) R_AGTW0_BASE) + #define R_AGTW1 ((R_AGTW0_Type *) R_AGTW1_BASE) + #define R_BUS ((R_BUS_Type *) R_BUS_BASE) + #define R_CAC ((R_CAC_Type *) R_CAC_BASE) + #define R_CAN0 ((R_CAN0_Type *) R_CAN0_BASE) + #define R_CAN1 ((R_CAN0_Type *) R_CAN1_BASE) + #define R_CRC ((R_CRC_Type *) R_CRC_BASE) + #if (2U == BSP_FEATURE_CTSU_VERSION) + #define R_CTSU ((R_CTSU2_Type *) R_CTSU2_BASE) + #else + #define R_CTSU ((R_CTSU_Type *) R_CTSU_BASE) + #endif + #define R_DAC ((R_DAC_Type *) R_DAC_BASE) + #define R_DAC8 ((R_DAC8_Type *) R_DAC8_BASE) + #define R_DALI0 ((R_DALI0_Type *) R_DALI0_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_PTP_EDMAC ((R_ETHERC_EDMAC_Type *) R_PTP_EDMAC_BASE) + #define R_ETHERC_EPTPC ((R_ETHERC_EPTPC_Type *) R_ETHERC_EPTPC_BASE) + #define R_ETHERC_EPTPC1 ((R_ETHERC_EPTPC0_Type *) R_ETHERC_EPTPC1_BASE) + #define R_ETHERC_EPTPC_CFG ((R_ETHERC_EPTPC_CFG_Type *) R_ETHERC_EPTPC_CFG_BASE) + #define R_ETHERC_EPTPC_COMMON ((R_ETHERC_EPTPC_COMMON_Type *) R_ETHERC_EPTPC_COMMON_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_FACI_LP ((R_FACI_LP_Type *) R_FACI_LP_BASE) + #define R_CTSUTRIM ((R_CTSUTRIM_Type *) R_CTSUTRIM_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_ODC ((R_GPT_ODC_Type *) R_GPT_ODC_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_I3C0 ((R_I3C0_Type *) R_I3C0_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_IRDA ((R_IRDA_Type *) R_IRDA_BASE) + #define R_IWDT ((R_IWDT_Type *) R_IWDT_BASE) + #define R_JPEG ((R_JPEG_Type *) R_JPEG_BASE) + #define R_KINT ((R_KINT_Type *) R_KINT_BASE) + #define R_MMF ((R_MMF_Type *) R_MMF_BASE) + #define R_MPU_MMPU ((R_MPU_MMPU_Type *) R_MPU_MMPU_BASE) + #define R_MPU_SMPU ((R_MPU_SMPU_Type *) R_MPU_SMPU_BASE) + #define R_MPU_SPMON ((R_MPU_SPMON_Type *) R_MPU_SPMON_BASE) + #define R_MSTP ((R_MSTP_Type *) R_MSTP_BASE) + #if (2U == BSP_FEATURE_OPAMP_BASE_ADDRESS) + #define R_OPAMP ((R_OPAMP_Type *) R_OPAMP2_BASE) + #else + #define R_OPAMP ((R_OPAMP_Type *) R_OPAMP_BASE) + #endif + #define R_PDC ((R_PDC_Type *) R_PDC_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_PFS ((R_PFS_Type *) R_PFS_BASE) + #define R_PMISC ((R_PMISC_Type *) R_PMISC_BASE) + #define R_QSPI ((R_QSPI_Type *) R_QSPI_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_SDADC0 ((R_SDADC0_Type *) R_SDADC0_BASE) + #define R_SDHI0 ((R_SDHI0_Type *) R_SDHI0_BASE) + #define R_SDHI1 ((R_SDHI0_Type *) R_SDHI1_BASE) + #define R_SLCDC ((R_SLCDC_Type *) R_SLCDC_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_SRC ((R_SRC_Type *) R_SRC_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 ((R_TSN_Type *) R_TSN_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_USB_HS0 ((R_USB_HS0_Type *) R_USB_HS0_BASE) + #define R_WDT ((R_WDT_Type *) R_WDT_BASE) + +/** @} */ /* End of group Device_Peripheral_declaration */ + +#endif + +#endif diff --git a/bsp/renesas/ra6m3-hmi-board/ra/fsp/src/bsp/cmsis/Device/RENESAS/Include/renesas.h b/bsp/renesas/ra6m3-hmi-board/ra/fsp/src/bsp/cmsis/Device/RENESAS/Include/renesas.h new file mode 100644 index 0000000000..a48f6d2926 --- /dev/null +++ b/bsp/renesas/ra6m3-hmi-board/ra/fsp/src/bsp/cmsis/Device/RENESAS/Include/renesas.h @@ -0,0 +1,46653 @@ +/*********************************************************************************************************************** + * Copyright [2020-2021] 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 + + #include "cmsis_compiler.h" + +/** @addtogroup Configuration_of_CMSIS + * @{ + */ + +/* =========================================================================================================================== */ +/* ================ Interrupt Number Definition ================ */ +/* =========================================================================================================================== */ +/* IRQn_Type is provided in bsp_arm_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 __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 + #else + #warning Unsupported Architecture + #endif + +/* ----------------Configuration of the Cortex-M Processor and Core Peripherals---------------- */ + #ifdef RENESAS_CORTEX_M4 + #define __MPU_PRESENT 1 /*!< MPU present or not */ + #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 __FPU_PRESENT 1 /*!< FPU present or not */ + #include "core_cm4.h" /*!< Cortex-M4 processor and core peripherals */ + #elif defined(RENESAS_CORTEX_M0PLUS) + #define __MPU_PRESENT 1 /*!< MPU present or not */ + #define __NVIC_PRIO_BITS 2 /*!< Number of Bits used for Priority Levels */ + #define __Vendor_SysTickConfig 0 /*!< Set to 1 if different SysTick Config is used */ + #define __FPU_PRESENT 0 /*!< FPU present or not */ + #define __VTOR_PRESENT 1 /*!< Vector table VTOR register available or not */ + #include "core_cm0plus.h" /*!< Cortex-M0 processor and core peripherals */ + #elif defined(RENESAS_CORTEX_M23) + #define __MPU_PRESENT 1 /*!< MPU present or not */ + #define __NVIC_PRIO_BITS 2 /*!< Number of Bits used for Priority Levels */ + #define __Vendor_SysTickConfig 0 /*!< Set to 1 if different SysTick Config is used */ + #define __FPU_PRESENT 0 /*!< FPU present or not */ + #define __VTOR_PRESENT 1 /*!< Vector table VTOR register available or not */ + #include "core_cm23.h" /*!< Cortex-M23 processor and core peripherals */ + #elif defined(RENESAS_CORTEX_M33) + #define __MPU_PRESENT 1 /*!< MPU present or not */ + #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 __FPU_PRESENT 1 /*!< FPU present or not */ + #define __VTOR_PRESENT 1 /*!< Vector table VTOR register available or not */ + #define __DSP_PRESENT 1 /*!< DSP present or not */ + #include "core_cm33.h" /*!< Cortex-M33 processor and core peripherals */ + #endif + + #include "system.h" /*!< 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 SelectNOTE: The CSPWWAIT value + * is valid only when the PWENB bit in CSnMOD is set to 1. */ + uint32_t : 5; + __IOM uint32_t CSPRWAIT : 3; /*!< [10..8] Page Read Cycle Wait SelectNOTE: The CSPRWAIT value + * is valid only when the PRENB bit in CSnMOD is set to 1. */ + 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 SettingWriting to these bits: Mode register + * set command is issued. */ + 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_BUSERR [BUSERR] (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 AddressWhen a bus error occurs, It stores + * an error address. */ + } ADD_b; + }; + + union + { + __IM uint8_t STAT; /*!< (@ 0x00000004) Bus Error Status Register */ + + struct + { + __IM uint8_t ACCSTAT : 1; /*!< [0..0] Error access statusThe status at the time of the error */ + uint8_t : 6; + __IM uint8_t ERRSTAT : 1; /*!< [7..7] Bus Error StatusWhen bus error assert, error flag occurs. */ + } STAT_b; + }; + __IM uint8_t RESERVED; + __IM uint16_t RESERVED1; + __IM uint32_t RESERVED2[2]; +} R_BUS_BUSERR_Type; /*!< Size = 16 (0x10) */ + +/** + * @brief R_BUS_BUSM [BUSM] (Master Bus Control Register Array) + */ +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 + { + uint16_t : 4; + __IOM uint16_t ARBMET : 2; /*!< [5..4] Arbitration MethodSpecify the priority between groups */ + uint16_t : 10; + } CNT_b; + }; + __IM uint16_t RESERVED; +} R_BUS_BUSS_Type; /*!< Size = 4 (0x4) */ + +/** + * @brief R_CAN0_MB [MB] (Mailbox) + */ +typedef struct +{ + union + { + __IOM uint32_t ID; /*!< (@ 0x00000000) Mailbox ID Register */ + + struct + { + __IOM uint32_t EID : 18; /*!< [17..0] Extended ID */ + __IOM uint32_t SID : 11; /*!< [28..18] Standard ID */ + uint32_t : 1; + __IOM uint32_t RTR : 1; /*!< [30..30] Remote Transmission Request */ + __IOM uint32_t IDE : 1; /*!< [31..31] ID Extension */ + } ID_b; + }; + + union + { + __IOM uint16_t DL; /*!< (@ 0x00000004) Mailbox DLC Register */ + + struct + { + __IOM uint16_t DLC : 4; /*!< [3..0] Data Length Code */ + uint16_t : 12; + } DL_b; + }; + + union + { + __IOM uint8_t D[8]; /*!< (@ 0x00000006) Mailbox Data Register */ + + struct + { + __IOM uint8_t DATA : 8; /*!< [7..0] DATA0 to DATA7 store the transmitted or received CAN + * message data. Transmission or reception starts from DATA0. + * The bit order on the CAN bus is MSB-first, and transmission + * or reception starts from bit 7 */ + } D_b[8]; + }; + + union + { + __IOM uint16_t TS; /*!< (@ 0x0000000E) Mailbox Timestamp Register */ + + struct + { + __IOM uint16_t TSL : 8; /*!< [7..0] Time Stamp Higher ByteBits TSL[7:0] store the counter + * value of the time stamp when received messages are stored + * in the mailbox. */ + __IOM uint16_t TSH : 8; /*!< [15..8] Time Stamp Lower ByteBits TSH[7:0] store the counter + * value of the time stamp when received messages are stored + * in the mailbox. */ + } TS_b; + }; +} R_CAN0_MB_Type; /*!< Size = 16 (0x10) */ + +/** + * @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 */ + __IOM uint32_t TRWE : 1; /*!< [27..27] TEC/REC Write Enable */ + __IOM uint32_t TRH : 1; /*!< [28..28] TEC/REC Hold */ + __IOM uint32_t TRR : 1; /*!< [29..29] TEC/REC Reset */ + __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 */ + __IOM uint32_t GWEN : 1; /*!< [24..24] CAN2.0, CAN-FD <> CAN2.0, CAN-FD Multi Gateway Enable */ + __IOM uint32_t GWFDF : 1; /*!< [25..25] Gateway FDF configuration bit */ + __IOM uint32_t GWBRS : 1; /*!< [26..26] Gateway BRS configuration bit */ + uint32_t : 1; + __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 */ + __IOM uint32_t CFDTE : 1; /*!< [31..31] CAN-FD frame Distinction enable */ + } 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; + + union + { + __IOM uint32_t BLCT; /*!< (@ 0x00000018) Channel Bus load Control Register */ + + struct + { + __IOM uint32_t BLCE : 1; /*!< [0..0] BUS Load counter Enable */ + uint32_t : 7; + __OM uint32_t BLCLD : 1; /*!< [8..8] BUS Load counter load */ + uint32_t : 23; + } BLCT_b; + }; + + union + { + __IOM uint32_t BLSTS; /*!< (@ 0x0000001C) Channel Bus load Status Register */ + + struct + { + uint32_t : 3; + __IM uint32_t BLC : 29; /*!< [31..3] BUS Load counter Status */ + } BLSTS_b; + }; +} 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 */ + __IOM uint32_t GAFLSRD0 : 1; /*!< [4..4] Global Acceptance Filter List Select Routing destination + * 0 */ + __IOM uint32_t GAFLSRD1 : 1; /*!< [5..5] Global Acceptance Filter List Select Routing destination + * 1 */ + __IOM uint32_t GAFLSRD2 : 1; /*!< [6..6] Global Acceptance Filter List Select Routing destination + * 2 */ + __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 : 14; /*!< [13..0] Global Acceptance Filter List FIFO Direction Pointer */ + uint32_t : 18; + } 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 : 5; + __IM uint32_t TGW : 1; /*!< [15..15] Transmit Gateway Buffer indication */ + __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_CFDRM [CFDRM] (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]; + }; + __IM uint32_t RESERVED[13]; +} R_CANFD_CFDRM_Type; /*!< Size = 128 (0x80) */ + +/** + * @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]; + }; + __IM uint32_t RESERVED[13]; +} R_CANFD_CFDRF_Type; /*!< Size = 128 (0x80) */ + +/** + * @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]; + }; + __IM uint32_t RESERVED[13]; +} R_CANFD_CFDCF_Type; /*!< Size = 128 (0x80) */ + +/** + * @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]; + }; + __IM uint32_t RESERVED[13]; +} R_CANFD_CFDTM_Type; /*!< Size = 128 (0x80) */ + +/** + * @brief R_CANFDL_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_CANFDL_CFDC_Type; /*!< Size = 16 (0x10) */ + +/** + * @brief R_CANFDL_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_CANFDL_CFDC2_Type; /*!< Size = 32 (0x20) */ + +/** + * @brief R_CANFDL_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_CANFDL_CFDGAFL_Type; /*!< Size = 16 (0x10) */ + +/** + * @brief R_CANFDL_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_CANFDL_CFDTHL_Type; /*!< Size = 8 (0x8) */ + +/** + * @brief R_CANFDL_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_CANFDL_CFDRF_Type; /*!< Size = 76 (0x4c) */ + +/** + * @brief R_CANFDL_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_CANFDL_CFDCF_Type; /*!< Size = 76 (0x4c) */ + +/** + * @brief R_CANFDL_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_CANFDL_CFDTM_Type; /*!< Size = 76 (0x4c) */ + +/** + * @brief R_CANFDL_CFDRMC_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_CANFDL_CFDRMC_RM_Type; /*!< Size = 76 (0x4c) */ + +/** + * @brief R_CANFDL_CFDRMC [CFDRMC] (RX Message Buffer Access Clusters) + */ +typedef struct +{ + __IOM R_CANFDL_CFDRMC_RM_Type RM[8]; /*!< (@ 0x00000000) RX Message Buffer Access Registers */ + __IM uint32_t RESERVED[104]; +} R_CANFDL_CFDRMC_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; + }; + #if (2U == BSP_FEATURE_ELC_VERSION) + __IM uint8_t RESERVED[3]; + #else + __IM uint8_t RESERVED; + #endif +} R_ELC_ELSEGR_Type; /*!< Size = 2 (0x2) */ + +/** + * @brief R_ELC_ELSR [ELSR] (Event Link Setting Register [0..22]) + */ +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_ETHERC_EPTPC_COMMON_TM [TM] (Timer Setting Registers) + */ +typedef struct +{ + union + { + __IOM uint32_t STTRU; /*!< (@ 0x00000000) Timer Start Time Setting Register */ + + struct + { + __IOM uint32_t TMSTTRU : 32; /*!< [31..0] These bits hold the setting for the higher-order 32 + * bits of the start time of the pulse output timer in nanoseconds. */ + } STTRU_b; + }; + + union + { + __IOM uint32_t STTRL; /*!< (@ 0x00000004) Timer Start Time Setting Register */ + + struct + { + __IOM uint32_t TMSTTRL : 32; /*!< [31..0] These bits hold the setting for the lower-order 32 bits + * of the start time of the pulse output timer in nanoseconds. */ + } STTRL_b; + }; + + union + { + __IOM uint32_t CYCR; /*!< (@ 0x00000008) Timer Cycle Setting Registers */ + + struct + { + __IOM uint32_t TMCYCR : 30; /*!< [29..0] These bits set the cycle of the pulse output timer in + * nanoseconds. Set a value that is equivalent to at least + * four cycles of the STCA clock. */ + uint32_t : 2; + } CYCR_b; + }; + + union + { + __IOM uint32_t PLSR; /*!< (@ 0x0000000C) Timer Pulse Width Setting Register */ + + struct + { + __IOM uint32_t TMPLSR : 29; /*!< [28..0] These bits set the width at high level of the pulse + * signal from the timer in nanoseconds. Set a value that + * is equivalent to at least two cycles of the STCA clock. */ + uint32_t : 3; + } PLSR_b; + }; +} R_ETHERC_EPTPC_COMMON_TM_Type; /*!< Size = 16 (0x10) */ + +/** + * @brief R_ETHERC_EPTPC_COMMON_PR [PR] (Local MAC Address Registers) + */ +typedef struct +{ + union + { + __IOM uint32_t MACRU; /*!< (@ 0x00000000) Channel Local MAC Address Register */ + + struct + { + __IOM uint32_t PRMACRU : 24; /*!< [23..0] These bits hold the setting for the higher-order 24 + * bits of the local MAC address for Ethernet port 0. */ + uint32_t : 8; + } MACRU_b; + }; + + union + { + __IOM uint32_t MACRL; /*!< (@ 0x00000004) Channel Local MAC Address Register */ + + struct + { + __IOM uint32_t PRMACRL : 24; /*!< [23..0] These bits hold the setting for the higher-order 24 + * bits of the local MAC address for Ethernet port 0. */ + uint32_t : 8; + } MACRL_b; + }; +} R_ETHERC_EPTPC_COMMON_PR_Type; /*!< Size = 8 (0x8) */ + +/** + * @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_GPT_ODC_GTDLYR [GTDLYR] (PWM DELAY RISING) + */ +typedef struct +{ + union + { + __IOM uint16_t A; /*!< (@ 0x00000000) GTIOCA Output Delay Register */ + + struct + { + __IOM uint16_t DLY : 5; /*!< [4..0] GTIOCnA Output Rising Edge Delay Setting */ + uint16_t : 11; + } A_b; + }; + + union + { + __IOM uint16_t B; /*!< (@ 0x00000002) GTIOCB Output Delay Register */ + + struct + { + __IOM uint16_t DLY : 5; /*!< [4..0] GTIOCnA Output Rising Edge Delay Setting */ + uint16_t : 11; + } B_b; + }; +} R_GPT_ODC_GTDLYR_Type; /*!< Size = 4 (0x4) */ + +/** + * @brief R_IIC0_SAR [SAR] (Slave Address Registers) + */ +typedef struct +{ + union + { + __IOM uint8_t L; /*!< (@ 0x00000000) Slave Address Register L */ + + struct + { + __IOM uint8_t SVA : 8; /*!< [7..0] A slave address is set.7-Bit Address = SVA[7:1] 10-Bit + * Address = { SVA9,SVA8,SVA[7:0] } */ + } L_b; + }; + + union + { + __IOM uint8_t U; /*!< (@ 0x00000001) Slave Address Register U */ + + struct + { + __IOM uint8_t FS : 1; /*!< [0..0] 7-Bit/10-Bit Address Format Selection */ + __IOM uint8_t SVA8 : 1; /*!< [1..1] 10-Bit Address(bit8) */ + __IOM uint8_t SVA9 : 1; /*!< [2..2] 10-Bit Address(bit9) */ + uint8_t : 5; + } U_b; + }; +} R_IIC0_SAR_Type; /*!< Size = 2 (0x2) */ + +/** + * @brief R_MPU_MMPU_MMPU_REGION [REGION] (Address Region registers) + */ +typedef struct +{ + union + { + __IOM uint16_t C; /*!< (@ 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 */ + uint16_t : 13; + } C_b; + }; + __IM uint16_t RESERVED; + + union + { + __IOM uint32_t S; /*!< (@ 0x00000004) Start Address Register */ + + struct + { + __IOM uint32_t MMPUSmn : 32; /*!< [31..0] Address where the region starts, for use in region determination.NOTE: + * The low-order 2 bits are fixed to 0. */ + } S_b; + }; + + union + { + __IOM uint32_t E; /*!< (@ 0x00000008) End Address Register */ + + struct + { + __IOM uint32_t MMPUEmn : 32; /*!< [31..0] Region end address registerAddress where the region + * end, for use in region determination.NOTE: The low-order + * 2 bits are fixed to 1. */ + } E_b; + }; + __IM uint32_t RESERVED1; +} R_MPU_MMPU_MMPU_REGION_Type; /*!< Size = 16 (0x10) */ + +/** + * @brief R_MPU_MMPU_MMPU [MMPU] (Bus Master MPU Registers) + */ +typedef struct +{ + union + { + __IOM uint16_t CTL; /*!< (@ 0x00000000) Bus Master MPU Control Register */ + + struct + { + __IOM uint16_t ENABLE : 1; /*!< [0..0] Master Group enable */ + __IOM uint16_t OAD : 1; /*!< [1..1] Operation after detection */ + uint16_t : 6; + __OM uint16_t KEY : 8; /*!< [15..8] Write Keyword The data written to these bits are not + * stored. */ + } CTL_b; + }; + __IM uint16_t RESERVED; + __IM uint32_t RESERVED1[63]; + __IM uint16_t RESERVED2; + + union + { + __IOM uint16_t PT; /*!< (@ 0x00000102) Protection of Register */ + + struct + { + __IOM uint16_t PROTECT : 1; /*!< [0..0] Protection of region register */ + uint16_t : 7; + __OM uint16_t KEY : 8; /*!< [15..8] Write Keyword The data written to these bits are not + * stored. */ + } PT_b; + }; + __IM uint32_t RESERVED3[63]; + __IOM R_MPU_MMPU_MMPU_REGION_Type REGION[32]; /*!< (@ 0x00000200) Address Region registers */ +} R_MPU_MMPU_MMPU_Type; /*!< Size = 1024 (0x400) */ + +/** + * @brief R_MPU_SMPU_SMPU [SMPU] (Access Control Structure for MBIU) + */ +typedef struct +{ + union + { + __IOM uint16_t R; /*!< (@ 0x00000000) Access Control Register for MBIU */ + + struct + { + uint16_t : 2; + __IOM uint16_t RPGRPA : 1; /*!< [2..2] Master Group A Read protection */ + __IOM uint16_t WPGRPA : 1; /*!< [3..3] Master Group A Write protection */ + __IOM uint16_t RPGRPB : 1; /*!< [4..4] Master Group B Read protection */ + __IOM uint16_t WPGRPB : 1; /*!< [5..5] Master Group B Write protection */ + __IOM uint16_t RPGRPC : 1; /*!< [6..6] Master Group C Read protection */ + __IOM uint16_t WPGRPC : 1; /*!< [7..7] Master Group C Write protection */ + uint16_t : 4; + __IOM uint16_t RPFLI : 1; /*!< [12..12] Code Flash Memory Read Protection */ + __IOM uint16_t WPFLI : 1; /*!< [13..13] Code Flash Memory Write Protection (Note: This bit + * is read as 1. The write value should be 1.) */ + __IOM uint16_t RPSRAMHS : 1; /*!< [14..14] SRAMHS Read Protection */ + __IOM uint16_t WPSRAMHS : 1; /*!< [15..15] SRAMHS Write Protection */ + } R_b; + }; + __IM uint16_t RESERVED; +} R_MPU_SMPU_SMPU_Type; /*!< Size = 4 (0x4) */ + +/** + * @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_OPAMP_AMP [AMP] (Input and Output Selectors for Operational Amplifier [0..3]) + */ +typedef struct +{ + __IOM uint8_t OS; /*!< (@ 0x00000000) Output Select Register */ + __IOM uint8_t MS; /*!< (@ 0x00000001) Minus Input Select Register */ + __IOM uint8_t PS; /*!< (@ 0x00000002) Plus Input Select Register */ +} R_OPAMP_AMP_Type; /*!< Size = 3 (0x3) */ + +/** + * @brief R_OPAMP_AMPOT [AMPOT] (Operational Amplifier n Offset Trimming Registers) + */ +typedef struct +{ + union + { + __IOM uint8_t P; /*!< (@ 0x00000000) Operational Amplifier n Offset Trimming Pch Register */ + + struct + { + __IOM uint8_t TRMP : 5; /*!< [4..0] AMPn input offset trimming Pch side */ + uint8_t : 3; + } P_b; + }; + + union + { + __IOM uint8_t N; /*!< (@ 0x00000001) Operational Amplifier n Offset Trimming Nch Register */ + + struct + { + __IOM uint8_t TRMN : 5; /*!< [4..0] AMPn input offset trimming Nch side */ + uint8_t : 3; + } N_b; + }; +} R_OPAMP_AMPOT_Type; /*!< Size = 2 (0x2) */ + +/** + * @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 */ + __IOM uint32_t PIM : 1; /*!< [5..5] Port Input Mode Control */ + __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/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; + }; + + struct + { + union + { + struct + { + __IM uint16_t RESERVED; + + union + { + __IOM uint16_t PmnPFS_HA; /*!< (@ 0x00000002) 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 */ + __IOM uint16_t PIM : 1; /*!< [5..5] Port Input Mode Control */ + __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/Rising */ + __IOM uint16_t ISEL : 1; /*!< [14..14] IRQ input enable */ + __IOM uint16_t ASEL : 1; /*!< [15..15] Analog Input enable */ + } PmnPFS_HA_b; + }; + }; + + struct + { + __IM uint16_t RESERVED1; + __IM uint8_t RESERVED2; + + union + { + __IOM uint8_t PmnPFS_BY; /*!< (@ 0x00000003) 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 */ + __IOM uint8_t PIM : 1; /*!< [5..5] Port Input Mode Control */ + __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 */ + + #if (2U == BSP_FEATURE_IOPORT_VERSION) + __IM uint16_t RESERVED; + #endif +} R_PMISC_PMSAR_Type; /*!< Size = 2 (0x2) */ + +/** + * @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 : 2; + } 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_BUS_B_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 SelectNOTE: The CSPWWAIT value + * is valid only when the PWENB bit in CSnMOD is set to 1. */ + uint32_t : 5; + __IOM uint32_t CSPRWAIT : 3; /*!< [10..8] Page Read Cycle Wait SelectNOTE: The CSPRWAIT value + * is valid only when the PRENB bit in CSnMOD is set to 1. */ + 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_B_CSa_Type; /*!< Size = 16 (0x10) */ + +/** + * @brief R_BUS_B_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_B_CSb_Type; /*!< Size = 16 (0x10) */ + +/** + * @brief R_BUS_B_BUSERR [BUSERR] (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 AddressWhen a bus error occurs, It stores + * an error address. */ + } ADD_b; + }; + + union + { + __IM uint8_t ERRRW; /*!< (@ 0x00000004) BUS Error Read Write Register */ + + struct + { + __IM uint8_t RWSTAT : 1; /*!< [0..0] Error access statusThe status at the time of the error */ + uint8_t : 7; + } ERRRW_b; + }; + __IM uint8_t RESERVED; + __IM uint16_t RESERVED1; + __IM uint32_t RESERVED2[2]; +} R_BUS_B_BUSERR_Type; /*!< Size = 16 (0x10) */ + +/** + * @brief R_BUS_B_BUSTZFERR [BUSTZFERR] (Bus TZF Error Registers) + */ +typedef struct +{ + union + { + __IM uint32_t TZFADD; /*!< (@ 0x00000000) Bus TZF Error Address Register */ + + struct + { + __IM uint32_t BTZFERAD : 32; /*!< [31..0] Bus TrustZone Filter Error AddressWhen a bus error occurs, + * It stores an error address. */ + } TZFADD_b; + }; + + union + { + __IM uint8_t TZFERRRW; /*!< (@ 0x00000004) BUS TZF Error Read Write Register */ + + struct + { + __IM uint8_t TRWSTAT : 1; /*!< [0..0] TrustZone filter Error access statusThe status at the + * time of the error */ + uint8_t : 7; + } TZFERRRW_b; + }; + __IM uint8_t RESERVED; + __IM uint16_t RESERVED1; + __IM uint32_t RESERVED2[2]; +} R_BUS_B_BUSTZFERR_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 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 Clear */ + __IOM uint16_t TRENB : 1; /*!< [9..9] Transaction Counter Enable */ + } 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_HS0_PIPE_TR_Type; /*!< Size = 4 (0x4) */ + +/** @} */ /* 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 /*!< (@ 0x40085000) 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_ACMPLP ================ */ +/* =========================================================================================================================== */ + +/** + * @brief Low-Power Analog Comparator (R_ACMPLP) + */ + +typedef struct /*!< (@ 0x40085E00) R_ACMPLP Structure */ +{ + union + { + __IOM uint8_t COMPMDR; /*!< (@ 0x00000000) ACMPLP Mode Setting Register */ + + struct + { + __IOM uint8_t C0ENB : 1; /*!< [0..0] ACMPLP0 Operation Enable */ + __IOM uint8_t C0WDE : 1; /*!< [1..1] ACMPLP0 Window Function Mode Enable */ + __IOM uint8_t C0VRF : 1; /*!< [2..2] ACMPLP0 Reference Voltage Selection */ + __IM uint8_t C0MON : 1; /*!< [3..3] ACMPLP0 Monitor Flag */ + __IOM uint8_t C1ENB : 1; /*!< [4..4] ACMPLP1 Operation Enable */ + __IOM uint8_t C1WDE : 1; /*!< [5..5] ACMPLP1 Window Function Mode Enable */ + __IOM uint8_t C1VRF : 1; /*!< [6..6] ACMPLP1 Reference Voltage Selection */ + __IM uint8_t C1MON : 1; /*!< [7..7] ACMPLP1 Monitor Flag */ + } COMPMDR_b; + }; + + union + { + __IOM uint8_t COMPFIR; /*!< (@ 0x00000001) ACMPLP Filter Control Register */ + + struct + { + __IOM uint8_t C0FCK : 2; /*!< [1..0] ACMPLP0 Filter Select */ + __IOM uint8_t C0EPO : 1; /*!< [2..2] ACMPLP0 Edge Polarity Switching */ + __IOM uint8_t C0EDG : 1; /*!< [3..3] ACMPLP0 Edge Detection Selection */ + __IOM uint8_t C1FCK : 2; /*!< [5..4] ACMPLP1 Filter Select */ + __IOM uint8_t C1EPO : 1; /*!< [6..6] ACMPLP1 Edge Polarity Switching */ + __IOM uint8_t C1EDG : 1; /*!< [7..7] ACMPLP1 Edge Detection Selection */ + } COMPFIR_b; + }; + + union + { + __IOM uint8_t COMPOCR; /*!< (@ 0x00000002) ACMPLP Output Control Register */ + + struct + { + uint8_t : 1; + __IOM uint8_t C0OE : 1; /*!< [1..1] ACMPLP0 VCOUT Pin Output Enable */ + __IOM uint8_t C0OP : 1; /*!< [2..2] ACMPLP0 VCOUT Output Polarity Selection */ + uint8_t : 2; + __IOM uint8_t C1OE : 1; /*!< [5..5] ACMPLP1 VCOUT Pin Output Enable */ + __IOM uint8_t C1OP : 1; /*!< [6..6] ACMPLP1 VCOUT Output Polarity Selection */ + __IOM uint8_t SPDMD : 1; /*!< [7..7] ACMPLP0/ACMPLP1 Speed Selection */ + } COMPOCR_b; + }; + __IM uint8_t RESERVED; + + union + { + __IOM uint8_t COMPSEL0; /*!< (@ 0x00000004) Comparator Input Select Register */ + + struct + { + __IOM uint8_t IVCMP0 : 3; /*!< [2..0] ACMPLP0 Input (IVCMP0) Selection */ + uint8_t : 1; + __IOM uint8_t IVCMP1 : 3; /*!< [6..4] ACMPLP1 Input (IVCMP1) Selection */ + uint8_t : 1; + } COMPSEL0_b; + }; + + union + { + __IOM uint8_t COMPSEL1; /*!< (@ 0x00000005) Comparator Reference voltage Select Register */ + + struct + { + __IOM uint8_t IVREF0 : 3; /*!< [2..0] ACMPLP0 Reference Voltage (IVREF0) Selection */ + uint8_t : 1; + __IOM uint8_t IVREF1 : 3; /*!< [6..4] ACMPLP1 Reference Voltage(IVREF1) Selection */ + __IOM uint8_t C1VRF2 : 1; /*!< [7..7] ACMPLP1 Reference Voltage Selection */ + } COMPSEL1_b; + }; +} R_ACMPLP_Type; /*!< Size = 6 (0x6) */ + +/* =========================================================================================================================== */ +/* ================ R_ADC0 ================ */ +/* =========================================================================================================================== */ + +/** + * @brief A/D Converter (R_ADC0) + */ + +typedef struct /*!< (@ 0x4005C000) 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[28]; /*!< (@ 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[28]; + }; + __IM uint16_t RESERVED1[5]; + + 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 RESERVED2; + + 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 RESERVED3; + + 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 RESERVED4; + + 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 RESERVED5; + + 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 RESERVED6; + __IM uint16_t RESERVED7; + + 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 RESERVED8; + + 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 RESERVED9; + + 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 RESERVED10; + __IM uint16_t RESERVED11; + + 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 RESERVED12; + + 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 RESERVED13; + __IM uint16_t RESERVED14[4]; + __IM uint8_t RESERVED15; + + 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 RESERVED16; + + 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 RESERVED17; + __IM uint16_t RESERVED18; + + 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 RESERVED19; + __IM uint16_t RESERVED20[82]; + + 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 uint16_t RESERVED21[6]; + + 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 RESERVED22; + + 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 RESERVED23[21]; + + union + { + __IOM uint8_t ADREFMON; /*!< (@ 0x000001E0) A/D External Reference Voltage Monitor Register */ + + struct + { + __IOM uint8_t PGAMON : 3; /*!< [2..0] PGA Monitor Output Enable */ + uint8_t : 5; + } ADREFMON_b; + }; + __IM uint8_t RESERVED24; + __IM uint16_t RESERVED25; +} R_ADC0_Type; /*!< Size = 484 (0x1e4) */ + +/* =========================================================================================================================== */ +/* ================ R_PSCU ================ */ +/* =========================================================================================================================== */ + +/** + * @brief Peripheral Security Control Unit (R_PSCU) + */ + +typedef struct /*!< (@ 0x400E0000) R_PSCU Structure */ +{ + __IM uint32_t RESERVED; + + union + { + __IOM uint32_t PSARB; /*!< (@ 0x00000004) Peripheral Security Attribution Register B */ + + struct + { + uint32_t : 1; + __IOM uint32_t PSARB1 : 1; /*!< [1..1] CAN1 and the MSTPCRB.MSTPB1 bit security attribution */ + __IOM uint32_t PSARB2 : 1; /*!< [2..2] CAN0 and the MSTPCRB.MSTPB2 bit security attribution */ + __IOM uint32_t PSARB3 : 1; /*!< [3..3] CEC and the MSTPCRB.MSTPB3 bit security attribution */ + uint32_t : 2; + __IM uint32_t PSARB6 : 1; /*!< [6..6] QSPI and the MSTPCRB.MSTPB6 bit security attribution */ + __IOM uint32_t PSARB7 : 1; /*!< [7..7] IIC2 and the MSTPCRB.MSTPB7 bit security attribution */ + __IOM uint32_t PSARB8 : 1; /*!< [8..8] IIC1 and the MSTPCRB.MSTPB8 bit security attribution */ + __IOM uint32_t PSARB9 : 1; /*!< [9..9] IIC0 and the MSTPCRB.MSTPB9 bit security attribution */ + uint32_t : 1; + __IOM uint32_t PSARB11 : 1; /*!< [11..11] USBFS and the MSTPCRB.MSTPB11 bit security attribution */ + __IOM uint32_t PSARB12 : 1; /*!< [12..12] USBHS and the MSTPCRB.MSTPB12 bit security attribution */ + uint32_t : 2; + __IM uint32_t PSARB15 : 1; /*!< [15..15] ETHER0/EDMAC0, the MSTPCRB.MSTPB15 bit and the PFENET.PHYMODE0 + * bit security attribution */ + __IM uint32_t PSARB16 : 1; /*!< [16..16] OSPI and the MSTPCRB.MSTPB16 bit security attribution */ + uint32_t : 1; + __IOM uint32_t PSARB18 : 1; /*!< [18..18] RSPI1 and the MSTPCRB.MSTPB18 bit security attribution */ + __IOM uint32_t PSARB19 : 1; /*!< [19..19] RSPI0 and the MSTPCRB.MSTPB19 bit security attribution */ + uint32_t : 2; + __IOM uint32_t PSARB22 : 1; /*!< [22..22] SCI9 and the MSTPCRB.MSTPB22 bit security attribution */ + __IOM uint32_t PSARB23 : 1; /*!< [23..23] SCI8 and the MSTPCRB.MSTPB23 bit security attribution */ + __IOM uint32_t PSARB24 : 1; /*!< [24..24] SCI7 and the MSTPCRB.MSTPB24 bit security attribution */ + __IOM uint32_t PSARB25 : 1; /*!< [25..25] SCI6 and the MSTPCRB.MSTPB25 bit security attribution */ + __IOM uint32_t PSARB26 : 1; /*!< [26..26] SCI5 and the MSTPCRB.MSTPB26 bit security attribution */ + __IOM uint32_t PSARB27 : 1; /*!< [27..27] SCI4 and the MSTPCRB.MSTPB27 bit security attribution */ + __IOM uint32_t PSARB28 : 1; /*!< [28..28] SCI3 and the MSTPCRB.MSTPB28 bit security attribution */ + __IOM uint32_t PSARB29 : 1; /*!< [29..29] SCI2 and the MSTPCRB.MSTPB29 bit security attribution */ + __IOM uint32_t PSARB30 : 1; /*!< [30..30] SCI1 and the MSTPCRB.MSTPB30 bit security attribution */ + __IOM uint32_t PSARB31 : 1; /*!< [31..31] SCI0 and the MSTPCRB.MSTPB31 bit security attribution */ + } PSARB_b; + }; + + union + { + __IOM uint32_t PSARC; /*!< (@ 0x00000008) Peripheral Security Attribution Register C */ + + struct + { + __IOM uint32_t PSARC0 : 1; /*!< [0..0] CAC and the MSTPCRC.MSTPC0 bit security attribution */ + __IOM uint32_t PSARC1 : 1; /*!< [1..1] CRC and the MSTPCRC.MSTPC1 bit security attribution */ + uint32_t : 1; + __IOM uint32_t PSARC3 : 1; /*!< [3..3] CTSU and the MSTPCRC.MSTPC3 bit security attribution */ + uint32_t : 4; + __IOM uint32_t PSARC8 : 1; /*!< [8..8] SSIE0 and the MSTPCRC.MSTPC8 bit security attribution */ + uint32_t : 3; + __IOM uint32_t PSARC12 : 1; /*!< [12..12] SDHI0 and the MSTPCRC.MSTPC12 bit security attribution */ + __IOM uint32_t PSARC13 : 1; /*!< [13..13] DOC and the MSTPCRC.MSTPC13 bit security attribution */ + uint32_t : 6; + __IOM uint32_t PSARC20 : 1; /*!< [20..20] TFU and the MSTPCRC.MSTPC20 bit security attribution */ + uint32_t : 6; + __IOM uint32_t PSARC27 : 1; /*!< [27..27] CANFD0 and the MSTPCRC.MSTPC27 bit security attribution */ + uint32_t : 3; + __IOM uint32_t PSARC31 : 1; /*!< [31..31] TSIP and the MSTPCRC.MSTPC31 bit security attribution */ + } PSARC_b; + }; + + union + { + __IOM uint32_t PSARD; /*!< (@ 0x0000000C) Peripheral Security Attribution Register D */ + + struct + { + __IOM uint32_t PSARD0 : 1; /*!< [0..0] AGT3 and the MSTPCRD.MSTPD0 bit security attribution */ + __IOM uint32_t PSARD1 : 1; /*!< [1..1] AGT2 and the MSTPCRD.MSTPD1 bit security attribution */ + __IOM uint32_t PSARD2 : 1; /*!< [2..2] AGT1 and the MSTPCRD.MSTPD2 bit security attribution */ + __IOM uint32_t PSARD3 : 1; /*!< [3..3] AGT0 and the MSTPCRD.MSTPD3 bit security attribution */ + uint32_t : 7; + __IOM uint32_t PSARD11 : 1; /*!< [11..11] PGI3 and the MSTPCRD.MSTPD11 bit security attribution */ + __IOM uint32_t PSARD12 : 1; /*!< [12..12] PGI2 and the MSTPCRD.MSTPD12 bit security attribution */ + __IOM uint32_t PSARD13 : 1; /*!< [13..13] PGI1 and the MSTPCRD.MSTPD13 bit security attribution */ + __IOM uint32_t PSARD14 : 1; /*!< [14..14] PGI0 and the MSTPCRD.MSTPD14 bit security attribution */ + __IOM uint32_t PSARD15 : 1; /*!< [15..15] ADC1 and the MSTPCRD.MSTPD15 bit security attribution */ + __IOM uint32_t PSARD16 : 1; /*!< [16..16] ADC0 and the MSTPCRD.MSTPD16 bit security attribution */ + uint32_t : 2; + __IOM uint32_t PSARD19 : 1; /*!< [19..19] DAC121 and the MSTPCRD.MSTPD19 bit security attribution */ + __IOM uint32_t PSARD20 : 1; /*!< [20..20] DAC120 and the MSTPCRD.MSTPD20 bit security attribution */ + uint32_t : 1; + __IOM uint32_t PSARD22 : 1; /*!< [22..22] TSN and the MSTPCRD.MSTPD22 bit security attribution */ + uint32_t : 2; + __IOM uint32_t PSARD25 : 1; /*!< [25..25] ACMPHS3 and the MSTPCRD.MSTPD25 bit security attribution */ + __IOM uint32_t PSARD26 : 1; /*!< [26..26] ACMPHS2 and the MSTPCRD.MSTPD26 bit security attribution */ + __IOM uint32_t PSARD27 : 1; /*!< [27..27] ACMPHS1 and the MSTPCRD.MSTPD27 bit security attribution */ + __IOM uint32_t PSARD28 : 1; /*!< [28..28] ACMPHS0 and the MSTPCRD.MSTPD28 bit security attribution */ + uint32_t : 3; + } PSARD_b; + }; + + union + { + __IOM uint32_t PSARE; /*!< (@ 0x00000010) Peripheral Security Attribution Register E */ + + struct + { + __IOM uint32_t PSARE0 : 1; /*!< [0..0] WDT security attribution */ + __IOM uint32_t PSARE1 : 1; /*!< [1..1] IWDT security attribution */ + __IOM uint32_t PSARE2 : 1; /*!< [2..2] RTC security attribution */ + uint32_t : 11; + __IOM uint32_t PSARE14 : 1; /*!< [14..14] AGT5 and the MSTPCRE.MSTPE14 bit security attribution */ + __IOM uint32_t PSARE15 : 1; /*!< [15..15] AGT4 and the MSTPCRE.MSTPE15 bit security attribution */ + uint32_t : 6; + __IOM uint32_t PSARE22 : 1; /*!< [22..22] GPT9 and the MSTPCRE.MSTPE22 bit security attribution */ + __IOM uint32_t PSARE23 : 1; /*!< [23..23] GPT8 and the MSTPCRE.MSTPE23 bit security attribution */ + __IOM uint32_t PSARE24 : 1; /*!< [24..24] GPT7 and the MSTPCRE.MSTPE24 bit security attribution */ + __IOM uint32_t PSARE25 : 1; /*!< [25..25] GPT6 and the MSTPCRE.MSTPE25 bit security attribution */ + __IOM uint32_t PSARE26 : 1; /*!< [26..26] GPT5 and the MSTPCRE.MSTPE26 bit security attribution */ + __IOM uint32_t PSARE27 : 1; /*!< [27..27] GPT4 and the MSTPCRE.MSTPE27 bit security attribution */ + __IOM uint32_t PSARE28 : 1; /*!< [28..28] GPT3 and the MSTPCRE.MSTPE28 bit security attribution */ + __IOM uint32_t PSARE29 : 1; /*!< [29..29] GPT2 and the MSTPCRE.MSTPE29 bit security attribution */ + __IOM uint32_t PSARE30 : 1; /*!< [30..30] GPT1 and the MSTPCRE.MSTPE30 bit security attribution */ + __IOM uint32_t PSARE31 : 1; /*!< [31..31] GPT0 and the MSTPCRE.MSTPE31 bit security attribution */ + } PSARE_b; + }; + + union + { + __IOM uint32_t MSSAR; /*!< (@ 0x00000014) Module Stop Security Attribution Register */ + + struct + { + __IOM uint32_t MSSAR0 : 1; /*!< [0..0] The MSTPCRC.MSTPC14 bit security attribution */ + __IOM uint32_t MSSAR1 : 1; /*!< [1..1] The MSTPCRA.MSTPA22 bit security attribution */ + __IOM uint32_t MSSAR2 : 1; /*!< [2..2] The MSTPCRA.MSTPA7 bit security attribution */ + __IOM uint32_t MSSAR3 : 1; /*!< [3..3] The MSTPCRA.MSTPA0 bit security attribution */ + uint32_t : 28; + } MSSAR_b; + }; + + union + { + __IM uint32_t CFSAMONA; /*!< (@ 0x00000018) Code Flash Security Attribution Monitor Register + * A */ + + struct + { + uint32_t : 15; + __IM uint32_t CFS2 : 9; /*!< [23..15] Code Flash Secure area 2 */ + uint32_t : 8; + } CFSAMONA_b; + }; + + union + { + __IM uint32_t CFSAMONB; /*!< (@ 0x0000001C) Code Flash Security Attribution Monitor Register + * B */ + + struct + { + uint32_t : 10; + __IM uint32_t CFS1 : 14; /*!< [23..10] Code Flash Secure area 1 */ + uint32_t : 8; + } CFSAMONB_b; + }; + + union + { + __IM uint32_t DFSAMON; /*!< (@ 0x00000020) 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 SSAMONA; /*!< (@ 0x00000024) SRAM Security Attribution Monitor Register A */ + + struct + { + uint32_t : 13; + __IM uint32_t SS2 : 8; /*!< [20..13] SRAM Secure area 2 */ + uint32_t : 11; + } SSAMONA_b; + }; + + union + { + __IM uint32_t SSAMONB; /*!< (@ 0x00000028) SRAM Security Attribution Monitor Register B */ + + struct + { + uint32_t : 10; + __IM uint32_t SS1 : 11; /*!< [20..10] SRAM secure area 1 */ + uint32_t : 11; + } SSAMONB_b; + }; + + union + { + __IM uint32_t DLMMON; /*!< (@ 0x0000002C) 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 = 48 (0x30) */ + +/* =========================================================================================================================== */ +/* ================ R_AGT0 ================ */ +/* =========================================================================================================================== */ + +/** + * @brief Asynchronous General Purpose Timer (R_AGT0) + */ + +typedef struct /*!< (@ 0x40084000) R_AGT0 Structure */ +{ + union + { + __IOM uint16_t AGT; /*!< (@ 0x00000000) AGT Counter Register */ + + struct + { + __IOM uint16_t AGT : 16; /*!< [15..0] 16bit counter and reload registerNOTE : 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; + + union + { + __IOM uint8_t AGTCR; /*!< (@ 0x00000008) 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; /*!< (@ 0x00000009) 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; /*!< (@ 0x0000000A) 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; + }; + __IM uint8_t RESERVED1; + + union + { + __IOM uint8_t AGTIOC; /*!< (@ 0x0000000C) 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; /*!< (@ 0x0000000D) 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; /*!< (@ 0x0000000E) 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; /*!< (@ 0x0000000F) 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_AGT0_Type; /*!< Size = 16 (0x10) */ + +/* =========================================================================================================================== */ +/* ================ R_AGTW0 ================ */ +/* =========================================================================================================================== */ + +/** + * @brief Asynchronous General Purpose Timer (R_AGTW0) + */ + + #ifndef BSP_OVERRIDE_REG_R_AGTW0_TYPE + +typedef struct /*!< (@ 0x40084000) R_AGTW0 Structure */ +{ + union + { + __IOM uint32_t AGT; /*!< (@ 0x00000000) AGT Counter Register */ + + struct + { + __IOM uint32_t AGT : 32; /*!< [31..0] 16bit counter and reload registerNOTE : 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; + }; + + union + { + __IOM uint8_t AGTCR; /*!< (@ 0x0000000C) 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; /*!< (@ 0x0000000D) 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; /*!< (@ 0x0000000E) 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; /*!< (@ 0x0000000F) AGT Pin Select Register */ + + struct + { + uint8_t : 4; + __IOM uint8_t TIES : 1; /*!< [4..4] AGTIO input enable */ + uint8_t : 3; + } AGTIOSEL_b; + }; + + union + { + __IOM uint8_t AGTIOC; /*!< (@ 0x00000010) 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; /*!< (@ 0x00000011) 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; /*!< (@ 0x00000012) 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; + }; + __IM uint8_t RESERVED; +} R_AGTW0_Type; /*!< Size = 20 (0x14) */ + + #endif + +/* =========================================================================================================================== */ +/* ================ 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]; + __IOM R_BUS_BUSM_Type BUSM[6]; /*!< (@ 0x00001000) Master Bus Control Register Array */ + __IM uint32_t RESERVED4[58]; + __IOM R_BUS_BUSS_Type BUSS[16]; /*!< (@ 0x00001100) Slave Bus Control Register Array */ + __IM uint32_t RESERVED5[432]; + __IOM R_BUS_BUSERR_Type BUSERR[11]; /*!< (@ 0x00001800) Bus Error Registers */ +} R_BUS_Type; /*!< Size = 6320 (0x18b0) */ + +/* =========================================================================================================================== */ +/* ================ R_CAC ================ */ +/* =========================================================================================================================== */ + +/** + * @brief Clock Frequency Accuracy Measurement Circuit (R_CAC) + */ + +typedef struct /*!< (@ 0x40044600) 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_CAN0 ================ */ +/* =========================================================================================================================== */ + +/** + * @brief Controller Area Network (CAN) Module (R_CAN0) + */ + +typedef struct /*!< (@ 0x40050000) R_CAN0 Structure */ +{ + __IM uint32_t RESERVED[128]; + __IOM R_CAN0_MB_Type MB[32]; /*!< (@ 0x00000200) Mailbox */ + + union + { + __IOM uint32_t MKR[8]; /*!< (@ 0x00000400) Mask Register */ + + struct + { + __IOM uint32_t EID : 18; /*!< [17..0] Extended ID */ + __IOM uint32_t SID : 11; /*!< [28..18] Standard ID */ + uint32_t : 3; + } MKR_b[8]; + }; + + union + { + __IOM uint32_t FIDCR[2]; /*!< (@ 0x00000420) FIFO Received ID Compare Registers */ + + struct + { + __IOM uint32_t EID : 18; /*!< [17..0] Extended ID */ + __IOM uint32_t SID : 11; /*!< [28..18] Standard ID */ + uint32_t : 1; + __IOM uint32_t RTR : 1; /*!< [30..30] Remote Transmission Request */ + __IOM uint32_t IDE : 1; /*!< [31..31] ID Extension */ + } FIDCR_b[2]; + }; + + union + { + __IOM uint32_t MKIVLR; /*!< (@ 0x00000428) Mask Invalid Register */ + + struct + { + __IOM uint32_t MB0 : 1; /*!< [0..0] mailbox 0 Mask Invalid */ + __IOM uint32_t MB1 : 1; /*!< [1..1] mailbox 1 Mask Invalid */ + __IOM uint32_t MB2 : 1; /*!< [2..2] mailbox 2 Mask Invalid */ + __IOM uint32_t MB3 : 1; /*!< [3..3] mailbox 3 Mask Invalid */ + __IOM uint32_t MB4 : 1; /*!< [4..4] mailbox 4 Mask Invalid */ + __IOM uint32_t MB5 : 1; /*!< [5..5] mailbox 5 Mask Invalid */ + __IOM uint32_t MB6 : 1; /*!< [6..6] mailbox 6 Mask Invalid */ + __IOM uint32_t MB7 : 1; /*!< [7..7] mailbox 7 Mask Invalid */ + __IOM uint32_t MB8 : 1; /*!< [8..8] mailbox 8 Mask Invalid */ + __IOM uint32_t MB9 : 1; /*!< [9..9] mailbox 9 Mask Invalid */ + __IOM uint32_t MB10 : 1; /*!< [10..10] mailbox 10 Mask Invalid */ + __IOM uint32_t MB11 : 1; /*!< [11..11] mailbox 11 Mask Invalid */ + __IOM uint32_t MB12 : 1; /*!< [12..12] mailbox 12 Mask Invalid */ + __IOM uint32_t MB13 : 1; /*!< [13..13] mailbox 13 Mask Invalid */ + __IOM uint32_t MB14 : 1; /*!< [14..14] mailbox 14 Mask Invalid */ + __IOM uint32_t MB15 : 1; /*!< [15..15] mailbox 15 Mask Invalid */ + __IOM uint32_t MB16 : 1; /*!< [16..16] mailbox 16 Mask Invalid */ + __IOM uint32_t MB17 : 1; /*!< [17..17] mailbox 17 Mask Invalid */ + __IOM uint32_t MB18 : 1; /*!< [18..18] mailbox 18 Mask Invalid */ + __IOM uint32_t MB19 : 1; /*!< [19..19] mailbox 19 Mask Invalid */ + __IOM uint32_t MB20 : 1; /*!< [20..20] mailbox 20 Mask Invalid */ + __IOM uint32_t MB21 : 1; /*!< [21..21] mailbox 21 Mask Invalid */ + __IOM uint32_t MB22 : 1; /*!< [22..22] mailbox 22 Mask Invalid */ + __IOM uint32_t MB23 : 1; /*!< [23..23] mailbox 23 Mask Invalid */ + __IOM uint32_t MB24 : 1; /*!< [24..24] mailbox 24 Mask Invalid */ + __IOM uint32_t MB25 : 1; /*!< [25..25] mailbox 25 Mask Invalid */ + __IOM uint32_t MB26 : 1; /*!< [26..26] mailbox 26 Mask Invalid */ + __IOM uint32_t MB27 : 1; /*!< [27..27] mailbox 27 Mask Invalid */ + __IOM uint32_t MB28 : 1; /*!< [28..28] mailbox 28 Mask Invalid */ + __IOM uint32_t MB29 : 1; /*!< [29..29] mailbox 29 Mask Invalid */ + __IOM uint32_t MB30 : 1; /*!< [30..30] mailbox 30 Mask Invalid */ + __IOM uint32_t MB31 : 1; /*!< [31..31] mailbox 31 Mask Invalid */ + } MKIVLR_b; + }; + + union + { + union + { + __IOM uint32_t MIER; /*!< (@ 0x0000042C) Mailbox Interrupt Enable Register */ + + struct + { + __IOM uint32_t MB0 : 1; /*!< [0..0] mailbox 0 Interrupt Enable */ + __IOM uint32_t MB1 : 1; /*!< [1..1] mailbox 1 Interrupt Enable */ + __IOM uint32_t MB2 : 1; /*!< [2..2] mailbox 2 Interrupt Enable */ + __IOM uint32_t MB3 : 1; /*!< [3..3] mailbox 3 Interrupt Enable */ + __IOM uint32_t MB4 : 1; /*!< [4..4] mailbox 4 Interrupt Enable */ + __IOM uint32_t MB5 : 1; /*!< [5..5] mailbox 5 Interrupt Enable */ + __IOM uint32_t MB6 : 1; /*!< [6..6] mailbox 6 Interrupt Enable */ + __IOM uint32_t MB7 : 1; /*!< [7..7] mailbox 7 Interrupt Enable */ + __IOM uint32_t MB8 : 1; /*!< [8..8] mailbox 8 Interrupt Enable */ + __IOM uint32_t MB9 : 1; /*!< [9..9] mailbox 9 Interrupt Enable */ + __IOM uint32_t MB10 : 1; /*!< [10..10] mailbox 10 Interrupt Enable */ + __IOM uint32_t MB11 : 1; /*!< [11..11] mailbox 11 Interrupt Enable */ + __IOM uint32_t MB12 : 1; /*!< [12..12] mailbox 12 Interrupt Enable */ + __IOM uint32_t MB13 : 1; /*!< [13..13] mailbox 13 Interrupt Enable */ + __IOM uint32_t MB14 : 1; /*!< [14..14] mailbox 14 Interrupt Enable */ + __IOM uint32_t MB15 : 1; /*!< [15..15] mailbox 15 Interrupt Enable */ + __IOM uint32_t MB16 : 1; /*!< [16..16] mailbox 16 Interrupt Enable */ + __IOM uint32_t MB17 : 1; /*!< [17..17] mailbox 17 Interrupt Enable */ + __IOM uint32_t MB18 : 1; /*!< [18..18] mailbox 18 Interrupt Enable */ + __IOM uint32_t MB19 : 1; /*!< [19..19] mailbox 19 Interrupt Enable */ + __IOM uint32_t MB20 : 1; /*!< [20..20] mailbox 20 Interrupt Enable */ + __IOM uint32_t MB21 : 1; /*!< [21..21] mailbox 21 Interrupt Enable */ + __IOM uint32_t MB22 : 1; /*!< [22..22] mailbox 22 Interrupt Enable */ + __IOM uint32_t MB23 : 1; /*!< [23..23] mailbox 23 Interrupt Enable */ + __IOM uint32_t MB24 : 1; /*!< [24..24] mailbox 24 Interrupt Enable */ + __IOM uint32_t MB25 : 1; /*!< [25..25] mailbox 25 Interrupt Enable */ + __IOM uint32_t MB26 : 1; /*!< [26..26] mailbox 26 Interrupt Enable */ + __IOM uint32_t MB27 : 1; /*!< [27..27] mailbox 27 Interrupt Enable */ + __IOM uint32_t MB28 : 1; /*!< [28..28] mailbox 28 Interrupt Enable */ + __IOM uint32_t MB29 : 1; /*!< [29..29] mailbox 29 Interrupt Enable */ + __IOM uint32_t MB30 : 1; /*!< [30..30] mailbox 30 Interrupt Enable */ + __IOM uint32_t MB31 : 1; /*!< [31..31] mailbox 31 Interrupt Enable */ + } MIER_b; + }; + + union + { + __IOM uint32_t MIER_FIFO; /*!< (@ 0x0000042C) Mailbox Interrupt Enable Register for FIFO Mailbox + * Mode */ + + struct + { + __IOM uint32_t MB0 : 1; /*!< [0..0] mailbox 0 Interrupt Enable */ + __IOM uint32_t MB1 : 1; /*!< [1..1] mailbox 1 Interrupt Enable */ + __IOM uint32_t MB2 : 1; /*!< [2..2] mailbox 2 Interrupt Enable */ + __IOM uint32_t MB3 : 1; /*!< [3..3] mailbox 3 Interrupt Enable */ + __IOM uint32_t MB4 : 1; /*!< [4..4] mailbox 4 Interrupt Enable */ + __IOM uint32_t MB5 : 1; /*!< [5..5] mailbox 5 Interrupt Enable */ + __IOM uint32_t MB6 : 1; /*!< [6..6] mailbox 6 Interrupt Enable */ + __IOM uint32_t MB7 : 1; /*!< [7..7] mailbox 7 Interrupt Enable */ + __IOM uint32_t MB8 : 1; /*!< [8..8] mailbox 8 Interrupt Enable */ + __IOM uint32_t MB9 : 1; /*!< [9..9] mailbox 9 Interrupt Enable */ + __IOM uint32_t MB10 : 1; /*!< [10..10] mailbox 10 Interrupt Enable */ + __IOM uint32_t MB11 : 1; /*!< [11..11] mailbox 11 Interrupt Enable */ + __IOM uint32_t MB12 : 1; /*!< [12..12] mailbox 12 Interrupt Enable */ + __IOM uint32_t MB13 : 1; /*!< [13..13] mailbox 13 Interrupt Enable */ + __IOM uint32_t MB14 : 1; /*!< [14..14] mailbox 14 Interrupt Enable */ + __IOM uint32_t MB15 : 1; /*!< [15..15] mailbox 15 Interrupt Enable */ + __IOM uint32_t MB16 : 1; /*!< [16..16] mailbox 16 Interrupt Enable */ + __IOM uint32_t MB17 : 1; /*!< [17..17] mailbox 17 Interrupt Enable */ + __IOM uint32_t MB18 : 1; /*!< [18..18] mailbox 18 Interrupt Enable */ + __IOM uint32_t MB19 : 1; /*!< [19..19] mailbox 19 Interrupt Enable */ + __IOM uint32_t MB20 : 1; /*!< [20..20] mailbox 20 Interrupt Enable */ + __IOM uint32_t MB21 : 1; /*!< [21..21] mailbox 21 Interrupt Enable */ + __IOM uint32_t MB22 : 1; /*!< [22..22] mailbox 22 Interrupt Enable */ + __IOM uint32_t MB23 : 1; /*!< [23..23] mailbox 23 Interrupt Enable */ + __IOM uint32_t MB24 : 1; /*!< [24..24] Transmit FIFO Interrupt Enable */ + __IOM uint32_t MB25 : 1; /*!< [25..25] Transmit FIFO Interrupt Generation Timing Control */ + uint32_t : 2; + __IOM uint32_t MB28 : 1; /*!< [28..28] Receive FIFO Interrupt Enable */ + __IOM uint32_t MB29 : 1; /*!< [29..29] Receive FIFO Interrupt Generation Timing Control */ + uint32_t : 2; + } MIER_FIFO_b; + }; + }; + __IM uint32_t RESERVED1[252]; + + union + { + union + { + __IOM uint8_t MCTL_TX[32]; /*!< (@ 0x00000820) Message Control Register for Transmit */ + + struct + { + __IOM uint8_t SENTDATA : 1; /*!< [0..0] Transmission Complete Flag */ + __IM uint8_t TRMACTIVE : 1; /*!< [1..1] Transmission-in-Progress Status Flag (Transmit mailbox + * setting enabled) */ + __IOM uint8_t TRMABT : 1; /*!< [2..2] Transmission Abort Complete Flag (Transmit mailbox setting + * enabled) */ + uint8_t : 1; + __IOM uint8_t ONESHOT : 1; /*!< [4..4] One-Shot Enable */ + uint8_t : 1; + __IOM uint8_t RECREQ : 1; /*!< [6..6] Receive Mailbox Request */ + __IOM uint8_t TRMREQ : 1; /*!< [7..7] Transmit Mailbox Request */ + } MCTL_TX_b[32]; + }; + + union + { + __IOM uint8_t MCTL_RX[32]; /*!< (@ 0x00000820) Message Control Register for Receive */ + + struct + { + __IOM uint8_t NEWDATA : 1; /*!< [0..0] Reception Complete Flag */ + __IM uint8_t INVALDATA : 1; /*!< [1..1] Reception-in-Progress Status Flag (Receive mailbox setting + * enabled) */ + __IOM uint8_t MSGLOST : 1; /*!< [2..2] Message Lost Flag(Receive mailbox setting enabled) */ + uint8_t : 1; + __IOM uint8_t ONESHOT : 1; /*!< [4..4] One-Shot Enable */ + uint8_t : 1; + __IOM uint8_t RECREQ : 1; /*!< [6..6] Receive Mailbox Request */ + __IOM uint8_t TRMREQ : 1; /*!< [7..7] Transmit Mailbox Request */ + } MCTL_RX_b[32]; + }; + }; + + union + { + __IOM uint16_t CTLR; /*!< (@ 0x00000840) Control Register */ + + struct + { + __IOM uint16_t MBM : 1; /*!< [0..0] CAN Mailbox Mode Select */ + __IOM uint16_t IDFM : 2; /*!< [2..1] ID Format Mode Select */ + __IOM uint16_t MLM : 1; /*!< [3..3] Message Lost Mode Select */ + __IOM uint16_t TPM : 1; /*!< [4..4] Transmission Priority Mode Select */ + __IOM uint16_t TSRC : 1; /*!< [5..5] Time Stamp Counter Reset Command */ + __IOM uint16_t TSPS : 2; /*!< [7..6] Time Stamp Prescaler Select */ + __IOM uint16_t CANM : 2; /*!< [9..8] CAN Operating Mode Select */ + __IOM uint16_t SLPM : 1; /*!< [10..10] CAN Sleep Mode */ + __IOM uint16_t BOM : 2; /*!< [12..11] Bus-Off Recovery Mode by a program request */ + __IOM uint16_t RBOC : 1; /*!< [13..13] Forcible Return From Bus-Off */ + uint16_t : 2; + } CTLR_b; + }; + + union + { + __IM uint16_t STR; /*!< (@ 0x00000842) Status Register */ + + struct + { + __IM uint16_t NDST : 1; /*!< [0..0] NEWDATA Status Flag */ + __IM uint16_t SDST : 1; /*!< [1..1] SENTDATA Status Flag */ + __IM uint16_t RFST : 1; /*!< [2..2] Receive FIFO Status Flag */ + __IM uint16_t TFST : 1; /*!< [3..3] Transmit FIFO Status Flag */ + __IM uint16_t NMLST : 1; /*!< [4..4] Normal Mailbox Message Lost Status Flag */ + __IM uint16_t FMLST : 1; /*!< [5..5] FIFO Mailbox Message Lost Status Flag */ + __IM uint16_t TABST : 1; /*!< [6..6] Transmission Abort Status Flag */ + __IM uint16_t EST : 1; /*!< [7..7] Error Status Flag */ + __IM uint16_t RSTST : 1; /*!< [8..8] CAN Reset Status Flag */ + __IM uint16_t HLTST : 1; /*!< [9..9] CAN Halt Status Flag */ + __IM uint16_t SLPST : 1; /*!< [10..10] CAN Sleep Status Flag */ + __IM uint16_t EPST : 1; /*!< [11..11] Error-Passive Status Flag */ + __IM uint16_t BOST : 1; /*!< [12..12] Bus-Off Status Flag */ + __IM uint16_t TRMST : 1; /*!< [13..13] Transmit Status Flag (transmitter) */ + __IM uint16_t RECST : 1; /*!< [14..14] Receive Status Flag (receiver) */ + uint16_t : 1; + } STR_b; + }; + + union + { + __IOM uint32_t BCR; /*!< (@ 0x00000844) Bit Configuration Register */ + + struct + { + __IOM uint32_t CCLKS : 1; /*!< [0..0] CAN Clock Source Selection */ + uint32_t : 7; + __IOM uint32_t TSEG2 : 3; /*!< [10..8] Time Segment 2 Control */ + uint32_t : 1; + __IOM uint32_t SJW : 2; /*!< [13..12] Resynchronization Jump Width Control */ + uint32_t : 2; + __IOM uint32_t BRP : 10; /*!< [25..16] Prescaler Division Ratio Select . These bits set the + * frequency of the CAN communication clock (fCANCLK). */ + uint32_t : 2; + __IOM uint32_t TSEG1 : 4; /*!< [31..28] Time Segment 1 Control */ + } BCR_b; + }; + + union + { + __IOM uint8_t RFCR; /*!< (@ 0x00000848) Receive FIFO Control Register */ + + struct + { + __IOM uint8_t RFE : 1; /*!< [0..0] Receive FIFO Enable */ + __IM uint8_t RFUST : 3; /*!< [3..1] Receive FIFO Unread Message Number Status */ + __IOM uint8_t RFMLF : 1; /*!< [4..4] Receive FIFO Message Lost Flag */ + __IM uint8_t RFFST : 1; /*!< [5..5] Receive FIFO Full Status Flag */ + __IM uint8_t RFWST : 1; /*!< [6..6] Receive FIFO Buffer Warning Status Flag */ + __IM uint8_t RFEST : 1; /*!< [7..7] Receive FIFO Empty Status Flag */ + } RFCR_b; + }; + + union + { + __OM uint8_t RFPCR; /*!< (@ 0x00000849) Receive FIFO Pointer Control Register */ + + struct + { + __OM uint8_t RFPCR : 8; /*!< [7..0] The CPU-side pointer for the receive FIFO is incremented + * by writing FFh to RFPCR. */ + } RFPCR_b; + }; + + union + { + __IOM uint8_t TFCR; /*!< (@ 0x0000084A) Transmit FIFO Control Register */ + + struct + { + __IOM uint8_t TFE : 1; /*!< [0..0] Transmit FIFO Enable */ + __IM uint8_t TFUST : 3; /*!< [3..1] Transmit FIFO Unsent Message Number Status */ + uint8_t : 2; + __IM uint8_t TFFST : 1; /*!< [6..6] Transmit FIFO Full Status */ + __IM uint8_t TFEST : 1; /*!< [7..7] Transmit FIFO Empty Status */ + } TFCR_b; + }; + + union + { + __OM uint8_t TFPCR; /*!< (@ 0x0000084B) Transmit FIFO Pointer Control Register */ + + struct + { + __OM uint8_t TFPCR : 8; /*!< [7..0] The CPU-side pointer for the transmit FIFO is incremented + * by writing FFh to TFPCR. */ + } TFPCR_b; + }; + + union + { + __IOM uint8_t EIER; /*!< (@ 0x0000084C) Error Interrupt Enable Register */ + + struct + { + __IOM uint8_t BEIE : 1; /*!< [0..0] Bus Error Interrupt Enable */ + __IOM uint8_t EWIE : 1; /*!< [1..1] Error-Warning Interrupt Enable */ + __IOM uint8_t EPIE : 1; /*!< [2..2] Error-Passive Interrupt Enable */ + __IOM uint8_t BOEIE : 1; /*!< [3..3] Bus-Off Entry Interrupt Enable */ + __IOM uint8_t BORIE : 1; /*!< [4..4] Bus-Off Recovery Interrupt Enable */ + __IOM uint8_t ORIE : 1; /*!< [5..5] Overrun Interrupt Enable */ + __IOM uint8_t OLIE : 1; /*!< [6..6] Overload Frame Transmit Interrupt Enable */ + __IOM uint8_t BLIE : 1; /*!< [7..7] Bus Lock Interrupt Enable */ + } EIER_b; + }; + + union + { + __IOM uint8_t EIFR; /*!< (@ 0x0000084D) Error Interrupt Factor Judge Register */ + + struct + { + __IOM uint8_t BEIF : 1; /*!< [0..0] Bus Error Detect Flag */ + __IOM uint8_t EWIF : 1; /*!< [1..1] Error-Warning Detect Flag */ + __IOM uint8_t EPIF : 1; /*!< [2..2] Error-Passive Detect Flag */ + __IOM uint8_t BOEIF : 1; /*!< [3..3] Bus-Off Entry Detect Flag */ + __IOM uint8_t BORIF : 1; /*!< [4..4] Bus-Off Recovery Detect Flag */ + __IOM uint8_t ORIF : 1; /*!< [5..5] Receive Overrun Detect Flag */ + __IOM uint8_t OLIF : 1; /*!< [6..6] Overload Frame Transmission Detect Flag */ + __IOM uint8_t BLIF : 1; /*!< [7..7] Bus Lock Detect Flag */ + } EIFR_b; + }; + + union + { + __IM uint8_t RECR; /*!< (@ 0x0000084E) Receive Error Count Register */ + + struct + { + __IM uint8_t RECR : 8; /*!< [7..0] Receive error count functionRECR increments or decrements + * the counter value according to the error status of the + * CAN module during reception. */ + } RECR_b; + }; + + union + { + __IM uint8_t TECR; /*!< (@ 0x0000084F) Transmit Error Count Register */ + + struct + { + __IM uint8_t TECR : 8; /*!< [7..0] Transmit error count functionTECR increments or decrements + * the counter value according to the error status of the + * CAN module during transmission. */ + } TECR_b; + }; + + union + { + __IOM uint8_t ECSR; /*!< (@ 0x00000850) Error Code Store Register */ + + struct + { + __IOM uint8_t SEF : 1; /*!< [0..0] Stuff Error Flag */ + __IOM uint8_t FEF : 1; /*!< [1..1] Form Error Flag */ + __IOM uint8_t AEF : 1; /*!< [2..2] ACK Error Flag */ + __IOM uint8_t CEF : 1; /*!< [3..3] CRC Error Flag */ + __IOM uint8_t BE1F : 1; /*!< [4..4] Bit Error (recessive) Flag */ + __IOM uint8_t BE0F : 1; /*!< [5..5] Bit Error (dominant) Flag */ + __IOM uint8_t ADEF : 1; /*!< [6..6] ACK Delimiter Error Flag */ + __IOM uint8_t EDPM : 1; /*!< [7..7] Error Display Mode Select */ + } ECSR_b; + }; + + union + { + __IOM uint8_t CSSR; /*!< (@ 0x00000851) Channel Search Support Register */ + + struct + { + __IOM uint8_t CSSR : 8; /*!< [7..0] When the value for the channel search is input, the channel + * number is output to MSSR. */ + } CSSR_b; + }; + + union + { + __IM uint8_t MSSR; /*!< (@ 0x00000852) Mailbox Search Status Register */ + + struct + { + __IM uint8_t MBNST : 5; /*!< [4..0] Search Result Mailbox Number Status These bits output + * the smallest mailbox number that is searched in each mode + * of MSMR. */ + uint8_t : 2; + __IM uint8_t SEST : 1; /*!< [7..7] Search Result Status */ + } MSSR_b; + }; + + union + { + __IOM uint8_t MSMR; /*!< (@ 0x00000853) Mailbox Search Mode Register */ + + struct + { + __IOM uint8_t MBSM : 2; /*!< [1..0] Mailbox Search Mode Select */ + uint8_t : 6; + } MSMR_b; + }; + + union + { + __IM uint16_t TSR; /*!< (@ 0x00000854) Time Stamp Register */ + + struct + { + __IM uint16_t TSR : 16; /*!< [15..0] Free-running counter value for the time stamp function */ + } TSR_b; + }; + + union + { + __IOM uint16_t AFSR; /*!< (@ 0x00000856) Acceptance Filter Support Register */ + + struct + { + __IOM uint16_t AFSR : 16; /*!< [15..0] After the standard ID of a received message is written, + * the value converted for data table search can be read. */ + } AFSR_b; + }; + + union + { + __IOM uint8_t TCR; /*!< (@ 0x00000858) Test Control Register */ + + struct + { + __IOM uint8_t TSTE : 1; /*!< [0..0] CAN Test Mode Enable */ + __IOM uint8_t TSTM : 2; /*!< [2..1] CAN Test Mode Select */ + uint8_t : 5; + } TCR_b; + }; + __IM uint8_t RESERVED2; + __IM uint16_t RESERVED3; +} R_CAN0_Type; /*!< Size = 2140 (0x85c) */ + +/* =========================================================================================================================== */ +/* ================ R_CANFD ================ */ +/* =========================================================================================================================== */ + +/** + * @brief Controller Area Network - Flexible Data (CAN-FD) Module (R_CANFD) + */ + +typedef struct /*!< (@ 0x400B0000) R_CANFD Structure */ +{ + __IOM R_CANFD_CFDC_Type CFDC[2]; /*!< (@ 0x00000000) Channel Control/Status */ + __IM uint32_t RESERVED[25]; + + union + { + __IOM uint32_t CFDGCFG; /*!< (@ 0x00000084) 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 */ + __IOM uint32_t TSBTCS : 3; /*!< [15..13] Timestamp Bit Time Channel Select */ + __IOM uint32_t ITRCP : 16; /*!< [31..16] Interval Timer Reference Clock Prescaler */ + } CFDGCFG_b; + }; + + union + { + __IOM uint32_t CFDGCTR; /*!< (@ 0x00000088) 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 : 2; + __IOM uint32_t QMEIE : 1; /*!< [14..14] TXQ Message lost Error Interrupt Enable */ + __IOM uint32_t MOWEIE : 1; /*!< [15..15] GW FIFO Message overwrite Error Interrupt Enable */ + __IOM uint32_t TSRST : 1; /*!< [16..16] Timestamp Reset */ + __IOM uint32_t TSWR : 1; /*!< [17..17] Timestamp Write */ + uint32_t : 14; + } CFDGCTR_b; + }; + + union + { + __IOM uint32_t CFDGSTS; /*!< (@ 0x0000008C) 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; /*!< (@ 0x00000090) 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 */ + __IM uint32_t QOWES : 1; /*!< [4..4] TXQ Message overwrite Error Status */ + __IM uint32_t OTBMLTSTS : 1; /*!< [5..5] OTB FIFO Message Lost Status */ + __IM uint32_t QMES : 1; /*!< [6..6] TXQ Message Lost Error Status */ + uint32_t : 1; + __IOM uint32_t RXSFAIL0 : 1; /*!< [8..8] RX Scan Fail of Channel 0 */ + __IOM uint32_t RXSFAIL1 : 1; /*!< [9..9] RX Scan Fail of Channel 1 */ + uint32_t : 6; + __IOM uint32_t EEF0 : 1; /*!< [16..16] ECC Error Flag for Channel 0 */ + __IOM uint32_t EEF1 : 1; /*!< [17..17] ECC Error Flag for Channel 1 */ + uint32_t : 14; + } CFDGERFL_b; + }; + + union + { + __IOM uint32_t CFDGTSC; /*!< (@ 0x00000094) Global Timestamp Counter Register */ + + struct + { + __IM uint32_t TS : 16; /*!< [15..0] Timestamp Value */ + uint32_t : 16; + } CFDGTSC_b; + }; + + union + { + __IOM uint32_t CFDGAFLECTR; /*!< (@ 0x00000098) 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; /*!< (@ 0x0000009C) 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; + }; + __IM uint32_t RESERVED1[3]; + + union + { + __IOM uint32_t CFDRMNB; /*!< (@ 0x000000AC) 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; /*!< (@ 0x000000B0) RX Message Buffer New Data Register 0 */ + + struct + { + __IOM uint32_t RMNSu : 32; /*!< [31..0] RX Message Buffer New Data Status */ + } CFDRMND0_b; + }; + __IM uint32_t RESERVED2[3]; + + union + { + __IOM uint32_t CFDRFCC[8]; /*!< (@ 0x000000C0) 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 */ + __IOM uint32_t RFFIE : 1; /*!< [16..16] RX FIFO Full interrupt Enable */ + uint32_t : 15; + } CFDRFCC_b[8]; + }; + + union + { + __IOM uint32_t CFDRFSTS[8]; /*!< (@ 0x000000E0) 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 */ + __IOM uint32_t RFFIF : 1; /*!< [16..16] RX FIFO Full Interrupt Flag */ + uint32_t : 15; + } CFDRFSTS_b[8]; + }; + + union + { + __IOM uint32_t CFDRFPCTR[8]; /*!< (@ 0x00000100) RX FIFO Pointer Control Registers */ + + struct + { + __OM uint32_t RFPC : 8; /*!< [7..0] RX FIFO Pointer Control */ + uint32_t : 24; + } CFDRFPCTR_b[8]; + }; + + union + { + __IOM uint32_t CFDCFCC[6]; /*!< (@ 0x00000120) 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[6]; + }; + __IM uint32_t RESERVED3[18]; + + union + { + __IOM uint32_t CFDCFCCE[6]; /*!< (@ 0x00000180) Common FIFO Configuration / Control Enhancement + * Registers */ + + struct + { + __IOM uint32_t CFFIE : 1; /*!< [0..0] Common FIFO Full interrupt Enable */ + __IOM uint32_t CFOFRXIE : 1; /*!< [1..1] Common FIFO One Frame Reception Interrupt Enable */ + __IOM uint32_t CFOFTXIE : 1; /*!< [2..2] Common FIFO One Frame Transmission Interrupt Enable */ + uint32_t : 5; + __IOM uint32_t CFMOWM : 1; /*!< [8..8] Common FIFO message overwrite mode */ + uint32_t : 7; + __IOM uint32_t CFBME : 1; /*!< [16..16] Common FIFO Buffering Mode Enable */ + uint32_t : 15; + } CFDCFCCE_b[6]; + }; + __IM uint32_t RESERVED4[18]; + + union + { + __IOM uint32_t CFDCFSTS[6]; /*!< (@ 0x000001E0) 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 */ + __IOM uint32_t CFFIF : 1; /*!< [16..16] Common FIFO Full Interrupt Flag */ + __IOM uint32_t CFOFRXIF : 1; /*!< [17..17] Common FIFO One Frame Reception Interrupt Flag */ + __IOM uint32_t CFOFTXIF : 1; /*!< [18..18] Common FIFO One Frame Transmission Interrupt Flag */ + uint32_t : 5; + __IOM uint32_t CFMOW : 1; /*!< [24..24] Common FIFO message overwrite */ + uint32_t : 7; + } CFDCFSTS_b[6]; + }; + __IM uint32_t RESERVED5[18]; + + union + { + __IOM uint32_t CFDCFPCTR[6]; /*!< (@ 0x00000240) Common FIFO Pointer Control Registers */ + + struct + { + __OM uint32_t CFPC : 8; /*!< [7..0] Common FIFO Pointer Control */ + uint32_t : 24; + } CFDCFPCTR_b[6]; + }; + __IM uint32_t RESERVED6[18]; + + union + { + __IM uint32_t CFDFESTS; /*!< (@ 0x000002A0) FIFO Empty Status Register */ + + struct + { + __IM uint32_t RFXEMP : 8; /*!< [7..0] RX FIF0 Empty Status */ + __IM uint32_t CFXEMP : 6; /*!< [13..8] Common FIF0 Empty Status */ + uint32_t : 18; + } CFDFESTS_b; + }; + + union + { + __IM uint32_t CFDFFSTS; /*!< (@ 0x000002A4) FIFO Full Status Register */ + + struct + { + __IM uint32_t RFXFLL : 8; /*!< [7..0] RX FIF0 Full Status */ + __IM uint32_t CFXFLL : 6; /*!< [13..8] Common FIF0 Full Status */ + uint32_t : 18; + } CFDFFSTS_b; + }; + + union + { + __IM uint32_t CFDFMSTS; /*!< (@ 0x000002A8) FIFO Message Lost Status Register */ + + struct + { + __IM uint32_t RFXMLT : 8; /*!< [7..0] RX FIFO Msg Lost Status */ + __IM uint32_t CFXMLT : 6; /*!< [13..8] Common FIFO Msg Lost Status */ + uint32_t : 18; + } CFDFMSTS_b; + }; + + union + { + __IOM uint32_t CFDRFISTS; /*!< (@ 0x000002AC) RX FIFO Interrupt Flag Status Register */ + + struct + { + __IM uint32_t RFXIF : 8; /*!< [7..0] RX FIFO[x] Interrupt Flag Status */ + uint32_t : 8; + __IM uint32_t RFXFFLL : 8; /*!< [23..16] RX FIFO[x] Interrupt Full Flag Status */ + uint32_t : 8; + } CFDRFISTS_b; + }; + + union + { + __IOM uint32_t CFDCFRISTS; /*!< (@ 0x000002B0) Common FIFO RX Interrupt Flag Status Register */ + + struct + { + __IM uint32_t CFXRXIF : 6; /*!< [5..0] Common FIFO [x] RX Interrupt Flag Status */ + uint32_t : 26; + } CFDCFRISTS_b; + }; + + union + { + __IOM uint32_t CFDCFTISTS; /*!< (@ 0x000002B4) Common FIFO TX Interrupt Flag Status Register */ + + struct + { + __IM uint32_t CFXTXIF : 6; /*!< [5..0] Common FIFO [x] TX Interrupt Flag Status */ + uint32_t : 26; + } CFDCFTISTS_b; + }; + + union + { + __IM uint32_t CFDCFOFRISTS; /*!< (@ 0x000002B8) Common FIFO One Frame RX Interrupt Flag Status + * Register */ + + struct + { + __IM uint32_t CFXOFRXIF : 6; /*!< [5..0] Common FIFO [x] One Frame RX Interrupt Flag Status */ + uint32_t : 26; + } CFDCFOFRISTS_b; + }; + + union + { + __IM uint32_t CFDCFOFTISTS; /*!< (@ 0x000002BC) Common FIFO One Frame TX Interrupt Flag Status + * Register */ + + struct + { + __IM uint32_t CFXOFTXIF : 6; /*!< [5..0] Common FIFO [x] One Frame TX Interrupt Flag Status */ + uint32_t : 26; + } CFDCFOFTISTS_b; + }; + + union + { + __IM uint32_t CFDCFMOWSTS; /*!< (@ 0x000002C0) Common FIFO Message Over Write Status Register */ + + struct + { + __IM uint32_t CFXMOW : 6; /*!< [5..0] Common FIFO [x] Massage overwrite status */ + uint32_t : 26; + } CFDCFMOWSTS_b; + }; + + union + { + __IM uint32_t CFDFFFSTS; /*!< (@ 0x000002C4) FIFO FDC Full Status Register */ + + struct + { + __IM uint32_t RFXFFLL : 8; /*!< [7..0] RX FIFO FDC level full Status */ + __IM uint32_t CFXFFLL : 6; /*!< [13..8] COMMON FIFO FDC level full Status */ + uint32_t : 18; + } CFDFFFSTS_b; + }; + __IM uint32_t RESERVED7[2]; + + union + { + __IOM uint8_t CFDTMC[128]; /*!< (@ 0x000002D0) 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[128]; + }; + __IM uint32_t RESERVED8[288]; + + union + { + __IOM uint8_t CFDTMSTS[128]; /*!< (@ 0x000007D0) 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[128]; + }; + __IM uint32_t RESERVED9[288]; + + union + { + __IM uint32_t CFDTMTRSTS[4]; /*!< (@ 0x00000CD0) TX Message Buffer Transmission Request Status + * Register */ + + struct + { + __IM uint32_t CFDTMTRSTSg : 8; /*!< [7..0] TX Message Buffer Transmission Request Status */ + uint32_t : 24; + } CFDTMTRSTS_b[4]; + }; + __IM uint32_t RESERVED10[36]; + + union + { + __IM uint32_t CFDTMTARSTS[4]; /*!< (@ 0x00000D70) TX Message Buffer Transmission Abort Request + * Status Register */ + + struct + { + __IM uint32_t CFDTMTARSTSg : 8; /*!< [7..0] TX Message Buffer Transmission abort Request Status */ + uint32_t : 24; + } CFDTMTARSTS_b[4]; + }; + __IM uint32_t RESERVED11[36]; + + union + { + __IM uint32_t CFDTMTCSTS[4]; /*!< (@ 0x00000E10) TX Message Buffer Transmission Completion Status + * Register */ + + struct + { + __IM uint32_t CFDTMTCSTSg : 8; /*!< [7..0] TX Message Buffer Transmission Completion Status */ + uint32_t : 24; + } CFDTMTCSTS_b[4]; + }; + __IM uint32_t RESERVED12[36]; + + union + { + __IM uint32_t CFDTMTASTS[4]; /*!< (@ 0x00000EB0) TX Message Buffer Transmission Abort Status Register */ + + struct + { + __IM uint32_t CFDTMTASTSg : 8; /*!< [7..0] TX Message Buffer Transmission abort Status */ + uint32_t : 24; + } CFDTMTASTS_b[4]; + }; + __IM uint32_t RESERVED13[36]; + + union + { + __IOM uint32_t CFDTMIEC[4]; /*!< (@ 0x00000F50) TX Message Buffer Interrupt Enable Configuration + * Register */ + + struct + { + __IOM uint32_t TMIEg : 8; /*!< [7..0] TX Message Buffer Interrupt Enable */ + uint32_t : 24; + } CFDTMIEC_b[4]; + }; + __IM uint32_t RESERVED14[40]; + + union + { + __IOM uint32_t CFDTXQCC0[2]; /*!< (@ 0x00001000) TX Queue Configuration / Control Registers 0 */ + + struct + { + __IOM uint32_t TXQE : 1; /*!< [0..0] TX Queue Enable */ + __IOM uint32_t TXQGWE : 1; /*!< [1..1] TX Queue Gateway Mode Enable */ + uint32_t : 3; + __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 : 5; /*!< [12..8] TX Queue Depth Configuration */ + uint32_t : 3; + __IOM uint32_t TXQFIE : 1; /*!< [16..16] TXQ Full interrupt Enable */ + __IOM uint32_t TXQOFRXIE : 1; /*!< [17..17] TXQ One Frame Reception Interrupt Enable */ + __IOM uint32_t TXQOFTXIE : 1; /*!< [18..18] TXQ One Frame Transmission Interrupt Enable */ + uint32_t : 13; + } CFDTXQCC0_b[2]; + }; + __IM uint32_t RESERVED15[6]; + + union + { + __IOM uint32_t CFDTXQSTS0[2]; /*!< (@ 0x00001020) 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 : 2; + __IOM uint32_t TXQFIF : 1; /*!< [16..16] TXQ Full Interrupt Flag */ + __IOM uint32_t TXQOFRXIF : 1; /*!< [17..17] TXQ One Frame Reception Interrupt Flag */ + __IOM uint32_t TXQOFTXIF : 1; /*!< [18..18] TXQ One Frame Transmission Interrupt Flag */ + __IOM uint32_t TXQMLT : 1; /*!< [19..19] TXQ Message Lost */ + uint32_t : 12; + } CFDTXQSTS0_b[2]; + }; + __IM uint32_t RESERVED16[6]; + + union + { + __IOM uint32_t CFDTXQPCTR0[2]; /*!< (@ 0x00001040) TX Queue Pointer Control Registers 0 */ + + struct + { + __OM uint32_t TXQPC : 8; /*!< [7..0] TX Queue Pointer Control */ + uint32_t : 24; + } CFDTXQPCTR0_b[2]; + }; + __IM uint32_t RESERVED17[6]; + + union + { + __IOM uint32_t CFDTXQCC1[2]; /*!< (@ 0x00001060) TX Queue Configuration / Control Registers 1 */ + + struct + { + __IOM uint32_t TXQE : 1; /*!< [0..0] TX Queue Enable */ + __IOM uint32_t TXQGWE : 1; /*!< [1..1] TX Queue Gateway Mode Enable */ + uint32_t : 3; + __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 : 5; /*!< [12..8] TX Queue Depth Configuration */ + uint32_t : 3; + __IOM uint32_t TXQFIE : 1; /*!< [16..16] TXQ Full Interrupt Enable */ + __IOM uint32_t TXQOFRXIE : 1; /*!< [17..17] TXQ One Frame Reception Interrupt Enable */ + __IOM uint32_t TXQOFTXIE : 1; /*!< [18..18] TXQ One Frame Transmission Interrupt Enable */ + uint32_t : 13; + } CFDTXQCC1_b[2]; + }; + __IM uint32_t RESERVED18[6]; + + union + { + __IOM uint32_t CFDTXQSTS1[2]; /*!< (@ 0x00001080) TX Queue Status Registers 1 */ + + 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 : 2; + __IOM uint32_t TXQFIF : 1; /*!< [16..16] TXQ Full Interrupt Flag */ + __IOM uint32_t TXQOFRXIF : 1; /*!< [17..17] TXQ One Frame Reception Interrupt Flag */ + __IOM uint32_t TXQOFTXIF : 1; /*!< [18..18] TXQ One Frame Transmission Interrupt Flag */ + __IOM uint32_t TXQMLT : 1; /*!< [19..19] TXQ Message Lost */ + uint32_t : 12; + } CFDTXQSTS1_b[2]; + }; + __IM uint32_t RESERVED19[6]; + + union + { + __IOM uint32_t CFDTXQPCTR1[2]; /*!< (@ 0x000010A0) TX Queue Pointer Control Registers 1 */ + + struct + { + __OM uint32_t TXQPC : 8; /*!< [7..0] TX Queue Pointer Control */ + uint32_t : 24; + } CFDTXQPCTR1_b[2]; + }; + __IM uint32_t RESERVED20[6]; + + union + { + __IOM uint32_t CFDTXQCC2[2]; /*!< (@ 0x000010C0) TX Queue Configuration / Control Registers 2 */ + + struct + { + __IOM uint32_t TXQE : 1; /*!< [0..0] TX Queue Enable */ + __IOM uint32_t TXQGWE : 1; /*!< [1..1] TX Queue Gateway Mode Enable */ + uint32_t : 3; + __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 : 5; /*!< [12..8] TX Queue Depth Configuration */ + uint32_t : 3; + __IOM uint32_t TXQFIE : 1; /*!< [16..16] TXQ Full interrupt Enable */ + __IOM uint32_t TXQOFRXIE : 1; /*!< [17..17] TXQ One Frame Reception Interrupt Enable */ + __IOM uint32_t TXQOFTXIE : 1; /*!< [18..18] TXQ One Frame Transmission Interrupt Enable */ + uint32_t : 13; + } CFDTXQCC2_b[2]; + }; + __IM uint32_t RESERVED21[6]; + + union + { + __IOM uint32_t CFDTXQSTS2[2]; /*!< (@ 0x000010E0) TX Queue Status Registers 2 */ + + 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 : 2; + __IOM uint32_t TXQFIF : 1; /*!< [16..16] TXQ Full Interrupt Flag */ + __IOM uint32_t TXQOFRXIF : 1; /*!< [17..17] TXQ One Frame Reception Interrupt Flag */ + __IOM uint32_t TXQOFTXIF : 1; /*!< [18..18] TXQ One Frame Transmission Interrupt Flag */ + __IOM uint32_t TXQMLT : 1; /*!< [19..19] TXQ Message Lost */ + uint32_t : 12; + } CFDTXQSTS2_b[2]; + }; + __IM uint32_t RESERVED22[6]; + + union + { + __IOM uint32_t CFDTXQPCTR2[2]; /*!< (@ 0x00001100) TX Queue Pointer Control Registers 2 */ + + struct + { + __OM uint32_t TXQPC : 8; /*!< [7..0] TX Queue Pointer Control */ + uint32_t : 24; + } CFDTXQPCTR2_b[2]; + }; + __IM uint32_t RESERVED23[6]; + + union + { + __IOM uint32_t CFDTXQCC3[2]; /*!< (@ 0x00001120) TX Queue Configuration / Control Registers 3 */ + + 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 : 5; /*!< [12..8] TX Queue Depth Configuration */ + uint32_t : 5; + __IOM uint32_t TXQOFTXIE : 1; /*!< [18..18] TXQ One Frame Transmission Interrupt Enable */ + uint32_t : 13; + } CFDTXQCC3_b[2]; + }; + __IM uint32_t RESERVED24[6]; + + union + { + __IOM uint32_t CFDTXQSTS3[2]; /*!< (@ 0x00001140) TX Queue Status Registers 3 */ + + 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 : 4; + __IOM uint32_t TXQOFTXIF : 1; /*!< [18..18] TXQ One Frame Transmission Interrupt Flag */ + uint32_t : 13; + } CFDTXQSTS3_b[2]; + }; + __IM uint32_t RESERVED25[6]; + + union + { + __IOM uint32_t CFDTXQPCTR3[2]; /*!< (@ 0x00001160) TX Queue Pointer Control Registers 3 */ + + struct + { + __OM uint32_t TXQPC : 8; /*!< [7..0] TX Queue Pointer Control */ + uint32_t : 24; + } CFDTXQPCTR3_b[2]; + }; + __IM uint32_t RESERVED26[6]; + + union + { + __IM uint32_t CFDTXQESTS; /*!< (@ 0x00001180) TX Queue Empty Status Register */ + + struct + { + __IM uint32_t TXQxEMP : 8; /*!< [7..0] TXQ empty Status */ + uint32_t : 24; + } CFDTXQESTS_b; + }; + + union + { + __IOM uint32_t CFDTXQFISTS; /*!< (@ 0x00001184) TX Queue Full Interrupt Status Register */ + + struct + { + __IM uint32_t TXQ0FULL : 3; /*!< [2..0] TXQ Full Interrupt Status for channel 0 */ + uint32_t : 1; + __IM uint32_t TXQ1FULL : 3; /*!< [6..4] TXQ Full Interrupt Status for channel 1 */ + uint32_t : 25; + } CFDTXQFISTS_b; + }; + + union + { + __IOM uint32_t CFDTXQMSTS; /*!< (@ 0x00001188) TX Queue Message Lost Status Register */ + + struct + { + __IM uint32_t TXQ0ML : 3; /*!< [2..0] TXQ message lost Status for channel 0 */ + uint32_t : 1; + __IM uint32_t TXQ1ML : 3; /*!< [6..4] TXQ message lost Status for channel 1 */ + uint32_t : 25; + } CFDTXQMSTS_b; + }; + __IM uint32_t RESERVED27; + + union + { + __IOM uint32_t CFDTXQISTS; /*!< (@ 0x00001190) TX Queue Interrupt Status Register */ + + struct + { + __IM uint32_t TXQ0ISF : 4; /*!< [3..0] TXQ Interrupt Status Flag for channel 0 */ + __IM uint32_t TXQ1ISF : 4; /*!< [7..4] TXQ Interrupt Status Flag for channel 1 */ + uint32_t : 24; + } CFDTXQISTS_b; + }; + + union + { + __IOM uint32_t CFDTXQOFTISTS; /*!< (@ 0x00001194) TX Queue One Frame TX Interrupt Status Register */ + + struct + { + __IM uint32_t TXQ0OFTISF : 4; /*!< [3..0] TXQ One Frame TX Interrupt Status Flag for channel 0 */ + __IM uint32_t TXQ1OFTISF : 4; /*!< [7..4] TXQ One Frame TX Interrupt Status Flag for channel 1 */ + uint32_t : 24; + } CFDTXQOFTISTS_b; + }; + + union + { + __IOM uint32_t CFDTXQOFRISTS; /*!< (@ 0x00001198) TX Queue One Frame RX Interrupt Status Register */ + + struct + { + __IM uint32_t TXQ0OFRISF : 3; /*!< [2..0] TXQ One Frame RX Interrupt Status Flag */ + uint32_t : 1; + __IM uint32_t TXQ1OFRISF : 3; /*!< [6..4] TXQ One Frame RX Interrupt Status Flag */ + uint32_t : 25; + } CFDTXQOFRISTS_b; + }; + + union + { + __IM uint32_t CFDTXQFSTS; /*!< (@ 0x0000119C) TX Queue Full Status Register */ + + struct + { + __IM uint32_t TXQ0FSF : 4; /*!< [3..0] TXQ Full Status Flag for channel 0 */ + __IM uint32_t TXQ1FSF : 4; /*!< [7..4] TXQ Full Status Flag for channel 1 */ + uint32_t : 24; + } CFDTXQFSTS_b; + }; + __IM uint32_t RESERVED28[24]; + + union + { + __IOM uint32_t CFDTHLCC[2]; /*!< (@ 0x00001200) 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 */ + __IOM uint32_t THLDGE : 1; /*!< [11..11] TX History List Dedicated GW Enable */ + uint32_t : 20; + } CFDTHLCC_b[2]; + }; + __IM uint32_t RESERVED29[6]; + + union + { + __IOM uint32_t CFDTHLSTS[2]; /*!< (@ 0x00001220) 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[2]; + }; + __IM uint32_t RESERVED30[6]; + + union + { + __IOM uint32_t CFDTHLPCTR[2]; /*!< (@ 0x00001240) TX History List Pointer Control Registers */ + + struct + { + __OM uint32_t THLPC : 8; /*!< [7..0] TX History List Pointer Control */ + uint32_t : 24; + } CFDTHLPCTR_b[2]; + }; + __IM uint32_t RESERVED31[46]; + + union + { + __IOM uint32_t CFDGTINTSTS0; /*!< (@ 0x00001300) 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 */ + __IM uint32_t TQOFIF0 : 1; /*!< [5..5] TX Queue One Frame Transmission Interrupt Flag Channel + * 0 */ + __IM uint32_t CFOTIF0 : 1; /*!< [6..6] COM FIFO One Frame Transmission Interrupt Flag Channel + * 0 */ + uint32_t : 1; + __IM uint32_t TSIF1 : 1; /*!< [8..8] TX Successful Interrupt Flag Channel 1 */ + __IM uint32_t TAIF1 : 1; /*!< [9..9] TX Abort Interrupt Flag Channel 1 */ + __IM uint32_t TQIF1 : 1; /*!< [10..10] TX Queue Interrupt Flag Channel 1 */ + __IM uint32_t CFTIF1 : 1; /*!< [11..11] COM FIFO TX/GW Mode Interrupt Flag Channel 1 */ + __IM uint32_t THIF1 : 1; /*!< [12..12] TX History List Interrupt Channel 1 */ + __IM uint32_t TQOFIF1 : 1; /*!< [13..13] TX Queue One Frame Transmission Interrupt Flag Channel + * 1 */ + __IM uint32_t CFOTIF1 : 1; /*!< [14..14] COM FIFO One Frame Transmission Interrupt Flag Channel + * 1 */ + uint32_t : 17; + } CFDGTINTSTS0_b; + }; + __IM uint32_t RESERVED32; + + union + { + __IOM uint32_t CFDGTSTCFG; /*!< (@ 0x00001308) Global Test Configuration Register */ + + struct + { + __IOM uint32_t ICBCE : 2; /*!< [1..0] Channel n Internal CAN Bus Communication Test Mode Enable */ + uint32_t : 14; + __IOM uint32_t RTMPS : 10; /*!< [25..16] RAM Test Mode Page Select */ + uint32_t : 6; + } CFDGTSTCFG_b; + }; + + union + { + __IOM uint32_t CFDGTSTCTR; /*!< (@ 0x0000130C) Global Test Control Register */ + + struct + { + __IOM uint32_t ICBCTME : 1; /*!< [0..0] Internal CAN Bus Communication Test Mode Enable */ + uint32_t : 1; + __IOM uint32_t RTME : 1; /*!< [2..2] RAM Test Mode Enable */ + uint32_t : 29; + } CFDGTSTCTR_b; + }; + __IM uint32_t RESERVED33; + + union + { + __IOM uint32_t CFDGFDCFG; /*!< (@ 0x00001314) 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; + }; + + union + { + __IOM uint32_t CFDGCRCCFG; /*!< (@ 0x00001318) Global FD CRC Configuration register */ + + struct + { + __IOM uint32_t NIE : 1; /*!< [0..0] Non ISO enable */ + uint32_t : 31; + } CFDGCRCCFG_b; + }; + + union + { + __IOM uint32_t CFDGLOCKK; /*!< (@ 0x0000131C) Global Lock Key Register */ + + struct + { + __OM uint32_t LOCK : 16; /*!< [15..0] Lock Key */ + uint32_t : 16; + } CFDGLOCKK_b; + }; + + union + { + __IOM uint32_t CFDGLOTB; /*!< (@ 0x00001320) Global OTB FIFO Configuration / Status Register */ + + struct + { + __IOM uint32_t OTBFE : 1; /*!< [0..0] OTB FIFO Enable */ + uint32_t : 7; + __IM uint32_t OTBEMP : 1; /*!< [8..8] OTB FIFO Empty */ + __IM uint32_t OTBFLL : 1; /*!< [9..9] OTB FIFO Full */ + __IOM uint32_t OTBMLT : 1; /*!< [10..10] OTB FIFO Message Lost */ + __IM uint32_t OTBMC : 5; /*!< [15..11] OTB FIFO Message Count */ + uint32_t : 16; + } CFDGLOTB_b; + }; + + union + { + __IOM uint32_t CFDGAFLIGNENT; /*!< (@ 0x00001324) Global AFL Ignore Entry Register */ + + struct + { + __IOM uint32_t IRN : 9; /*!< [8..0] Ignore Rule Number */ + uint32_t : 7; + __IOM uint32_t ICN : 3; /*!< [18..16] Ignore Channel Number */ + uint32_t : 13; + } CFDGAFLIGNENT_b; + }; + + union + { + __IOM uint32_t CFDGAFLIGNCTR; /*!< (@ 0x00001328) 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; + }; + __IM uint32_t RESERVED34; + + union + { + __IOM uint32_t CFDCDTCT; /*!< (@ 0x00001330) 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 */ + __IOM uint32_t RFDMAE2 : 1; /*!< [2..2] DMA Transfer Enable for RXFIFO 2 */ + __IOM uint32_t RFDMAE3 : 1; /*!< [3..3] DMA Transfer Enable for RXFIFO 3 */ + __IOM uint32_t RFDMAE4 : 1; /*!< [4..4] DMA Transfer Enable for RXFIFO 4 */ + __IOM uint32_t RFDMAE5 : 1; /*!< [5..5] DMA Transfer Enable for RXFIFO 5 */ + __IOM uint32_t RFDMAE6 : 1; /*!< [6..6] DMA Transfer Enable for RXFIFO 6 */ + __IOM uint32_t RFDMAE7 : 1; /*!< [7..7] DMA Transfer Enable for RXFIFO 7 */ + __IOM uint32_t CFDMAE0 : 1; /*!< [8..8] DMA Transfer Enable for Common FIFO 0 of channel 0 */ + __IOM uint32_t CFDMAE1 : 1; /*!< [9..9] DMA Transfer Enable for Common FIFO 0 of channel 1 */ + uint32_t : 22; + } CFDCDTCT_b; + }; + + union + { + __IM uint32_t CFDCDTSTS; /*!< (@ 0x00001334) 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 */ + __IM uint32_t RFDMASTS2 : 1; /*!< [2..2] DMA Transfer Status for RX FIFO 2 */ + __IM uint32_t RFDMASTS3 : 1; /*!< [3..3] DMA Transfer Status for RX FIFO 3 */ + __IM uint32_t RFDMASTS4 : 1; /*!< [4..4] DMA Transfer Status for RX FIFO 4 */ + __IM uint32_t RFDMASTS5 : 1; /*!< [5..5] DMA Transfer Status for RX FIFO 5 */ + __IM uint32_t RFDMASTS6 : 1; /*!< [6..6] DMA Transfer Status for RX FIFO 6 */ + __IM uint32_t RFDMASTS7 : 1; /*!< [7..7] DMA Transfer Status for RX FIFO 7 */ + __IM uint32_t CFDMASTS0 : 1; /*!< [8..8] DMA Transfer Status only for Common FIFO 0 of channel + * 0 */ + __IM uint32_t CFDMASTS1 : 1; /*!< [9..9] DMA Transfer Status only for Common FIFO 0 of channel + * 1 */ + uint32_t : 22; + } CFDCDTSTS_b; + }; + __IM uint32_t RESERVED35[2]; + + union + { + __IOM uint32_t CFDCDTTCT; /*!< (@ 0x00001340) DMA TX Transfer Control Register */ + + struct + { + __IOM uint32_t TQ0DMAE0 : 1; /*!< [0..0] DMA TX Transfer Enable for TXQ 0 of channel 0 */ + __IOM uint32_t TQ0DMAE1 : 1; /*!< [1..1] DMA TX Transfer Enable for TXQ 0 of channel 1 */ + uint32_t : 6; + __IOM uint32_t TQ3DMAE0 : 1; /*!< [8..8] DMA TX Transfer Enable for TXQ 3 of channel 0 */ + __IOM uint32_t TQ3DMAE1 : 1; /*!< [9..9] DMA TX Transfer Enable for TXQ 3 of channel 1 */ + uint32_t : 6; + __IOM uint32_t CFDMAE0 : 1; /*!< [16..16] DMA TX Transfer Enable for Common FIFO 2 of channel + * 0 */ + __IOM uint32_t CFDMAE1 : 1; /*!< [17..17] DMA TX Transfer Enable for Common FIFO 2 of channel + * 1 */ + uint32_t : 14; + } CFDCDTTCT_b; + }; + + union + { + __IOM uint32_t CFDCDTTSTS; /*!< (@ 0x00001344) DMA TX Transfer Status Register */ + + struct + { + __IM uint32_t TQ0DMASTS0 : 1; /*!< [0..0] DMA TX Transfer Status for TXQ0 of channel 0 */ + __IM uint32_t TQ0DMASTS1 : 1; /*!< [1..1] DMA TX Transfer Status for TXQ0 of channel 1 */ + uint32_t : 6; + __IM uint32_t TQ3DMASTS0 : 1; /*!< [8..8] DMA TX Transfer Status for TXQ3 of channel 0 */ + __IM uint32_t TQ3DMASTS1 : 1; /*!< [9..9] DMA TX Transfer Status for TXQ3 of channel 1 */ + uint32_t : 6; + __IM uint32_t CFDMASTS0 : 1; /*!< [16..16] DMA TX Transfer Status only for Common FIFO 2 of channel + * 0 */ + __IM uint32_t CFDMASTS1 : 1; /*!< [17..17] DMA TX Transfer Status only for Common FIFO 2 of channel + * 1 */ + uint32_t : 14; + } CFDCDTTSTS_b; + }; + __IM uint32_t RESERVED36[2]; + + union + { + __IOM uint32_t CFDGRINTSTS[2]; /*!< (@ 0x00001350) Global RX Interrupt Status Register */ + + struct + { + __IM uint32_t QFIF : 3; /*!< [2..0] TXQ Full Interrupt Flag Channel n */ + uint32_t : 5; + __IM uint32_t QOFRIF : 3; /*!< [10..8] TXQ One Frame RX Interrupt Flag Channel n */ + uint32_t : 5; + __IM uint32_t CFRIF : 3; /*!< [18..16] Common FIFO RX Interrupt Flag Channel n */ + uint32_t : 5; + __IM uint32_t CFRFIF : 3; /*!< [26..24] Common FIFO FDC level Full Interrupt Flag Channel n */ + uint32_t : 1; + __IM uint32_t CFOFRIF : 3; /*!< [30..28] Common FIFO One Frame RX Interrupt Flag Channel n */ + uint32_t : 1; + } CFDGRINTSTS_b[2]; + }; + __IM uint32_t RESERVED37[10]; + + union + { + __IOM uint32_t CFDGRSTC; /*!< (@ 0x00001380) 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 RESERVED38[31]; + __IOM R_CANFD_CFDC2_Type CFDC2[2]; /*!< (@ 0x00001400) Channel Configuration Registers */ + __IM uint32_t RESERVED39[240]; + __IOM R_CANFD_CFDGAFL_Type CFDGAFL[16]; /*!< (@ 0x00001800) Global Acceptance Filter List Registers */ + __IM uint32_t RESERVED40[448]; + __IOM R_CANFD_CFDRM_Type CFDRM[32]; /*!< (@ 0x00002000) RX Message Buffer Access Registers */ + __IM uint32_t RESERVED41[3072]; + __IOM R_CANFD_CFDRF_Type CFDRF[8]; /*!< (@ 0x00006000) RX FIFO Access Registers */ + __IOM R_CANFD_CFDCF_Type CFDCF[5]; /*!< (@ 0x00006400) Common FIFO Access Registers */ + __IM uint32_t RESERVED42[1632]; + __IOM R_CANFD_CFDTHL_Type CFDTHL[2]; /*!< (@ 0x00008000) Channel TX History List */ + __IM uint32_t RESERVED43[252]; + + union + { + __IOM uint32_t CFDRPGACC[64]; /*!< (@ 0x00008400) RAM Test Page Access Registers */ + + struct + { + __IOM uint32_t RDTA : 32; /*!< [31..0] RAM Data Test Access */ + } CFDRPGACC_b[64]; + }; + __IM uint32_t RESERVED44[7872]; + __IOM R_CANFD_CFDTM_Type CFDTM[128]; /*!< (@ 0x00010000) TX Message Buffer Access Registers */ +} R_CANFD_Type; /*!< Size = 81920 (0x14000) */ + +/* =========================================================================================================================== */ +/* ================ R_CANFDL ================ */ +/* =========================================================================================================================== */ + +/** + * @brief Controller Area Network - Flexible Data (CAN-FD) Module (R_CANFDL) + */ + +typedef struct /*!< (@ 0x400B0000) R_CANFDL Structure */ +{ + __IOM R_CANFDL_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_CANFDL_CFDC2_Type CFDC2[1]; /*!< (@ 0x00000100) Channel Configuration Registers */ + __IOM R_CANFDL_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_CANFDL_CFDRF_Type CFDRF[2]; /*!< (@ 0x00000520) RX FIFO Access Registers */ + __IOM R_CANFDL_CFDCF_Type CFDCF[1]; /*!< (@ 0x000005B8) Common FIFO Access Registers */ + __IOM R_CANFDL_CFDTM_Type CFDTM[4]; /*!< (@ 0x00000604) TX Message Buffer Access Registers */ + __IM uint32_t RESERVED7[3]; + __IOM R_CANFDL_CFDTHL_Type CFDTHL[1]; /*!< (@ 0x00000740) Channel TX History List */ + __IM uint32_t RESERVED8[118]; + __IOM R_CANFDL_CFDRMC_Type CFDRMC[4]; /*!< (@ 0x00000920) RX Message Buffer Access Clusters */ +} R_CANFDL_Type; /*!< Size = 6432 (0x1920) */ + +/* =========================================================================================================================== */ +/* ================ R_CRC ================ */ +/* =========================================================================================================================== */ + +/** + * @brief Cyclic Redundancy Check (CRC) Calculator (R_CRC) + */ + +typedef struct /*!< (@ 0x40074000) 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_CTSU ================ */ +/* =========================================================================================================================== */ + +/** + * @brief Capacitive Touch Sensing Unit (R_CTSU) + */ + +typedef struct /*!< (@ 0x40081000) R_CTSU Structure */ +{ + union + { + __IOM uint8_t CTSUCR0; /*!< (@ 0x00000000) CTSU Control Register 0 */ + + struct + { + __IOM uint8_t CTSUSTRT : 1; /*!< [0..0] CTSU Measurement Operation Start */ + __IOM uint8_t CTSUCAP : 1; /*!< [1..1] CTSU Measurement Operation Start Trigger Select */ + __IOM uint8_t CTSUSNZ : 1; /*!< [2..2] CTSU Wait State Power-Saving Enable */ + __IOM uint8_t CTSUIOC : 1; /*!< [3..3] CTSU Transmit Pin Control */ + __IOM uint8_t CTSUINIT : 1; /*!< [4..4] CTSU Control Block Initialization */ + uint8_t : 2; + __IOM uint8_t CTSUTXVSEL : 1; /*!< [7..7] CTSU Transmission power supply selection */ + } CTSUCR0_b; + }; + + union + { + __IOM uint8_t CTSUCR1; /*!< (@ 0x00000001) CTSU Control Register 1 */ + + struct + { + __IOM uint8_t CTSUPON : 1; /*!< [0..0] CTSU Power Supply Enable */ + __IOM uint8_t CTSUCSW : 1; /*!< [1..1] CTSU LPF Capacitance Charging Control */ + __IOM uint8_t CTSUATUNE0 : 1; /*!< [2..2] CTSU Power Supply Operating Mode Setting */ + __IOM uint8_t CTSUATUNE1 : 1; /*!< [3..3] CTSU Power Supply Capacity Adjustment */ + __IOM uint8_t CTSUCLK : 2; /*!< [5..4] CTSU Operating Clock Select */ + __IOM uint8_t CTSUMD : 2; /*!< [7..6] CTSU Measurement Mode Select */ + } CTSUCR1_b; + }; + + union + { + __IOM uint8_t CTSUSDPRS; /*!< (@ 0x00000002) CTSU Synchronous Noise Reduction Setting Register */ + + struct + { + __IOM uint8_t CTSUPRRATIO : 4; /*!< [3..0] CTSU Measurement Time and Pulse Count AdjustmentRecommended + * setting: 3 (0011b) */ + __IOM uint8_t CTSUPRMODE : 2; /*!< [5..4] CTSU Base Period and Pulse Count Setting */ + __IOM uint8_t CTSUSOFF : 1; /*!< [6..6] CTSU High-Pass Noise Reduction Function Off Setting */ + uint8_t : 1; + } CTSUSDPRS_b; + }; + + union + { + __IOM uint8_t CTSUSST; /*!< (@ 0x00000003) CTSU Sensor Stabilization Wait Control Register */ + + struct + { + __IOM uint8_t CTSUSST : 8; /*!< [7..0] CTSU Sensor Stabilization Wait ControlNOTE: The value + * of these bits should be fixed to 00010000b. */ + } CTSUSST_b; + }; + + union + { + __IOM uint8_t CTSUMCH0; /*!< (@ 0x00000004) CTSU Measurement Channel Register 0 */ + + struct + { + __IOM uint8_t CTSUMCH0 : 6; /*!< [5..0] CTSU Measurement Channel 0.Note1: Writing to these bits + * is only enabled in self-capacitance single-scan mode (CTSUCR1.CTSUMD[1:0] + * bits = 00b).Note2: If the value of CTSUMCH0 was set to + * b'111111 in mode other than self-capacitor single scan + * mode, the measurement is stopped. */ + uint8_t : 2; + } CTSUMCH0_b; + }; + + union + { + __IOM uint8_t CTSUMCH1; /*!< (@ 0x00000005) CTSU Measurement Channel Register 1 */ + + struct + { + __IM uint8_t CTSUMCH1 : 6; /*!< [5..0] CTSU Measurement Channel 1Note1: If the value of CTSUMCH1 + * was set to b'111111, the measurement is stopped. */ + uint8_t : 2; + } CTSUMCH1_b; + }; + + union + { + __IOM uint8_t CTSUCHAC[5]; /*!< (@ 0x00000006) CTSU Channel Enable Control Register */ + + struct + { + __IOM uint8_t TS0 : 1; /*!< [0..0] CTSU Channel Enable Control */ + __IOM uint8_t TS1 : 1; /*!< [1..1] CTSU Channel Enable Control */ + __IOM uint8_t TS2 : 1; /*!< [2..2] CTSU Channel Enable Control */ + __IOM uint8_t TS3 : 1; /*!< [3..3] CTSU Channel Enable Control */ + __IOM uint8_t TS4 : 1; /*!< [4..4] CTSU Channel Enable Control */ + __IOM uint8_t TS5 : 1; /*!< [5..5] CTSU Channel Enable Control */ + __IOM uint8_t TS6 : 1; /*!< [6..6] CTSU Channel Enable Control */ + __IOM uint8_t TS7 : 1; /*!< [7..7] CTSU Channel Enable Control */ + } CTSUCHAC_b[5]; + }; + + union + { + __IOM uint8_t CTSUCHTRC[5]; /*!< (@ 0x0000000B) CTSU Channel Transmit/Receive Control Register */ + + struct + { + __IOM uint8_t TS0 : 1; /*!< [0..0] CTSU Channel Transmit/Receive Control */ + __IOM uint8_t TS1 : 1; /*!< [1..1] CTSU Channel Transmit/Receive Control */ + __IOM uint8_t TS2 : 1; /*!< [2..2] CTSU Channel Transmit/Receive Control */ + __IOM uint8_t TS3 : 1; /*!< [3..3] CTSU Channel Transmit/Receive Control */ + __IOM uint8_t TS4 : 1; /*!< [4..4] CTSU Channel Transmit/Receive Control */ + __IOM uint8_t TS5 : 1; /*!< [5..5] CTSU Channel Transmit/Receive Control */ + __IOM uint8_t TS6 : 1; /*!< [6..6] CTSU Channel Transmit/Receive Control */ + __IOM uint8_t TS7 : 1; /*!< [7..7] CTSU Channel Transmit/Receive Control */ + } CTSUCHTRC_b[5]; + }; + + union + { + __IOM uint8_t CTSUDCLKC; /*!< (@ 0x00000010) CTSU High-Pass Noise Reduction Control Register */ + + struct + { + __IOM uint8_t CTSUSSMOD : 2; /*!< [1..0] CTSU Diffusion Clock Mode SelectNOTE: This bit should + * be set to 00b. */ + uint8_t : 2; + __IOM uint8_t CTSUSSCNT : 2; /*!< [5..4] CTSU Diffusion Clock Mode ControlNOTE: This bit should + * be set to 11b. */ + uint8_t : 2; + } CTSUDCLKC_b; + }; + + union + { + __IOM uint8_t CTSUST; /*!< (@ 0x00000011) CTSU Status Register */ + + struct + { + __IM uint8_t CTSUSTC : 3; /*!< [2..0] CTSU Measurement Status Counter */ + uint8_t : 1; + __IM uint8_t CTSUDTSR : 1; /*!< [4..4] CTSU Data Transfer Status Flag */ + __IOM uint8_t CTSUSOVF : 1; /*!< [5..5] CTSU Sensor Counter Overflow Flag */ + __IOM uint8_t CTSUROVF : 1; /*!< [6..6] CTSU Reference Counter Overflow Flag */ + __IM uint8_t CTSUPS : 1; /*!< [7..7] CTSU Mutual Capacitance Status Flag */ + } CTSUST_b; + }; + + union + { + __IOM uint16_t CTSUSSC; /*!< (@ 0x00000012) CTSU High-Pass Noise Reduction Spectrum Diffusion + * Control Register */ + + struct + { + uint16_t : 8; + __IOM uint16_t CTSUSSDIV : 4; /*!< [11..8] CTSU Spectrum Diffusion Frequency Division Setting */ + uint16_t : 4; + } CTSUSSC_b; + }; + + union + { + __IOM uint16_t CTSUSO0; /*!< (@ 0x00000014) CTSU Sensor Offset Register 0 */ + + struct + { + __IOM uint16_t CTSUSO : 10; /*!< [9..0] CTSU Sensor Offset AdjustmentCurrent offset amount is + * CTSUSO ( 0 to 1023 ) */ + __IOM uint16_t CTSUSNUM : 6; /*!< [15..10] CTSU Measurement Count Setting */ + } CTSUSO0_b; + }; + + union + { + __IOM uint16_t CTSUSO1; /*!< (@ 0x00000016) CTSU Sensor Offset Register 1 */ + + struct + { + __IOM uint16_t CTSURICOA : 8; /*!< [7..0] CTSU Reference ICO Current AdjustmentCurrent offset amount + * is CTSUSO ( 0 to 255 ) */ + __IOM uint16_t CTSUSDPA : 5; /*!< [12..8] CTSU Base Clock SettingOperating clock divided by ( + * CTSUSDPA + 1 ) x 2 */ + __IOM uint16_t CTSUICOG : 2; /*!< [14..13] CTSU ICO Gain Adjustment */ + uint16_t : 1; + } CTSUSO1_b; + }; + + union + { + __IM uint16_t CTSUSC; /*!< (@ 0x00000018) CTSU Sensor Counter */ + + struct + { + __IM uint16_t CTSUSC : 16; /*!< [15..0] CTSU Sensor CounterThese bits indicate the measurement + * result of the CTSU. These bits indicate FFFFh when an overflow + * occurs. */ + } CTSUSC_b; + }; + + union + { + __IM uint16_t CTSURC; /*!< (@ 0x0000001A) CTSU Reference Counter */ + + struct + { + __IM uint16_t CTSURC : 16; /*!< [15..0] CTSU Reference CounterThese bits indicate the measurement + * result of the reference ICO.These bits indicate FFFFh when + * an overflow occurs. */ + } CTSURC_b; + }; + + union + { + __IM uint16_t CTSUERRS; /*!< (@ 0x0000001C) CTSU Error Status Register */ + + struct + { + __IOM uint16_t CTSUSPMD : 2; /*!< [1..0] Calibration Mode */ + __IOM uint16_t CTSUTSOD : 1; /*!< [2..2] TS Pin Fixed Output */ + __IOM uint16_t CTSUDRV : 1; /*!< [3..3] Calibration Setting 1 */ + uint16_t : 2; + __IOM uint16_t CTSUCLKSEL1 : 1; /*!< [6..6] Calibration Setting 3 */ + __IOM uint16_t CTSUTSOC : 1; /*!< [7..7] Calibration Setting 2 */ + uint16_t : 7; + __IM uint16_t CTSUICOMP : 1; /*!< [15..15] TSCAP Voltage Error Monitor */ + } CTSUERRS_b; + }; + __IM uint16_t RESERVED; + __IOM uint8_t CTSUTRMR; /*!< (@ 0x00000020) CTSU Reference Current Calibration Register */ + __IM uint8_t RESERVED1; + __IM uint16_t RESERVED2; +} R_CTSU_Type; /*!< Size = 36 (0x24) */ + +/* =========================================================================================================================== */ +/* ================ R_CTSU2 ================ */ +/* =========================================================================================================================== */ + +/** + * @brief Capacitive Touch Sensing Unit (R_CTSU2) + */ + +typedef struct /*!< (@ 0x40082000) R_CTSU2 Structure */ +{ + union + { + union + { + __IOM uint32_t CTSUCRA; /*!< (@ 0x00000000) CTSU Control Register A */ + + struct + { + __IOM uint32_t STRT : 1; /*!< [0..0] CTSU Measurement Operation Start */ + __IOM uint32_t CAP : 1; /*!< [1..1] CTSU Measurement Operation Start Trigger Select */ + __IOM uint32_t SNZ : 1; /*!< [2..2] CTSU Wait State Power-Saving Enable */ + __IOM uint32_t CFCON : 1; /*!< [3..3] CTSU CFC Power on Control */ + __OM uint32_t INIT : 1; /*!< [4..4] CTSU Control Block Initialization */ + __IOM uint32_t PUMPON : 1; /*!< [5..5] CTSU Boost Circuit Control */ + __IOM uint32_t TXVSEL : 2; /*!< [7..6] CTSU Transmission Power Supply Selection */ + __IOM uint32_t PON : 1; /*!< [8..8] CTSU Power On Control */ + __IOM uint32_t CSW : 1; /*!< [9..9] TSCAP Pin Enable */ + __IOM uint32_t ATUNE0 : 1; /*!< [10..10] CTSU Power Supply Operating Mode Setting */ + __IOM uint32_t ATUNE1 : 1; /*!< [11..11] CTSU Current Range Adjustment */ + __IOM uint32_t CLK : 2; /*!< [13..12] CTSU Operating Clock Select */ + __IOM uint32_t MD0 : 1; /*!< [14..14] CTSU Measurement Mode Select 0 */ + __IOM uint32_t MD1 : 1; /*!< [15..15] CTSU Measurement Mode Select 1 */ + __IOM uint32_t MD2 : 1; /*!< [16..16] CTSU Measurement Mode Select 2 */ + __IOM uint32_t ATUNE2 : 1; /*!< [17..17] CTSU Current Range Adjustment */ + __IOM uint32_t LOAD : 2; /*!< [19..18] CTSU Load Control During Measurement */ + __IOM uint32_t POSEL : 2; /*!< [21..20] CTSU Non-measured Channel Output Select */ + __IOM uint32_t SDPSEL : 1; /*!< [22..22] CTSU Sensor Drive Pulse Select */ + __IOM uint32_t PCSEL : 1; /*!< [23..23] CTSU Boost Circuit Clock Select */ + __IOM uint32_t STCLK : 6; /*!< [29..24] CTSU STCLK Select */ + __IOM uint32_t DCMODE : 1; /*!< [30..30] CTSU Current Measurement Mode Select */ + __IOM uint32_t DCBACK : 1; /*!< [31..31] CTSU Current Measurement Feedback Select */ + } CTSUCRA_b; + }; + + struct + { + union + { + __IOM uint16_t CTSUCRAL; /*!< (@ 0x00000000) CTSU Control Register A */ + + struct + { + __IOM uint8_t CTSUCR0; /*!< (@ 0x00000000) CTSU Control Register A */ + __IOM uint8_t CTSUCR1; /*!< (@ 0x00000001) CTSU Control Register A */ + }; + }; + + union + { + __IOM uint16_t CTSUCRAH; /*!< (@ 0x00000002) CTSU Control Register A */ + + struct + { + __IOM uint8_t CTSUCR2; /*!< (@ 0x00000002) CTSU Control Register A */ + __IOM uint8_t CTSUCR3; /*!< (@ 0x00000003) CTSU Control Register A */ + }; + }; + }; + }; + + union + { + union + { + __IOM uint32_t CTSUCRB; /*!< (@ 0x00000004) CTSU Control Register B */ + + struct + { + __IOM uint32_t PRRATIO : 4; /*!< [3..0] Frequency of Drive Pulse Phase Control */ + __IOM uint32_t PRMODE : 2; /*!< [5..4] Phase Control Period */ + __IOM uint32_t SOFF : 1; /*!< [6..6] High-Pass Noise Reduction Function Disable */ + __IOM uint32_t PROFF : 1; /*!< [7..7] Drive Pulse Phase Control */ + __IOM uint32_t SST : 8; /*!< [15..8] Wait Time Sensor Stabilization */ + uint32_t : 8; + __IOM uint32_t SSMOD : 3; /*!< [26..24] Spread Spectrum Modulation Frequency */ + uint32_t : 1; + __IOM uint32_t SSCNT : 2; /*!< [29..28] Adjusting the SUCLK frequency */ + uint32_t : 2; + } CTSUCRB_b; + }; + + struct + { + union + { + __IOM uint16_t CTSUCRBL; /*!< (@ 0x00000004) CTSU Control Register B */ + + struct + { + __IOM uint8_t CTSUSDPRS; /*!< (@ 0x00000004) CTSU Control Register B */ + __IOM uint8_t CTSUSST; /*!< (@ 0x00000005) CTSU Control Register B */ + }; + }; + + union + { + __IOM uint16_t CTSUCRBH; /*!< (@ 0x00000006) CTSU Control Register B */ + + struct + { + __IM uint8_t RESERVED; + __IOM uint8_t CTSUDCLKC; /*!< (@ 0x00000007) CTSU Control Register B */ + }; + }; + }; + }; + + union + { + union + { + __IOM uint32_t CTSUMCH; /*!< (@ 0x00000008) CTSU Measurement Channel Register */ + + struct + { + __IOM uint32_t MCH0 : 6; /*!< [5..0] CTSU Measurement Channel 0 */ + uint32_t : 2; + __IOM uint32_t MCH1 : 6; /*!< [13..8] CTSU Measurement Channel 1 */ + uint32_t : 2; + __IOM uint32_t MCA0 : 1; /*!< [16..16] CTSU Multiple Valid Clock Control */ + __IOM uint32_t MCA1 : 1; /*!< [17..17] CTSU Multiple Valid Clock Control */ + __IOM uint32_t MCA2 : 1; /*!< [18..18] CTSU Multiple Valid Clock Control */ + __IOM uint32_t MCA3 : 1; /*!< [19..19] CTSU Multiple Valid Clock Control */ + uint32_t : 12; + } CTSUMCH_b; + }; + + struct + { + union + { + __IOM uint16_t CTSUMCHL; /*!< (@ 0x00000008) CTSU Measurement Channel Register */ + + struct + { + __IOM uint8_t CTSUMCH0; /*!< (@ 0x00000008) CTSU Measurement Channel Register */ + __IOM uint8_t CTSUMCH1; /*!< (@ 0x00000009) CTSU Measurement Channel Register */ + }; + }; + + union + { + __IOM uint16_t CTSUMCHH; /*!< (@ 0x0000000A) CTSU Measurement Channel Register */ + __IOM uint8_t CTSUMFAF; /*!< (@ 0x0000000A) CTSU Measurement Channel Register */ + }; + }; + }; + + union + { + union + { + __IOM uint32_t CTSUCHACA; /*!< (@ 0x0000000C) CTSU Channel Enable Control Register A */ + + struct + { + __IOM uint32_t CHAC00 : 1; /*!< [0..0] CTSU Channel Enable Control A */ + uint32_t : 1; + __IOM uint32_t CHAC02 : 1; /*!< [2..2] CTSU Channel Enable Control A */ + uint32_t : 1; + __IOM uint32_t CHAC04 : 1; /*!< [4..4] CTSU Channel Enable Control A */ + __IOM uint32_t CHAC05 : 1; /*!< [5..5] CTSU Channel Enable Control A */ + __IOM uint32_t CHAC06 : 1; /*!< [6..6] CTSU Channel Enable Control A */ + __IOM uint32_t CHAC07 : 1; /*!< [7..7] CTSU Channel Enable Control A */ + __IOM uint32_t CHAC08 : 1; /*!< [8..8] CTSU Channel Enable Control A */ + __IOM uint32_t CHAC09 : 1; /*!< [9..9] CTSU Channel Enable Control A */ + __IOM uint32_t CHAC10 : 1; /*!< [10..10] CTSU Channel Enable Control A */ + __IOM uint32_t CHAC11 : 1; /*!< [11..11] CTSU Channel Enable Control A */ + __IOM uint32_t CHAC12 : 1; /*!< [12..12] CTSU Channel Enable Control A */ + __IOM uint32_t CHAC13 : 1; /*!< [13..13] CTSU Channel Enable Control A */ + __IOM uint32_t CHAC14 : 1; /*!< [14..14] CTSU Channel Enable Control A */ + __IOM uint32_t CHAC15 : 1; /*!< [15..15] CTSU Channel Enable Control A */ + __IOM uint32_t CHAC16 : 1; /*!< [16..16] CTSU Channel Enable Control A */ + __IOM uint32_t CHAC17 : 1; /*!< [17..17] CTSU Channel Enable Control A */ + __IOM uint32_t CHAC18 : 1; /*!< [18..18] CTSU Channel Enable Control A */ + uint32_t : 2; + __IOM uint32_t CHAC21 : 1; /*!< [21..21] CTSU Channel Enable Control A */ + __IOM uint32_t CHAC22 : 1; /*!< [22..22] CTSU Channel Enable Control A */ + __IOM uint32_t CHAC23 : 1; /*!< [23..23] CTSU Channel Enable Control A */ + __IOM uint32_t CHAC24 : 1; /*!< [24..24] CTSU Channel Enable Control A */ + __IOM uint32_t CHAC25 : 1; /*!< [25..25] CTSU Channel Enable Control A */ + __IOM uint32_t CHAC26 : 1; /*!< [26..26] CTSU Channel Enable Control A */ + __IOM uint32_t CHAC27 : 1; /*!< [27..27] CTSU Channel Enable Control A */ + __IOM uint32_t CHAC28 : 1; /*!< [28..28] CTSU Channel Enable Control A */ + __IOM uint32_t CHAC29 : 1; /*!< [29..29] CTSU Channel Enable Control A */ + __IOM uint32_t CHAC30 : 1; /*!< [30..30] CTSU Channel Enable Control A */ + __IOM uint32_t CHAC31 : 1; /*!< [31..31] CTSU Channel Enable Control A */ + } CTSUCHACA_b; + }; + + struct + { + union + { + __IOM uint16_t CTSUCHACAL; /*!< (@ 0x0000000C) CTSU Channel Enable Control Register A */ + + struct + { + __IOM uint8_t CTSUCHAC0; /*!< (@ 0x0000000C) CTSU Channel Enable Control Register A */ + __IOM uint8_t CTSUCHAC1; /*!< (@ 0x0000000D) CTSU Channel Enable Control Register A */ + }; + }; + + union + { + __IOM uint16_t CTSUCHACAH; /*!< (@ 0x0000000E) CTSU Channel Enable Control Register A */ + + struct + { + __IOM uint8_t CTSUCHAC2; /*!< (@ 0x0000000E) CTSU Channel Enable Control Register A */ + __IOM uint8_t CTSUCHAC3; /*!< (@ 0x0000000F) CTSU Channel Enable Control Register A */ + }; + }; + }; + }; + + union + { + union + { + __IOM uint32_t CTSUCHACB; /*!< (@ 0x00000010) CTSU Channel Enable Control Register B */ + + struct + { + __IOM uint32_t CHAC32 : 1; /*!< [0..0] CTSU Channel Enable Control B */ + __IOM uint32_t CHAC33 : 1; /*!< [1..1] CTSU Channel Enable Control B */ + __IOM uint32_t CHAC34 : 1; /*!< [2..2] CTSU Channel Enable Control B */ + __IOM uint32_t CHAC35 : 1; /*!< [3..3] CTSU Channel Enable Control B */ + uint32_t : 28; + } CTSUCHACB_b; + }; + __IOM uint16_t CTSUCHACBL; /*!< (@ 0x00000010) CTSU Channel Enable Control Register B */ + __IOM uint8_t CTSUCHAC4; /*!< (@ 0x00000010) CTSU Channel Enable Control Register B */ + }; + + union + { + union + { + __IOM uint32_t CTSUCHTRCA; /*!< (@ 0x00000014) CTSU Channel Transmit/Receive Control Register + * A */ + + struct + { + __IOM uint32_t CHTRC : 1; /*!< [0..0] CTSU Channel Transmit/Receive Control A */ + uint32_t : 1; + __IOM uint32_t CHTRC02 : 1; /*!< [2..2] CTSU Channel Transmit/Receive Control A */ + uint32_t : 1; + __IOM uint32_t CHTRC04 : 1; /*!< [4..4] CTSU Channel Transmit/Receive Control A */ + __IOM uint32_t CHTRC05 : 1; /*!< [5..5] CTSU Channel Transmit/Receive Control A */ + __IOM uint32_t CHTRC06 : 1; /*!< [6..6] CTSU Channel Transmit/Receive Control A */ + __IOM uint32_t CHTRC07 : 1; /*!< [7..7] CTSU Channel Transmit/Receive Control A */ + __IOM uint32_t CHTRC08 : 1; /*!< [8..8] CTSU Channel Transmit/Receive Control A */ + __IOM uint32_t CHTRC09 : 1; /*!< [9..9] CTSU Channel Transmit/Receive Control A */ + __IOM uint32_t CHTRC10 : 1; /*!< [10..10] CTSU Channel Transmit/Receive Control A */ + __IOM uint32_t CHTRC11 : 1; /*!< [11..11] CTSU Channel Transmit/Receive Control A */ + __IOM uint32_t CHTRC12 : 1; /*!< [12..12] CTSU Channel Transmit/Receive Control A */ + __IOM uint32_t CHTRC13 : 1; /*!< [13..13] CTSU Channel Transmit/Receive Control A */ + __IOM uint32_t CHTRC14 : 1; /*!< [14..14] CTSU Channel Transmit/Receive Control A */ + __IOM uint32_t CHTRC15 : 1; /*!< [15..15] CTSU Channel Transmit/Receive Control A */ + __IOM uint32_t CHTRC16 : 1; /*!< [16..16] CTSU Channel Transmit/Receive Control A */ + __IOM uint32_t CHTRC17 : 1; /*!< [17..17] CTSU Channel Transmit/Receive Control A */ + __IOM uint32_t CHTRC18 : 1; /*!< [18..18] CTSU Channel Transmit/Receive Control A */ + uint32_t : 2; + __IOM uint32_t CHTRC21 : 1; /*!< [21..21] CTSU Channel Transmit/Receive Control A */ + __IOM uint32_t CHTRC22 : 1; /*!< [22..22] CTSU Channel Transmit/Receive Control A */ + __IOM uint32_t CHTRC23 : 1; /*!< [23..23] CTSU Channel Transmit/Receive Control A */ + __IOM uint32_t CHTRC24 : 1; /*!< [24..24] CTSU Channel Transmit/Receive Control A */ + __IOM uint32_t CHTRC25 : 1; /*!< [25..25] CTSU Channel Transmit/Receive Control A */ + __IOM uint32_t CHTRC26 : 1; /*!< [26..26] CTSU Channel Transmit/Receive Control A */ + __IOM uint32_t CHTRC27 : 1; /*!< [27..27] CTSU Channel Transmit/Receive Control A */ + __IOM uint32_t CHTRC28 : 1; /*!< [28..28] CTSU Channel Transmit/Receive Control A */ + __IOM uint32_t CHTRC29 : 1; /*!< [29..29] CTSU Channel Transmit/Receive Control A */ + __IOM uint32_t CHTRC30 : 1; /*!< [30..30] CTSU Channel Transmit/Receive Control A */ + __IOM uint32_t CHTRC31 : 1; /*!< [31..31] CTSU Channel Transmit/Receive Control A */ + } CTSUCHTRCA_b; + }; + + struct + { + union + { + __IOM uint16_t CTSUCHTRCAL; /*!< (@ 0x00000014) CTSU Channel Transmit/Receive Control Register + * A */ + + struct + { + __IOM uint8_t CTSUCHTRC0; /*!< (@ 0x00000014) CTSU Channel Transmit/Receive Control Register + * A */ + __IOM uint8_t CTSUCHTRC1; /*!< (@ 0x00000015) CTSU Channel Transmit/Receive Control Register + * A */ + }; + }; + + union + { + __IOM uint16_t CTSUCHTRCAH; /*!< (@ 0x00000016) CTSU Channel Transmit/Receive Control Register + * A */ + + struct + { + __IOM uint8_t CTSUCHTRC2; /*!< (@ 0x00000016) CTSU Channel Transmit/Receive Control Register + * A */ + __IOM uint8_t CTSUCHTRC3; /*!< (@ 0x00000017) CTSU Channel Transmit/Receive Control Register + * A */ + }; + }; + }; + }; + + union + { + union + { + __IOM uint32_t CTSUCHTRCB; /*!< (@ 0x00000018) CTSU Channel Transmit/Receive Control Register + * B */ + + struct + { + __IOM uint32_t CHTRC32 : 1; /*!< [0..0] CTSU Channel Transmit/Receive Control B */ + __IOM uint32_t CHTRC33 : 1; /*!< [1..1] CTSU Channel Transmit/Receive Control B */ + __IOM uint32_t CHTRC34 : 1; /*!< [2..2] CTSU Channel Transmit/Receive Control B */ + __IOM uint32_t CHTRC35 : 1; /*!< [3..3] CTSU Channel Transmit/Receive Control B */ + uint32_t : 28; + } CTSUCHTRCB_b; + }; + __IOM uint16_t CTSUCHTRCBL; /*!< (@ 0x00000018) CTSU Channel Transmit/Receive Control Register + * B */ + __IOM uint8_t CTSUCHTRC4; /*!< (@ 0x00000018) CTSU Channel Transmit/Receive Control Register + * B */ + }; + + union + { + union + { + __IOM uint32_t CTSUSR; /*!< (@ 0x0000001C) CTSU Status Register */ + + struct + { + __IOM uint32_t MFC : 2; /*!< [1..0] CTSU Multi-clock Counter */ + uint32_t : 3; + __OM uint32_t ICOMPRST : 1; /*!< [5..5] CTSU CTSUICOMP1 Flag Reset */ + __IM uint32_t ICOMP1 : 1; /*!< [6..6] CTSU Sense Current Error Monitor */ + __IM uint32_t ICOMP0 : 1; /*!< [7..7] TSCAP Voltage Error Monitor */ + __IM uint32_t STC : 3; /*!< [10..8] CTSU Measurement Status Counter */ + uint32_t : 1; + __IM uint32_t DTSR : 1; /*!< [12..12] CTSU Data Transfer Status Flag */ + __IOM uint32_t SENSOVF : 1; /*!< [13..13] CTSU Sensor Counter Overflow Flag */ + __IOM uint32_t SUOVF : 1; /*!< [14..14] CTSU SUCLK Counter Overflow Flag */ + __IM uint32_t PS : 1; /*!< [15..15] CTSU Mutual Capacitance Status Flag */ + __IOM uint32_t CFCRDCH : 6; /*!< [21..16] CTSU CFC Read Channel Select */ + uint32_t : 10; + } CTSUSR_b; + }; + + struct + { + union + { + __IOM uint16_t CTSUSRL; /*!< (@ 0x0000001C) CTSU Status Register */ + + struct + { + __IOM uint8_t CTSUSR0; /*!< (@ 0x0000001C) CTSU Status Register */ + __IOM uint8_t CTSUST; /*!< (@ 0x0000001D) CTSU Status Register */ + }; + }; + + union + { + __IOM uint16_t CTSUSRH; /*!< (@ 0x0000001E) CTSU Status Register */ + __IOM uint8_t CTSUSR2; /*!< (@ 0x0000001E) CTSU Status Register */ + }; + }; + }; + + union + { + union + { + __IOM uint32_t CTSUSO; /*!< (@ 0x00000020) CTSU Sensor Offset Register */ + + struct + { + __IOM uint32_t SO : 10; /*!< [9..0] CTSU Sensor Offset Adjustment */ + __IOM uint32_t SNUM : 8; /*!< [17..10] CTSU Measurement Count Setting */ + uint32_t : 2; + __IOM uint32_t SSDIV : 4; /*!< [23..20] Spread Spectrum Frequency */ + __IOM uint32_t SDPA : 8; /*!< [31..24] CTSU Base Clock Setting */ + } CTSUSO_b; + }; + + struct + { + __IOM uint16_t CTSUSO0; /*!< (@ 0x00000020) CTSU Sensor Offset Register */ + __IOM uint16_t CTSUSO1; /*!< (@ 0x00000022) CTSU Sensor Offset Register */ + }; + }; + + union + { + union + { + __IM uint32_t CTSUSCNT; /*!< (@ 0x00000024) CTSU Sensor Counter Register */ + + struct + { + __IM uint32_t SENSCNT : 16; /*!< [15..0] CTSU Sensor Counter */ + __IM uint32_t SUCKCNT : 16; /*!< [31..16] CTSU SUCLK Counter */ + } CTSUSCNT_b; + }; + __IM uint16_t CTSUSC; /*!< (@ 0x00000024) CTSU Sensor Counter Register */ + }; + + union + { + union + { + __IOM uint32_t CTSUCALIB; /*!< (@ 0x00000028) CTSU Calibration Register */ + + struct + { + uint32_t : 2; + __IOM uint32_t TSOD : 1; /*!< [2..2] TS Pins Fixed Output */ + __IOM uint32_t DRV : 1; /*!< [3..3] Power Supply Calibration Select */ + __IOM uint32_t CLKSEL : 2; /*!< [5..4] Observation Clock Select */ + __IOM uint32_t SUCLKEN : 1; /*!< [6..6] SUCLK Forced Oscillation Control */ + __IOM uint32_t TSOC : 1; /*!< [7..7] Switched Capacitor Operation Calibration Select Bit */ + __IOM uint32_t CNTRDSEL : 1; /*!< [8..8] Read Count Select of Sensor Counter */ + __IOM uint32_t IOC : 1; /*!< [9..9] TS Pin Fixed Output Value Set */ + __IOM uint32_t CFCRDMD : 1; /*!< [10..10] CFC Counter Read Mode Select */ + __IOM uint32_t DCOFF : 1; /*!< [11..11] Down Converter Control */ + uint32_t : 4; + __IOM uint32_t CFCSEL : 6; /*!< [21..16] Observation CFC Clock Select */ + __IOM uint32_t CFCMODE : 1; /*!< [22..22] CFC Oscillator Calibration Mode Select */ + uint32_t : 1; + __IOM uint32_t DACMSEL : 1; /*!< [24..24] Current Offset DAC Current Matrix Calibration Select */ + __IOM uint32_t DACCARRY : 1; /*!< [25..25] Offset Current Adjustment for Calibration */ + __IOM uint32_t SUMSEL : 1; /*!< [26..26] Current Control Oscillator Input Current Matrix Calibration + * Select */ + __IOM uint32_t SUCARRY : 1; /*!< [27..27] Current Control Oscillator Input Current Adjustment + * for SUCLK */ + __IOM uint32_t DACCLK : 1; /*!< [28..28] Modulation Clock Select for Offset Current Circuits */ + __IOM uint32_t CCOCLK : 1; /*!< [29..29] Modulation Clock Select for Current Controlled Oscillator + * Input Current of SUCLK */ + __IOM uint32_t CCOCALIB : 1; /*!< [30..30] Calibration Selection of Current Controlled Oscillator + * for Measurement */ + __IOM uint32_t TXREV : 1; /*!< [31..31] Transmit Pin Inverted Output */ + } CTSUCALIB_b; + }; + + struct + { + __IOM uint16_t CTSUDBGR0; /*!< (@ 0x00000028) CTSU Calibration Register */ + __IOM uint16_t CTSUDBGR1; /*!< (@ 0x0000002A) CTSU Calibration Register */ + }; + }; + + union + { + union + { + __IOM uint32_t CTSUSUCLKA; /*!< (@ 0x0000002C) CTSU Sensor Unit Clock Control Register A */ + + struct + { + __IOM uint32_t SUADJ0 : 8; /*!< [7..0] CTSU SUCLK Frequency Adjustment */ + __IOM uint32_t SUMULTI0 : 8; /*!< [15..8] CTSU SUCLK Multiplier Rate Setting */ + __IOM uint32_t SUADJ1 : 8; /*!< [23..16] CTSU SUCLK Frequency Adjustment */ + __IOM uint32_t SUMULTI1 : 8; /*!< [31..24] CTSU SUCLK Multiplier Rate Setting */ + } CTSUSUCLKA_b; + }; + + struct + { + __IOM uint16_t CTSUSUCLK0; /*!< (@ 0x0000002C) CTSU Sensor Unit Clock Control Register A */ + __IOM uint16_t CTSUSUCLK1; /*!< (@ 0x0000002E) CTSU Sensor Unit Clock Control Register A */ + }; + }; + + union + { + union + { + __IOM uint32_t CTSUSUCLKB; /*!< (@ 0x00000030) CTSU Sensor Unit Clock Control Register B */ + + struct + { + __IOM uint32_t SUADJ2 : 8; /*!< [7..0] CTSU SUCLK Frequency Adjustment */ + __IOM uint32_t SUMULTI2 : 8; /*!< [15..8] CTSU SUCLK Multiplier Rate Setting */ + __IOM uint32_t SUADJ3 : 8; /*!< [23..16] CTSU SUCLK Frequency Adjustment */ + __IOM uint32_t SUMULTI3 : 8; /*!< [31..24] CTSU SUCLK Multiplier Rate Setting */ + } CTSUSUCLKB_b; + }; + + struct + { + __IOM uint16_t CTSUSUCLK2; /*!< (@ 0x00000030) CTSU Sensor Unit Clock Control Register B */ + __IOM uint16_t CTSUSUCLK3; /*!< (@ 0x00000032) CTSU Sensor Unit Clock Control Register B */ + }; + }; + + union + { + union + { + __IM uint32_t CTSUCFCCNT; /*!< (@ 0x00000034) CTSU CFC Counter Register */ + + struct + { + __IM uint32_t CFCCNT : 16; /*!< [15..0] CTSU CFC Counter */ + uint32_t : 16; + } CTSUCFCCNT_b; + }; + __IM uint16_t CTSUCFCCNTL; /*!< (@ 0x00000034) CTSU CFC Counter Register */ + }; +} R_CTSU2_Type; /*!< Size = 56 (0x38) */ + +/* =========================================================================================================================== */ +/* ================ R_DAC ================ */ +/* =========================================================================================================================== */ + +/** + * @brief D/A Converter (R_DAC) + */ + +typedef struct /*!< (@ 0x4005E000) 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 + { + uint8_t : 6; + __IOM uint8_t AMADSEL1 : 1; /*!< [6..6] 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 : 1; + } DAADUSR_b; + }; + __IM uint8_t RESERVED3; + __IM uint16_t RESERVED4; +} R_DAC_Type; /*!< Size = 4292 (0x10c4) */ + +/* =========================================================================================================================== */ +/* ================ R_DAC8 ================ */ +/* =========================================================================================================================== */ + +/** + * @brief 8-Bit D/A Converter (R_DAC8) + */ + +typedef struct /*!< (@ 0x4009E000) R_DAC8 Structure */ +{ + union + { + __IOM uint8_t DACS[2]; /*!< (@ 0x00000000) D/A Conversion Value Setting Register [0..1] */ + + struct + { + __IOM uint8_t DACS : 8; /*!< [7..0] DACS D/A conversion store data */ + } DACS_b[2]; + }; + __IM uint8_t RESERVED; + + union + { + __IOM uint8_t DAM; /*!< (@ 0x00000003) D/A Converter Mode Register */ + + struct + { + __IOM uint8_t DAMD0 : 1; /*!< [0..0] D/A operation mode select 0 */ + __IOM uint8_t DAMD1 : 1; /*!< [1..1] D/A operation mode select 1 */ + uint8_t : 2; + __IOM uint8_t DACE0 : 1; /*!< [4..4] D/A operation enable 0 */ + __IOM uint8_t DACE1 : 1; /*!< [5..5] D/A operation enable 1 */ + uint8_t : 2; + } DAM_b; + }; + __IM uint8_t RESERVED1[2]; + + union + { + __IOM uint8_t DACADSCR; /*!< (@ 0x00000006) D/A A/D Synchronous Start Control Register */ + + struct + { + __IOM uint8_t DACADST : 1; /*!< [0..0] D/A A/D Synchronous Conversion */ + uint8_t : 7; + } DACADSCR_b; + }; + + union + { + __IOM uint8_t DACPC; /*!< (@ 0x00000007) D/A SW Charge Pump Control Register */ + + struct + { + __IOM uint8_t PUMPEN : 1; /*!< [0..0] Charge pump enable */ + uint8_t : 7; + } DACPC_b; + }; +} R_DAC8_Type; /*!< Size = 8 (0x8) */ + +/* =========================================================================================================================== */ +/* ================ R_DALI0 ================ */ +/* =========================================================================================================================== */ + +/** + * @brief Digital Addressable Lighting Interface (R_DALI0) + */ + +typedef struct /*!< (@ 0x4008F000) R_DALI0 Structure */ +{ + union + { + __IOM uint16_t BTVTHR1; /*!< (@ 0x00000000) DALI Bit Timing Violation Threshold Register + * 1 */ + + struct + { + __IOM uint16_t BTV1 : 7; /*!< [6..0] Bit Timing Violation Threshold 1Specifies the bit timing + * violation threshold value 1.Note 1. These bits must be + * modified when the DALI0.CTR1.RE bit is 0 and the DALI0.CTR1.TE + * bit is 0. */ + uint16_t : 1; + __IOM uint16_t BTV2 : 8; /*!< [15..8] Bit Timing Violation Threshold 2Specifies the bit timing + * violation threshold value 2.Note 1. These bits must be + * modified when the DALI0.CTR1.RE bit is 0 and the DALI0.CTR1.TE + * bit is 0. */ + } BTVTHR1_b; + }; + + union + { + __IOM uint16_t BTVTHR2; /*!< (@ 0x00000002) DALI Bit Timing Violation Threshold Register + * 2 */ + + struct + { + __IOM uint16_t BTV3 : 8; /*!< [7..0] Bit Timing Violation Threshold 3Specifies the bit timing + * violation threshold value 3.Note 1. These bits must be + * modified when the DALI0.CTR1.RE bit is 0 and the DALI0.CTR1.TE + * bit is 0. */ + __IOM uint16_t BTV4 : 8; /*!< [15..8] Bit Timing Violation Threshold 4Specifies the bit timing + * violation threshold value 4.Note 1. These bits must be + * modified when the DALI0.CTR1.RE bit is 0 and the DALI0.CTR1.TE + * bit is 0. */ + } BTVTHR2_b; + }; + + union + { + __IOM uint16_t BTVTHR3; /*!< (@ 0x00000004) DALI Bit Timing Violation Threshold Register + * 3 */ + + struct + { + __IOM uint16_t BTV5 : 8; /*!< [7..0] Bit Timing Violation Threshold 5Specifies the bit timing + * violation threshold value 5.Note 1. These bits must be + * modified when the DALI0.CTR1.RE bit is 0 and the DALI0.CTR1.TE + * bit is 0. */ + uint16_t : 8; + } BTVTHR3_b; + }; + + union + { + __IOM uint16_t BTVTHR4; /*!< (@ 0x00000006) DALI Bit Timing Violation Threshold Register + * 4 */ + + struct + { + __IOM uint16_t BTV6 : 9; /*!< [8..0] Bit Timing Violation Threshold 6Specifies the bit timing + * violation threshold value 6.Note 1. These bits must be + * modified when the DALI0.CTR1.RE bit is 0 and the DALI0.CTR1.TE + * bit is 0. */ + uint16_t : 7; + } BTVTHR4_b; + }; + + union + { + __IOM uint16_t COLTHR1; /*!< (@ 0x00000008) DALI Collision Threshold Register 1 */ + + struct + { + __IOM uint16_t COL1 : 6; /*!< [5..0] Collision Threshold 1Specifies the collision threshold + * value 1.Note 1. These bits must be modified when the DALI0.CTR1.RE + * bit is 0 and the DALI0.CTR1.TE bit is 0. */ + uint16_t : 2; + __IOM uint16_t COL2 : 6; /*!< [13..8] Collision Threshold 2Specifies the collision threshold + * value 2.Note 1. These bits must be modified when the DALI0.CTR1.RE + * bit is 0 and the DALI0.CTR1.TE bit is 0. */ + uint16_t : 2; + } COLTHR1_b; + }; + + union + { + __IOM uint16_t COLTHR2; /*!< (@ 0x0000000A) DALI Collision Threshold Register 2 */ + + struct + { + __IOM uint16_t COL3 : 7; /*!< [6..0] Collision Threshold 3Specifies the collision threshold + * value 3.Note 1. These bits must be modified when the DALI0.CTR1.RE + * bit is 0 and the DALI0.CTR1.TE bit is 0. */ + uint16_t : 1; + __IOM uint16_t COL4 : 7; /*!< [14..8] Collision Threshold 4Specifies the collision threshold + * value 4.Note 1. These bits must be modified when the DALI0.CTR1.RE + * bit is 0 and the DALI0.CTR1.TE bit is 0. */ + uint16_t : 1; + } COLTHR2_b; + }; + + union + { + __IOM uint16_t COLTHR3; /*!< (@ 0x0000000C) DALI Collision Threshold Register 3 */ + + struct + { + __IOM uint16_t COL5 : 7; /*!< [6..0] Collision Threshold 5Specifies the collision threshold + * value 5.Note 1. These bits must be modified when the DALI0.CTR1.RE + * bit is 0 and the DALI0.CTR1.TE bit is 0. */ + uint16_t : 1; + __IOM uint16_t COL6 : 7; /*!< [14..8] Collision Threshold 6Specifies the collision threshold + * value 6.Note 1. These bits must be modified when the DALI0.CTR1.RE + * bit is 0 and the DALI0.CTR1.TE bit is 0. */ + uint16_t : 1; + } COLTHR3_b; + }; + + union + { + __IOM uint16_t COLTHR4; /*!< (@ 0x0000000E) DALI Collision Threshold Register 4 */ + + struct + { + __IOM uint16_t COL7 : 8; /*!< [7..0] Collision Threshold 7Specifies the collision threshold + * value 7.Note 1. These bits must be modified when the DALI0.CTR1.RE + * bit is 0 and the DALI0.CTR1.TE bit is 0. */ + __IOM uint16_t COL8 : 8; /*!< [15..8] Collision Threshold 8Specifies the collision threshold + * value 8.Note 1. These bits must be modified when the DALI0.CTR1.RE + * bit is 0 and the DALI0.CTR1.TE bit is 0. */ + } COLTHR4_b; + }; + + union + { + __IOM uint16_t COLTHR5; /*!< (@ 0x00000010) DALI Collision Threshold Register 5 */ + + struct + { + __IOM uint16_t COL9 : 8; /*!< [7..0] Collision Threshold 9Specifies the collision threshold + * value 9.Note 1. These bits must be modified when the DALI0.CTR1.RE + * bit is 0 and the DALI0.CTR1.TE bit is 0. */ + uint16_t : 8; + } COLTHR5_b; + }; + + union + { + __IOM uint16_t CNFR1; /*!< (@ 0x00000012) DALI Configuration Register 1 */ + + struct + { + __IOM uint16_t BR : 8; /*!< [7..0] Clock SelectBit rate setting example is shown in Table */ + __IOM uint16_t CKS : 2; /*!< [9..8] Clock Select */ + uint16_t : 2; + __IOM uint16_t CHL : 3; /*!< [14..12] Character Length */ + uint16_t : 1; + } CNFR1_b; + }; + + union + { + __IOM uint16_t CNFR2; /*!< (@ 0x00000014) DALI Configuration Register 2 */ + + struct + { + __IOM uint16_t BTVE : 1; /*!< [0..0] Bit Timing Violation EnableNote: The bit must be modified + * only when the DALI0.STR1.BBF bit is 0. */ + __IOM uint16_t BTVM : 1; /*!< [1..1] Bit Timing Violation ModeNote: The bit must be modified + * only when the DALI0.STR1.BBF bit is 0. */ + __IOM uint16_t SGA : 1; /*!< [2..2] Save an Edge of Gray Area ModeNote: The bit must be modified + * only when the DALI0.STR1.BBF bit is 0. */ + __IOM uint16_t TXWE : 1; /*!< [3..3] DTX Width Modulation EnableNote: The bit must be modified + * only when the DALI0.STR1.BBF bit is 0. */ + __IOM uint16_t CDE : 1; /*!< [4..4] Collision Detect EnableNote: The bit must be modified + * only when the DALI0.STR1.BBF bit is 0. */ + __IOM uint16_t CDM0 : 1; /*!< [5..5] Collision Detect ModeNote: The bit must be modified only + * when the DALI0.STR1.BBF bit is 0. */ + uint16_t : 10; + } CNFR2_b; + }; + + union + { + __IOM uint16_t TXWR1; /*!< (@ 0x00000016) DALI DTX Width Register 1 */ + + struct + { + __IOM uint16_t TXLW : 7; /*!< [6..0] DTX Low WidthDTX0 pin low level width */ + uint16_t : 9; + } TXWR1_b; + }; + __IM uint16_t RESERVED[3]; + + union + { + __IOM uint16_t TDR1H; /*!< (@ 0x0000001E) DALI Transmit Data Register 1H */ + + struct + { + __IOM uint16_t DTDR : 16; /*!< [15..0] Upper 16-bit DALI transmit data */ + } TDR1H_b; + }; + + union + { + __IOM uint16_t TDR1L; /*!< (@ 0x00000020) DALI Transmit Data Register 1L */ + + struct + { + __IOM uint16_t DTDR : 16; /*!< [15..0] Lower 16-bit DALI transmit data */ + } TDR1L_b; + }; + + union + { + __OM uint16_t TRSTR1; /*!< (@ 0x00000022) DALI Transmit Control Register 1 */ + + struct + { + __OM uint16_t TRST : 1; /*!< [0..0] Transmission Start Trigger */ + uint16_t : 15; + } TRSTR1_b; + }; + __IM uint16_t RESERVED1; + + union + { + __IOM uint16_t CTR1; /*!< (@ 0x00000026) DALI Control Register 1 */ + + struct + { + __IOM uint16_t TE : 1; /*!< [0..0] Transmit Enabling */ + __IOM uint16_t RE : 1; /*!< [1..1] Receive Enabling */ + uint16_t : 6; + __IOM uint16_t SDIE : 1; /*!< [8..8] DALI_SDI Output Enabling */ + __IOM uint16_t DEIE : 1; /*!< [9..9] DALI_DEI Output Enabling */ + __IOM uint16_t CLIE : 1; /*!< [10..10] DALI_CLI Output Enabling */ + __IOM uint16_t BPIE : 1; /*!< [11..11] DALI_BPI Output Enabling */ + __IOM uint16_t FEIE : 1; /*!< [12..12] DALI_FEI Output Enabling */ + uint16_t : 3; + } CTR1_b; + }; + + union + { + __IOM uint16_t TXDCTR1; /*!< (@ 0x00000028) DALI DTX Control Register 1 */ + + struct + { + __IOM uint16_t TXAS : 1; /*!< [0..0] DTX Assert LevelNote 1. The bit must be modified only + * when the DALI0.CTR1.TE bit is 0. */ + __IOM uint16_t TXASE : 1; /*!< [1..1] DTX Assert EnablingNote 1. The bit must be modified only + * when the DALI0.CTR1.TE bit is 0. */ + uint16_t : 14; + } TXDCTR1_b; + }; + __IM uint16_t RESERVED2[2]; + + union + { + __IM uint16_t RDR1H; /*!< (@ 0x0000002E) DALI Reception Data Register 1H */ + + struct + { + __IM uint16_t DRDR : 16; /*!< [15..0] Upper 16-bit of DALI receive data */ + } RDR1H_b; + }; + + union + { + __IM uint16_t RDR1L; /*!< (@ 0x00000030) DALI Reception Data Register 1L */ + + struct + { + __IM uint16_t DRDR : 16; /*!< [15..0] Lower 16-bit of DALI receive data */ + } RDR1L_b; + }; + + union + { + __IM uint16_t STR1; /*!< (@ 0x00000032) DALI Status Register 1 */ + + struct + { + __IM uint16_t MFEF : 1; /*!< [0..0] Manchester Flaming Error Flag */ + __IM uint16_t OVF : 1; /*!< [1..1] Overrun Error Flag */ + __IM uint16_t BTVF : 1; /*!< [2..2] Bit Timing Violation Flag */ + __IM uint16_t RDRF : 1; /*!< [3..3] Receive Data Register Full Flag */ + __IM uint16_t TENDF : 1; /*!< [4..4] Transmit End Flag */ + __IM uint16_t BBF : 1; /*!< [5..5] Bus BUSY Flag */ + __IM uint16_t BPDF : 1; /*!< [6..6] Bus Power Down Flag */ + __IM uint16_t O32F : 1; /*!< [7..7] Over 32-Bit Data Reception Flag */ + __IM uint16_t CDF : 1; /*!< [8..8] Collision Detect Flag */ + __IM uint16_t DAF : 1; /*!< [9..9] Destroy Area Flag */ + __IM uint16_t RDBL : 6; /*!< [15..10] Receive Data Bit LengthThese bits store the bit length + * for data received successfully */ + } STR1_b; + }; + __IM uint16_t RESERVED3; + + union + { + __IM uint16_t COLR1; /*!< (@ 0x00000036) DALI Collision Register 1 */ + + struct + { + __IM uint16_t CFTF2 : 4; /*!< [3..0] Collision Detect Timing Flag 2 */ + __IM uint16_t CDTF1 : 1; /*!< [4..4] Collision Detect Timing Flag 1 */ + uint16_t : 5; + __IM uint16_t CLDAF : 1; /*!< [10..10] Collision Last Destroy Area Flag */ + __IM uint16_t RXDMON : 1; /*!< [11..11] DRX MonitorThis bit monitors the DRX0 pin value after + * the DRX0 pin is synchronized */ + __IM uint16_t RXDCEG : 1; /*!< [12..12] DRX Collision Edge */ + __IM uint16_t TXDCV : 1; /*!< [13..13] DTX Collision Value */ + uint16_t : 2; + } COLR1_b; + }; + __IM uint16_t RESERVED4; + + union + { + __OM uint16_t FECR1; /*!< (@ 0x0000003A) DALI Flag Error Clear Register 1 */ + + struct + { + __OM uint16_t MFEFC : 1; /*!< [0..0] Manchester Flaming Error Flag Clear */ + __OM uint16_t OVFC : 1; /*!< [1..1] Overrun Error Flag Clear */ + __OM uint16_t BTVFC : 1; /*!< [2..2] Bit Timing Violation Flag Clear */ + __OM uint16_t RDRFC : 1; /*!< [3..3] Receive Data Register Full Flag Clear */ + __OM uint16_t TENDFC : 1; /*!< [4..4] Transmit End Flag Clear */ + __OM uint16_t BBFC : 1; /*!< [5..5] Bus BUSY Flag ClearNote1: Do not clear DALI0.STR1.BBF + * bit when DALI0.CTR1.TE bit or DALI0.CTR1.RE bit is 1. */ + __OM uint16_t BPDFC : 1; /*!< [6..6] Bus Power Down Flag Clear */ + __OM uint16_t O32FC : 1; /*!< [7..7] Over 32-Bit Data Reception Flag Clear */ + __OM uint16_t CDFC : 1; /*!< [8..8] Collision Detect Flag Clear */ + __OM uint16_t DAFC : 1; /*!< [9..9] Destroy Area Flag Clear */ + uint16_t : 6; + } FECR1_b; + }; + + union + { + __OM uint16_t SWRR1; /*!< (@ 0x0000003C) DALI Software Reset Register 1 */ + + struct + { + __OM uint16_t SWR : 1; /*!< [0..0] Software ResetWriting 1 to this bit causes a software + * reset. */ + uint16_t : 15; + } SWRR1_b; + }; +} R_DALI0_Type; /*!< Size = 62 (0x3e) */ + +/* =========================================================================================================================== */ +/* ================ 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; + }; +} R_DEBUG_Type; /*!< Size = 20 (0x14) */ + +/* =========================================================================================================================== */ +/* ================ R_DMA ================ */ +/* =========================================================================================================================== */ + +/** + * @brief DMA Controller Common (R_DMA) + */ + +typedef struct /*!< (@ 0x40005200) 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; + }; +} R_DMA_Type; /*!< Size = 68 (0x44) */ + +/* =========================================================================================================================== */ +/* ================ R_DMAC0 ================ */ +/* =========================================================================================================================== */ + +/** + * @brief DMA Controller (R_DMAC0) + */ + +typedef struct /*!< (@ 0x40005000) 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 uint16_t DMCRB; /*!< (@ 0x0000000C) DMA Block Transfer Count Register */ + + struct + { + __IOM uint16_t DMCRB : 16; /*!< [15..0] Specifies the number of block transfer operations or + * repeat transfer operations. */ + } DMCRB_b; + }; + __IM uint16_t RESERVED; + + 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 RESERVED1; + + 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 RESERVED2; + + 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 RESERVED3; + __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 RESERVED4; + __IM uint16_t RESERVED5; +} R_DMAC0_Type; /*!< Size = 52 (0x34) */ + +/* =========================================================================================================================== */ +/* ================ R_DOC ================ */ +/* =========================================================================================================================== */ + +/** + * @brief Data Operation Circuit (R_DOC) + */ + +typedef struct /*!< (@ 0x40054100) 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 /*!< (@ 0x400E4000) 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 /*!< (@ 0x40005400) 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) + */ + + #ifndef BSP_OVERRIDE_REG_R_ELC_TYPE + +typedef struct /*!< (@ 0x40041000) 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; + __IOM R_ELC_ELSEGR_Type ELSEGR[2]; /*!< (@ 0x00000002) Event Link Software Event Generation Register */ + __IM uint16_t RESERVED1[5]; + __IOM R_ELC_ELSR_Type ELSR[23]; /*!< (@ 0x00000010) Event Link Setting Register [0..22] */ + __IM uint16_t RESERVED2[4]; + + union + { + __IOM uint16_t ELCSARA; /*!< (@ 0x00000074) Event Link Controller Security Attribution Register + * A */ + + struct + { + __IOM uint16_t ELCR : 1; /*!< [0..0] Event Link Controller RegisterSecurity Attribution */ + __IOM uint16_t ELSEGR0 : 1; /*!< [1..1] Event Link Software Event Generation Register 0 Security + * Attribution */ + __IOM uint16_t ELSEGR1 : 1; /*!< [2..2] Event Link Software Event Generation Register 1Security + * Attribution */ + uint16_t : 13; + } ELCSARA_b; + }; + __IM uint16_t RESERVED3; + + union + { + __IOM uint16_t ELCSARB; /*!< (@ 0x00000078) Event Link Controller Security Attribution Register + * B */ + + struct + { + __IOM uint16_t ELSR0 : 1; /*!< [0..0] Event Link Setting Register 0Security Attribution */ + __IOM uint16_t ELSR1 : 1; /*!< [1..1] Event Link Setting Register 1Security Attribution */ + __IOM uint16_t ELSR2 : 1; /*!< [2..2] Event Link Setting Register 2Security Attribution */ + __IOM uint16_t ELSR3 : 1; /*!< [3..3] Event Link Setting Register 3Security Attribution */ + __IOM uint16_t ELSR4 : 1; /*!< [4..4] Event Link Setting Register 4Security Attribution */ + __IOM uint16_t ELSR5 : 1; /*!< [5..5] Event Link Setting Register 5Security Attribution */ + __IOM uint16_t ELSR6 : 1; /*!< [6..6] Event Link Setting Register 6Security Attribution */ + __IOM uint16_t ELSR7 : 1; /*!< [7..7] Event Link Setting Register 7Security Attribution */ + __IOM uint16_t ELSR8 : 1; /*!< [8..8] Event Link Setting Register 8Security Attribution */ + __IOM uint16_t ELSR9 : 1; /*!< [9..9] Event Link Setting Register 9Security Attribution */ + __IOM uint16_t ELSR10 : 1; /*!< [10..10] Event Link Setting Register 10Security Attribution */ + __IOM uint16_t ELSR11 : 1; /*!< [11..11] Event Link Setting Register 11Security Attribution */ + __IOM uint16_t ELSR12 : 1; /*!< [12..12] Event Link Setting Register 12Security Attribution */ + __IOM uint16_t ELSR13 : 1; /*!< [13..13] Event Link Setting Register 13Security Attribution */ + __IOM uint16_t ELSR14 : 1; /*!< [14..14] Event Link Setting Register 14Security Attribution */ + __IOM uint16_t ELSR15 : 1; /*!< [15..15] Event Link Setting Register 15Security Attribution */ + } ELCSARB_b; + }; + __IM uint16_t RESERVED4; + + union + { + __IOM uint16_t ELCSARC; /*!< (@ 0x0000007C) Event Link Controller Security Attribution Register + * C */ + + struct + { + __IOM uint16_t ELSR16 : 1; /*!< [0..0] Event Link Setting Register 16Security Attribution */ + __IOM uint16_t ELSR17 : 1; /*!< [1..1] Event Link Setting Register 17Security Attribution */ + __IOM uint16_t ELSR18 : 1; /*!< [2..2] Event Link Setting Register 18Security Attribution */ + uint16_t : 13; + } ELCSARC_b; + }; +} R_ELC_Type; /*!< Size = 126 (0x7e) */ + + #endif + +/* =========================================================================================================================== */ +/* ================ R_ETHERC0 ================ */ +/* =========================================================================================================================== */ + +/** + * @brief Ethernet MAC Controller (R_ETHERC0) + */ + +typedef struct /*!< (@ 0x40064100) 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 /*!< (@ 0x40064000) 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_ETHERC_EPTPC ================ */ +/* =========================================================================================================================== */ + +/** + * @brief Ethernet PTP Controller (R_ETHERC_EPTPC) + */ + +typedef struct /*!< (@ 0x40065800) R_ETHERC_EPTPC Structure */ +{ + union + { + __IOM uint32_t SYSR; /*!< (@ 0x00000000) SYNFP Status Register */ + + struct + { + __IOM uint32_t OFMUD : 1; /*!< [0..0] offsetFromMaster Value Update Flag */ + __IOM uint32_t INTCHG : 1; /*!< [1..1] Receive logMessageInterval Value Change Detection Flag */ + __IOM uint32_t MPDUD : 1; /*!< [2..2] meanPathDelay Value Update Flag */ + uint32_t : 1; + __IOM uint32_t DRPTO : 1; /*!< [4..4] Delay_Resp/Pdelay_Resp Reception Timeout Detection Flag */ + __IOM uint32_t INTDEV : 1; /*!< [5..5] Receive logMessageInterval Value Out-of-Range Flag */ + __IOM uint32_t DRQOVR : 1; /*!< [6..6] Delay_Req Reception FIFO Overflow Detection Flag */ + uint32_t : 5; + __IOM uint32_t RECLP : 1; /*!< [12..12] Loop Reception Detection Flag */ + uint32_t : 1; + __IOM uint32_t INFABT : 1; /*!< [14..14] Control Information Abnormality Detection Flag */ + uint32_t : 1; + __IOM uint32_t RESDN : 1; /*!< [16..16] Response Stop Completion Detection Flag */ + __IOM uint32_t GENDN : 1; /*!< [17..17] Generation Stop Completion Detection Flag */ + uint32_t : 14; + } SYSR_b; + }; + + union + { + __IOM uint32_t SYIPR; /*!< (@ 0x00000004) SYNFP Status Notification Permission Register */ + + struct + { + __IOM uint32_t OFMUD : 1; /*!< [0..0] SYSR.OFMUD Status Notification Permission */ + __IOM uint32_t INTCHG : 1; /*!< [1..1] SYSR.INTCHG Status Notification Permission */ + __IOM uint32_t MPDUD : 1; /*!< [2..2] SYSR.MPDUD Status Notification Permission */ + uint32_t : 1; + __IOM uint32_t DRPTO : 1; /*!< [4..4] SYSR.DRPTO Status Notification Permission */ + __IOM uint32_t INTDEV : 1; /*!< [5..5] SYSR.INTDEV Status Notification Permission */ + __IOM uint32_t DRQOVR : 1; /*!< [6..6] SYSR.DRQOVR Status Notification Permission */ + uint32_t : 5; + __IOM uint32_t RECLP : 1; /*!< [12..12] SYSR.RECLP Status Notification Permission */ + uint32_t : 1; + __IOM uint32_t INFABT : 1; /*!< [14..14] SYSR.INFABT Status Notification Permission */ + uint32_t : 1; + __IOM uint32_t RESDN : 1; /*!< [16..16] SYSR.RESDN Status Notification Permission */ + __IOM uint32_t GENDN : 1; /*!< [17..17] SYSR.GENDN Status Notification Permission */ + uint32_t : 14; + } SYIPR_b; + }; + __IM uint32_t RESERVED[2]; + + union + { + __IOM uint32_t SYMACRU; /*!< (@ 0x00000010) SYNFP MAC Address Registers */ + + struct + { + __IOM uint32_t SYMACRU : 24; /*!< [23..0] These bits hold the setting for the higher-order 24 + * bits of the local MAC address. */ + uint32_t : 8; + } SYMACRU_b; + }; + + union + { + __IOM uint32_t SYMACRL; /*!< (@ 0x00000014) SYNFP MAC Address Registers */ + + struct + { + __IOM uint32_t SYMACRL : 24; /*!< [23..0] These bits hold the setting for the lower-order 24 bits + * of the local MAC address. */ + uint32_t : 8; + } SYMACRL_b; + }; + + union + { + __IOM uint32_t SYLLCCTLR; /*!< (@ 0x00000018) SYNFP LLC-CTL Value Register */ + + struct + { + __IOM uint32_t CTL : 8; /*!< [7..0] LLC-CTL FieldThese bits specify the value used for the + * control field in the LLC sublayer when generating IEEE802.3 + * frames. */ + uint32_t : 24; + } SYLLCCTLR_b; + }; + + union + { + __IOM uint32_t SYIPADDRR; /*!< (@ 0x0000001C) SYNFP Local IP Address Register */ + + struct + { + __IOM uint32_t SYIPADDRR : 32; /*!< [31..0] These bits hold the setting for the local IP address. */ + } SYIPADDRR_b; + }; + __IM uint32_t RESERVED1[8]; + + union + { + __IOM uint32_t SYSPVRR; /*!< (@ 0x00000040) SYNFP Specification Version Setting Register */ + + struct + { + __IOM uint32_t VER : 4; /*!< [3..0] versionPTP Field ValueThese bits are used to set the + * versionPTP field value of the PTP v2 header.When a message + * is received, this value is compared with the versionPTP + * field of the received frame.In generating messages, the + * value is used for the versionPTP field of the frame for + * transmission.Set these bits to 0010b (PTP v2). */ + __IOM uint32_t TRSP : 4; /*!< [7..4] transportSpecific Field ValueThese bits are used to set + * the transportSpecific field value of the PTP v2 header.When + * a message is received, this value is compared with the + * transportSpecific field of the received frame.In generating + * messages, the value is used for the transportSpecific field + * of the frame for transmission.Set these bits to 0000b (IEEE + * 1588). */ + uint32_t : 24; + } SYSPVRR_b; + }; + + union + { + __IOM uint32_t SYDOMR; /*!< (@ 0x00000044) SYNFP Domain Number Setting Register */ + + struct + { + __IOM uint32_t DNUM : 8; /*!< [7..0] domainNumber Field Value SettingThese bits are used to + * set the domainNumber field value of the PTP v2 header.When + * a message is received, this value is compared with the + * domainNumber field of the received frame as a condition + * for PTP reception processing.In generating messages, the + * value is used for the domainNumber field of the frame for + * transmission. */ + uint32_t : 24; + } SYDOMR_b; + }; + __IM uint32_t RESERVED2[2]; + + union + { + __IOM uint32_t ANFR; /*!< (@ 0x00000050) Announce Message Flag Field Setting Register */ + + struct + { + __IOM uint32_t FLAG0 : 1; /*!< [0..0] leap61This bit is used to set the logical value of the + * leap61 member of timePropertiesDS. */ + __IOM uint32_t FLAG1 : 1; /*!< [1..1] leap59This bit is used to set the logical value of the + * leap59 member of timePropertiesDS. */ + __IOM uint32_t FLAG2 : 1; /*!< [2..2] currentUtcOffsetValidThis bit is used to set the logical + * value of the currentUtcOffsetValid member of timePropertiesDS. */ + __IOM uint32_t FLAG3 : 1; /*!< [3..3] ptpTimescaleThis bit is used to set the logical value + * of the ptpTimescale member of timePropertiesDS. */ + __IOM uint32_t FLAG4 : 1; /*!< [4..4] timeTraceableThis bit is used to set the logical value + * of the timeTraceable member of timePropertiesDS. */ + __IOM uint32_t FLAG5 : 1; /*!< [5..5] frequencyTraceableThis bit is used to set the logical + * value of the frequencyTraceable member of timePropertiesDS. */ + uint32_t : 2; + __IOM uint32_t FLAG8 : 1; /*!< [8..8] alternateMasterFlag */ + uint32_t : 1; + __IOM uint32_t FLAG10 : 1; /*!< [10..10] unicastFlag */ + uint32_t : 2; + __IOM uint32_t FLAG13 : 1; /*!< [13..13] PTP profile Specific 1 */ + __IOM uint32_t FLAG14 : 1; /*!< [14..14] PTP profile Specific 2 */ + uint32_t : 17; + } ANFR_b; + }; + + union + { + __IOM uint32_t SYNFR; /*!< (@ 0x00000054) Sync Message Flag Field Setting Register */ + + struct + { + uint32_t : 8; + __IOM uint32_t FLAG8 : 1; /*!< [8..8] alternateMasterFlag */ + __IOM uint32_t FLAG9 : 1; /*!< [9..9] twoStepFlag */ + __IOM uint32_t FLAG10 : 1; /*!< [10..10] unicastFlag */ + uint32_t : 2; + __IOM uint32_t FLAG13 : 1; /*!< [13..13] PTP profile Specific 1 */ + __IOM uint32_t FLAG14 : 1; /*!< [14..14] PTP profile Specific 2 */ + uint32_t : 17; + } SYNFR_b; + }; + + union + { + __IOM uint32_t DYRQFR; /*!< (@ 0x00000058) Delay_Req Message Flag Field Setting Register */ + + struct + { + uint32_t : 10; + __IOM uint32_t FLAG10 : 1; /*!< [10..10] unicastFlag */ + uint32_t : 2; + __IOM uint32_t FLAG13 : 1; /*!< [13..13] PTP profile Specific 1 */ + __IOM uint32_t FLAG14 : 1; /*!< [14..14] PTP profile Specific 2 */ + uint32_t : 17; + } DYRQFR_b; + }; + + union + { + __IOM uint32_t DYRPFR; /*!< (@ 0x0000005C) Delay_Resp Message Flag Field Setting Register */ + + struct + { + uint32_t : 8; + __IOM uint32_t FLAG8 : 1; /*!< [8..8] alternateMasterFlag */ + __IOM uint32_t FLAG9 : 1; /*!< [9..9] woStepFlag */ + __IOM uint32_t FLAG10 : 1; /*!< [10..10] unicastFlag */ + uint32_t : 2; + __IOM uint32_t FLAG13 : 1; /*!< [13..13] PTP profile Specific 1 */ + __IOM uint32_t FLAG14 : 1; /*!< [14..14] PTP profile Specific 2 */ + uint32_t : 17; + } DYRPFR_b; + }; + + union + { + __IOM uint32_t SYCIDRU; /*!< (@ 0x00000060) SYNFP Local Clock ID Registers */ + + struct + { + __IOM uint32_t SYCIDRU : 32; /*!< [31..0] These bits hold the setting for the higher-order 32 + * bits of the clock-ID of your port. */ + } SYCIDRU_b; + }; + + union + { + __IOM uint32_t SYCIDRL; /*!< (@ 0x00000064) SYNFP Local Clock ID Registers */ + + struct + { + __IOM uint32_t SYCIDRL : 32; /*!< [31..0] These bits hold the setting for the lower-order 32 bits + * of the clock-ID of your port. */ + } SYCIDRL_b; + }; + + union + { + __IOM uint32_t SYPNUMR; /*!< (@ 0x00000068) SYNFP Local Port Number Register */ + + struct + { + __IOM uint32_t PNUM : 16; /*!< [15..0] Local Port Number SettingThese bits hold the setting + * for the port number of the local port. */ + uint32_t : 16; + } SYPNUMR_b; + }; + __IM uint32_t RESERVED3[5]; + + union + { + __OM uint32_t SYRVLDR; /*!< (@ 0x00000080) SYNFP Register Value Load Directive Register */ + + struct + { + __OM uint32_t BMUP : 1; /*!< [0..0] BMC Update */ + __OM uint32_t STUP : 1; /*!< [1..1] State Update */ + __OM uint32_t ANUP : 1; /*!< [2..2] Announce Message Generation Information Update */ + uint32_t : 29; + } SYRVLDR_b; + }; + __IM uint32_t RESERVED4[3]; + + union + { + __IOM uint32_t SYRFL1R; /*!< (@ 0x00000090) SYNFP Reception Filter Register 1 */ + + struct + { + __IOM uint32_t ANCE0 : 1; /*!< [0..0] Announce Message Processing */ + __IOM uint32_t ANCE1 : 1; /*!< [1..1] Announce Message Processing */ + uint32_t : 2; + __IOM uint32_t SYNC0 : 1; /*!< [4..4] Sync Message Processing */ + __IOM uint32_t SYNC1 : 1; /*!< [5..5] Sync Message Processing */ + __IOM uint32_t SYNC2 : 1; /*!< [6..6] Sync Message Processing */ + uint32_t : 1; + __IOM uint32_t FUP0 : 1; /*!< [8..8] Follow_Up Message Processing */ + __IOM uint32_t FUP1 : 1; /*!< [9..9] Follow_Up Message Processing */ + __IOM uint32_t FUP2 : 1; /*!< [10..10] Follow_Up Message Processing */ + uint32_t : 1; + __IOM uint32_t DRQ0 : 1; /*!< [12..12] Delay_Req Message Processing */ + __IOM uint32_t DRQ1 : 1; /*!< [13..13] Delay_Req Message Processing */ + __IOM uint32_t DRQ2 : 1; /*!< [14..14] Delay_Req Message Processing */ + uint32_t : 1; + __IOM uint32_t DRP0 : 1; /*!< [16..16] Delay_Resp Message Processing */ + __IOM uint32_t DRP1 : 1; /*!< [17..17] Delay_Resp Message Processing */ + __IOM uint32_t DRP2 : 1; /*!< [18..18] Delay_Resp Message Processing */ + uint32_t : 1; + __IOM uint32_t PDRQ0 : 1; /*!< [20..20] Pdelay_Req Message Processing */ + __IOM uint32_t PDRQ1 : 1; /*!< [21..21] Pdelay_Req Message Processing */ + __IOM uint32_t PDRQ2 : 1; /*!< [22..22] Pdelay_Req Message Processing */ + uint32_t : 1; + __IOM uint32_t PDRP0 : 1; /*!< [24..24] Pdelay_Resp Message Processing */ + __IOM uint32_t PDRP1 : 1; /*!< [25..25] Pdelay_Resp Message Processing */ + __IOM uint32_t PDRP2 : 1; /*!< [26..26] Pdelay_Resp Message Processing */ + uint32_t : 1; + __IOM uint32_t PDFUP0 : 1; /*!< [28..28] Pdelay_Resp_Follow_Up Message Processing */ + __IOM uint32_t PDFUP1 : 1; /*!< [29..29] Pdelay_Resp_Follow_Up Message Processing */ + __IOM uint32_t PDFUP2 : 1; /*!< [30..30] Pdelay_Resp_Follow_Up Message Processing */ + uint32_t : 1; + } SYRFL1R_b; + }; + + union + { + __IOM uint32_t SYRFL2R; /*!< (@ 0x00000094) SYNFP Reception Filter Register 2 */ + + struct + { + __IOM uint32_t MAN0 : 1; /*!< [0..0] Management Message Processing Setting */ + __IOM uint32_t MAN1 : 1; /*!< [1..1] Management Message Processing Setting */ + uint32_t : 2; + __IOM uint32_t SIG0 : 1; /*!< [4..4] Signaling Message Processing Setting */ + __IOM uint32_t SIG1 : 1; /*!< [5..5] Signaling Message Processing Setting */ + uint32_t : 22; + __IOM uint32_t ILL0 : 1; /*!< [28..28] Illegal Message Processing Setting */ + __IOM uint32_t ILL1 : 1; /*!< [29..29] Illegal Message Processing Setting */ + uint32_t : 2; + } SYRFL2R_b; + }; + + union + { + __IOM uint32_t SYTRENR; /*!< (@ 0x00000098) SYNFP Transmission Enable Register */ + + struct + { + __IOM uint32_t ANCE : 1; /*!< [0..0] Announce Message Transmission Enable */ + uint32_t : 3; + __IOM uint32_t SYNC : 1; /*!< [4..4] Sync Message Transmission Enable */ + uint32_t : 3; + __IOM uint32_t DRQ : 1; /*!< [8..8] Delay_Req Message Transmission Enable */ + uint32_t : 3; + __IOM uint32_t PDRQ : 1; /*!< [12..12] Pdelay_Req Message Transmission Enable */ + uint32_t : 19; + } SYTRENR_b; + }; + __IM uint32_t RESERVED5; + + union + { + __IOM uint32_t MTCIDU; /*!< (@ 0x000000A0) Master Clock ID Registers */ + + struct + { + __IOM uint32_t MTCIDU : 32; /*!< [31..0] These bits hold the setting for the higher-order 32 + * bits of the clock-ID of the master clock. */ + } MTCIDU_b; + }; + + union + { + __IOM uint32_t MTCIDL; /*!< (@ 0x000000A4) Master Clock ID Registers */ + + struct + { + __IOM uint32_t MTCIDL : 32; /*!< [31..0] These bits hold the setting for the lower-order 32 bits + * of the clock-ID of the master clock. */ + } MTCIDL_b; + }; + + union + { + __IOM uint32_t MTPID; /*!< (@ 0x000000A8) Master clock port number register */ + + struct + { + __IOM uint32_t PNUM : 16; /*!< [15..0] Master Clock Port Number SettingThese bits hold the + * setting for the port number of the master clock. */ + uint32_t : 16; + } MTPID_b; + }; + __IM uint32_t RESERVED6[5]; + + union + { + __IOM uint32_t SYTLIR; /*!< (@ 0x000000C0) SYNFP Transmission Interval Setting Register */ + + struct + { + __IOM uint32_t ANCE : 8; /*!< [7..0] Announce Message Transmission Interval SettingThese bits + * set the interval for the transmission of Announce messages. */ + __IOM uint32_t SYNC : 8; /*!< [15..8] Sync Message Transmission Interval SettingThese bits + * set the interval for the transmission of Sync messages. + * The setting is also placed in the logMessageInterval field + * of transmitted Sync messages. */ + __IOM uint32_t DREQ : 8; /*!< [23..16] Delay_Req Transmission Interval Average Value/ Pdelay_Req + * Transmission Interval SettingThe bits set the average interval + * for the transmission of Delay_Req messages and the interval + * for the transmission of Pdelay_Req messages.The setting + * is also placed in the logMessageInterval field of Delay_Resp + * messages. */ + uint32_t : 8; + } SYTLIR_b; + }; + + union + { + __IM uint32_t SYRLIR; /*!< (@ 0x000000C4) SYNFP Received logMessageInterval Value Indication + * Register */ + + struct + { + __IM uint32_t ANCE : 8; /*!< [7..0] Announce Message logMessageInterval Field IndicationThese + * bits indicate the logMessageInterval field value of a received + * Announce message. */ + __IM uint32_t SYNC : 8; /*!< [15..8] Sync Message logMessageInterval Field IndicationThese + * bits indicate the logMessageInterval field value of a received + * Sync message. */ + __IM uint32_t DRESP : 8; /*!< [23..16] Delay_Resp Message logMessageInterval Field IndicationThese + * bits indicate the logMessageInterval field value of a received + * Delay_Resp message. */ + uint32_t : 8; + } SYRLIR_b; + }; + + union + { + __IM uint32_t OFMRU; /*!< (@ 0x000000C8) offsetFromMaster Value Registers */ + + struct + { + __IM uint32_t OFMRU : 32; /*!< [31..0] These bits indicate the higher-order 32 bits of the + * calculated offsetFromMaster value. */ + } OFMRU_b; + }; + + union + { + __IM uint32_t OFMRL; /*!< (@ 0x000000CC) offsetFromMaster Value Registers */ + + struct + { + __IM uint32_t OFMRL : 32; /*!< [31..0] These bits indicate the lower-order 32 bits of the calculated + * offsetFromMaster value. */ + } OFMRL_b; + }; + + union + { + __IM uint32_t MPDRU; /*!< (@ 0x000000D0) meanPathDelay Value Registers */ + + struct + { + __IM uint32_t MPDRU : 32; /*!< [31..0] These bits indicate the higher-order 32 bits of the + * calculated meanPathDelay value. */ + } MPDRU_b; + }; + + union + { + __IM uint32_t MPDRL; /*!< (@ 0x000000D4) meanPathDelay Value Registers */ + + struct + { + __IM uint32_t MPDRL : 32; /*!< [31..0] These bits indicate the lower-order 32 bits of the calculated + * meanPathDelay value. */ + } MPDRL_b; + }; + __IM uint32_t RESERVED7[2]; + + union + { + __IOM uint32_t GMPR; /*!< (@ 0x000000E0) grandmasterPriority Field Setting Register */ + + struct + { + __IOM uint32_t GMPR2 : 8; /*!< [7..0] grandmasterPriority2 Field Value SettingThese bits are + * used to set the value of the grandmasterPriority2 fields + * of Announce messages. */ + uint32_t : 8; + __IOM uint32_t GMPR1 : 8; /*!< [23..16] grandmasterPriority1 Field Value SettingThese bits + * are used to set the value of the grandmasterPriority1 fields + * of Announce messages. */ + uint32_t : 8; + } GMPR_b; + }; + + union + { + __IOM uint32_t GMCQR; /*!< (@ 0x000000E4) grandmasterClockQuality Field Setting Register */ + + struct + { + __IOM uint32_t GMCQR : 32; /*!< [31..0] These bits are used to set the value of the grandmasterClockQuality + * fields of Announce messages. The correspondence between + * bits and the grandmasterClockQuality fields is as listed + * below.b31 to b24: clockClassb23 to b16: clockAccuracyb15 + * to b0: offsetScaledLogVariance */ + } GMCQR_b; + }; + + union + { + __IOM uint32_t GMIDRU; /*!< (@ 0x000000E8) grandmasterIdentity Field Setting Registers */ + + struct + { + __IOM uint32_t GMIDRU : 32; /*!< [31..0] These bits hold the setting for the higher-order 32 + * bits of the value of the grandmasterIdentity fields of + * Announce messages. */ + } GMIDRU_b; + }; + + union + { + __IOM uint32_t GMIDRL; /*!< (@ 0x000000EC) grandmasterIdentity Field Setting Registers */ + + struct + { + __IOM uint32_t GMIDRL : 32; /*!< [31..0] These bits hold the setting for the lower-order 32 bits + * of the value of the grandmasterIdentity fields of Announce + * messages. */ + } GMIDRL_b; + }; + + union + { + __IOM uint32_t CUOTSR; /*!< (@ 0x000000F0) currentUtcOffset/timeSource Field Setting Register */ + + struct + { + __IOM uint32_t TSRC : 8; /*!< [7..0] timeSource Field SettingThese bits set the value of the + * timeSource fields of Announce messages. */ + uint32_t : 8; + __IOM uint32_t CUTO : 16; /*!< [31..16] currentUtcOffset Field SettingThese bits set the value + * of the currentUtcOffset fields of Announce messages. */ + } CUOTSR_b; + }; + + union + { + __IOM uint32_t SRR; /*!< (@ 0x000000F4) stepsRemoved Field Setting Register */ + + struct + { + __IOM uint32_t SRMV : 16; /*!< [15..0] stepsRemoved Field Value SettingThese bits set the value + * of the stepsRemoved fields of Announce messages. */ + uint32_t : 16; + } SRR_b; + }; + __IM uint32_t RESERVED8[2]; + + union + { + __IOM uint32_t PPMACRU; /*!< (@ 0x00000100) PTP-primary Message Destination MAC Address Setting + * Registers */ + + struct + { + __IOM uint32_t PPMACRU : 24; /*!< [23..0] These bits hold the setting for the higher-order 24 + * bits of the destination MAC address for PTP-primary messages. */ + uint32_t : 8; + } PPMACRU_b; + }; + + union + { + __IOM uint32_t PPMACRL; /*!< (@ 0x00000104) PTP-primary Message Destination MAC Address Setting + * Registers */ + + struct + { + __IOM uint32_t PPMACRL : 24; /*!< [23..0] These bits hold the setting for the lower-order 24 bits + * of the destination MAC address for PTP-primary messages. */ + uint32_t : 8; + } PPMACRL_b; + }; + + union + { + __IOM uint32_t PDMACRU; /*!< (@ 0x00000108) PTP-pdelay Message MAC Address Setting Registers */ + + struct + { + __IOM uint32_t PDMACRU : 24; /*!< [23..0] These bits hold the setting for the higher-order 24 + * bits of the destination MAC address for PTP-pdelay messages. */ + uint32_t : 8; + } PDMACRU_b; + }; + + union + { + __IOM uint32_t PDMACRL; /*!< (@ 0x0000010C) PTP-pdelay Message MAC Address Setting Registers */ + + struct + { + __IOM uint32_t PDMACRL : 24; /*!< [23..0] These bits hold the setting for the lower-order 24 bits + * of the destination MAC address for PTP-pdelay messages. */ + uint32_t : 8; + } PDMACRL_b; + }; + + union + { + __IOM uint32_t PETYPER; /*!< (@ 0x00000110) PTP Message EtherType Setting Register */ + + struct + { + __IOM uint32_t TYPE : 16; /*!< [15..0] PTP Message EtherType Value SettingThese bits hold the + * setting for the EtherType field value for frames in the + * Ethernet II format. */ + uint32_t : 16; + } PETYPER_b; + }; + __IM uint32_t RESERVED9[3]; + + union + { + __IOM uint32_t PPIPR; /*!< (@ 0x00000120) PTP-primary Message Destination IP Address Setting + * Register */ + + struct + { + __IOM uint32_t PPIPR : 32; /*!< [31..0] These bits hold the setting for the destination IP address + * for PTPprimary messages. */ + } PPIPR_b; + }; + + union + { + __IOM uint32_t PDIPR; /*!< (@ 0x00000124) PTP-pdelay Message Destination IP Address Setting + * Register */ + + struct + { + __IOM uint32_t PDIPR : 32; /*!< [31..0] These bits hold the setting for the destination IP address + * for PTPpdelay messages. */ + } PDIPR_b; + }; + + union + { + __IOM uint32_t PETOSR; /*!< (@ 0x00000128) PTP Event Message TOS Setting Register */ + + struct + { + __IOM uint32_t EVTO : 8; /*!< [7..0] PTP Event Message TOS Field Value SettingThese bits hold + * the setting for the value of the TOS field within the IPv4 + * headers of PTP event messages. */ + uint32_t : 24; + } PETOSR_b; + }; + + union + { + __IOM uint32_t PGTOSR; /*!< (@ 0x0000012C) PTP general Message TOS Setting Register */ + + struct + { + __IOM uint32_t GETO : 8; /*!< [7..0] PTP general Message TOS Field Value SettingThese bits + * hold the setting for the value of the TOS field within + * the IPv4 headers of PTP general messages. */ + uint32_t : 24; + } PGTOSR_b; + }; + + union + { + __IOM uint32_t PPTTLR; /*!< (@ 0x00000130) PTP-primary Message TTL Setting Register */ + + struct + { + __IOM uint32_t PRTL : 8; /*!< [7..0] PTP-primary Message TTL Field Value SettingThese bits + * hold the setting for the value of the TTL field within + * the IPv4 headers of PTP-primary messages. */ + uint32_t : 24; + } PPTTLR_b; + }; + + union + { + __IOM uint32_t PDTTLR; /*!< (@ 0x00000134) PTP-pdelay Message TTL Setting Register */ + + struct + { + __IOM uint32_t PDTL : 8; /*!< [7..0] PTP-pdelay Message TTL Field ValueThese bits hold the + * setting for the value of the TTL field within the IPv4 + * headers of PTP-pdelay messages. */ + uint32_t : 24; + } PDTTLR_b; + }; + + union + { + __IOM uint32_t PEUDPR; /*!< (@ 0x00000138) PTP Event Message UDP Destination Port Number + * Setting Register */ + + struct + { + __IOM uint32_t EVUPT : 16; /*!< [15..0] PTP Event Message Destination Port Number SettingThese + * bits hold the setting for the value of the destination + * port number field within the UDP headers of PTP event messages. */ + uint32_t : 16; + } PEUDPR_b; + }; + + union + { + __IOM uint32_t PGUDPR; /*!< (@ 0x0000013C) PTP general Message UDP Destination Port Number + * Setting Register */ + + struct + { + __IOM uint32_t GEUPT : 16; /*!< [15..0] PTP general Message Destination Port NumberThese bits + * hold the setting for the value of the destination port + * number field within the UDP headers of PTP general messages. */ + uint32_t : 16; + } PGUDPR_b; + }; + + union + { + __IOM uint32_t FFLTR; /*!< (@ 0x00000140) Frame Reception Filter Setting Register */ + + struct + { + __IOM uint32_t SEL : 1; /*!< [0..0] Receive MAC Address SelectNOTE: The setting of these + * bits is only effective when EXTPRM=0, ENB=1and RPT=1. */ + __IOM uint32_t PRT : 1; /*!< [1..1] Frame Reception EnableNOTE: The setting of these bits + * is only effective when EXTPRM=0 and ENB=1. */ + __IOM uint32_t ENB : 1; /*!< [2..2] Reception Filter EnableNOTE: The setting of these bits + * is only effective when EXTPRM=0. */ + uint32_t : 13; + __IOM uint32_t EXTPRM : 1; /*!< [16..16] Extended Promiscuous ModeSetting */ + uint32_t : 15; + } FFLTR_b; + }; + __IM uint32_t RESERVED10[7]; + + union + { + __IOM uint32_t FMAC0RU; /*!< (@ 0x00000160) Frame Reception Filter MAC Address 0 Setting + * Register Upper */ + + struct + { + __IOM uint32_t FMAC0RU : 24; /*!< [23..0] These bits specify the upper-order 24 bits of the destination + * MAC address for received multicast frames. */ + uint32_t : 8; + } FMAC0RU_b; + }; + + union + { + __IOM uint32_t FMAC0RL; /*!< (@ 0x00000164) Frame Reception Filter MAC Address 0 Setting + * Register Lower */ + + struct + { + __IOM uint32_t FMAC0RL : 24; /*!< [23..0] These bits specify the lower-order 24 bits of the destination + * MAC address for received multicast frames. */ + uint32_t : 8; + } FMAC0RL_b; + }; + + union + { + __IOM uint32_t FMAC1RU; /*!< (@ 0x00000168) Frame Reception Filter MAC Address 1 Setting + * Register Upper */ + + struct + { + __IOM uint32_t FMAC1RU : 24; /*!< [23..0] These bits specify the upper-order 24 bits of the destination + * MAC address for received multicast frames. */ + uint32_t : 8; + } FMAC1RU_b; + }; + + union + { + __IOM uint32_t FMAC1RL; /*!< (@ 0x0000016C) Frame Reception Filter MAC Address 1 Setting + * Register Lower */ + + struct + { + __IOM uint32_t FMAC1RL : 24; /*!< [23..0] These bits specify the lower-order 24 bits of the destination + * MAC address for received multicast frames. */ + uint32_t : 8; + } FMAC1RL_b; + }; + __IM uint32_t RESERVED11[20]; + + union + { + __IOM uint32_t DASYMRU; /*!< (@ 0x000001C0) Asymmetric Delay Setting Registers */ + + struct + { + __IOM uint32_t DASYMRU : 16; /*!< [15..0] These bits hold the setting for the higher-order 16 + * bits of the asymmetric delay value. */ + uint32_t : 16; + } DASYMRU_b; + }; + + union + { + __IOM uint32_t DASYMRL; /*!< (@ 0x000001C4) Asymmetric Delay Setting Registers */ + + struct + { + __IOM uint32_t DASYMRL : 32; /*!< [31..0] These bits hold the setting for the lower-order 32 bits + * of the asymmetric delay value. */ + } DASYMRL_b; + }; + + union + { + __IOM uint32_t TSLATR; /*!< (@ 0x000001C8) Timestamp Latency Setting Register */ + + struct + { + __IOM uint32_t EGP : 16; /*!< [15..0] Input Port Timestamp Latency SettingThese bits hold + * the setting for the time stamp latency (ns) for the input + * ports. */ + __IOM uint32_t INGP : 16; /*!< [31..16] Output Port Timestamp Latency SettingThese bits hold + * the setting for the time stamp latency (ns) for the output + * ports. */ + } TSLATR_b; + }; + + union + { + __IOM uint32_t SYCONFR; /*!< (@ 0x000001CC) SYNFP Operation Setting Register */ + + struct + { + __IOM uint32_t TCYC : 8; /*!< [7..0] PTP Message Transmission Interval SettingThese bits are + * used to set the time from the completion of one transmission + * to the start of the next in cycles of the transmission + * clock. A value n in these bits means that a transmission + * interval of n cycles will be secured.No interval is secured + * if the setting is 00h.We recommend the setting 28h (40 + * cycles). */ + uint32_t : 4; + __IOM uint32_t SBDIS : 1; /*!< [12..12] Sync Message Transmission Bandwidth Securing Disable */ + uint32_t : 3; + __IOM uint32_t FILDIS : 1; /*!< [16..16] Receive Message domainNumber Filter Disable */ + uint32_t : 3; + __IOM uint32_t TCMOD : 1; /*!< [20..20] TC Mode Setting */ + uint32_t : 11; + } SYCONFR_b; + }; + + union + { + __IOM uint32_t SYFORMR; /*!< (@ 0x000001D0) SYNFP Frame Format Setting Register */ + + struct + { + __IOM uint32_t FORM0 : 1; /*!< [0..0] Ethernet/UDP Encapsulation */ + __IOM uint32_t FORM1 : 1; /*!< [1..1] Ethernet Frame Format Setting */ + uint32_t : 30; + } SYFORMR_b; + }; + + union + { + __IOM uint32_t RSTOUTR; /*!< (@ 0x000001D4) Response Message Reception Timeout Register */ + + struct + { + __IOM uint32_t RSTOUTR : 32; /*!< [31..0] Response Message Reception Timeout Time SettingA response + * message not being received within n x 1024 (ns), where + * n is the setting, is judged to represent a timeout. */ + } RSTOUTR_b; + }; +} R_ETHERC_EPTPC_Type; /*!< Size = 472 (0x1d8) */ + +/* =========================================================================================================================== */ +/* ================ R_ETHERC_EPTPC_CFG ================ */ +/* =========================================================================================================================== */ + +/** + * @brief Ethernet PTP Configuration (R_ETHERC_EPTPC_CFG) + */ + +typedef struct /*!< (@ 0x40064500) R_ETHERC_EPTPC_CFG Structure */ +{ + union + { + __IOM uint32_t PTRSTR; /*!< (@ 0x00000000) EPTPC Reset Register */ + + struct + { + __IOM uint32_t RESET : 1; /*!< [0..0] EPTPC Software Reset */ + uint32_t : 31; + } PTRSTR_b; + }; + + union + { + __IOM uint32_t STCSELR; /*!< (@ 0x00000004) STCA Clock Select Register */ + + struct + { + __IOM uint32_t SCLKDIV : 3; /*!< [2..0] PCLKA Clock Frequency Division */ + uint32_t : 5; + __IOM uint32_t SCLKSEL : 3; /*!< [10..8] STCA Clock Select */ + uint32_t : 21; + } STCSELR_b; + }; + + union + { + __IOM uint32_t BYPASS; /*!< (@ 0x00000008) Bypass 1588 module Register */ + + struct + { + __IOM uint32_t BYPASS0 : 1; /*!< [0..0] Bypass 1588 module for Ether 0ch */ + uint32_t : 15; + __IOM uint32_t BYPASS1 : 1; /*!< [16..16] Bypass 1588 module for Ether 1ch */ + uint32_t : 15; + } BYPASS_b; + }; +} R_ETHERC_EPTPC_CFG_Type; /*!< Size = 12 (0xc) */ + +/* =========================================================================================================================== */ +/* ================ R_ETHERC_EPTPC_COMMON ================ */ +/* =========================================================================================================================== */ + +/** + * @brief Ethernet PTP Controller Common (R_ETHERC_EPTPC_COMMON) + */ + +typedef struct /*!< (@ 0x40065000) R_ETHERC_EPTPC_COMMON Structure */ +{ + union + { + __IOM uint32_t MIESR; /*!< (@ 0x00000000) MINT Interrupt Source Status Register */ + + struct + { + __IM uint32_t ST : 1; /*!< [0..0] STCA Status Flag */ + __IM uint32_t SY0 : 1; /*!< [1..1] SYNFP0 Status Flag */ + __IM uint32_t SY1 : 1; /*!< [2..2] SYNFP1 Status Flag */ + __IM uint32_t PRC : 1; /*!< [3..3] PRC-TC Status Flag */ + uint32_t : 12; + __IOM uint32_t CYC0 : 1; /*!< [16..16] Pulse Output Timer 0 Rising Edge Detection Flag */ + __IOM uint32_t CYC1 : 1; /*!< [17..17] Pulse Output Timer 1 Rising Edge Detection Flag */ + __IOM uint32_t CYC2 : 1; /*!< [18..18] Pulse Output Timer 2 Rising Edge Detection Flag */ + __IOM uint32_t CYC3 : 1; /*!< [19..19] Pulse Output Timer 3 Rising Edge Detection Flag */ + __IOM uint32_t CYC4 : 1; /*!< [20..20] Pulse Output Timer 4 Rising Edge Detection Flag */ + __IOM uint32_t CYC5 : 1; /*!< [21..21] Pulse Output Timer 5 Rising Edge Detection Flag */ + uint32_t : 10; + } MIESR_b; + }; + + union + { + __IOM uint32_t MIEIPR; /*!< (@ 0x00000004) MINT Interrupt Request Permission Register */ + + struct + { + __IOM uint32_t ST : 1; /*!< [0..0] STCA Status Interrupt Request Permission */ + __IOM uint32_t SY0 : 1; /*!< [1..1] SYNFP0 Status Interrupt Request Permission */ + __IOM uint32_t SY1 : 1; /*!< [2..2] SYNFP1 Status Interrupt Request Permission */ + __IOM uint32_t PRC : 1; /*!< [3..3] PRC-TC Status Interrupt Request Permission */ + uint32_t : 12; + __IOM uint32_t CYC0 : 1; /*!< [16..16] Pulse Output Timer 0 Rising Edge Detection Interrupt + * Request Permission */ + __IOM uint32_t CYC1 : 1; /*!< [17..17] Pulse Output Timer 1 Rising Edge Detection Interrupt + * Request Permission */ + __IOM uint32_t CYC2 : 1; /*!< [18..18] Pulse Output Timer 2 Rising Edge Detection Interrupt + * Request Permission */ + __IOM uint32_t CYC3 : 1; /*!< [19..19] Pulse Output Timer 3 Rising Edge Detection Interrupt + * Request Permission */ + __IOM uint32_t CYC4 : 1; /*!< [20..20] Pulse Output Timer 4 Rising Edge Detection Interrupt + * Request Permission */ + __IOM uint32_t CYC5 : 1; /*!< [21..21] Pulse Output Timer 5 Rising Edge Detection Interrupt + * Request Permission */ + uint32_t : 10; + } MIEIPR_b; + }; + __IM uint32_t RESERVED[2]; + + union + { + __IOM uint32_t ELIPPR; /*!< (@ 0x00000010) ELC Output/ETHER_IPLS Interrupt Request Permission + * Register */ + + struct + { + __IOM uint32_t CYCP0 : 1; /*!< [0..0] Pulse Output Timer 0 Rising Edge Detection Event Output + * Enable */ + __IOM uint32_t CYCP1 : 1; /*!< [1..1] Pulse Output Timer 1 Rising Edge Detection Event Output + * Enable */ + __IOM uint32_t CYCP2 : 1; /*!< [2..2] Pulse Output Timer 2 Rising Edge Detection Event Output + * Enable */ + __IOM uint32_t CYCP3 : 1; /*!< [3..3] Pulse Output Timer 3 Rising Edge Detection Event Output + * Enable */ + __IOM uint32_t CYCP4 : 1; /*!< [4..4] Pulse Output Timer 4 Rising Edge Detection Event Output + * Enable */ + __IOM uint32_t CYCP5 : 1; /*!< [5..5] Pulse Output Timer 5 Rising Edge Detection Event Output + * Enable */ + uint32_t : 2; + __IOM uint32_t CYCN0 : 1; /*!< [8..8] Pulse Output Timer 0 Falling Edge Detection Event Output + * Enable */ + __IOM uint32_t CYCN1 : 1; /*!< [9..9] Pulse Output Timer 1 Falling Edge Detection Event Output + * Enable */ + __IOM uint32_t CYCN2 : 1; /*!< [10..10] Pulse Output Timer 2 Falling Edge Detection Event Output + * Enable */ + __IOM uint32_t CYCN3 : 1; /*!< [11..11] Pulse Output Timer 3 Falling Edge Detection Event Output + * Enable */ + __IOM uint32_t CYCN4 : 1; /*!< [12..12] Pulse Output Timer 4 Falling Edge Detection Event Output + * Enable */ + __IOM uint32_t CYCN5 : 1; /*!< [13..13] Pulse Output Timer 5 Falling Edge Detection Event Output + * Enable */ + uint32_t : 2; + __IOM uint32_t PLSP : 1; /*!< [16..16] Pulse Output Timer Rising Edge Detection IPLS Interrupt + * Request Permission */ + uint32_t : 7; + __IOM uint32_t PLSN : 1; /*!< [24..24] Pulse Output Timer Falling Edge Detection IPLS Interrupt + * Request Permission */ + uint32_t : 7; + } ELIPPR_b; + }; + + union + { + __IOM uint32_t ELIPACR; /*!< (@ 0x00000014) ELC Output/IPLS Interrupt Permission Automatic + * Clearing Register */ + + struct + { + __IOM uint32_t CYCP0 : 1; /*!< [0..0] ELIPPR.CYCP0 Bit Automatic Clearing */ + __IOM uint32_t CYCP1 : 1; /*!< [1..1] ELIPPR.CYCP1 Bit Automatic Clearing */ + __IOM uint32_t CYCP2 : 1; /*!< [2..2] ELIPPR.CYCP2 Bit Automatic Clearing */ + __IOM uint32_t CYCP3 : 1; /*!< [3..3] ELIPPR.CYCP3 Bit Automatic Clearing */ + __IOM uint32_t CYCP4 : 1; /*!< [4..4] ELIPPR.CYCP4 Bit Automatic Clearing */ + __IOM uint32_t CYCP5 : 1; /*!< [5..5] ELIPPR.CYCP5 Bit Automatic Clearing */ + uint32_t : 2; + __IOM uint32_t CYCN0 : 1; /*!< [8..8] ELIPPR.CYCN0 Bit Automatic Clearing */ + __IOM uint32_t CYCN1 : 1; /*!< [9..9] ELIPPR.CYCN1 Bit Automatic Clearing */ + __IOM uint32_t CYCN2 : 1; /*!< [10..10] ELIPPR.CYCN2 Bit Automatic Clearing */ + __IOM uint32_t CYCN3 : 1; /*!< [11..11] ELIPPR.CYCN3 Bit Automatic Clearing */ + __IOM uint32_t CYCN4 : 1; /*!< [12..12] ELIPPR.CYCN4 Bit Automatic Clearing */ + __IOM uint32_t CYCN5 : 1; /*!< [13..13] ELIPPR.CYCN5 Bit Automatic Clearing */ + uint32_t : 2; + __IOM uint32_t PLSP : 1; /*!< [16..16] ELIPPR.PLSP Bit Automatic Clearing */ + uint32_t : 7; + __IOM uint32_t PLSN : 1; /*!< [24..24] ELIPPR.PLSN Bit Automatic Clearing */ + uint32_t : 7; + } ELIPACR_b; + }; + __IM uint32_t RESERVED1[10]; + + union + { + __IOM uint32_t STSR; /*!< (@ 0x00000040) STCA Status Register */ + + struct + { + __IOM uint32_t SYNC : 1; /*!< [0..0] Synchronized State Detection Flag */ + __IOM uint32_t SYNCOUT : 1; /*!< [1..1] Synchronization Loss Detection Flag */ + uint32_t : 1; + __IOM uint32_t SYNTOUT : 1; /*!< [3..3] Sync Message Reception Timeout Detection Flag */ + __IOM uint32_t W10D : 1; /*!< [4..4] Worst 10 Acquisition Completion Flag */ + uint32_t : 27; + } STSR_b; + }; + + union + { + __IOM uint32_t STIPR; /*!< (@ 0x00000044) STCA Status Notification Permission Register */ + + struct + { + __IOM uint32_t SYNC : 1; /*!< [0..0] SYNC Status Notification Enable */ + __IOM uint32_t SYNCOUT : 1; /*!< [1..1] SYNCOUT Status Notification Enable */ + uint32_t : 1; + __IOM uint32_t SYNTOUT : 1; /*!< [3..3] SYNTOUT Status Notification Enable */ + __IOM uint32_t W10D : 1; /*!< [4..4] W10D Status Notification Enable */ + uint32_t : 27; + } STIPR_b; + }; + __IM uint32_t RESERVED2[2]; + + union + { + __IOM uint32_t STCFR; /*!< (@ 0x00000050) STCA Clock Frequency Setting Register */ + + struct + { + __IOM uint32_t STCF : 2; /*!< [1..0] STCA Clock Frequency */ + uint32_t : 30; + } STCFR_b; + }; + + union + { + __IOM uint32_t STMR; /*!< (@ 0x00000054) STCA Operating Mode Register */ + + struct + { + __IOM uint32_t WINT : 8; /*!< [7..0] Worst 10 Acquisition Time */ + uint32_t : 5; + __IOM uint32_t CMOD : 1; /*!< [13..13] Time Synchronization Correction Mode */ + uint32_t : 1; + __IOM uint32_t W10S : 1; /*!< [15..15] Worst 10 Acquisition Control Select */ + __IOM uint32_t SYTH : 4; /*!< [19..16] Synchronized State Detection Threshold Setting */ + __IOM uint32_t DVTH : 4; /*!< [23..20] Synchronization Loss Detection Threshold Setting */ + uint32_t : 4; + __IOM uint32_t ALEN0 : 1; /*!< [28..28] Alarm Detection Enable 0 */ + __IOM uint32_t ALEN1 : 1; /*!< [29..29] Alarm Detection Enable 1 */ + uint32_t : 2; + } STMR_b; + }; + + union + { + __IOM uint32_t SYNTOR; /*!< (@ 0x00000058) Sync Message Reception Timeout Register */ + + struct + { + __IOM uint32_t SYNTOR : 32; /*!< [31..0] A Sync message not being received within 1024 x n (ns), + * where n is the setting, leads to a timeout for reception + * of Sync messages, leading to the STSR.SYNTOUT flag being + * set to 1. */ + } SYNTOR_b; + }; + __IM uint32_t RESERVED3; + + union + { + __IOM uint32_t IPTSELR; /*!< (@ 0x00000060) IPLS Interrupt Request Timer Select Register */ + + struct + { + __IOM uint32_t IPTSEL0 : 1; /*!< [0..0] Pulse Output Timer 0 Select */ + __IOM uint32_t IPTSEL1 : 1; /*!< [1..1] Pulse Output Timer 1 Select */ + __IOM uint32_t IPTSEL2 : 1; /*!< [2..2] Pulse Output Timer 2 Select */ + __IOM uint32_t IPTSEL3 : 1; /*!< [3..3] Pulse Output Timer 3 Select */ + __IOM uint32_t IPTSEL4 : 1; /*!< [4..4] Pulse Output Timer 4 Select */ + __IOM uint32_t IPTSEL5 : 1; /*!< [5..5] Pulse Output Timer 5 Select */ + uint32_t : 26; + } IPTSELR_b; + }; + + union + { + __IOM uint32_t MITSELR; /*!< (@ 0x00000064) MINT Interrupt Request Timer Select Register */ + + struct + { + __IOM uint32_t MINTEN0 : 1; /*!< [0..0] Pulse Output Timer 0 MINT Interrupt Output Enable */ + __IOM uint32_t MINTEN1 : 1; /*!< [1..1] Pulse Output Timer 1 MINT Interrupt Output Enable */ + __IOM uint32_t MINTEN2 : 1; /*!< [2..2] Pulse Output Timer 2 MINT Interrupt Output Enable */ + __IOM uint32_t MINTEN3 : 1; /*!< [3..3] Pulse Output Timer 3 MINT Interrupt Output Enable */ + __IOM uint32_t MINTEN4 : 1; /*!< [4..4] Pulse Output Timer 4 MINT Interrupt Output Enable */ + __IOM uint32_t MINTEN5 : 1; /*!< [5..5] Pulse Output Timer 5 MINT Interrupt Output Enable */ + uint32_t : 26; + } MITSELR_b; + }; + + union + { + __IOM uint32_t ELTSELR; /*!< (@ 0x00000068) ELC Output Timer Select Register */ + + struct + { + __IOM uint32_t ELTDIS0 : 1; /*!< [0..0] Pulse Output Timer 0 Event Generation Disable */ + __IOM uint32_t ELTDIS1 : 1; /*!< [1..1] Pulse Output Timer 1 Event Generation Disable */ + __IOM uint32_t ELTDIS2 : 1; /*!< [2..2] Pulse Output Timer 2 Event Generation Disable */ + __IOM uint32_t ELTDIS3 : 1; /*!< [3..3] Pulse Output Timer 3 Event Generation Disable */ + __IOM uint32_t ELTDIS4 : 1; /*!< [4..4] Pulse Output Timer 4 Event Generation Disable */ + __IOM uint32_t ELTDIS5 : 1; /*!< [5..5] Pulse Output Timer 5 Event Generation Disable */ + uint32_t : 26; + } ELTSELR_b; + }; + + union + { + __IOM uint32_t STCHSELR; /*!< (@ 0x0000006C) Time Synchronization Channel Select Register */ + + struct + { + __IOM uint32_t SYSEL : 1; /*!< [0..0] Timer Information Input SelectNOTE: Do not change the + * value of this bit while the SYNSTARTR.STR bit is 1. */ + uint32_t : 31; + } STCHSELR_b; + }; + __IM uint32_t RESERVED4[4]; + + union + { + __IOM uint32_t SYNSTARTR; /*!< (@ 0x00000080) Slave Time Synchronization Start Register */ + + struct + { + __IOM uint32_t STR : 1; /*!< [0..0] Slave Time Synchronization Control */ + uint32_t : 31; + } SYNSTARTR_b; + }; + + union + { + __OM uint32_t LCIVLDR; /*!< (@ 0x00000084) Local Time Counter Initial Value Load Directive + * Register */ + + struct + { + __OM uint32_t LOAD : 1; /*!< [0..0] Local Time Counter Initial Value Load Directive */ + uint32_t : 31; + } LCIVLDR_b; + }; + __IM uint32_t RESERVED5[2]; + + union + { + __IOM uint32_t SYNTDARU; /*!< (@ 0x00000090) Synchronization Loss Detection Threshold Registers */ + + struct + { + __IOM uint32_t SYNTDARU : 32; /*!< [31..0] These bits hold the setting for the higher-order 32 + * bits of the threshold for detection of loss of synchronization. */ + } SYNTDARU_b; + }; + + union + { + __IOM uint32_t SYNTDARL; /*!< (@ 0x00000094) Synchronization Loss Detection Threshold Registers */ + + struct + { + __IOM uint32_t SYNTDARL : 32; /*!< [31..0] These bits hold the setting for the lower-order 32 bits + * of the threshold for detection of loss of synchronization. */ + } SYNTDARL_b; + }; + + union + { + __IOM uint32_t SYNTDBRU; /*!< (@ 0x00000098) Synchronization Detection Threshold Registers */ + + struct + { + __IOM uint32_t SYNTDBRU : 32; /*!< [31..0] These bits hold the setting for the higher-order 32 + * bits of the threshold for detection of synchronization. */ + } SYNTDBRU_b; + }; + + union + { + __IOM uint32_t SYNTDBRL; /*!< (@ 0x0000009C) Synchronization Detection Threshold Registers */ + + struct + { + __IOM uint32_t SYNTDBRL : 32; /*!< [31..0] These bits hold the setting for the lower-order 32 bits + * of the threshold for detection of synchronization. */ + } SYNTDBRL_b; + }; + __IM uint32_t RESERVED6[4]; + + union + { + __IOM uint32_t LCIVRU; /*!< (@ 0x000000B0) Local Time Counter Initial Value Registers */ + + struct + { + __IOM uint32_t LCIVRU : 16; /*!< [15..0] These bits hold the setting for the higher-order 16 + * bits of the integer portion of the initial value for the + * local timer counter. */ + uint32_t : 16; + } LCIVRU_b; + }; + + union + { + __IOM uint32_t LCIVRM; /*!< (@ 0x000000B4) Local Time Counter Initial Value Registers */ + + struct + { + __IOM uint32_t LCIVRM : 32; /*!< [31..0] These bits hold the setting for the lower-order 32 bits + * of the integer portion of the initial value for the local + * timer counter. */ + } LCIVRM_b; + }; + + union + { + __IOM uint32_t LCIVRL; /*!< (@ 0x000000B8) Local Time Counter Initial Value Registers */ + + struct + { + __IOM uint32_t LCIVRL : 32; /*!< [31..0] These bits hold the setting for the fractional portion + * of the initial value of the local timer counter in nanoseconds. */ + } LCIVRL_b; + }; + __IM uint32_t RESERVED7[26]; + + union + { + __IOM uint32_t GETW10R; /*!< (@ 0x00000124) Worst 10 Acquisition Directive Register */ + + struct + { + __IOM uint32_t GW10 : 1; /*!< [0..0] Worst 10 Acquisition Directive */ + uint32_t : 31; + } GETW10R_b; + }; + + union + { + __IOM uint32_t PLIMITRU; /*!< (@ 0x00000128) Positive Gradient Limit Registers */ + + struct + { + __IOM uint32_t PLIMITRU : 31; /*!< [30..0] These bits hold the setting for the higher-order 31 + * bits of the limit for the positive gradient. */ + uint32_t : 1; + } PLIMITRU_b; + }; + + union + { + __IOM uint32_t PLIMITRM; /*!< (@ 0x0000012C) Positive Gradient Limit Registers */ + + struct + { + __IOM uint32_t PLIMITRM : 32; /*!< [31..0] These bits hold the setting for the middle-order 32 + * bits of the limit for the positive gradient. */ + } PLIMITRM_b; + }; + + union + { + __IOM uint32_t PLIMITRL; /*!< (@ 0x00000130) Positive Gradient Limit Registers */ + + struct + { + __IOM uint32_t PLIMITRL : 32; /*!< [31..0] These bits hold the setting for the lower-order 32 bits + * of the limit for the positive gradient. */ + } PLIMITRL_b; + }; + + union + { + __IOM uint32_t MLIMITRU; /*!< (@ 0x00000134) Negative Gradient Limit Registers */ + + struct + { + __IOM uint32_t MLIMITRU : 31; /*!< [30..0] These bits hold the setting for the higher-order 31 + * bits of the limit for the negative gradient. */ + uint32_t : 1; + } MLIMITRU_b; + }; + + union + { + __IOM uint32_t MLIMITRM; /*!< (@ 0x00000138) Negative Gradient Limit Registers */ + + struct + { + __IOM uint32_t MLIMITRM : 32; /*!< [31..0] These bits hold the setting for the middle-order 32 + * bits of the limit for the negative gradient. */ + } MLIMITRM_b; + }; + + union + { + __IOM uint32_t MLIMITRL; /*!< (@ 0x0000013C) Negative Gradient Limit Registers */ + + struct + { + __IOM uint32_t MLIMITRL : 32; /*!< [31..0] These bits hold the setting for the lower-order 32 bits + * of the limit for the negative gradient. */ + } MLIMITRL_b; + }; + + union + { + __IOM uint32_t GETINFOR; /*!< (@ 0x00000140) Statistical Information Retention Control Register */ + + struct + { + __IOM uint32_t INFO : 1; /*!< [0..0] Information Retention ControlNOTE: Once information fetching + * is directed, values of various statistical information + * read before completion of information fetching are not + * guaranteed. */ + uint32_t : 31; + } GETINFOR_b; + }; + __IM uint32_t RESERVED8[11]; + + union + { + __IM uint32_t LCCVRU; /*!< (@ 0x00000170) Local Time Counters */ + + struct + { + __IM uint32_t LCCVRU : 16; /*!< [15..0] These bits are for reading the higher-order 16 bits + * of the integer portion of the local timer counter's value. */ + uint32_t : 16; + } LCCVRU_b; + }; + + union + { + __IM uint32_t LCCVRM; /*!< (@ 0x00000174) Local Time Counters */ + + struct + { + __IM uint32_t LCCVRM : 32; /*!< [31..0] These bits are for reading the lower-order 32 bits of + * the integer portion of the local timer counter's value. */ + } LCCVRM_b; + }; + + union + { + __IM uint32_t LCCVRL; /*!< (@ 0x00000178) Local Time Counters */ + + struct + { + __IM uint32_t LCCVRL : 32; /*!< [31..0] These bits are for reading the fractional portion of + * the local timer counter's value (in nanoseconds). */ + } LCCVRL_b; + }; + __IM uint32_t RESERVED9[37]; + + union + { + __IM uint32_t PW10VRU; /*!< (@ 0x00000210) Positive Gradient Worst 10 Value Registers */ + + struct + { + __IM uint32_t PW10VRU : 32; /*!< [31..0] These bits are for reading the higher-order 32 bits + * of the positive gradient value. */ + } PW10VRU_b; + }; + + union + { + __IM uint32_t PW10VRM; /*!< (@ 0x00000214) Positive Gradient Worst 10 Value Registers */ + + struct + { + __IM uint32_t PW10VRM : 32; /*!< [31..0] These bits are for reading the middle-order 32 bits + * of the positive gradient value. */ + } PW10VRM_b; + }; + + union + { + __IM uint32_t PW10VRL; /*!< (@ 0x00000218) Positive Gradient Worst 10 Value Registers */ + + struct + { + __IM uint32_t PW10VRL : 32; /*!< [31..0] These bits are for reading the lower-order 32 bits of + * the positive gradient value. */ + } PW10VRL_b; + }; + __IM uint32_t RESERVED10[45]; + + union + { + __IM uint32_t MW10RU; /*!< (@ 0x000002D0) Negative Gradient Worst 10 Value Registers */ + + struct + { + __IM uint32_t MW10RU : 32; /*!< [31..0] These bits are for reading the higher-order 32 bits + * of the negative gradient value. */ + } MW10RU_b; + }; + + union + { + __IM uint32_t MW10RM; /*!< (@ 0x000002D4) Negative Gradient Worst 10 Value Registers */ + + struct + { + __IM uint32_t MW10RM : 32; /*!< [31..0] These bits are for reading the middle-order 32 bits + * of the negative gradient value. */ + } MW10RM_b; + }; + + union + { + __IM uint32_t MW10RL; /*!< (@ 0x000002D8) Negative Gradient Worst 10 Value Registers */ + + struct + { + __IM uint32_t MW10RL : 32; /*!< [31..0] These bits are for reading the lower-order 32 bits of + * the negative gradient value. */ + } MW10RL_b; + }; + __IM uint32_t RESERVED11[9]; + __IOM R_ETHERC_EPTPC_COMMON_TM_Type TM[6]; /*!< (@ 0x00000300) Timer Setting Registers */ + __IM uint32_t RESERVED12[7]; + + union + { + __IOM uint32_t TMSTARTR; /*!< (@ 0x0000037C) Timer Start Register */ + + struct + { + __IOM uint32_t EN0 : 1; /*!< [0..0] Pulse Output Timer 0 Start */ + __IOM uint32_t EN1 : 1; /*!< [1..1] Pulse Output Timer 1 Start */ + __IOM uint32_t EN2 : 1; /*!< [2..2] Pulse Output Timer 2 Start */ + __IOM uint32_t EN3 : 1; /*!< [3..3] Pulse Output Timer 3 Start */ + __IOM uint32_t EN4 : 1; /*!< [4..4] Pulse Output Timer 4 Start */ + __IOM uint32_t EN5 : 1; /*!< [5..5] Pulse Output Timer 5 Start */ + uint32_t : 26; + } TMSTARTR_b; + }; + __IM uint32_t RESERVED13[32]; + + union + { + __IOM uint32_t PRSR; /*!< (@ 0x00000400) PRC-TC Status Register */ + + struct + { + __IOM uint32_t OVRE0 : 1; /*!< [0..0] Relay Packet Overflow Detection Flag 0 */ + __IOM uint32_t OVRE1 : 1; /*!< [1..1] Relay Packet Overflow Detection Flag 1 */ + __IOM uint32_t OVRE2 : 1; /*!< [2..2] Relay Packet Overflow Detection Flag 2 */ + __IOM uint32_t OVRE3 : 1; /*!< [3..3] Relay Packet Overflow Detection Flag 3 */ + uint32_t : 4; + __IOM uint32_t MACE : 1; /*!< [8..8] Originating MAC Address Mismatch Detection Flag */ + uint32_t : 19; + __IOM uint32_t URE0 : 1; /*!< [28..28] Relay Packet Underflow Detection Flag 0 */ + __IOM uint32_t URE1 : 1; /*!< [29..29] Relay Packet Underflow Detection Flag 1 */ + uint32_t : 2; + } PRSR_b; + }; + + union + { + __IOM uint32_t PRIPR; /*!< (@ 0x00000404) PRC-TC Status Notification Permission Register */ + + struct + { + __IOM uint32_t OVRE0 : 1; /*!< [0..0] PRSR.OVRE0 Status Notification Permission */ + __IOM uint32_t OVRE1 : 1; /*!< [1..1] PRSR.OVRE1 Status Notification Permission */ + __IOM uint32_t OVRE2 : 1; /*!< [2..2] PRSR.OVRE2 Status Notification Permission */ + __IOM uint32_t OVRE3 : 1; /*!< [3..3] PRSR.OVRE3 Status Notification Permission */ + uint32_t : 4; + __IOM uint32_t MACE : 1; /*!< [8..8] PRSR.MACE Status Notification Permission */ + uint32_t : 19; + __IOM uint32_t URE0 : 1; /*!< [28..28] PRSR.URE0 Status Notification Permission */ + __IOM uint32_t URE1 : 1; /*!< [29..29] PRSR.URE1 Status Notification Permission */ + uint32_t : 2; + } PRIPR_b; + }; + __IM uint32_t RESERVED14[2]; + __IOM R_ETHERC_EPTPC_COMMON_PR_Type PR[2]; /*!< (@ 0x00000410) Local MAC Address Registers */ + + union + { + __IOM uint32_t TRNDISR; /*!< (@ 0x00000420) Packet Transmission Control Register */ + + struct + { + __IOM uint32_t TDIS : 2; /*!< [1..0] Packet Transmission Control */ + uint32_t : 30; + } TRNDISR_b; + }; + __IM uint32_t RESERVED15[3]; + + union + { + __IOM uint32_t TRNMR; /*!< (@ 0x00000430) Relay Mode Register */ + + struct + { + __IOM uint32_t MOD : 1; /*!< [0..0] Cut-Through Mode */ + uint32_t : 7; + __IOM uint32_t FWD0 : 1; /*!< [8..8] Channel 0 Relay Enable */ + __IOM uint32_t FWD1 : 1; /*!< [9..9] Channel 1 Relay Enable */ + uint32_t : 22; + } TRNMR_b; + }; + + union + { + __IOM uint32_t TRNCTTDR; /*!< (@ 0x00000434) Cut-Through Transfer Start Threshold Register */ + + struct + { + __IOM uint32_t THVAL : 11; /*!< [10..0] FIFO Read Start ThresholdThreshold for starting to read + * data from the relay FIFO in cut-through mode (specified + * as the number of bytes)NOTE1: A value cannot be set in + * the lower-order 2 bits. These bits are fixed to 0.NOTE2: + * A value of less than 96 bytes cannot be set. */ + uint32_t : 21; + } TRNCTTDR_b; + }; +} R_ETHERC_EPTPC_COMMON_Type; /*!< Size = 1080 (0x438) */ + +/* =========================================================================================================================== */ +/* ================ R_FACI_HP_CMD ================ */ +/* =========================================================================================================================== */ + +/** + * @brief Flash Application Command Interface Command-Issuing Area (R_FACI_HP_CMD) + */ + +typedef struct /*!< (@ 0x407E0000) 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 /*!< (@ 0x407FE000) R_FACI_HP Structure */ +{ + __IM uint32_t RESERVED[4]; + + union + { + __IOM uint8_t FASTAT; /*!< (@ 0x00000010) Flash Access Status */ + + struct + { + __IM uint8_t ECRCT : 1; /*!< [0..0] ECRCT */ + uint8_t : 2; + __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 + { + __IOM uint8_t ECRCTIE : 1; /*!< [0..0] Error Correct Interrupt Enable */ + uint8_t : 2; + __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 Trust */ + 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[7]; + + union + { + __IM uint16_t FPESTAT; /*!< (@ 0x000000C0) Program/Erase Error Status */ + + struct + { + __IM uint16_t PEERRST : 8; /*!< [7..0] P/E Error Status */ + uint16_t : 8; + } FPESTAT_b; + }; + __IM uint16_t RESERVED19; + __IM uint32_t RESERVED20[3]; + + 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 RESERVED21; + __IM uint16_t RESERVED22; + + 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 RESERVED23; + __IM uint16_t RESERVED24; + + 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 RESERVED25; + + 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 RESERVED26; + + 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 RESERVED27; +} R_FACI_HP_Type; /*!< Size = 236 (0xec) */ + +/* =========================================================================================================================== */ +/* ================ R_FACI_LP ================ */ +/* =========================================================================================================================== */ + +/** + * @brief Flash Application Command Interface (R_FACI_LP) + */ + +typedef struct /*!< (@ 0x407EC000) R_FACI_LP Structure */ +{ + __IM uint32_t RESERVED[36]; + __IOM uint8_t DFLCTL; /*!< (@ 0x00000090) Flash P/E Mode Control Register */ + __IM uint8_t RESERVED1; + __IM uint16_t RESERVED2; + __IM uint32_t RESERVED3[27]; + + union + { + __IOM uint8_t FPMCR; /*!< (@ 0x00000100) Flash P/E Mode Control Register */ + + struct + { + uint8_t : 1; + __IOM uint8_t FMS0 : 1; /*!< [1..1] Flash Operating Mode Select 0FMS2,1,0: 000: Read mode + * 011: Discharge mode 1 111: Discharge mode 2 101: Code Flash + * P/E mode 010: Data flash P/E mode Others: Setting prohibited. */ + uint8_t : 1; + __IOM uint8_t RPDIS : 1; /*!< [3..3] Code Flash P/E Disable */ + __IOM uint8_t FMS1 : 1; /*!< [4..4] The bit to make data flash a programming modeRefer to + * the description of the FMS0 bit. */ + uint8_t : 1; + __IOM uint8_t VLPE : 1; /*!< [6..6] Low-Voltage P/E Mode Enable */ + __IOM uint8_t FMS2 : 1; /*!< [7..7] Flash Operating Mode Select 2.Refer to the description + * of the FMS0 bit. */ + } FPMCR_b; + }; + __IM uint8_t RESERVED4; + __IM uint16_t RESERVED5; + + union + { + __IOM uint8_t FASR; /*!< (@ 0x00000104) Flash Area Select Register */ + + struct + { + __IOM uint8_t EXS : 1; /*!< [0..0] Extra area select */ + uint8_t : 7; + } FASR_b; + }; + __IM uint8_t RESERVED6; + __IM uint16_t RESERVED7; + + union + { + __IOM uint16_t FSARL; /*!< (@ 0x00000108) Flash Processing Start Address Register L */ + + struct + { + __IOM uint16_t FSAR15_0 : 16; /*!< [15..0] Start address */ + } FSARL_b; + }; + __IM uint16_t RESERVED8; + __IM uint32_t RESERVED9; + + union + { + __IOM uint16_t FSARH; /*!< (@ 0x00000110) Flash Processing Start Address Register H */ + + struct + { + __IOM uint16_t FSAR20_16 : 5; /*!< [4..0] Start address */ + uint16_t : 4; + __IOM uint16_t FSAR31_25 : 7; /*!< [15..9] Start address */ + } FSARH_b; + }; + __IM uint16_t RESERVED10; + + union + { + __IOM uint8_t FCR; /*!< (@ 0x00000114) Flash Control Register */ + + struct + { + __IOM uint8_t CMD : 4; /*!< [3..0] Software Command Setting */ + __IOM uint8_t DRC : 1; /*!< [4..4] Data Read Completion */ + uint8_t : 1; + __IOM uint8_t STOP : 1; /*!< [6..6] Forced Processing Stop */ + __IOM uint8_t OPST : 1; /*!< [7..7] Processing Start */ + } FCR_b; + }; + __IM uint8_t RESERVED11; + __IM uint16_t RESERVED12; + + union + { + __IOM uint16_t FEARL; /*!< (@ 0x00000118) Flash Processing End Address Register L */ + + struct + { + __IOM uint16_t FEAR15_0 : 16; /*!< [15..0] End address */ + } FEARL_b; + }; + __IM uint16_t RESERVED13; + __IM uint32_t RESERVED14; + + union + { + __IOM uint32_t FEARH; /*!< (@ 0x00000120) Flash Processing End Address Register H */ + + struct + { + __IOM uint32_t FEAR20_16 : 5; /*!< [4..0] End address */ + uint32_t : 4; + __IOM uint32_t FEAR31_25 : 7; /*!< [15..9] End address */ + uint32_t : 16; + } FEARH_b; + }; + + union + { + __IOM uint32_t FRESETR; /*!< (@ 0x00000124) Flash Reset Register */ + + struct + { + __IOM uint32_t FRESET : 1; /*!< [0..0] Software Reset of the registers */ + uint32_t : 31; + } FRESETR_b; + }; + + union + { + __IM uint32_t FSTATR00; /*!< (@ 0x00000128) Flash Status Register00 */ + + struct + { + __IM uint32_t ERERR0 : 1; /*!< [0..0] Erase Error Flag0 */ + __IM uint32_t PRGERR0 : 1; /*!< [1..1] Program Error Flag0 */ + __IM uint32_t PRGERR01 : 1; /*!< [2..2] Program Error Flag 01 */ + __IM uint32_t BCERR0 : 1; /*!< [3..3] Blank Check Error Flag0 */ + __IM uint32_t ILGLERR : 1; /*!< [4..4] Illegal Command Error Flag */ + __IM uint32_t EILGLERR : 1; /*!< [5..5] Extra Area Illegal Command Error Flag */ + uint32_t : 26; + } FSTATR00_b; + }; + + union + { + __IM uint32_t FSTATR1; /*!< (@ 0x0000012C) Flash Status Register1 */ + + struct + { + uint32_t : 1; + __IM uint32_t DRRDY : 1; /*!< [1..1] Data read request */ + uint32_t : 4; + __IM uint32_t FRDY : 1; /*!< [6..6] End status signal of a sequencer */ + __IM uint32_t EXRDY : 1; /*!< [7..7] End status signal of a Extra programming sequencer */ + uint32_t : 24; + } FSTATR1_b; + }; + + union + { + __IOM uint32_t FWBL0; /*!< (@ 0x00000130) Flash Write Buffer Register L0 */ + + struct + { + __IOM uint32_t WDATA : 16; /*!< [15..0] Program data of the program command */ + uint32_t : 16; + } FWBL0_b; + }; + __IM uint32_t RESERVED15; + + union + { + __IOM uint32_t FWBH0; /*!< (@ 0x00000138) Flash Write Buffer Register H0 */ + + struct + { + __IOM uint32_t WDATA : 16; /*!< [15..0] Program data of the program command */ + uint32_t : 16; + } FWBH0_b; + }; + + union + { + __IM uint32_t FSTATR01; /*!< (@ 0x0000013C) Flash Status Register01 */ + + struct + { + __IM uint32_t ERERR1 : 1; /*!< [0..0] Erase Error Flag1 */ + __IM uint32_t PRGERR1 : 1; /*!< [1..1] Program Error Flag1 */ + uint32_t : 1; + __IM uint32_t BCERR1 : 1; /*!< [3..3] Blank Check Error Flag1 */ + uint32_t : 28; + } FSTATR01_b; + }; + + union + { + __IOM uint32_t FWBL1; /*!< (@ 0x00000140) Flash Write Buffer Register L1 */ + + struct + { + __IOM uint32_t WDATA47_32 : 16; /*!< [15..0] Program data of the program command */ + uint32_t : 16; + } FWBL1_b; + }; + + union + { + __IOM uint32_t FWBH1; /*!< (@ 0x00000144) Flash Write Buffer Register H1 */ + + struct + { + __IOM uint32_t WDATA63_48 : 16; /*!< [15..0] Program data of the program command */ + uint32_t : 16; + } FWBH1_b; + }; + + union + { + __IM uint32_t FRBL1; /*!< (@ 0x00000148) Flash Read Buffer Register L1 */ + + struct + { + __IM uint32_t RDATA47_32 : 16; /*!< [15..0] Read data of the consecutive read command */ + uint32_t : 16; + } FRBL1_b; + }; + + union + { + __IM uint32_t FRBH1; /*!< (@ 0x0000014C) Flash Read Buffer Register H1 */ + + struct + { + __IM uint32_t RDATA63_48 : 16; /*!< [15..0] Read data of the consecutive read command */ + uint32_t : 16; + } FRBH1_b; + }; + __IM uint32_t RESERVED16[12]; + + union + { + __OM uint32_t FPR; /*!< (@ 0x00000180) Protection Unlock Register */ + + struct + { + __OM uint32_t FPR : 8; /*!< [7..0] Protection Unlock Register */ + uint32_t : 24; + } FPR_b; + }; + + union + { + __IM uint32_t FPSR; /*!< (@ 0x00000184) Protection Unlock Status Register */ + + struct + { + __IM uint32_t PERR : 1; /*!< [0..0] Protect Error Flag */ + uint32_t : 31; + } FPSR_b; + }; + + union + { + __IM uint32_t FRBL0; /*!< (@ 0x00000188) Flash Read Buffer Register L0 */ + + struct + { + __IM uint32_t RDATA : 16; /*!< [15..0] Read data of the consecutive read command */ + uint32_t : 16; + } FRBL0_b; + }; + __IM uint32_t RESERVED17; + + union + { + __IM uint32_t FRBH0; /*!< (@ 0x00000190) Flash Read Buffer Register H0 */ + + struct + { + __IM uint32_t RDATA : 16; /*!< [15..0] Read data of the consecutive read command */ + uint32_t : 16; + } FRBH0_b; + }; + __IM uint32_t RESERVED18[11]; + + union + { + __IM uint32_t FSCMR; /*!< (@ 0x000001C0) Flash Start-Up Setting Monitor Register */ + + struct + { + uint32_t : 8; + __IM uint32_t SASMF : 1; /*!< [8..8] Start-up Area Setting Monitor Flag */ + uint32_t : 5; + __IM uint32_t FSPR : 1; /*!< [14..14] Access Window Protection Flag */ + uint32_t : 17; + } FSCMR_b; + }; + __IM uint32_t RESERVED19; + + union + { + __IM uint32_t FAWSMR; /*!< (@ 0x000001C8) Flash Access Window Start Address Monitor Register */ + + struct + { + __IM uint32_t FAWS : 12; /*!< [11..0] Flash Access Window Start Address */ + uint32_t : 20; + } FAWSMR_b; + }; + __IM uint32_t RESERVED20; + + union + { + __IM uint32_t FAWEMR; /*!< (@ 0x000001D0) Flash Access Window End Address Monitor Register */ + + struct + { + __IM uint32_t FAWE : 12; /*!< [11..0] Flash Access Window End Address */ + uint32_t : 20; + } FAWEMR_b; + }; + __IM uint32_t RESERVED21; + + union + { + __IOM uint32_t FISR; /*!< (@ 0x000001D8) Flash Initial Setting Register */ + + struct + { + __IOM uint32_t PCKA : 6; /*!< [5..0] Peripheral Clock Notification */ + __IOM uint32_t SAS : 2; /*!< [7..6] Temporary boot swap mode */ + uint32_t : 24; + } FISR_b; + }; + + union + { + __IOM uint32_t FEXCR; /*!< (@ 0x000001DC) Flash Extra Area Control Register */ + + struct + { + __IOM uint32_t CMD : 3; /*!< [2..0] Processing Start) */ + uint32_t : 4; + __IOM uint32_t OPST : 1; /*!< [7..7] Software Command Setting */ + uint32_t : 24; + } FEXCR_b; + }; + + union + { + __IM uint32_t FEAML; /*!< (@ 0x000001E0) Flash Error Address Monitor Register L */ + + struct + { + __IM uint32_t FEAM : 16; /*!< [15..0] Flash Error Address Monitor Register */ + uint32_t : 16; + } FEAML_b; + }; + __IM uint32_t RESERVED22; + + union + { + __IM uint32_t FEAMH; /*!< (@ 0x000001E8) Flash Error Address Monitor Register H */ + + struct + { + __IM uint32_t FEAM : 16; /*!< [15..0] Flash Error Address Monitor Register */ + uint32_t : 16; + } FEAMH_b; + }; + __IM uint32_t RESERVED23; + + union + { + __IM uint32_t FSTATR2; /*!< (@ 0x000001F0) Flash Status Register2 */ + + struct + { + __IM uint32_t ERERR : 1; /*!< [0..0] Erase Error Flag */ + __IM uint32_t PRGERR1 : 1; /*!< [1..1] Program Error Flag */ + __IOM uint32_t PRGERR01 : 1; /*!< [2..2] Program Error Flag 01 */ + __IM uint32_t BCERR : 1; /*!< [3..3] Blank Check Error Flag */ + __IM uint32_t ILGLERR : 1; /*!< [4..4] Illegal Command Error Flag */ + __IM uint32_t EILGLERR : 1; /*!< [5..5] Extra Area Illegal Command Error Flag */ + uint32_t : 26; + } FSTATR2_b; + }; + __IM uint32_t RESERVED24[3951]; + __IOM uint16_t FENTRYR_MF4; /*!< (@ 0x00003FB0) Flash P/E Mode Entry Register for MF4 */ + __IOM uint16_t FENTRYR; /*!< (@ 0x00003FB2) Flash P/E Mode Entry Register */ + __IM uint32_t RESERVED25[3]; + __IOM uint8_t FLWAITR; /*!< (@ 0x00003FC0) Flash Wait Cycle Register */ + __IM uint8_t RESERVED26; + __IM uint16_t RESERVED27; + __IM uint32_t RESERVED28; + __IOM uint8_t PFBER; /*!< (@ 0x00003FC8) Prefetch Buffer Enable Register */ + __IM uint8_t RESERVED29; + __IM uint16_t RESERVED30; +} R_FACI_LP_Type; /*!< Size = 16332 (0x3fcc) */ + +/* =========================================================================================================================== */ +/* ================ R_CTSUTRIM ================ */ +/* =========================================================================================================================== */ + +/** + * @brief CTSU Trimming Registers (R_CTSUTRIM) + */ + +typedef struct /*!< (@ 0x407EC000) R_CTSUTRIM Structure */ +{ + __IM uint32_t RESERVED[233]; + + union + { + __IOM uint32_t CTSUTRIMA; /*!< (@ 0x000003A4) CTSU Trimming Register A */ + + struct + { + __IOM uint32_t RTRIM : 8; /*!< [7..0] CTSU Reference Resistance Adjustment */ + __IOM uint32_t DACTRIM : 8; /*!< [15..8] Linearity Adjustment of Offset Current */ + __IOM uint32_t SUADJD : 8; /*!< [23..16] CTSU SUCLK Frequency Adjustment */ + __IOM uint32_t SUADJTRIM : 8; /*!< [31..24] Coefficient of variation for the reference load resistance + * (120k) */ + } CTSUTRIMA_b; + }; + + union + { + __IOM uint32_t CTSUTRIMB; /*!< (@ 0x000003A8) CTSU Trimming Register B */ + + struct + { + __IOM uint32_t TRESULT0 : 8; /*!< [7..0] Coefficient of variation for the reference load resistance + * (7.5k) */ + __IOM uint32_t TRESULT1 : 8; /*!< [15..8] Coefficient of variation for the reference load resistance + * (15k) */ + __IOM uint32_t TRESULT2 : 8; /*!< [23..16] Coefficient of variation for the reference load resistance + * (30k) */ + __IOM uint32_t TRESULT3 : 8; /*!< [31..24] Coefficient of variation for the reference load resistance + * (60k) */ + } CTSUTRIMB_b; + }; +} R_CTSUTRIM_Type; /*!< Size = 940 (0x3ac) */ + +/* =========================================================================================================================== */ +/* ================ R_FCACHE ================ */ +/* =========================================================================================================================== */ + +/** + * @brief Flash Memory Cache (R_FCACHE) + */ + +typedef struct /*!< (@ 0x4001C000) R_FCACHE Structure */ +{ + __IM uint16_t RESERVED[128]; + + union + { + __IOM uint16_t FCACHEE; /*!< (@ 0x00000100) Flash Cache Enable Register */ + + struct + { + __IOM uint16_t FCACHEEN : 1; /*!< [0..0] FCACHE Enable */ + uint16_t : 15; + } FCACHEE_b; + }; + __IM uint16_t RESERVED1; + + union + { + __IOM uint16_t FCACHEIV; /*!< (@ 0x00000104) Flash Cache Invalidate Register */ + + struct + { + __IOM uint16_t FCACHEIV : 1; /*!< [0..0] Flash Cache Invalidate Register */ + uint16_t : 15; + } FCACHEIV_b; + }; + __IM uint16_t RESERVED2[11]; + + union + { + __IOM uint8_t FLWT; /*!< (@ 0x0000011C) Flash Wait Cycle Register */ + + struct + { + __IOM uint8_t FLWT : 3; /*!< [2..0] Flash Wait Cycle */ + uint8_t : 5; + } FLWT_b; + }; + __IM uint8_t RESERVED3; + __IM uint16_t RESERVED4[17]; + + union + { + __IOM uint16_t FSAR; /*!< (@ 0x00000140) Flash Security Attribution Register */ + + struct + { + __IOM uint16_t FLWTSA : 1; /*!< [0..0] FLWT Security Attribution */ + uint16_t : 7; + __IOM uint16_t FCKMHZSA : 1; /*!< [8..8] FCKMHZ Security Attribution */ + uint16_t : 7; + } FSAR_b; + }; +} R_FCACHE_Type; /*!< Size = 322 (0x142) */ + +/* =========================================================================================================================== */ +/* ================ R_GLCDC ================ */ +/* =========================================================================================================================== */ + +/** + * @brief Graphics LCD Controller (R_GLCDC) + */ + +typedef struct /*!< (@ 0x400E0000) 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 /*!< (@ 0x40078000) 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. */ + uint32_t : 18; + } 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. */ + uint32_t : 18; + } 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 */ + uint32_t : 18; + } 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 */ + uint32_t : 7; + __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 : 15; + __IOM uint32_t MD : 3; /*!< [18..16] Mode Select */ + uint32_t : 4; + __IOM uint32_t TPCS : 4; /*!< [26..23] Timer Prescaler Select */ + uint32_t : 5; + } 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 */ + uint32_t : 1; + __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 */ + uint32_t : 2; + __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 */ + uint32_t : 2; + __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 : 24; + __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 : 12; + __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; + }; + __IM uint32_t RESERVED[5]; + + 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 RESERVED1[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 */ + uint32_t : 6; + __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 */ + uint32_t : 6; + __IOM uint32_t SPCE : 1; /*!< [16..16] Period Count Function Simultaneous Enable */ + uint32_t : 7; + __IOM uint32_t SPCD : 1; /*!< [24..24] Period Count Function Simultaneous Disable */ + uint32_t : 7; + } GTSECR_b; + }; +} R_GPT0_Type; /*!< Size = 216 (0xd8) */ + +/* =========================================================================================================================== */ +/* ================ R_GPT_GTCLK ================ */ +/* =========================================================================================================================== */ + +/** + * @brief GTCLK (R_GPT_GTCLK) + */ + +typedef struct /*!< (@ 0x40169B00) R_GPT_GTCLK Structure */ +{ + union + { + __IOM uint32_t GTCLKCR; /*!< (@ 0x00000000) General PWM Timer Clock Control Register */ + + struct + { + __IOM uint32_t BPEN : 1; /*!< [0..0] Synchronization Circuit Bypass Enable */ + uint32_t : 31; + } GTCLKCR_b; + }; +} R_GPT_GTCLK_Type; /*!< Size = 4 (0x4) */ + +/* =========================================================================================================================== */ +/* ================ R_GPT_ODC ================ */ +/* =========================================================================================================================== */ + +/** + * @brief PWM Delay Generation Circuit (R_GPT_ODC) + */ + +typedef struct /*!< (@ 0x4007B000) R_GPT_ODC Structure */ +{ + union + { + __IOM uint16_t GTDLYCR1; /*!< (@ 0x00000000) PWM Output Delay Control Register1 */ + + struct + { + __IOM uint16_t DLLEN : 1; /*!< [0..0] DLL Operation Enable */ + __IOM uint16_t DLYRST : 1; /*!< [1..1] PWM Delay Generation Circuit Reset */ + uint16_t : 6; + __IOM uint16_t FRANGE : 1; /*!< [8..8] GPT core clock Frequency Range */ + uint16_t : 7; + } GTDLYCR1_b; + }; + + union + { + __IOM uint16_t GTDLYCR2; /*!< (@ 0x00000002) PWM Output Delay Control Register2 */ + + struct + { + __IOM uint16_t DLYBS0 : 1; /*!< [0..0] PWM Delay Generation Circuit bypass */ + __IOM uint16_t DLYBS1 : 1; /*!< [1..1] PWM Delay Generation Circuit bypass */ + __IOM uint16_t DLYBS2 : 1; /*!< [2..2] PWM Delay Generation Circuit bypass */ + __IOM uint16_t DLYBS3 : 1; /*!< [3..3] PWM Delay Generation Circuit bypass */ + uint16_t : 4; + __IOM uint16_t DLYEN0 : 1; /*!< [8..8] PWM Delay Generation Circuit enable */ + __IOM uint16_t DLYEN1 : 1; /*!< [9..9] PWM Delay Generation Circuit enable */ + __IOM uint16_t DLYEN2 : 1; /*!< [10..10] PWM Delay Generation Circuit enable */ + __IOM uint16_t DLYEN3 : 1; /*!< [11..11] PWM Delay Generation Circuit enable */ + __IOM uint16_t DLYDENB0 : 1; /*!< [12..12] PWM Delay Generation Circuit Disenable for GTIOCB */ + uint16_t : 3; + } GTDLYCR2_b; + }; + __IM uint16_t RESERVED[10]; + __IOM R_GPT_ODC_GTDLYR_Type GTDLYR[4]; /*!< (@ 0x00000018) PWM DELAY RISING */ + __IOM R_GPT_ODC_GTDLYR_Type GTDLYF[4]; /*!< (@ 0x00000028) PWM DELAY FALLING */ +} R_GPT_ODC_Type; /*!< Size = 56 (0x38) */ + +/* =========================================================================================================================== */ +/* ================ R_GPT_OPS ================ */ +/* =========================================================================================================================== */ + +/** + * @brief Output Phase Switching for GPT (R_GPT_OPS) + */ + +typedef struct /*!< (@ 0x40078FF0) 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 /*!< (@ 0x40042000) 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 EnableNote: Can be modified only + * once after a reset. */ + __IOM uint32_t IOCE : 1; /*!< [5..5] Enable for GPT Output-Disable RequestNote: Can be modified + * only once after a reset. */ + __IOM uint32_t OSTPE : 1; /*!< [6..6] Oscillation Stop Detection EnableNote: 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 : 11; + __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; + }; +} R_GPT_POEG0_Type; /*!< Size = 4 (0x4) */ + +/* =========================================================================================================================== */ +/* ================ 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]; + }; + __IM uint32_t RESERVED[60]; + + union + { + __IOM uint8_t NMICR; /*!< (@ 0x00000100) 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 Select */ + uint8_t : 1; + __IOM uint8_t NFLTEN : 1; /*!< [7..7] NMI Digital Filter Enable */ + } NMICR_b; + }; + __IM uint8_t RESERVED1; + __IM uint16_t RESERVED2; + __IM uint32_t RESERVED3[7]; + + union + { + __IOM uint16_t NMIER; /*!< (@ 0x00000120) 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 */ + __IOM uint16_t VBATTEN : 1; /*!< [4..4] VBATT monitor Interrupt Enable */ + uint16_t : 1; + __IOM uint16_t OSTEN : 1; /*!< [6..6] Oscillation Stop Detection Interrupt Enable */ + __IOM uint16_t NMIEN : 1; /*!< [7..7] NMI Pin Interrupt Enable */ + __IOM uint16_t RPEEN : 1; /*!< [8..8] RAM Parity Error Interrupt Enable */ + __IOM uint16_t RECCEN : 1; /*!< [9..9] RAM ECC Error Interrupt Enable */ + __IOM uint16_t BUSSEN : 1; /*!< [10..10] MPU Bus Slave Error Interrupt Enable */ + __IOM uint16_t BUSMEN : 1; /*!< [11..11] MPU Bus Master Error Interrupt Enable */ + __IOM uint16_t SPEEN : 1; /*!< [12..12] CPU Stack pointer monitor Interrupt Enable */ + __IOM uint16_t TZFEN : 1; /*!< [13..13] TZFEN */ + uint16_t : 1; + __IOM uint16_t CPEEN : 1; /*!< [15..15] CPEEN */ + } NMIER_b; + }; + __IM uint16_t RESERVED4; + __IM uint32_t RESERVED5[3]; + + union + { + __IOM uint16_t NMICLR; /*!< (@ 0x00000130) Non-Maskable Interrupt Status Clear Register */ + + struct + { + __OM uint16_t IWDTCLR : 1; /*!< [0..0] IWDT Clear */ + __OM uint16_t WDTCLR : 1; /*!< [1..1] WDT Clear */ + __OM uint16_t LVD1CLR : 1; /*!< [2..2] LVD1 Clear */ + __OM uint16_t LVD2CLR : 1; /*!< [3..3] LVD2 Clear */ + __OM uint16_t VBATTCLR : 1; /*!< [4..4] VBATT Clear */ + uint16_t : 1; + __OM uint16_t OSTCLR : 1; /*!< [6..6] OST Clear */ + __OM uint16_t NMICLR : 1; /*!< [7..7] NMI Clear */ + __OM uint16_t RPECLR : 1; /*!< [8..8] SRAM Parity Error Clear */ + __OM uint16_t RECCCLR : 1; /*!< [9..9] SRAM ECC Error Clear */ + __OM uint16_t BUSSCLR : 1; /*!< [10..10] Bus Slave Error Clear */ + __OM uint16_t BUSMCLR : 1; /*!< [11..11] Bus Master Error Clear */ + __OM uint16_t SPECLR : 1; /*!< [12..12] CPU Stack Pointer Monitor Interrupt Clear */ + __IOM uint16_t TZFCLR : 1; /*!< [13..13] TZFCLR */ + uint16_t : 1; + __IOM uint16_t CPECLR : 1; /*!< [15..15] CPECLR */ + } NMICLR_b; + }; + __IM uint16_t RESERVED6; + __IM uint32_t RESERVED7[3]; + + union + { + __IM uint16_t NMISR; /*!< (@ 0x00000140) 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 */ + __IM uint16_t VBATTST : 1; /*!< [4..4] VBATT monitor Interrupt Status Flag */ + uint16_t : 1; + __IM uint16_t OSTST : 1; /*!< [6..6] Oscillation Stop Detection Interrupt Status Flag */ + __IM uint16_t NMIST : 1; /*!< [7..7] NMI Status Flag */ + __IM uint16_t RPEST : 1; /*!< [8..8] RAM Parity Error Interrupt Status Flag */ + __IM uint16_t RECCST : 1; /*!< [9..9] RAM ECC Error Interrupt Status Flag */ + __IM uint16_t BUSSST : 1; /*!< [10..10] MPU Bus Slave Error Interrupt Status Flag */ + __IM uint16_t BUSMST : 1; /*!< [11..11] MPU Bus Master Error Interrupt Status Flag */ + __IM uint16_t SPEST : 1; /*!< [12..12] CPU Stack pointer monitor Interrupt Status Flag */ + __IM uint16_t TZFST : 1; /*!< [13..13] TZFST */ + uint16_t : 1; + __IM uint16_t CPEST : 1; /*!< [15..15] CPEST */ + } NMISR_b; + }; + __IM uint16_t RESERVED8; + __IM uint32_t RESERVED9[23]; + + union + { + __IOM uint32_t WUPEN; /*!< (@ 0x000001A0) Wake Up Interrupt Enable Register */ + + struct + { + __IOM uint32_t IRQWUPEN0 : 1; /*!< [0..0] IRQ interrupt S/W standby returns enable */ + __IOM uint32_t IRQWUPEN1 : 1; /*!< [1..1] IRQ interrupt S/W standby returns enable */ + __IOM uint32_t IRQWUPEN2 : 1; /*!< [2..2] IRQ interrupt S/W standby returns enable */ + __IOM uint32_t IRQWUPEN3 : 1; /*!< [3..3] IRQ interrupt S/W standby returns enable */ + __IOM uint32_t IRQWUPEN4 : 1; /*!< [4..4] IRQ interrupt S/W standby returns enable */ + __IOM uint32_t IRQWUPEN5 : 1; /*!< [5..5] IRQ interrupt S/W standby returns enable */ + __IOM uint32_t IRQWUPEN6 : 1; /*!< [6..6] IRQ interrupt S/W standby returns enable */ + __IOM uint32_t IRQWUPEN7 : 1; /*!< [7..7] IRQ interrupt S/W standby returns enable */ + __IOM uint32_t IRQWUPEN8 : 1; /*!< [8..8] IRQ interrupt S/W standby returns enable */ + __IOM uint32_t IRQWUPEN9 : 1; /*!< [9..9] IRQ interrupt S/W standby returns enable */ + __IOM uint32_t IRQWUPEN10 : 1; /*!< [10..10] IRQ interrupt S/W standby returns enable */ + __IOM uint32_t IRQWUPEN11 : 1; /*!< [11..11] IRQ interrupt S/W standby returns enable */ + __IOM uint32_t IRQWUPEN12 : 1; /*!< [12..12] IRQ interrupt S/W standby returns enable */ + __IOM uint32_t IRQWUPEN13 : 1; /*!< [13..13] IRQ interrupt S/W standby returns enable */ + __IOM uint32_t IRQWUPEN14 : 1; /*!< [14..14] IRQ interrupt S/W standby returns enable */ + __IOM uint32_t IRQWUPEN15 : 1; /*!< [15..15] IRQ interrupt S/W standby returns enable */ + __IOM uint32_t IWDTWUPEN : 1; /*!< [16..16] IWDT interrupt S/W standby returns enable */ + __IOM uint32_t KEYWUPEN : 1; /*!< [17..17] Key interrupt S/W standby returns enable */ + __IOM uint32_t LVD1WUPEN : 1; /*!< [18..18] LVD1 interrupt S/W standby returns enable */ + __IOM uint32_t LVD2WUPEN : 1; /*!< [19..19] LVD2 interrupt S/W standby returns enable */ + __IOM uint32_t VBATTWUPEN : 1; /*!< [20..20] VBATT monitor interrupt S/W standby returns enable */ + uint32_t : 1; + __IOM uint32_t ACMPHS0WUPEN : 1; /*!< [22..22] ACMPHS0 interrupt S/W standby returns enable bit */ + __IOM uint32_t ACMPLP0WUPEN : 1; /*!< [23..23] ACMPLP0 interrupt S/W standby returns enable */ + __IOM uint32_t RTCALMWUPEN : 1; /*!< [24..24] RTC alarm interrupt S/W standby returns enable */ + __IOM uint32_t RTCPRDWUPEN : 1; /*!< [25..25] RCT period interrupt S/W standby returns enable */ + __IOM uint32_t USBHSWUPEN : 1; /*!< [26..26] USBHS interrupt S/W standby returns enable bit */ + __IOM uint32_t USBFSWUPEN : 1; /*!< [27..27] USBFS interrupt S/W standby returns enable */ + __IOM uint32_t AGT1UDWUPEN : 1; /*!< [28..28] AGT1 underflow interrupt S/W standby returns enable */ + __IOM uint32_t AGT1CAWUPEN : 1; /*!< [29..29] AGT1 compare match A interrupt S/W standby returns + * enable */ + __IOM uint32_t AGT1CBWUPEN : 1; /*!< [30..30] AGT1 compare match B interrupt S/W standby returns + * enable */ + __IOM uint32_t IIC0WUPEN : 1; /*!< [31..31] IIC0 address match interrupt S/W standby returns enable */ + } WUPEN_b; + }; + + union + { + __IOM uint32_t WUPEN1; /*!< (@ 0x000001A4) Wake Up interrupt enable register 1 */ + + struct + { + __IOM uint32_t AGT3UDWUPEN : 1; /*!< [0..0] AGT3 underflow interrupt S/W standby returns enable bit */ + __IOM uint32_t AGT3CAWUPEN : 1; /*!< [1..1] AGT3 compare match A interrupt S/W standby returns enable + * bit */ + __IOM uint32_t AGT3CBWUPEN : 1; /*!< [2..2] AGT3 compare match B interrupt S/W standby returns enable + * bit */ + uint32_t : 29; + } WUPEN1_b; + }; + __IM uint32_t RESERVED10[6]; + + union + { + __IOM uint8_t IELEN; /*!< (@ 0x000001C0) ICU event Enable Register */ + + struct + { + __IOM uint8_t RTCINTEN : 1; /*!< [0..0] RTCALM and RTCPRD Interrupts Enable (when LPOPTEN bit + * = 1) */ + __IOM uint8_t IELEN : 1; /*!< [1..1] Parts Asynchronous Interrupts Enable except RTC (when + * LPOPTEN bit = 1) */ + uint8_t : 6; + } IELEN_b; + }; + __IM uint8_t RESERVED11; + __IM uint16_t RESERVED12; + __IM uint32_t RESERVED13[15]; + + union + { + __IOM uint16_t SELSR0; /*!< (@ 0x00000200) Snooze Event Link Setting Register */ + + struct + { + __IOM uint16_t SELS : 9; /*!< [8..0] SYS Event Link Select */ + uint16_t : 7; + } SELSR0_b; + }; + __IM uint16_t RESERVED14; + __IM uint32_t RESERVED15[31]; + + union + { + __IOM uint32_t DELSR[8]; /*!< (@ 0x00000280) DMAC Event Link Setting Register */ + + struct + { + __IOM uint32_t DELS : 9; /*!< [8..0] Event selection to DMAC Start request */ + 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]; + }; + __IM uint32_t RESERVED16[24]; + + union + { + __IOM uint32_t IELSR[96]; /*!< (@ 0x00000300) 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 = 1152 (0x480) */ + +/* =========================================================================================================================== */ +/* ================ R_IIC0 ================ */ +/* =========================================================================================================================== */ + +/** + * @brief I2C Bus Interface (R_IIC0) + */ + +typedef struct /*!< (@ 0x40053000) 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 + { + __IM 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_IRDA ================ */ +/* =========================================================================================================================== */ + +/** + * @brief IrDA Interface (R_IRDA) + */ + +typedef struct /*!< (@ 0x40070F00) R_IRDA Structure */ +{ + union + { + __IOM uint8_t IRCR; /*!< (@ 0x00000000) IrDA Control Register */ + + struct + { + uint8_t : 2; + __IOM uint8_t IRRXINV : 1; /*!< [2..2] IRRXD Polarity Switching */ + __IOM uint8_t IRTXINV : 1; /*!< [3..3] IRTXD Polarity Switching */ + uint8_t : 3; + __IOM uint8_t IRE : 1; /*!< [7..7] IrDA Enable */ + } IRCR_b; + }; +} R_IRDA_Type; /*!< Size = 1 (0x1) */ + +/* =========================================================================================================================== */ +/* ================ R_IWDT ================ */ +/* =========================================================================================================================== */ + +/** + * @brief Independent Watchdog Timer (R_IWDT) + */ + +typedef struct /*!< (@ 0x40044400) 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; + __IM uint16_t RESERVED1; + + union + { + __IOM uint16_t IWDTSR; /*!< (@ 0x00000004) IWDT Status Register */ + + struct + { + __IM uint16_t CNTVAL : 14; /*!< [13..0] Counter ValueValue counted by the counter */ + __IOM uint16_t UNDFF : 1; /*!< [14..14] Underflow Flag */ + __IOM uint16_t REFEF : 1; /*!< [15..15] Refresh Error Flag */ + } IWDTSR_b; + }; +} R_IWDT_Type; /*!< Size = 6 (0x6) */ + +/* =========================================================================================================================== */ +/* ================ R_JPEG ================ */ +/* =========================================================================================================================== */ + +/** + * @brief JPEG Codec (R_JPEG) + */ + +typedef struct /*!< (@ 0x400E6000) R_JPEG Structure */ +{ + union + { + __IOM uint8_t JCMOD; /*!< (@ 0x00000000) JPEG Code Mode Register */ + + struct + { + __IOM uint8_t REDU : 3; /*!< [2..0] Pixel FormatNOTE: Read-only in Decompression. */ + __IOM uint8_t DSP : 1; /*!< [3..3] Compression/Decompression Set Note: When changing between + * processing for compression and for decompression, be sure + * to reset this module in advance by setting the JCUSRST + * bit in the software reset control register 2 (SWRSTCR2) + * of the power-downmodes. */ + uint8_t : 4; + } JCMOD_b; + }; + + union + { + __OM uint8_t JCCMD; /*!< (@ 0x00000001) JPEG Code Command Register */ + + struct + { + __OM uint8_t JSRT : 1; /*!< [0..0] JPEG Core Process Start CommandTo start JPEG core processing, + * set this bit to 1. Do not write this bit to 1 again while + * this module is in operation. */ + __OM uint8_t JRST : 1; /*!< [1..1] JPEG Core Process Stop Clear CommandTo clear the process-stopped + * state caused by requests to read the image size and pixel + * format (enabled by the INT3 bit in JINTE0), set this bit + * to 1. */ + __OM uint8_t JEND : 1; /*!< [2..2] Interrupt Request Clear Command This bit is valid only + * for the interrupt sources corresponding to bits INS6, INS5, + * and INS3 in JINTS0. To clear an interrupt request, set + * this bit to 1 */ + uint8_t : 4; + __OM uint8_t BRST : 1; /*!< [7..7] Bus Reset. NOTE: When this module is in operation, the + * bus reset command should not be issued. */ + } JCCMD_b; + }; + __IM uint8_t RESERVED; + + union + { + __IOM uint8_t JCQTN; /*!< (@ 0x00000003) JPEG Code Quantization Table Number Register */ + + struct + { + __IOM uint8_t QT1 : 2; /*!< [1..0] Quantization table number for the first color componentNOTE: + * Read-only in Decompression. */ + __IOM uint8_t QT2 : 2; /*!< [3..2] Quantization table number for the second color component + * NOTE: Read-only in Decompression. */ + __IOM uint8_t QT3 : 2; /*!< [5..4] Quantization table number for the third color component + * NOTE: Read-only in Decompression. */ + uint8_t : 2; + } JCQTN_b; + }; + + union + { + __IOM uint8_t JCHTN; /*!< (@ 0x00000004) JPEG Code Huffman Table Number Register */ + + struct + { + __IOM uint8_t HTD1 : 1; /*!< [0..0] Huffman table number (DC) for the first color component + * NOTE: Read-only in Decompression. */ + __IOM uint8_t HTA1 : 1; /*!< [1..1] Huffman table number (AC) for the first color componentNOTE: + * Read-only in Decompression. */ + __IOM uint8_t HTD2 : 1; /*!< [2..2] Huffman table number (DC) for the second color component + * NOTE: Read-only in Decompression. */ + __IOM uint8_t HTA2 : 1; /*!< [3..3] Huffman table number (AC) for the second color componentNOTE: + * Read-only in Decompression. */ + __IOM uint8_t HTD3 : 1; /*!< [4..4] Huffman table number (DC) for the third color component + * NOTE: Read-only in Decompression. */ + __IOM uint8_t HTA3 : 1; /*!< [5..5] Huffman table number (AC) for the third color componentNOTE: + * Read-only in Decompression. */ + uint8_t : 2; + } JCHTN_b; + }; + + union + { + __IOM uint8_t JCDRIU; /*!< (@ 0x00000005) JPEG Code DRI Upper Register */ + + struct + { + __IOM uint8_t DRIU : 8; /*!< [7..0] Upper Bytes of MCUs Preceding RST MarkerWhen both upper + * and lower bytes are set to 00h, neither a DRI nor an RST + * marker is placed.NOTE: Read-only in Decompression. */ + } JCDRIU_b; + }; + + union + { + __IOM uint8_t JCDRID; /*!< (@ 0x00000006) JPEG Code DRI Lower Register */ + + struct + { + __IOM uint8_t DRID : 8; /*!< [7..0] Lower Bytes of MCUs Preceding RST MarkerWhen both upper + * and lower bytes are set to 00h, neither a DRI nor an RST + * marker is placed.NOTE: Read-only in Decompression. */ + } JCDRID_b; + }; + + union + { + __IOM uint8_t JCVSZU; /*!< (@ 0x00000007) JPEG Code Vertical Size Upper Register */ + + struct + { + __IOM uint8_t VSZU : 8; /*!< [7..0] Upper Bytes of Vertical Image SizeIn decompression process, + * a downloaded value from the JPEG coded data is set. NOTE: + * Read-only in Decompression. */ + } JCVSZU_b; + }; + + union + { + __IOM uint8_t JCVSZD; /*!< (@ 0x00000008) JPEG Code Vertical Size Lower Register */ + + struct + { + __IOM uint8_t VSZD : 8; /*!< [7..0] Lower Bytes of Vertical Image SizeIn decompression process, + * a downloaded value from the JPEG coded data is set. NOTE: + * Read-only in Decompression. */ + } JCVSZD_b; + }; + + union + { + __IOM uint8_t JCHSZU; /*!< (@ 0x00000009) JPEG Code Horizontal Size Upper Register */ + + struct + { + __IOM uint8_t HSZU : 8; /*!< [7..0] Upper Bytes of Horizontal Image SizeIn decompression + * process, a downloaded value from the JPEG coded data is + * set. NOTE: Read-only in Decompression. */ + } JCHSZU_b; + }; + + union + { + __IOM uint8_t JCHSZD; /*!< (@ 0x0000000A) JPEG Coded Horizontal Size Lower Register */ + + struct + { + __IOM uint8_t HSZD : 8; /*!< [7..0] Lower Bytes of Horizontal Image SizeIn decompression + * process, a downloaded value from the JPEG coded data is + * set. NOTE: Read-only in Decompression. */ + } JCHSZD_b; + }; + + union + { + __IM uint8_t JCDTCU; /*!< (@ 0x0000000B) JPEG Code Data Count Upper Register */ + + struct + { + __IM uint8_t DCU : 8; /*!< [7..0] Upper bytes of the counted amount of data to be compressed + * The values of this register are reset before compression + * starts.NOTE: Read-only in Decompression. */ + } JCDTCU_b; + }; + + union + { + __IM uint8_t JCDTCM; /*!< (@ 0x0000000C) JPEG Code Data Count Middle Register */ + + struct + { + __IM uint8_t DCM : 8; /*!< [7..0] Middle bytes of the counted amount of data to be compressedThe + * values of this register are reset before compression starts. + * NOTE: Read-only in Decompression. */ + } JCDTCM_b; + }; + + union + { + __IM uint8_t JCDTCD; /*!< (@ 0x0000000D) JPEG Code Data Count Lower Register */ + + struct + { + __IM uint8_t DCD : 8; /*!< [7..0] Lower bytes of the counted amount of data to be compressedThe + * values of this register are reset before compression starts.NOTE: + * Read-only in Decompression. */ + } JCDTCD_b; + }; + + union + { + __IOM uint8_t JINTE0; /*!< (@ 0x0000000E) JPEG Interrupt Enable Register 0 */ + + struct + { + uint8_t : 3; + __IOM uint8_t INT3 : 1; /*!< [3..3] This bit enables an interrupt to be generated when it + * has been determined that the image size and the subsampling + * setting of the compressed data can be read through analyzing + * the data. */ + uint8_t : 1; + __IOM uint8_t INT5 : 1; /*!< [5..5] This bit enables an interrupt to be generated when the + * final number of MCU data in the Huffman-coding segment + * is not correct in decompression. When this bit is not set + * to enable interrupt generation, an error code is not returned. */ + __IOM uint8_t INT6 : 1; /*!< [6..6] This bit enables an interrupt to be generated when the + * total number of data in the Huffman-coding segment is not + * correct in decompression. When this bit is not set to enable + * interrupt generation, an error code is not returned. */ + __IOM uint8_t INT7 : 1; /*!< [7..7] This bit enables an interrupt to be generated when the + * number of data in the restart interval of the Huffman-coding + * segment is not correct in decompression.When this bit is + * not set to enable interrupt generation, an error code is + * not returned. */ + } JINTE0_b; + }; + + union + { + __IOM uint8_t JINTS0; /*!< (@ 0x0000000F) JPEG Interrupt Status Register 0 */ + + struct + { + uint8_t : 3; + __IOM uint8_t INS3 : 1; /*!< [3..3] This bit is set to 1 when the image size and pixel format + * can be read. When an interrupt occurs, this module stops + * processing and the state is indicated by the JCRST register. + * To make this module resume processing, set the JPEG core + * process stop clear command bit (JRST) in JCCMD. */ + uint8_t : 1; + __IOM uint8_t INS5 : 1; /*!< [5..5] This bit is set to 1 when a compressed data error occurs. */ + __IOM uint8_t INS6 : 1; /*!< [6..6] This bit is set to 1 when this module completes compression + * process normally. */ + uint8_t : 1; + } JINTS0_b; + }; + + union + { + __IOM uint8_t JCDERR; /*!< (@ 0x00000010) JPEG Code Decode Error Register */ + + struct + { + __IOM uint8_t ERR : 4; /*!< [3..0] Error Code (See tables )Identify the type of the error + * which has occurred in the compressed data analysis for + * decompression. */ + uint8_t : 4; + } JCDERR_b; + }; + + union + { + __IM uint8_t JCRST; /*!< (@ 0x00000011) JPEG Code Reset Register */ + + struct + { + __IM uint8_t RST : 1; /*!< [0..0] Operating State */ + uint8_t : 7; + } JCRST_b; + }; + __IM uint16_t RESERVED1; + __IM uint32_t RESERVED2[11]; + + union + { + __IOM uint32_t JIFECNT; /*!< (@ 0x00000040) JPEG Interface Compression Control Register */ + + struct + { + __IOM uint32_t DINSWAP : 3; /*!< [2..0] Byte/Halfword Swap */ + uint32_t : 1; + __IOM uint32_t DINLC : 1; /*!< [4..4] Count Mode Setting for Stopping Input Image Data Lines */ + __OM uint32_t DINRCMD : 1; /*!< [5..5] Input Image Data Lines Resume Command This bit is valid + * only when the count mode for stopping the input of image + * data lines is on. Setting this bit to 1 resumes reading + * input image data. This bit is always read as 0. */ + __IOM uint32_t DINRINI : 1; /*!< [6..6] Address Initialization when Resuming Input of Image Data + * Lines This bit is only valid when the count mode for stopping + * the input of image data lines is on. Set this bit before + * writing 1 to the data-line resume command bit. */ + uint32_t : 1; + __IOM uint32_t JOUTSWAP : 3; /*!< [10..8] Byte/Halfword/Word Swap Output coded data in compression + * is swapped. */ + uint32_t : 21; + } JIFECNT_b; + }; + + union + { + __IOM uint32_t JIFESA; /*!< (@ 0x00000044) JPEG Interface Compression Source Address Register */ + + struct + { + __IOM uint32_t ESA : 32; /*!< [31..0] Input Image Data Source Address (in 8-byte units) The + * lower three bits should be set to 0. */ + } JIFESA_b; + }; + + union + { + __IOM uint32_t JIFESOFST; /*!< (@ 0x00000048) JPEG Interface Compression Line Offset Register */ + + struct + { + __IOM uint32_t ESMW : 15; /*!< [14..0] Input Image Data Lines Offset(in 8-byte units)The lower + * three bits should be set to 0. */ + uint32_t : 17; + } JIFESOFST_b; + }; + + union + { + __IOM uint32_t JIFEDA; /*!< (@ 0x0000004C) JPEG Interface Compression Destination Address + * Register */ + + struct + { + __IOM uint32_t EDA : 32; /*!< [31..0] Input Image Data Lines Offset (in 8-byte units) The + * lower three bits should be set to 0. */ + } JIFEDA_b; + }; + + union + { + __IOM uint32_t JIFESLC; /*!< (@ 0x00000050) JPEG Interface Compression Source Line Count + * Register */ + + struct + { + __IOM uint32_t LINES : 16; /*!< [15..0] Number of Input Image Data Lines to be Read (in 8-line + * units) The lower three bits should be set to 0. */ + uint32_t : 16; + } JIFESLC_b; + }; + __IM uint32_t RESERVED3; + + union + { + __IOM uint32_t JIFDCNT; /*!< (@ 0x00000058) JPEG Interface Decompression Control Register */ + + struct + { + __IOM uint32_t DOUTSWAP : 3; /*!< [2..0] Byte/Word Swap Output image data in decompression is + * swapped. */ + uint32_t : 1; + __IOM uint32_t DOUTLC : 1; /*!< [4..4] Count Mode for Stopping Output Image Data Lines */ + __OM uint32_t DOUTRCMD : 1; /*!< [5..5] Output Image Data Lines Resume Command This bit is valid + * only when the count mode for stopping the output of image + * data lines is on. Setting this bit to 1 resumes writing + * image data. This bit is always read as 0. */ + __IOM uint32_t DOUTRINI : 1; /*!< [6..6] Address Initialization when Resuming Output of Image + * Data Lines This bit is only valid when the count mode for + * stopping the output of image data lines is on. Set this + * bit before writing 1 to the data-line resume command bit. */ + uint32_t : 1; + __IOM uint32_t JINSWAP : 3; /*!< [10..8] Byte/Word/Longword Swap Input coded data in decompression + * is swapped. */ + uint32_t : 1; + __IOM uint32_t JINC : 1; /*!< [12..12] Count Mode Setting for Stopping Input Coded Data */ + __OM uint32_t JINRCMD : 1; /*!< [13..13] Input Coded Data Resume CommandThis bit is valid only + * when the count mode for stopping the input of coded data + * is on. Setting this bit to 1 resumes reading input coded + * data. This bit is always read as 0. */ + __IOM uint32_t JINRINI : 1; /*!< [14..14] Address Initialization when Input Coded Data is Resumed + * This bit is only valid when the count mode for stopping + * the input of coded data is on. Set this bit before writing + * 1 to the data resume command bit. */ + uint32_t : 9; + __IOM uint32_t OPF : 2; /*!< [25..24] Specifies output image data pixel format. */ + __IOM uint32_t HINTER : 2; /*!< [27..26] Horizontal Subsampling Subsamples horizontal output + * image data. */ + __IOM uint32_t VINTER : 2; /*!< [29..28] Vertical SubsamplingSubsamples vertical output image + * data. */ + uint32_t : 2; + } JIFDCNT_b; + }; + + union + { + __IOM uint32_t JIFDSA; /*!< (@ 0x0000005C) JPEG Interface Decompression Source Address Register */ + + struct + { + __IOM uint32_t DSA : 32; /*!< [31..0] Input Coded Data Source AddressInput Coded Data Source + * Address (in 8-byte units) The lower three bits should be + * set to 0. */ + } JIFDSA_b; + }; + + union + { + __IOM uint32_t JIFDDOFST; /*!< (@ 0x00000060) JPEG Interface Decompression Line Offset Register */ + + struct + { + __IOM uint32_t DDMW : 15; /*!< [14..0] Output Image Data Lines Offset (in 8-byte units) The + * lower three bits should be set to 0. */ + uint32_t : 17; + } JIFDDOFST_b; + }; + + union + { + __IOM uint32_t JIFDDA; /*!< (@ 0x00000064) JPEG Interface Decompression Destination Address + * Register */ + + struct + { + __IOM uint32_t DDA : 32; /*!< [31..0] Output Image Data Destination Address (in 8-byte units) + * The lower three bits should be set to 0. */ + } JIFDDA_b; + }; + + union + { + __IOM uint32_t JIFDSDC; /*!< (@ 0x00000068) JPEG Interface Decompression Source Data Count + * Register */ + + struct + { + __IOM uint32_t JDATAS : 16; /*!< [15..0] Amount of Input Coded Data to be Read (in 8-byte units) + * The lower three bits should be set to 0. */ + uint32_t : 16; + } JIFDSDC_b; + }; + + union + { + __IOM uint32_t JIFDDLC; /*!< (@ 0x0000006C) JPEG Interface Decompression Destination Line + * Count Register */ + + struct + { + __IOM uint32_t LINES : 16; /*!< [15..0] Number of Input Image Lines to Be ReadThe lower three + * bits should be set to 0. These bits are read as0.Number + * of input image data lines to be read, in 8-line units. */ + uint32_t : 16; + } JIFDDLC_b; + }; + + union + { + __IOM uint32_t JIFDADT; /*!< (@ 0x00000070) JPEG Interface Decompression alpha Set Register */ + + struct + { + __IOM uint32_t ALPHA : 8; /*!< [7..0] Setting of the alpha value for output in ARGB8888 format. */ + uint32_t : 24; + } JIFDADT_b; + }; + __IM uint32_t RESERVED4[6]; + + union + { + __IOM uint32_t JINTE1; /*!< (@ 0x0000008C) JPEG Interrupt Enable Register 1 */ + + struct + { + __IOM uint32_t DOUTLEN : 1; /*!< [0..0] Enables or disables a data transfer processing interrupt + * request (JDTI) when the DOUTLF bit in JINTS1 is set to + * 1 */ + __IOM uint32_t JINEN : 1; /*!< [1..1] Enables or disables a data transfer processing interrupt + * request (JDTI) when the JINF bit in JINTS1 is set to 1. */ + __IOM uint32_t DBTEN : 1; /*!< [2..2] Enables or disables a data transfer processing interrupt + * request (JDTI) when the DBTF bit in JINTS1 is set to 1. */ + uint32_t : 2; + __IOM uint32_t DINLEN : 1; /*!< [5..5] Enables or disables a data transfer processing interrupt + * request (JDTI) when the DINLF bit in JINTS1 is set to 1. */ + __IOM uint32_t CBTEN : 1; /*!< [6..6] Enables or disables a data transfer processing interrupt + * request (JDTI) when the CBTF bit in JINTS1 is set to 1. */ + uint32_t : 25; + } JINTE1_b; + }; + + union + { + __IOM uint32_t JINTS1; /*!< (@ 0x00000090) JPEG Interrupt Status Register 1 */ + + struct + { + __IOM uint32_t DOUTLF : 1; /*!< [0..0] In decompression, this bit is set to 1 when the number + * of lines of output image data indicated by JIFDDLC have + * been written. This bit is only valid when the DOUTLC bit + * in JIFDCNT is set to 1. */ + __IOM uint32_t JINF : 1; /*!< [1..1] This bit is set to 1 when the amount of input coded data + * indicated by JIFDSDC is read in decompression. This bit + * is valid only when the JINC bit in JIFDCNT is set to 1. */ + __IOM uint32_t DBTF : 1; /*!< [2..2] This bit is set to 1 when the last output image data + * is written in decompression. */ + uint32_t : 2; + __IOM uint32_t DINLF : 1; /*!< [5..5] This bit is set to 1 when the number of input image data + * lines indicated by JIFESLC is read in compression. This + * bit is valid only when the DINLC bit in JIFECNT is set + * to 1. */ + __IOM uint32_t CBTF : 1; /*!< [6..6] This bit is set to 1 when the last output coded data + * is written in compression. */ + uint32_t : 25; + } JINTS1_b; + }; + __IM uint32_t RESERVED5[27]; + __OM uint8_t JCQTBL0[64]; /*!< (@ 0x00000100) Quantization Table 0 */ + __OM uint8_t JCQTBL1[64]; /*!< (@ 0x00000140) Quantization Table 1 */ + __OM uint8_t JCQTBL2[64]; /*!< (@ 0x00000180) Quantization Table 2 */ + __OM uint8_t JCQTBL3[64]; /*!< (@ 0x000001C0) Quantization Table 3 */ + __IOM uint8_t JCHTBD0[28]; /*!< (@ 0x00000200) DC Huffman Table 0 */ + __IM uint32_t RESERVED6; + __IOM uint8_t JCHTBA0[178]; /*!< (@ 0x00000220) AC Huffman Table 0 */ + __IM uint16_t RESERVED7; + __IM uint32_t RESERVED8[11]; + __IOM uint8_t JCHTBD1[28]; /*!< (@ 0x00000300) DC Huffman Table 1 */ + __IM uint32_t RESERVED9; + __IOM uint8_t JCHTBA1[178]; /*!< (@ 0x00000320) DC Huffman Table 1 */ + __IM uint16_t RESERVED10; +} R_JPEG_Type; /*!< Size = 980 (0x3d4) */ + +/* =========================================================================================================================== */ +/* ================ R_KINT ================ */ +/* =========================================================================================================================== */ + +/** + * @brief Key Interrupt Function (R_KINT) + */ + +typedef struct /*!< (@ 0x40080000) R_KINT Structure */ +{ + union + { + __IOM uint8_t KRCTL; /*!< (@ 0x00000000) KEY Return Control Register */ + + struct + { + __IOM uint8_t KREG : 1; /*!< [0..0] Detection Edge Selection (KRF0 to KRF7) */ + uint8_t : 6; + __IOM uint8_t KRMD : 1; /*!< [7..7] Usage of Key Interrupt Flags(KR0 to KR7) */ + } KRCTL_b; + }; + __IM uint8_t RESERVED[3]; + + union + { + __IOM uint8_t KRF; /*!< (@ 0x00000004) KEY Return Flag Register */ + + struct + { + __IOM uint8_t KRF0 : 1; /*!< [0..0] Key interrupt flag 0 */ + __IOM uint8_t KRF1 : 1; /*!< [1..1] Key interrupt flag 1 */ + __IOM uint8_t KRF2 : 1; /*!< [2..2] Key interrupt flag 2 */ + __IOM uint8_t KRF3 : 1; /*!< [3..3] Key interrupt flag 3 */ + __IOM uint8_t KRF4 : 1; /*!< [4..4] Key interrupt flag 4 */ + __IOM uint8_t KRF5 : 1; /*!< [5..5] Key interrupt flag 5 */ + __IOM uint8_t KRF6 : 1; /*!< [6..6] Key interrupt flag 6 */ + __IOM uint8_t KRF7 : 1; /*!< [7..7] Key interrupt flag 7 */ + } KRF_b; + }; + __IM uint8_t RESERVED1[3]; + + union + { + __IOM uint8_t KRM; /*!< (@ 0x00000008) KEY Return Mode Register */ + + struct + { + __IOM uint8_t KRM0 : 1; /*!< [0..0] Key interrupt mode control 0 */ + __IOM uint8_t KRM1 : 1; /*!< [1..1] Key interrupt mode control 1 */ + __IOM uint8_t KRM2 : 1; /*!< [2..2] Key interrupt mode control 2 */ + __IOM uint8_t KRM3 : 1; /*!< [3..3] Key interrupt mode control 3 */ + __IOM uint8_t KRM4 : 1; /*!< [4..4] Key interrupt mode control 4 */ + __IOM uint8_t KRM5 : 1; /*!< [5..5] Key interrupt mode control 5 */ + __IOM uint8_t KRM6 : 1; /*!< [6..6] Key interrupt mode control 6 */ + __IOM uint8_t KRM7 : 1; /*!< [7..7] Key interrupt mode control 7 */ + } KRM_b; + }; +} R_KINT_Type; /*!< Size = 9 (0x9) */ + +/* =========================================================================================================================== */ +/* ================ R_I3C0 ================ */ +/* =========================================================================================================================== */ + +/** + * @brief I3C Bus Interface (R_I3C0) + */ + +typedef struct /*!< (@ 0x40083000) 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[3]; + + 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 RESERVED8[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 RESERVED9[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 RESERVED10[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 RESERVED11[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 RESERVED12[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 RESERVED13[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 RESERVED14[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 RESERVED15[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 RESERVED16[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; + }; + __IM uint32_t RESERVED17[3]; + + 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 RESERVED18; + + 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 RESERVED19; + + 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 RESERVED20; + + 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 RESERVED21[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 RESERVED22[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 RESERVED23[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 RESERVED24[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 RESERVED25; + + 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 RESERVED26[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 RESERVED27[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 RESERVED28[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 RESERVED29[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 RESERVED30[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_MMF ================ */ +/* =========================================================================================================================== */ + +/** + * @brief Memory Mirror Function (R_MMF) + */ + +typedef struct /*!< (@ 0x40001000) R_MMF Structure */ +{ + union + { + __IOM uint32_t MMSFR; /*!< (@ 0x00000000) MemMirror Special Function Register */ + + struct + { + uint32_t : 7; + __IOM uint32_t MEMMIRADDR : 16; /*!< [22..7] Specifies the memory mirror address.NOTE: A value cannot + * be set in the low-order 7 bits. These bits are fixed to + * 0. */ + uint32_t : 1; + __OM uint32_t KEY : 8; /*!< [31..24] MMSFR Key Code */ + } MMSFR_b; + }; + + union + { + __IOM uint32_t MMEN; /*!< (@ 0x00000004) MemMirror Enable Register */ + + struct + { + __IOM uint32_t EN : 1; /*!< [0..0] Memory Mirror Function Enable */ + uint32_t : 23; + __OM uint32_t KEY : 8; /*!< [31..24] MMEN Key Code */ + } MMEN_b; + }; +} R_MMF_Type; /*!< Size = 8 (0x8) */ + +/* =========================================================================================================================== */ +/* ================ R_MPU_MMPU ================ */ +/* =========================================================================================================================== */ + +/** + * @brief Bus Master MPU (R_MPU_MMPU) + */ + +typedef struct /*!< (@ 0x40000000) R_MPU_MMPU Structure */ +{ + __IOM R_MPU_MMPU_MMPU_Type MMPU[3]; /*!< (@ 0x00000000) Bus Master MPU Registers */ +} R_MPU_MMPU_Type; /*!< Size = 3072 (0xc00) */ + +/* =========================================================================================================================== */ +/* ================ R_MPU_SMPU ================ */ +/* =========================================================================================================================== */ + +/** + * @brief Bus Slave MPU (R_MPU_SMPU) + */ + +typedef struct /*!< (@ 0x40000C00) R_MPU_SMPU Structure */ +{ + union + { + __IOM uint16_t SMPUCTL; /*!< (@ 0x00000000) Slave MPU Control Register */ + + struct + { + __IOM uint16_t OAD : 1; /*!< [0..0] Master Group enable */ + __IOM uint16_t PROTECT : 1; /*!< [1..1] Protection of register */ + uint16_t : 6; + __OM uint16_t KEY : 8; /*!< [15..8] Key Code This bit is used to enable or disable rewriting + * of the PROTECT and OAD bit. */ + } SMPUCTL_b; + }; + __IM uint16_t RESERVED[7]; + __IOM R_MPU_SMPU_SMPU_Type SMPU[10]; /*!< (@ 0x00000010) Access Control Structure for MBIU */ +} R_MPU_SMPU_Type; /*!< Size = 56 (0x38) */ + +/* =========================================================================================================================== */ +/* ================ 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 /*!< (@ 0x40047000) R_MSTP Structure */ +{ + union + { + __IOM uint32_t MSTPCRA; /*!< (@ 0x00000000) Module Stop Control Register A */ + + struct + { + __IOM uint32_t MSTPA0 : 1; /*!< [0..0] RAM0 Module Stop */ + uint32_t : 6; + __IOM uint32_t MSTPA7 : 1; /*!< [7..7] Standby RAM Module Stop */ + uint32_t : 14; + __IOM uint32_t MSTPA22 : 1; /*!< [22..22] DMA Controller/Data Transfer Controller Module Stop */ + uint32_t : 9; + } MSTPCRA_b; + }; + + union + { + __IOM uint32_t MSTPCRB; /*!< (@ 0x00000004) Module Stop Control Register B */ + + struct + { + uint32_t : 1; + __IOM uint32_t MSTPB1 : 1; /*!< [1..1] RCAN1 Module Stop */ + __IOM uint32_t MSTPB2 : 1; /*!< [2..2] RCAN0 Module Stop */ + __IOM uint32_t MSTPB3 : 1; /*!< [3..3] RCEC Module Stop */ + uint32_t : 1; + __IOM uint32_t MSTPB5 : 1; /*!< [5..5] IrDA Module Stop */ + __IOM uint32_t MSTPB6 : 1; /*!< [6..6] Queued Serial Peripheral Interface Module Stop */ + __IOM uint32_t MSTPB7 : 1; /*!< [7..7] I2C Bus Interface 2 Module Stop */ + __IOM uint32_t MSTPB8 : 1; /*!< [8..8] I2C Bus Interface 1 Module Stop */ + __IOM uint32_t MSTPB9 : 1; /*!< [9..9] IIC/I3C Bus Interface 0 Module Stop */ + uint32_t : 1; + __IOM uint32_t MSTPB11 : 1; /*!< [11..11] Universal Serial Bus 2.0 FS Interface Module Stop */ + __IOM uint32_t MSTPB12 : 1; /*!< [12..12] Universal Serial Bus 2.0 HS Interface Module Stop */ + __IOM uint32_t MSTPB13 : 1; /*!< [13..13] EPTPC and PTPEDMAC Module Stop */ + __IOM uint32_t MSTPB14 : 1; /*!< [14..14] ETHERC1 and EDMAC1 Module Stop */ + __IOM uint32_t MSTPB15 : 1; /*!< [15..15] ETHERC0 and EDMAC0 Module Stop */ + uint32_t : 2; + __IOM uint32_t MSTPB18 : 1; /*!< [18..18] Serial Peripheral Interface Module Stop */ + __IOM uint32_t MSTPB19 : 1; /*!< [19..19] Serial Peripheral Interface 0 Module Stop */ + uint32_t : 2; + __IOM uint32_t MSTPB22 : 1; /*!< [22..22] Serial Communication Interface 9 Module Stop */ + __IOM uint32_t MSTPB23 : 1; /*!< [23..23] Serial Communication Interface 8 Module Stop */ + __IOM uint32_t MSTPB24 : 1; /*!< [24..24] Serial Communication Interface 7 Module Stop */ + __IOM uint32_t MSTPB25 : 1; /*!< [25..25] Serial Communication Interface 6 Module Stop */ + __IOM uint32_t MSTPB26 : 1; /*!< [26..26] Serial Communication Interface 5 Module Stop */ + __IOM uint32_t MSTPB27 : 1; /*!< [27..27] Serial Communication Interface 4 Module Stop */ + __IOM uint32_t MSTPB28 : 1; /*!< [28..28] Serial Communication Interface 3 Module Stop */ + __IOM uint32_t MSTPB29 : 1; /*!< [29..29] Serial Communication Interface 2 Module Stop */ + __IOM uint32_t MSTPB30 : 1; /*!< [30..30] Serial Communication Interface 1 Module Stop */ + __IOM uint32_t MSTPB31 : 1; /*!< [31..31] Serial Communication Interface 0 Module Stop */ + } MSTPCRB_b; + }; + + union + { + __IOM uint32_t MSTPCRC; /*!< (@ 0x00000008) Module Stop Control Register C */ + + struct + { + __IOM uint32_t MSTPC0 : 1; /*!< [0..0] CAC Module Stop */ + __IOM uint32_t MSTPC1 : 1; /*!< [1..1] CRC Calculator Module Stop */ + __IOM uint32_t MSTPC2 : 1; /*!< [2..2] Parallel Data Capture Module Stop */ + __IOM uint32_t MSTPC3 : 1; /*!< [3..3] Capacitive Touch Sensing Unit Module Stop */ + __IOM uint32_t MSTPC4 : 1; /*!< [4..4] Segment LCD Controller Module Stop */ + __IOM uint32_t MSTPC5 : 1; /*!< [5..5] JPEG codec engine Module Stop */ + __IOM uint32_t MSTPC6 : 1; /*!< [6..6] 2DG engine Module Stop */ + __IOM uint32_t MSTPC7 : 1; /*!< [7..7] Synchronous Serial Interface 1 Module Stop */ + __IOM uint32_t MSTPC8 : 1; /*!< [8..8] Synchronous Serial Interface 0 Module Stop */ + __IOM uint32_t MSTPC9 : 1; /*!< [9..9] Sampling Rate Converter Module Stop */ + uint32_t : 1; + __IOM uint32_t MSTPC11 : 1; /*!< [11..11] Secure Digital Host IF/ Multi Media Card 1 Module Stop */ + __IOM uint32_t MSTPC12 : 1; /*!< [12..12] Secure Digital Host IF/ Multi Media Card 0 Module Stop */ + __IOM uint32_t MSTPC13 : 1; /*!< [13..13] Data Operation Circuit Module Stop */ + __IOM uint32_t MSTPC14 : 1; /*!< [14..14] Event Link Controller Module Stop */ + uint32_t : 5; + __IOM uint32_t MSTPC20 : 1; /*!< [20..20] Trigonometric Function Unit Module Stop */ + __IOM uint32_t MSTPC21 : 1; /*!< [21..21] IIR Filter Accelerator Module Stop */ + uint32_t : 5; + __IOM uint32_t MSTPC27 : 1; /*!< [27..27] CANFD Module Stop */ + __IOM uint32_t MSTPC28 : 1; /*!< [28..28] Random Number Generator Module Stop */ + uint32_t : 2; + __IOM uint32_t MSTPC31 : 1; /*!< [31..31] AES Module Stop */ + } MSTPCRC_b; + }; + + union + { + __IOM uint32_t MSTPCRD; /*!< (@ 0x0000000C) Module Stop Control Register D */ + + struct + { + __IOM uint32_t MSTPD0 : 1; /*!< [0..0] Low Power Asynchronous General Purpose Timer 3 Module + * Stop */ + __IOM uint32_t MSTPD1 : 1; /*!< [1..1] Low Power Asynchronous General Purpose Timer 2 Module + * Stop */ + __IOM uint32_t MSTPD2 : 1; /*!< [2..2] AGT1 Module StopNote: AGT1 is in the module stop state + * when the count source is either of PCLKB, PCLKB/2 or PCLKB/8. + * In case the count source is sub-clock or LOCO, this bit + * should be set to 1 except when accessing the registers + * of AGT1. */ + __IOM uint32_t MSTPD3 : 1; /*!< [3..3] AGT0 Module StopNote: AGT0 is in the module stop state + * when the count source is either of PCLKB, PCLKB/2 or PCLKB/8. + * In case the count source is sub-clock or LOCO, this bit + * should be set to 1 except when accessing the registers + * of AGT0. */ + uint32_t : 1; + __IOM uint32_t MSTPD5 : 1; /*!< [5..5] GPT Lower Module Stop */ + __IOM uint32_t MSTPD6 : 1; /*!< [6..6] GPT Higher Module Stop */ + uint32_t : 4; + __IOM uint32_t MSTPD11 : 1; /*!< [11..11] Port Output Enable for GPT 3 Module Stop */ + __IOM uint32_t MSTPD12 : 1; /*!< [12..12] Port Output Enable for GPT 2 Module Stop */ + __IOM uint32_t MSTPD13 : 1; /*!< [13..13] Port Output Enable for GPT 1 Module Stop */ + __IOM uint32_t MSTPD14 : 1; /*!< [14..14] POEG Module Stop */ + __IOM uint32_t MSTPD15 : 1; /*!< [15..15] 12-Bit A/D Converter 1 Module Stop */ + __IOM uint32_t MSTPD16 : 1; /*!< [16..16] 16-Bit A/D Converter Module Stop */ + __IOM uint32_t MSTPD17 : 1; /*!< [17..17] 24-bit Sigma-Delta A/DConverter Module Stop */ + uint32_t : 1; + __IOM uint32_t MSTPD19 : 1; /*!< [19..19] 8-Bit D/A Converter Module Stop */ + __IOM uint32_t MSTPD20 : 1; /*!< [20..20] 12-bit D/A Converter Module Stop */ + uint32_t : 1; + __IOM uint32_t MSTPD22 : 1; /*!< [22..22] Temperature Sensor Module Stop */ + __IOM uint32_t MSTPD23 : 1; /*!< [23..23] ACMPHS5 Module Stop */ + __IOM uint32_t MSTPD24 : 1; /*!< [24..24] ACMPHS4 Module Stop */ + __IOM uint32_t MSTPD25 : 1; /*!< [25..25] ACMPHS3 Module Stop */ + __IOM uint32_t MSTPD26 : 1; /*!< [26..26] ACMPHS2 Module Stop */ + __IOM uint32_t MSTPD27 : 1; /*!< [27..27] ACMPHS1 Module Stop */ + __IOM uint32_t MSTPD28 : 1; /*!< [28..28] ACMPHS0 Module Stop */ + __IOM uint32_t MSTPD29 : 1; /*!< [29..29] Comparator-LP Module Stop */ + uint32_t : 1; + __IOM uint32_t MSTPD31 : 1; /*!< [31..31] Operational Amplifier Module Stop */ + } MSTPCRD_b; + }; + + union + { + __IOM uint32_t MSTPCRE; /*!< (@ 0x00000010) Module Stop Control Register E */ + + struct + { + uint32_t : 4; + __IOM uint32_t MSTPE4 : 1; /*!< [4..4] KINT Module Stop */ + uint32_t : 9; + __IOM uint32_t MSTPE14 : 1; /*!< [14..14] Low Power Asynchronous General Purpose Timer 5 Module + * Stop */ + __IOM uint32_t MSTPE15 : 1; /*!< [15..15] Low Power Asynchronous General Purpose Timer 4 Module + * Stop */ + uint32_t : 6; + __IOM uint32_t MSTPE22 : 1; /*!< [22..22] GPT9 Module Stop */ + __IOM uint32_t MSTPE23 : 1; /*!< [23..23] GPT8 Module Stop */ + __IOM uint32_t MSTPE24 : 1; /*!< [24..24] GPT7 Module Stop */ + __IOM uint32_t MSTPE25 : 1; /*!< [25..25] GPT6 Module Stop */ + __IOM uint32_t MSTPE26 : 1; /*!< [26..26] GPT5 Module Stop */ + __IOM uint32_t MSTPE27 : 1; /*!< [27..27] GPT4 Module Stop */ + __IOM uint32_t MSTPE28 : 1; /*!< [28..28] GPT3 Module Stop */ + __IOM uint32_t MSTPE29 : 1; /*!< [29..29] GPT2 Module Stop */ + __IOM uint32_t MSTPE30 : 1; /*!< [30..30] GPT1 Module Stop */ + __IOM uint32_t MSTPE31 : 1; /*!< [31..31] GPT0 Module Stop */ + } MSTPCRE_b; + }; +} R_MSTP_Type; /*!< Size = 20 (0x14) */ + +/* =========================================================================================================================== */ +/* ================ R_OPAMP ================ */ +/* =========================================================================================================================== */ + +/** + * @brief Operational Amplifier (R_OPAMP) + */ + +typedef struct /*!< (@ 0x40086000) R_OPAMP Structure */ +{ + __IM uint8_t RESERVED[8]; + + union + { + __IOM uint8_t AMPMC; /*!< (@ 0x00000008) Operational amplifier mode control register */ + + struct + { + __IOM uint8_t AMPPC0 : 1; /*!< [0..0] Operational amplifier precharge control status */ + __IOM uint8_t AMPPC1 : 1; /*!< [1..1] Operational amplifier precharge control status */ + __IOM uint8_t AMPPC2 : 1; /*!< [2..2] Operational amplifier precharge control status */ + uint8_t : 4; + __IOM uint8_t AMPSP : 1; /*!< [7..7] Operation mode selection */ + } AMPMC_b; + }; + + union + { + __IOM uint8_t AMPTRM; /*!< (@ 0x00000009) Operational amplifier trigger mode control register */ + + struct + { + __IOM uint8_t AMPTRM0 : 2; /*!< [1..0] Operational amplifier function activation/stop trigger + * control */ + __IOM uint8_t AMPTRM1 : 2; /*!< [3..2] Operational amplifier function activation/stop trigger + * control */ + __IOM uint8_t AMPTRM2 : 2; /*!< [5..4] Operational amplifier function activation/stop trigger + * control */ + __IOM uint8_t AMPTRM3 : 2; /*!< [7..6] Operational amplifier function activation/stop trigger + * control */ + } AMPTRM_b; + }; + + union + { + __IOM uint8_t AMPTRS; /*!< (@ 0x0000000A) Operational Amplifier Activation Trigger Select + * Register */ + + struct + { + __IOM uint8_t AMPTRS : 2; /*!< [1..0] ELC trigger selection Do not change the value of the + * AMPTRS register after setting the AMPTRM register. */ + uint8_t : 6; + } AMPTRS_b; + }; + + union + { + __IOM uint8_t AMPC; /*!< (@ 0x0000000B) Operational amplifier control register */ + + struct + { + __IOM uint8_t AMPE0 : 1; /*!< [0..0] Operation control of operational amplifier */ + __IOM uint8_t AMPE1 : 1; /*!< [1..1] Operation control of operational amplifier */ + __IOM uint8_t AMPE2 : 1; /*!< [2..2] Operation control of operational amplifier */ + __IOM uint8_t AMPE3 : 1; /*!< [3..3] Operation control of operational amplifier */ + uint8_t : 3; + __IOM uint8_t IREFE : 1; /*!< [7..7] Operation control of operational amplifier reference + * current circuit */ + } AMPC_b; + }; + + union + { + __IM uint8_t AMPMON; /*!< (@ 0x0000000C) Operational amplifier monitor register */ + + struct + { + __IM uint8_t AMPMON0 : 1; /*!< [0..0] Operational amplifier status */ + __IM uint8_t AMPMON1 : 1; /*!< [1..1] Operational amplifier status */ + __IM uint8_t AMPMON2 : 1; /*!< [2..2] Operational amplifier status */ + __IM uint8_t AMPMON3 : 1; /*!< [3..3] Operational amplifier status */ + uint8_t : 4; + } AMPMON_b; + }; + __IM uint8_t RESERVED1; + __IOM R_OPAMP_AMP_Type AMP[4]; /*!< (@ 0x0000000E) Input and Output Selectors for Operational Amplifier + * [0..3] */ + + union + { + __IOM uint8_t AMPCPC; /*!< (@ 0x0000001A) Operational amplifier switch charge pump control + * register */ + + struct + { + __IOM uint8_t PUMP0EN : 1; /*!< [0..0] charge pump for AMP0 enable/disable */ + __IOM uint8_t PUMP1EN : 1; /*!< [1..1] charge pump for AMP1 enable/disable */ + __IOM uint8_t PUMP2EN : 1; /*!< [2..2] charge pump for AMP2 enable/disable */ + uint8_t : 5; + } AMPCPC_b; + }; + __IM uint8_t RESERVED2[4]; + + union + { + __IOM uint8_t AMPUOTE; /*!< (@ 0x0000001F) Operational Amplifier User Offset Trimming Enable + * Register */ + + struct + { + __IOM uint8_t AMP0TE : 1; /*!< [0..0] AMP0OT write enable */ + __IOM uint8_t AMP1TE : 1; /*!< [1..1] AMP1OT write enable */ + __IOM uint8_t AMP2TE : 1; /*!< [2..2] AMP2OT write enable */ + uint8_t : 5; + } AMPUOTE_b; + }; + __IOM R_OPAMP_AMPOT_Type AMPOT[3]; /*!< (@ 0x00000020) Operational Amplifier n Offset Trimming Registers */ +} R_OPAMP_Type; /*!< Size = 38 (0x26) */ + +/* =========================================================================================================================== */ +/* ================ R_PDC ================ */ +/* =========================================================================================================================== */ + +/** + * @brief Parallel Data Capture Unit (R_PDC) + */ + +typedef struct /*!< (@ 0x40094000) R_PDC Structure */ +{ + union + { + __IOM uint32_t PCCR0; /*!< (@ 0x00000000) PDC Control Register 0 */ + + struct + { + __IOM uint32_t PCKE : 1; /*!< [0..0] Channel 0 GTCNT Count Clear */ + __IOM uint32_t VPS : 1; /*!< [1..1] VSYNC Signal Polarity Select */ + __IOM uint32_t HPS : 1; /*!< [2..2] HSYNC Signal Polarity Select */ + __OM uint32_t PRST : 1; /*!< [3..3] PDC Reset */ + __IOM uint32_t DFIE : 1; /*!< [4..4] Receive Data Ready Interrupt Enable */ + __IOM uint32_t FEIE : 1; /*!< [5..5] Frame End Interrupt Enable */ + __IOM uint32_t OVIE : 1; /*!< [6..6] Overrun Interrupt Enable */ + __IOM uint32_t UDRIE : 1; /*!< [7..7] Underrun Interrupt Enable */ + __IOM uint32_t VERIE : 1; /*!< [8..8] Vertical Line Number Setting Error Interrupt Enable */ + __IOM uint32_t HERIE : 1; /*!< [9..9] Horizontal Byte Number Setting Error Interrupt Enable */ + __IOM uint32_t PCKOE : 1; /*!< [10..10] PCKO Output Enable */ + __IOM uint32_t PCKDIV : 3; /*!< [13..11] PCKO Frequency Division Ratio Select */ + __IOM uint32_t EDS : 1; /*!< [14..14] Endian Select */ + uint32_t : 17; + } PCCR0_b; + }; + + union + { + __IOM uint32_t PCCR1; /*!< (@ 0x00000004) PDC Control Register 1 */ + + struct + { + __IOM uint32_t PCE : 1; /*!< [0..0] PDC Operation Enable */ + uint32_t : 31; + } PCCR1_b; + }; + + union + { + __IOM uint32_t PCSR; /*!< (@ 0x00000008) PDC Status Register */ + + struct + { + __IM uint32_t FBSY : 1; /*!< [0..0] Frame Busy Flag */ + __IM uint32_t FEMPF : 1; /*!< [1..1] FIFO Empty Flag */ + __IOM uint32_t FEF : 1; /*!< [2..2] Frame End Flag */ + __IOM uint32_t OVRF : 1; /*!< [3..3] Overrun Flag */ + __IOM uint32_t UDRF : 1; /*!< [4..4] Underrun Flag */ + __IOM uint32_t VERF : 1; /*!< [5..5] Vertical Line Number Setting Error Flag */ + __IOM uint32_t HERF : 1; /*!< [6..6] Horizontal Byte Number Setting Error Flag */ + uint32_t : 25; + } PCSR_b; + }; + + union + { + __IM uint32_t PCMONR; /*!< (@ 0x0000000C) PDC Pin Monitor Register */ + + struct + { + __IM uint32_t VSYNC : 1; /*!< [0..0] VSYNC Signal Status Flag */ + __IM uint32_t HSYNC : 1; /*!< [1..1] HSYNC Signal Status Flag */ + uint32_t : 30; + } PCMONR_b; + }; + + union + { + __IM uint32_t PCDR; /*!< (@ 0x00000010) PDC Receive Data Register */ + + struct + { + __IM uint32_t PCDR : 32; /*!< [31..0] The PDC includes a 32-bit-wide, 22-stage FIFO for the + * storage of captured data. The PCDR register is a 4-byte + * space to which the FIFO is mapped, and four bytes of data + * are read from the PCDR register at a time. */ + } PCDR_b; + }; + + union + { + __IOM uint32_t VCR; /*!< (@ 0x00000014) Vertical Capture Register */ + + struct + { + __IOM uint32_t VST : 12; /*!< [11..0] Vertical Capture Start Line PositionNumber of the line + * where capture is to start. */ + uint32_t : 4; + __IOM uint32_t VSZ : 12; /*!< [27..16] Vertical Capture Size Number of lines to be captured. */ + uint32_t : 4; + } VCR_b; + }; + + union + { + __IOM uint32_t HCR; /*!< (@ 0x00000018) Horizontal Capture Register */ + + struct + { + __IOM uint32_t HST : 12; /*!< [11..0] Horizontal Capture Start Byte Position Horizontal position + * in bytes where capture is to start. */ + uint32_t : 4; + __IOM uint32_t HSZ : 12; /*!< [27..16] Horizontal Capture Size Number of bytes to capture + * horizontally. */ + uint32_t : 4; + } HCR_b; + }; +} R_PDC_Type; /*!< Size = 28 (0x1c) */ + +/* =========================================================================================================================== */ +/* ================ R_PORT0 ================ */ +/* =========================================================================================================================== */ + +/** + * @brief I/O Ports (R_PORT0) + */ + +typedef struct /*!< (@ 0x40040000) 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 PODR; /*!< (@ 0x00000000) 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 + { + __IOM uint16_t PDR; /*!< (@ 0x00000002) 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 + { + 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 EIDR; /*!< (@ 0x00000004) 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 + { + __IM uint16_t PIDR; /*!< (@ 0x00000006) 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 + { + 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 PORR; /*!< (@ 0x00000008) 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 + { + __OM uint16_t POSR; /*!< (@ 0x0000000A) 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 + { + 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 EORR; /*!< (@ 0x0000000C) 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; + }; + + union + { + __IOM uint16_t EOSR; /*!< (@ 0x0000000E) 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; + }; + }; + }; +} R_PORT0_Type; /*!< Size = 16 (0x10) */ + +/* =========================================================================================================================== */ +/* ================ R_PFS ================ */ +/* =========================================================================================================================== */ + +/** + * @brief I/O Ports-PFS (R_PFS) + */ + +typedef struct /*!< (@ 0x40040800) 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) + */ + + #ifndef BSP_OVERRIDE_REG_R_PMISC_TYPE + +typedef struct /*!< (@ 0x40040D00) 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 */ + __IOM uint8_t PHYMODE1 : 1; /*!< [5..5] Ethernet Mode Setting ch1 */ + uint8_t : 2; + } PFENET_b; + }; + __IM uint8_t RESERVED[2]; + + union + { + __IOM uint8_t PWPR; /*!< (@ 0x00000003) 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 RESERVED1; + + union + { + __IOM uint8_t PWPRS; /*!< (@ 0x00000005) 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 uint16_t RESERVED2[5]; + __IOM R_PMISC_PMSAR_Type PMSAR[12]; /*!< (@ 0x00000010) Port Security Attribution Register */ +} R_PMISC_Type; /*!< Size = 40 (0x28) */ + + #endif + +/* =========================================================================================================================== */ +/* ================ R_QSPI ================ */ +/* =========================================================================================================================== */ + +/** + * @brief Quad Serial Peripheral Interface (R_QSPI) + */ + +typedef struct /*!< (@ 0x64000000) R_QSPI Structure */ +{ + union + { + __IOM uint32_t SFMSMD; /*!< (@ 0x00000000) Transfer Mode Control Register */ + + struct + { + __IOM uint32_t SFMRM : 3; /*!< [2..0] Serial interface read mode selection */ + uint32_t : 1; + __IOM uint32_t SFMSE : 2; /*!< [5..4] Selection of the prefetch function */ + __IOM uint32_t SFMPFE : 1; /*!< [6..6] Selection of the prefetch function */ + __IOM uint32_t SFMPAE : 1; /*!< [7..7] Selection of the function for stopping prefetch at locations + * other than on byte boundaries */ + __IOM uint32_t SFMMD3 : 1; /*!< [8..8] SPI mode selection. An initial value is determined by + * input to CFGMD3. */ + __IOM uint32_t SFMOEX : 1; /*!< [9..9] Extension of the I/O buffer output enable signal for + * the serial interface */ + __IOM uint32_t SFMOHW : 1; /*!< [10..10] Hold time adjustment for serial transmission */ + __IOM uint32_t SFMOSW : 1; /*!< [11..11] Setup time adjustment for serial transmission */ + uint32_t : 3; + __IOM uint32_t SFMCCE : 1; /*!< [15..15] Read instruction code selection. */ + uint32_t : 16; + } SFMSMD_b; + }; + + union + { + __IOM uint32_t SFMSSC; /*!< (@ 0x00000004) Chip Selection Control Register */ + + struct + { + __IOM uint32_t SFMSW : 4; /*!< [3..0] Selection of a minimum high-level width of the QSSL signal */ + __IOM uint32_t SFMSHD : 1; /*!< [4..4] QSSL signal release timing selection */ + __IOM uint32_t SFMSLD : 1; /*!< [5..5] QSSL signal output timing selection */ + uint32_t : 26; + } SFMSSC_b; + }; + + union + { + __IOM uint32_t SFMSKC; /*!< (@ 0x00000008) Clock Control Register */ + + struct + { + __IOM uint32_t SFMDV : 5; /*!< [4..0] Serial interface reference cycle selection (* Pay attention + * to the irregularity.)NOTE: When PCLKA multiplied by an + * odd number is selected, the high-level width of the SCK + * signal is longer than the low-level width by 1 x PCLKA + * before duty ratio correction. */ + __IOM uint32_t SFMDTY : 1; /*!< [5..5] Selection of a duty ratio correction function for the + * SCK signal */ + uint32_t : 26; + } SFMSKC_b; + }; + + union + { + __IM uint32_t SFMSST; /*!< (@ 0x0000000C) Status Register */ + + struct + { + __IM uint32_t PFCNT : 5; /*!< [4..0] Number of bytes of prefetched dataRange: 00000 - 10010 + * (No combination other than the above is available.) */ + uint32_t : 1; + __IM uint32_t PFFUL : 1; /*!< [6..6] Prefetch buffer state */ + __IM uint32_t PFOFF : 1; /*!< [7..7] Prefetch function operation state */ + uint32_t : 24; + } SFMSST_b; + }; + + union + { + __IOM uint32_t SFMCOM; /*!< (@ 0x00000010) Communication Port Register */ + + struct + { + __IOM uint32_t SFMD : 8; /*!< [7..0] Port for direct communication with the SPI bus.Input/output + * to and from this port is converted to a SPIbus cycle. This + * port is accessible in the direct communication mode (DCOM=1) + * only.Access to this port is ignored in the ROM access mode. */ + uint32_t : 24; + } SFMCOM_b; + }; + + union + { + __IOM uint32_t SFMCMD; /*!< (@ 0x00000014) Communication Mode Control Register */ + + struct + { + __IOM uint32_t DCOM : 1; /*!< [0..0] Selection of a mode of communication with the SPI bus */ + uint32_t : 31; + } SFMCMD_b; + }; + + union + { + __IOM uint32_t SFMCST; /*!< (@ 0x00000018) Communication Status Register */ + + struct + { + __IM uint32_t COMBSY : 1; /*!< [0..0] SPI bus cycle completion state in direct communication */ + uint32_t : 6; + __IM uint32_t EROMR : 1; /*!< [7..7] Status of ROM access detection in the direct communication + * modeNOTE: Writing of 0 only is possible. Writing of 1 is + * ignored. */ + uint32_t : 24; + } SFMCST_b; + }; + __IM uint32_t RESERVED; + + union + { + __IOM uint32_t SFMSIC; /*!< (@ 0x00000020) Instruction Code Register */ + + struct + { + __IOM uint32_t SFMCIC : 8; /*!< [7..0] Serial ROM instruction code to substitute */ + uint32_t : 24; + } SFMSIC_b; + }; + + union + { + __IOM uint32_t SFMSAC; /*!< (@ 0x00000024) Address Mode Control Register */ + + struct + { + __IOM uint32_t SFMAS : 2; /*!< [1..0] Selection the number of address bits of the serial interface */ + uint32_t : 2; + __IOM uint32_t SFM4BC : 1; /*!< [4..4] Selection of a default instruction code, when Serial + * Interface address width is selected 4 bytes. */ + uint32_t : 27; + } SFMSAC_b; + }; + + union + { + __IOM uint32_t SFMSDC; /*!< (@ 0x00000028) Dummy Cycle Control Register */ + + struct + { + __IOM uint32_t SFMDN : 4; /*!< [3..0] Selection of the number of dummy cycles of Fast Read + * instructions */ + uint32_t : 2; + __IM uint32_t SFMXST : 1; /*!< [6..6] XIP mode status */ + __IOM uint32_t SFMXEN : 1; /*!< [7..7] XIP mode permission */ + __IOM uint32_t SFMXD : 8; /*!< [15..8] Mode data for serial ROM. (Control XIP mode) */ + uint32_t : 16; + } SFMSDC_b; + }; + __IM uint32_t RESERVED1; + + union + { + __IOM uint32_t SFMSPC; /*!< (@ 0x00000030) SPI Protocol Control Register */ + + struct + { + __IOM uint32_t SFMSPI : 2; /*!< [1..0] Selection of SPI protocolNOTE: Serial ROM's SPI protocol + * is required to be set by software separately. */ + uint32_t : 2; + __IOM uint32_t SFMSDE : 1; /*!< [4..4] Selection of the minimum time of input output switch, + * when Dual SPI protocol or Quad SPI protocol is selected. */ + uint32_t : 27; + } SFMSPC_b; + }; + + union + { + __IOM uint32_t SFMPMD; /*!< (@ 0x00000034) Port Control Register */ + + struct + { + uint32_t : 2; + __IOM uint32_t SFMWPL : 1; /*!< [2..2] Specify level of WP pin */ + uint32_t : 29; + } SFMPMD_b; + }; + __IM uint32_t RESERVED2[499]; + + union + { + __IOM uint32_t SFMCNT1; /*!< (@ 0x00000804) External QSPI Address Register 1 */ + + struct + { + uint32_t : 26; + __IOM uint32_t QSPI_EXT : 6; /*!< [31..26] BANK Switching AddressWhen accessing from 0x6000_0000 + * to 0x63FF_FFFF, Addres bus is Set QSPI_EXT[5:0] to high-order + * 6bits of SHADDR[31:0]NOTE: Setting 6'h3F is prihibited. */ + } SFMCNT1_b; + }; +} R_QSPI_Type; /*!< Size = 2056 (0x808) */ + +/* =========================================================================================================================== */ +/* ================ R_RTC ================ */ +/* =========================================================================================================================== */ + +/** + * @brief Realtime Clock (R_RTC) + */ + +typedef struct /*!< (@ 0x40044000) 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 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; + }; + + 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; + }; + }; + __IM uint8_t RESERVED1; + + union + { + 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; + }; + + 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; + }; + }; + __IM uint8_t RESERVED2; + + union + { + 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; + }; + + 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; + }; + }; + __IM uint8_t RESERVED3; + + union + { + 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; + }; + + 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; + }; + }; + __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 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; + }; + + 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; + }; + }; + __IM uint8_t RESERVED7; + + union + { + 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; + }; + + 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; + }; + }; + __IM uint8_t RESERVED8; + + union + { + 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; + }; + + 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; + }; + }; + __IM uint8_t RESERVED9; + + union + { + 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; + }; + + 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; + }; + }; + __IM uint8_t RESERVED10; + + union + { + 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; + }; + + 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; + }; + }; + __IM uint8_t RESERVED11; + + union + { + 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; + }; + + 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; + }; + }; + __IM uint8_t RESERVED12; + + union + { + 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 + { + __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 + { + 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; + }; + + 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; + }; + }; + __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 /*!< (@ 0x40070000) 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 + { + uint8_t : 2; + __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_SDADC0 ================ */ +/* =========================================================================================================================== */ + +/** + * @brief R_SDADC0 (R_SDADC0) + */ + +typedef struct /*!< (@ 0x4009C000) R_SDADC0 Structure */ +{ + union + { + __IOM uint16_t STC1; /*!< (@ 0x00000000) Startup Control Register 1 */ + + struct + { + __IOM uint16_t CLKDIV : 4; /*!< [3..0] SDADC24 Reference Clock Division */ + uint16_t : 3; + __IOM uint16_t SDADLPM : 1; /*!< [7..7] A/D conversion operation model select */ + __IOM uint16_t VSBIAS : 4; /*!< [11..8] Reference voltage select */ + uint16_t : 3; + __IOM uint16_t VREFSEL : 1; /*!< [15..15] VREF mode select */ + } STC1_b; + }; + __IM uint16_t RESERVED; + + union + { + __IOM uint8_t STC2; /*!< (@ 0x00000004) Startup Control Register 2 */ + + struct + { + __IOM uint8_t BGRPON : 1; /*!< [0..0] BGR part power control */ + __IOM uint8_t ADCPON : 1; /*!< [1..1] ADREG forced power-down */ + __IOM uint8_t ADFPWDS : 1; /*!< [2..2] ADC reference supply part */ + uint8_t : 5; + } STC2_b; + }; + __IM uint8_t RESERVED1; + __IM uint16_t RESERVED2; + + union + { + __IOM uint32_t PGAC[5]; /*!< (@ 0x00000008) Input Multiplexer [0..4] Setting Register */ + + struct + { + __IOM uint32_t PGAGC : 5; /*!< [4..0] Gain selection of a programmable gain instrumentation + * amplifier ( Gset1, Gset2, Gtotal ) */ + __IOM uint32_t PGAOSR : 3; /*!< [7..5] Oversampling ratio select */ + __IOM uint32_t PGAOFS : 5; /*!< [12..8] Offset voltage select */ + uint32_t : 1; + __IOM uint32_t PGAPOL : 1; /*!< [14..14] Polarity select */ + __IOM uint32_t PGASEL : 1; /*!< [15..15] Analog Channel Input Mode Select */ + __IOM uint32_t PGACTM : 5; /*!< [20..16] Coefficient (m) selection of the A/D conversion count + * (N) in AUTOSCAN */ + __IOM uint32_t PGACTN : 3; /*!< [23..21] Coefficient (n) selection of the A/D conversion count + * (N) in AUTOSCAN */ + __IOM uint32_t PGAAVN : 2; /*!< [25..24] Selection of the number of data to be averaged */ + __IOM uint32_t PGAAVE : 2; /*!< [27..26] Selection of averaging processing */ + __IOM uint32_t PGAREV : 1; /*!< [28..28] Single-End Input A/D Converted Data Inversion Select */ + uint32_t : 1; + __IOM uint32_t PGACVE : 1; /*!< [30..30] Calibration enable */ + __IOM uint32_t PGAASN : 1; /*!< [31..31] Selection of the mode for specifying the number of + * A/D conversions in ADSCAN */ + } PGAC_b[5]; + }; + + union + { + __IOM uint32_t ADC1; /*!< (@ 0x0000001C) Sigma-Delta A/D Converter Control Register 1 */ + + struct + { + __IOM uint32_t SDADSCM : 1; /*!< [0..0] Selection of autoscan mode */ + uint32_t : 3; + __IOM uint32_t SDADTMD : 1; /*!< [4..4] Selection of A/D conversion trigger signal */ + uint32_t : 3; + __IOM uint32_t SDADBMP : 5; /*!< [12..8] A/D conversion control of the signal from input multiplexer */ + uint32_t : 3; + __IOM uint32_t PGADISA : 1; /*!< [16..16] Control of disconnection detection */ + __IOM uint32_t PGADISC : 1; /*!< [17..17] Disconnection Detection Assist Setting */ + uint32_t : 2; + __IOM uint32_t PGASLFT : 1; /*!< [20..20] PGA offset self-diagnosis enable */ + uint32_t : 11; + } ADC1_b; + }; + + union + { + __IOM uint8_t ADC2; /*!< (@ 0x00000020) Sigma-Delta A/D Converter Control Register 2 */ + + struct + { + __IOM uint8_t SDADST : 1; /*!< [0..0] Control of A/D conversion */ + uint8_t : 7; + } ADC2_b; + }; + __IM uint8_t RESERVED3; + __IM uint16_t RESERVED4; + + union + { + __IOM uint32_t ADCR; /*!< (@ 0x00000024) Sigma-delta A/D Converter Conversion Result Register */ + + struct + { + __IM uint32_t SDADCRD : 24; /*!< [23..0] The 24-bit A/D conversion result */ + __IM uint32_t SDADCRS : 1; /*!< [24..24] Status of an A/D conversion result */ + __IM uint32_t SDADCRC : 3; /*!< [27..25] Channel number for an A/D conversion result */ + uint32_t : 4; + } ADCR_b; + }; + + union + { + __IM uint32_t ADAR; /*!< (@ 0x00000028) Sigma-delta A/D Converter Average Value Register */ + + struct + { + __IM uint32_t SDADMVD : 24; /*!< [23..0] The 24-bit A/D average value */ + __IM uint32_t SDADMVS : 1; /*!< [24..24] Status of an A/D conversion result */ + __IM uint32_t SDADMVC : 3; /*!< [27..25] Channel number for an A/D conversion result */ + uint32_t : 4; + } ADAR_b; + }; + __IM uint32_t RESERVED5; + + union + { + __IOM uint8_t CLBC; /*!< (@ 0x00000030) Calibration Control Register */ + + struct + { + __IOM uint8_t CLBMD : 2; /*!< [1..0] These bits are read as 0. The write value should be 0. */ + uint8_t : 6; + } CLBC_b; + }; + __IM uint8_t RESERVED6; + __IM uint16_t RESERVED7; + + union + { + __IOM uint8_t CLBSTR; /*!< (@ 0x00000034) Calibration Start Control Register */ + + struct + { + __IOM uint8_t CLBST : 1; /*!< [0..0] Calibration start control */ + uint8_t : 7; + } CLBSTR_b; + }; + __IM uint8_t RESERVED8; + __IM uint16_t RESERVED9; + __IM uint32_t RESERVED10; + + union + { + __IM uint8_t CLBSSR; /*!< (@ 0x0000003C) Calibration Status Register */ + + struct + { + __IM uint8_t CLBSS : 1; /*!< [0..0] Calibration status */ + uint8_t : 7; + } CLBSSR_b; + }; + __IM uint8_t RESERVED11; + __IM uint16_t RESERVED12; +} R_SDADC0_Type; /*!< Size = 64 (0x40) */ + +/* =========================================================================================================================== */ +/* ================ R_SDHI0 ================ */ +/* =========================================================================================================================== */ + +/** + * @brief SD/MMC Host Interface (R_SDHI0) + */ + +typedef struct /*!< (@ 0x40062000) 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 e */ + 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 */ + 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 mu */ + 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_SLCDC ================ */ +/* =========================================================================================================================== */ + +/** + * @brief Segment LCD Controller/Driver (R_SLCDC) + */ + +typedef struct /*!< (@ 0x40082000) R_SLCDC Structure */ +{ + union + { + __IOM uint8_t LCDM0; /*!< (@ 0x00000000) LCD Mode Register 0 */ + + struct + { + __IOM uint8_t LBAS : 2; /*!< [1..0] LCD Display Bias Method Select */ + __IOM uint8_t LDTY : 3; /*!< [4..2] Time Slice of LCD Display Select */ + __IOM uint8_t LWAVE : 1; /*!< [5..5] LCD display waveform selection */ + __IOM uint8_t MDSET : 2; /*!< [7..6] LCD drive voltage generator selection */ + } LCDM0_b; + }; + + union + { + __IOM uint8_t LCDM1; /*!< (@ 0x00000001) LCD Mode Register 1 */ + + struct + { + __IOM uint8_t LCDVLM : 1; /*!< [0..0] Voltage Boosting Pin Initial Value Switching Control */ + uint8_t : 2; + __IOM uint8_t LCDSEL : 1; /*!< [3..3] Display data area control */ + __IOM uint8_t BLON : 1; /*!< [4..4] Display data area control */ + __IOM uint8_t VLCON : 1; /*!< [5..5] Voltage boost circuit or capacitor split circuit operation + * enable/disable */ + __IOM uint8_t SCOC : 1; /*!< [6..6] LCD Display Enable/Disable */ + __IOM uint8_t LCDON : 1; /*!< [7..7] LCD Display Enable/Disable */ + } LCDM1_b; + }; + + union + { + __IOM uint8_t LCDC0; /*!< (@ 0x00000002) LCD Clock Control Register 0 */ + + struct + { + __IOM uint8_t LCDC : 6; /*!< [5..0] LCD clock (LCDCL) */ + uint8_t : 2; + } LCDC0_b; + }; + + union + { + __IOM uint8_t VLCD; /*!< (@ 0x00000003) LCD Boost Level Control Register */ + + struct + { + __IOM uint8_t VLCD : 5; /*!< [4..0] Reference Voltage(Contrast Adjustment) Select */ + uint8_t : 3; + } VLCD_b; + }; + __IM uint8_t RESERVED[252]; + + union + { + __IOM uint8_t SEG[64]; /*!< (@ 0x00000100) LCD Display Data Array */ + + struct + { + __IOM uint8_t A : 4; /*!< [3..0] A-Pattern Area */ + __IOM uint8_t B : 4; /*!< [7..4] B-Pattern Area */ + } SEG_b[64]; + }; +} R_SLCDC_Type; /*!< Size = 320 (0x140) */ + +/* =========================================================================================================================== */ +/* ================ R_SPI0 ================ */ +/* =========================================================================================================================== */ + +/** + * @brief Serial Peripheral Interface (R_SPI0) + */ + +typedef struct /*!< (@ 0x40072000) 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 uint8_t PARIOAD; /*!< (@ 0x00000000) SRAM Parity Error Operation After Detection Register */ + + struct + { + __IOM uint8_t OAD : 1; /*!< [0..0] Operation after Detection */ + uint8_t : 7; + } PARIOAD_b; + }; + __IM uint8_t RESERVED[3]; + + union + { + __IOM uint8_t SRAMPRCR; /*!< (@ 0x00000004) SRAM Protection Register */ + + struct + { + __IOM uint8_t SRAMPRCR : 1; /*!< [0..0] Register Write Control */ + __OM uint8_t KW : 7; /*!< [7..1] Write Key Code */ + } SRAMPRCR_b; + }; + __IM uint8_t RESERVED1[3]; + __IOM uint8_t SRAMWTSC; /*!< (@ 0x00000008) RAM Wait State Control Register */ + __IM uint8_t RESERVED2[3]; + + union + { + __IOM uint8_t SRAMPRCR2; /*!< (@ 0x0000000C) SRAM Protection Register 2 */ + + struct + { + __IOM uint8_t SRAMPRCR2 : 1; /*!< [0..0] Register Write Control */ + __OM uint8_t KW : 7; /*!< [7..1] Write Key Code */ + } SRAMPRCR2_b; + }; + __IM uint8_t RESERVED3[179]; + + union + { + __IOM uint8_t ECCMODE; /*!< (@ 0x000000C0) ECC Operating Mode Control Register */ + + struct + { + __IOM uint8_t ECCMOD : 2; /*!< [1..0] ECC Operating Mode Select */ + uint8_t : 6; + } ECCMODE_b; + }; + + union + { + __IOM uint8_t ECC2STS; /*!< (@ 0x000000C1) ECC 2-Bit Error Status Register */ + + struct + { + __IOM uint8_t ECC2ERR : 1; /*!< [0..0] ECC 2-Bit Error Status */ + uint8_t : 7; + } ECC2STS_b; + }; + + union + { + __IOM uint8_t ECC1STSEN; /*!< (@ 0x000000C2) ECC 1-Bit Error Information Update Enable Register */ + + struct + { + __IOM uint8_t E1STSEN : 1; /*!< [0..0] ECC 1-Bit Error Information Update Enable */ + uint8_t : 7; + } ECC1STSEN_b; + }; + + union + { + __IOM uint8_t ECC1STS; /*!< (@ 0x000000C3) ECC 1-Bit Error Status Register */ + + struct + { + __IOM uint8_t ECC1ERR : 1; /*!< [0..0] ECC 1-Bit Error Status */ + uint8_t : 7; + } ECC1STS_b; + }; + + union + { + __IOM uint8_t ECCPRCR; /*!< (@ 0x000000C4) ECC Protection Register */ + + struct + { + __IOM uint8_t ECCPRCR : 1; /*!< [0..0] Register Write Control */ + __OM uint8_t KW : 7; /*!< [7..1] Write Key Code */ + } ECCPRCR_b; + }; + __IM uint8_t RESERVED4[11]; + + union + { + __IOM uint8_t ECCPRCR2; /*!< (@ 0x000000D0) ECC Protection Register 2 */ + + struct + { + __IOM uint8_t ECCPRCR2 : 1; /*!< [0..0] Register Write Control */ + __OM uint8_t KW2 : 7; /*!< [7..1] Write Key Code */ + } ECCPRCR2_b; + }; + __IM uint8_t RESERVED5[3]; + + union + { + __IOM uint8_t ECCETST; /*!< (@ 0x000000D4) ECC Test Control Register */ + + struct + { + __IOM uint8_t TSTBYP : 1; /*!< [0..0] ECC Bypass Select */ + uint8_t : 7; + } ECCETST_b; + }; + __IM uint8_t RESERVED6[3]; + + union + { + __IOM uint8_t ECCOAD; /*!< (@ 0x000000D8) SRAM ECC Error Operation After Detection Register */ + + struct + { + __IOM uint8_t OAD : 1; /*!< [0..0] Operation after Detection */ + uint8_t : 7; + } ECCOAD_b; + }; +} R_SRAM_Type; /*!< Size = 217 (0xd9) */ + +/* =========================================================================================================================== */ +/* ================ R_BUS_B ================ */ +/* =========================================================================================================================== */ + +/** + * @brief Bus Interface (R_BUS_B) + */ + +typedef struct /*!< (@ 0x40003000) R_BUS_B Structure */ +{ + __IOM R_BUS_B_CSa_Type CSa[8]; /*!< (@ 0x00000000) CS Registers */ + __IM uint32_t RESERVED[480]; + __IOM R_BUS_B_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[543]; + + union + { + __IOM uint16_t BUSSCNTFHBIU; /*!< (@ 0x00001100) Slave Bus Control Register */ + + struct + { + __IOM uint16_t ARBS : 2; /*!< [1..0] Arbitration Select for three masters */ + uint16_t : 14; + } BUSSCNTFHBIU_b; + }; + __IM uint16_t RESERVED3; + + union + { + __IOM uint16_t BUSSCNTFLBIU; /*!< (@ 0x00001104) Slave Bus Control Register */ + + struct + { + __IOM uint16_t ARBS : 2; /*!< [1..0] Arbitration Select for three masters */ + uint16_t : 14; + } BUSSCNTFLBIU_b; + }; + __IM uint16_t RESERVED4; + __IM uint32_t RESERVED5[2]; + + union + { + __IOM uint16_t BUSSCNTS0BIU; /*!< (@ 0x00001110) Slave Bus Control Register */ + + struct + { + __IOM uint16_t ARBS : 2; /*!< [1..0] Arbitration Select for three masters */ + uint16_t : 14; + } BUSSCNTS0BIU_b; + }; + __IM uint16_t RESERVED6; + __IM uint32_t RESERVED7[3]; + + union + { + __IOM uint16_t BUSSCNTPSBIU; /*!< (@ 0x00001120) Slave Bus Control Register */ + + struct + { + __IOM uint16_t ARBS : 1; /*!< [0..0] Arbitration Select for two masters */ + uint16_t : 15; + } BUSSCNTPSBIU_b; + }; + __IM uint16_t RESERVED8; + __IM uint32_t RESERVED9[3]; + + union + { + __IOM uint16_t BUSSCNTPLBIU; /*!< (@ 0x00001130) Slave Bus Control Register */ + + struct + { + __IOM uint16_t ARBS : 1; /*!< [0..0] Arbitration Select for two masters */ + uint16_t : 15; + } BUSSCNTPLBIU_b; + }; + __IM uint16_t RESERVED10; + + union + { + __IOM uint16_t BUSSCNTPHBIU; /*!< (@ 0x00001134) Slave Bus Control Register */ + + struct + { + __IOM uint16_t ARBS : 1; /*!< [0..0] Arbitration Select for two masters */ + uint16_t : 15; + } BUSSCNTPHBIU_b; + }; + __IM uint16_t RESERVED11; + __IM uint32_t RESERVED12[2]; + + union + { + __IOM uint16_t BUSSCNTEQBIU; /*!< (@ 0x00001140) Slave Bus Control Register */ + + struct + { + __IOM uint16_t ARBS : 2; /*!< [1..0] Arbitration Select for three masters */ + uint16_t : 14; + } BUSSCNTEQBIU_b; + }; + __IM uint16_t RESERVED13; + + union + { + __IOM uint16_t BUSSCNTEOBIU; /*!< (@ 0x00001144) Slave Bus Control Register */ + + struct + { + __IOM uint16_t ARBS : 2; /*!< [1..0] Arbitration Select for three masters */ + uint16_t : 14; + } BUSSCNTEOBIU_b; + }; + __IM uint16_t RESERVED14; + + union + { + __IOM uint16_t BUSSCNTECBIU; /*!< (@ 0x00001148) Slave Bus Control Register */ + + struct + { + __IOM uint16_t ARBS : 2; /*!< [1..0] Arbitration Select for three masters */ + uint16_t : 14; + } BUSSCNTECBIU_b; + }; + __IM uint16_t RESERVED15; + __IM uint32_t RESERVED16[429]; + __IOM R_BUS_B_BUSERR_Type BUSERR[4]; /*!< (@ 0x00001800) Bus Error Registers */ + __IM uint32_t RESERVED17[48]; + __IOM R_BUS_B_BUSTZFERR_Type BUSTZFERR[4]; /*!< (@ 0x00001900) Bus TZF Error Registers */ + __IM uint32_t RESERVED18[48]; + + union + { + __IM uint8_t BUS1ERRSTAT; /*!< (@ 0x00001A00) BUS Error Status Register 1 */ + + 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 */ + uint8_t : 3; + } BUS1ERRSTAT_b; + }; + __IM uint8_t RESERVED19; + __IM uint16_t RESERVED20; + __IM uint32_t RESERVED21; + + union + { + __IOM uint8_t BUS1ERRCLR; /*!< (@ 0x00001A08) BUS Error Clear Register 1 */ + + struct + { + __IOM uint8_t SLERRCLR : 1; /*!< [0..0] Slave bus Error Clear */ + __IOM uint8_t STERRCLR : 1; /*!< [1..1] Slave TrustZone filter Error Clear */ + 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 */ + uint8_t : 3; + } BUS1ERRCLR_b; + }; + __IM uint8_t RESERVED22; + __IM uint16_t RESERVED23; + __IM uint32_t RESERVED24; + + union + { + __IM uint8_t BUS2ERRSTAT; /*!< (@ 0x00001A10) BUS Error Status Register 2 */ + + 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 */ + uint8_t : 3; + } BUS2ERRSTAT_b; + }; + __IM uint8_t RESERVED25; + __IM uint16_t RESERVED26; + __IM uint32_t RESERVED27; + + union + { + __IOM uint8_t BUS2ERRCLR; /*!< (@ 0x00001A18) BUS Error Clear Register 2 */ + + struct + { + __IOM uint8_t SLERRCLR : 1; /*!< [0..0] Slave bus Error Clear */ + __IOM uint8_t STERRCLR : 1; /*!< [1..1] Slave TrustZone filter Error Clear */ + 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 */ + uint8_t : 3; + } BUS2ERRCLR_b; + }; + __IM uint8_t RESERVED28; + __IM uint16_t RESERVED29; + __IM uint32_t RESERVED30; + + union + { + __IM uint8_t BUS3ERRSTAT; /*!< (@ 0x00001A20) BUS Error Status Register 3 */ + + 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 */ + uint8_t : 3; + } BUS3ERRSTAT_b; + }; + __IM uint8_t RESERVED31; + __IM uint16_t RESERVED32; + + union + { + __IM uint8_t DMACDTCERRSTAT; /*!< (@ 0x00001A24) DMAC/DTC Error Status Register */ + + struct + { + __IM uint8_t MTERRSTAT : 1; /*!< [0..0] Master TrustZone Filter Error Status */ + uint8_t : 7; + } DMACDTCERRSTAT_b; + }; + __IM uint8_t RESERVED33; + __IM uint16_t RESERVED34; + + union + { + __IOM uint8_t BUS3ERRCLR; /*!< (@ 0x00001A28) BUS Error Clear Register 3 */ + + struct + { + __IOM uint8_t SLERRCLR : 1; /*!< [0..0] Slave bus Error Clear */ + __IOM uint8_t STERRCLR : 1; /*!< [1..1] Slave TrustZone filter Error Clear */ + 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 */ + uint8_t : 3; + } BUS3ERRCLR_b; + }; + __IM uint8_t RESERVED35; + __IM uint16_t RESERVED36; + + union + { + __IOM uint8_t DMACDTCERRCLR; /*!< (@ 0x00001A2C) DMAC/DTC Error Clear Register */ + + struct + { + __IOM uint8_t MTERRCLR : 1; /*!< [0..0] Master TrustZone filter Error Clear */ + uint8_t : 7; + } DMACDTCERRCLR_b; + }; + __IM uint8_t RESERVED37; + __IM uint16_t RESERVED38; + + union + { + __IM uint8_t BUS4ERRSTAT; /*!< (@ 0x00001A30) BUS Error Status Register 4 */ + + 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 */ + uint8_t : 3; + } BUS4ERRSTAT_b; + }; + __IM uint8_t RESERVED39; + __IM uint16_t RESERVED40; + __IM uint32_t RESERVED41; + + union + { + __IOM uint8_t BUS4ERRCLR; /*!< (@ 0x00001A38) BUS Error Clear Register 4 */ + + struct + { + __IOM uint8_t SLERRCLR : 1; /*!< [0..0] Slave bus Error Clear */ + __IOM uint8_t STERRCLR : 1; /*!< [1..1] Slave TrustZone filter Error Clear */ + 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 */ + uint8_t : 3; + } BUS4ERRCLR_b; + }; + __IM uint8_t RESERVED42; + __IM uint16_t RESERVED43; +} R_BUS_B_Type; /*!< Size = 6716 (0x1a3c) */ + +/* =========================================================================================================================== */ +/* ================ R_SRC ================ */ +/* =========================================================================================================================== */ + +/** + * @brief Sampling Rate Converter (R_SRC) + */ + +typedef struct /*!< (@ 0x40048000) R_SRC Structure */ +{ + union + { + __IOM uint32_t SRCFCTR[5552]; /*!< (@ 0x00000000) Filter Coefficient Table [0..5551] */ + + struct + { + __IOM uint32_t SRCFCOE : 22; /*!< [21..0] Stores a filter coefficient value. */ + uint32_t : 10; + } SRCFCTR_b[5552]; + }; + __IM uint32_t RESERVED[588]; + + union + { + __OM uint32_t SRCID; /*!< (@ 0x00005FF0) Input Data Register */ + + struct + { + __OM uint32_t SRCID : 32; /*!< [31..0] SRCID is a 32-bit writ-only register that is used to + * input the data before sampling rate conversion. All the + * bits are read as 0. */ + } SRCID_b; + }; + + union + { + __IM uint32_t SRCOD; /*!< (@ 0x00005FF4) Output Data Register */ + + struct + { + __IM uint32_t SRCOD : 32; /*!< [31..0] SRCOD is a 32-bit read-only register used to output + * the data after sampling rate conversion. The data in the + * 16-stage output data FIFO is read through SRCOD. When the + * number of data in the output data FIFO is zero after the + * start of conversion, the value previously read is read + * again. */ + } SRCOD_b; + }; + + union + { + __IOM uint16_t SRCIDCTRL; /*!< (@ 0x00005FF8) Input Data Control Register */ + + struct + { + __IOM uint16_t IFTRG : 2; /*!< [1..0] Input FIFO Data Triggering Number */ + uint16_t : 6; + __IOM uint16_t IEN : 1; /*!< [8..8] Input FIFO Empty Interrupt Enable */ + __IOM uint16_t IED : 1; /*!< [9..9] Input Data Endian */ + uint16_t : 6; + } SRCIDCTRL_b; + }; + + union + { + __IOM uint16_t SRCODCTRL; /*!< (@ 0x00005FFA) Output Data Control Register */ + + struct + { + __IOM uint16_t OFTRG : 2; /*!< [1..0] Output FIFO Data Trigger Number */ + uint16_t : 6; + __IOM uint16_t OEN : 1; /*!< [8..8] Output Data FIFO Full Interrupt Enable */ + __IOM uint16_t OED : 1; /*!< [9..9] Output Data Endian */ + __IOM uint16_t OCH : 1; /*!< [10..10] Output Data Channel Exchange */ + uint16_t : 5; + } SRCODCTRL_b; + }; + + union + { + __IOM uint16_t SRCCTRL; /*!< (@ 0x00005FFC) Control Register */ + + struct + { + __IOM uint16_t OFS : 3; /*!< [2..0] Output Sampling Rate */ + uint16_t : 1; + __IOM uint16_t IFS : 4; /*!< [7..4] Input Sampling Rate */ + __IOM uint16_t CL : 1; /*!< [8..8] Internal Work Memory Clear */ + __IOM uint16_t FL : 1; /*!< [9..9] Internal Work Memory Flush */ + __IOM uint16_t OVEN : 1; /*!< [10..10] Output Data FIFO Overwrite Interrupt Enable */ + __IOM uint16_t UDEN : 1; /*!< [11..11] Output Data FIFO Underflow Interrupt Enable */ + __IOM uint16_t SRCEN : 1; /*!< [12..12] Module Enable */ + __IOM uint16_t CEEN : 1; /*!< [13..13] Conversion End Interrupt Enable */ + uint16_t : 1; + __IOM uint16_t FICRAE : 1; /*!< [15..15] Filter Coefficient Table Access Enable */ + } SRCCTRL_b; + }; + + union + { + __IOM uint16_t SRCSTAT; /*!< (@ 0x00005FFE) Status Register */ + + struct + { + __IOM uint16_t OINT : 1; /*!< [0..0] Output Data FIFO Full Interrupt Request Flag */ + __IOM uint16_t IINT : 1; /*!< [1..1] Input Data FIFO Empty Interrupt Request Flag */ + __IOM uint16_t OVF : 1; /*!< [2..2] Output Data FIFO Overwrite Interrupt Request Flag */ + __IOM uint16_t UDF : 1; /*!< [3..3] Output FIFO Underflow Interrupt Request Flag */ + __IM uint16_t FLF : 1; /*!< [4..4] Flush Processing Status Flag */ + __IOM uint16_t CEF : 1; /*!< [5..5] Conversion End Flag */ + uint16_t : 1; + __IOM uint16_t IFDN : 4; /*!< [10..7] Input FIFO Data CountIndicates the number of data units + * in the input FIFO. */ + __IOM uint16_t OFDN : 5; /*!< [15..11] Output FIFO Data CountIndicates the number of data + * units in the output FIFO. */ + } SRCSTAT_b; + }; +} R_SRC_Type; /*!< Size = 24576 (0x6000) */ + +/* =========================================================================================================================== */ +/* ================ R_SSI0 ================ */ +/* =========================================================================================================================== */ + +/** + * @brief Serial Sound Interface Enhanced (SSIE) (R_SSI0) + */ + +typedef struct /*!< (@ 0x4004E000) 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 uint16_t SBYCR; /*!< (@ 0x0000000C) Standby Control Register */ + + struct + { + uint16_t : 14; + __IOM uint16_t OPE : 1; /*!< [14..14] Output Port Enable */ + __IOM uint16_t SSBY : 1; /*!< [15..15] Software Standby */ + } SBYCR_b; + }; + __IM uint16_t RESERVED1; + __IM uint32_t RESERVED2[3]; + + union + { + __IOM uint32_t MSTPCRA; /*!< (@ 0x0000001C) Module Stop Control Register A */ + + struct + { + __IOM uint32_t MSTPA0 : 1; /*!< [0..0] RAM0 Module Stop */ + __IOM uint32_t MSTPA1 : 1; /*!< [1..1] RAM1 Module Stop */ + uint32_t : 3; + __IOM uint32_t MSTPA5 : 1; /*!< [5..5] High-Speed RAM Module Stop */ + __IOM uint32_t MSTPA6 : 1; /*!< [6..6] ECCRAM Module Stop */ + __IOM uint32_t MSTPA7 : 1; /*!< [7..7] Standby RAM Module Stop */ + uint32_t : 14; + __IOM uint32_t MSTPA22 : 1; /*!< [22..22] DMA Controller/Data Transfer Controller Module Stop */ + uint32_t : 9; + } MSTPCRA_b; + }; + + union + { + __IOM uint32_t SCKDIVCR; /*!< (@ 0x00000020) System Clock Division Control Register */ + + struct + { + __IOM uint32_t PCKD : 3; /*!< [2..0] Peripheral Module Clock D (PCLKD) Select */ + uint32_t : 1; + __IOM uint32_t PCKC : 3; /*!< [6..4] Peripheral Module Clock C (PCLKC) Select */ + uint32_t : 1; + __IOM uint32_t PCKB : 3; /*!< [10..8] Peripheral Module Clock B (PCLKB) Select */ + uint32_t : 1; + __IOM uint32_t PCKA : 3; /*!< [14..12] Peripheral Module Clock A (PCLKA) Select */ + uint32_t : 1; + __IOM uint32_t BCK : 3; /*!< [18..16] External Bus Clock (BCLK) Select */ + uint32_t : 5; + __IOM uint32_t ICK : 3; /*!< [26..24] System Clock (ICLK) Select */ + uint32_t : 1; + __IOM uint32_t FCK : 3; /*!< [30..28] Flash IF Clock (FCLK) Select */ + uint32_t : 1; + } SCKDIVCR_b; + }; + + union + { + __IOM uint8_t SCKDIVCR2; /*!< (@ 0x00000024) System Clock Division Control Register 2 */ + + struct + { + uint8_t : 4; + __IOM uint8_t UCK : 3; /*!< [6..4] USB Clock (UCLK) Select */ + uint8_t : 1; + } SCKDIVCR2_b; + }; + __IM uint8_t RESERVED3; + + 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 RESERVED4; + + union + { + __IOM uint16_t PLLCCR; /*!< (@ 0x00000028) PLL Clock Control Register */ + + struct + { + __IOM uint16_t PLIDIV : 2; /*!< [1..0] PLL Input Frequency Division Ratio Select */ + uint16_t : 2; + __IOM uint16_t PLSRCSEL : 1; /*!< [4..4] PLL Clock Source Select */ + uint16_t : 3; + __IOM uint16_t PLLMUL : 6; /*!< [13..8] PLL Frequency Multiplication Factor Select [PLL Frequency + * Multiplication Factor] = (PLLUMUL+1) / 2 Range: 0x23 - + * 0x3B for example 010011: x10.0 010100: x10.5 010101: x11.0 + * : 011100: x14.5 011101: x15.0 011110: x15.5 : 111010: x29.5 + * 111011: x30.0 */ + uint16_t : 2; + } 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; + }; + + union + { + __IOM uint8_t PLLCCR2; /*!< (@ 0x0000002B) PLL Clock Control Register2 */ + + struct + { + __IOM uint8_t PLLMUL : 5; /*!< [4..0] PLL Frequency Multiplication Factor Select */ + uint8_t : 1; + __IOM uint8_t PLODIV : 2; /*!< [7..6] PLL Output Frequency Division Ratio Select */ + } PLLCCR2_b; + }; + __IM uint32_t RESERVED5; + + 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; + }; + + union + { + __IOM uint8_t MEMWAIT; /*!< (@ 0x00000031) Memory Wait Cycle Control Register */ + + struct + { + __IOM uint8_t MEMWAIT : 1; /*!< [0..0] Memory Wait Cycle SelectNote: Writing 0 to the MEMWAIT + * is prohibited when SCKDIVCR.ICK selects division by 1 and + * SCKSCR.CKSEL[2:0] bits select thesystem clock source that + * is faster than 32 MHz (ICLK > 32 MHz). */ + uint8_t : 7; + } MEMWAIT_b; + }; + + 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 RESERVED6; + __IM uint16_t RESERVED7; + + 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 RESERVED8; + + 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 ControlMultiplication ratio of the + * FLL reference clock select */ + 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] PLL Clock Oscillation Stabilization Flag */ + __IM uint8_t PLL2SF : 1; /*!< [6..6] PLL2 Clock Oscillation Stabilization Flag */ + uint8_t : 1; + } OSCSF_b; + }; + __IM uint8_t RESERVED9; + + union + { + __IOM uint8_t CKOCR; /*!< (@ 0x0000003E) Clock Out Control Register */ + + struct + { + __IOM uint8_t CKOSEL : 3; /*!< [2..0] Clock out source select */ + uint8_t : 1; + __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 */ + uint8_t : 3; + __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 uint16_t RESERVED10; + __IM uint32_t RESERVED11; + + 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] PLL2 Clock Source Select */ + uint16_t : 3; + __IOM uint16_t PLL2MUL : 6; /*!< [13..8] PLL2 Frequency Multiplication Factor Select */ + uint16_t : 2; + } 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 RESERVED12; + + union + { + __IOM uint8_t LPOPT; /*!< (@ 0x0000004C) Lower Power Operation Control Register */ + + struct + { + __IOM uint8_t MPUDIS : 1; /*!< [0..0] MPU Clock Disable Control. Stop the MPU operate clock + * (valid only when LPOPTEN = 1) */ + __IOM uint8_t DCLKDIS : 2; /*!< [2..1] Debug Clock Disable Control */ + __IOM uint8_t BPFCLKDIS : 1; /*!< [3..3] BPF Clock Disable Control. Stop the Flash register R/W + * clock (valid only when LPOPT.LPOPTEN = 1) */ + uint8_t : 3; + __IOM uint8_t LPOPTEN : 1; /*!< [7..7] Lower Power Operation Enable */ + } LPOPT_b; + }; + __IM uint8_t RESERVED13; + __IM uint16_t RESERVED14; + + union + { + __IOM uint8_t SLCDSCKCR; /*!< (@ 0x00000050) Segment LCD Source Clock Control Register */ + + struct + { + __IOM uint8_t LCDSCKSEL : 3; /*!< [2..0] LCD Source Clock (LCDSRCCLK) Select */ + uint8_t : 4; + __IOM uint8_t LCDSCKEN : 1; /*!< [7..7] LCD Source Clock Out Enable */ + } SLCDSCKCR_b; + }; + __IM uint8_t RESERVED15; + + 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; + }; + __IM uint32_t RESERVED16[3]; + __IM uint8_t RESERVED17; + + 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 RESERVED18; + __IM uint32_t RESERVED19[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 + { + 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 SCISPICKDIVCR; /*!< (@ 0x0000006D) SCI SPI Clock Division Control Register */ + + struct + { + __IOM uint8_t SCISPICKDIV : 3; /*!< [2..0] SCI SPI Clock (SCISPICLK) Division Select */ + uint8_t : 5; + } SCISPICKDIVCR_b; + }; + }; + + union + { + __IOM uint8_t CANFDCKDIVCR; /*!< (@ 0x0000006E) CANFD Clock Division Control Register */ + + struct + { + __IOM uint8_t CANFDCKDIV : 3; /*!< [2..0] CANFD Clock (CANFDCLK) Division Select */ + uint8_t : 5; + } CANFDCKDIVCR_b; + }; + + union + { + __IOM uint8_t GPTCKDIVCR; /*!< (@ 0x0000006F) GPT Clock Division Control Register */ + + struct + { + __IOM uint8_t GPTCKDIV : 3; /*!< [2..0] GPT Clock (GPTCLK) Division Select */ + uint8_t : 5; + } GPTCKDIVCR_b; + }; + + union + { + __IOM uint8_t IICCKDIVCR; /*!< (@ 0x00000070) IIC Clock Division Control Register */ + + struct + { + __IOM uint8_t IICCKDIV : 3; /*!< [2..0] IIC Clock (IICCLK) Division Select */ + uint8_t : 5; + } IICCKDIVCR_b; + }; + __IM uint8_t RESERVED20; + __IM uint16_t RESERVED21; + + union + { + __IOM uint8_t USBCKCR; /*!< (@ 0x00000074) USB Clock Control Register */ + + struct + { + __IOM uint8_t USBCKSEL : 3; /*!< [2..0] USB Clock (USBCLK) Source Select */ + uint8_t : 3; + __IOM uint8_t USBCKSREQ : 1; /*!< [6..6] USB Clock (USBCLK) Switching Request */ + __IM uint8_t USBCKSRDY : 1; /*!< [7..7] USB Clock (USBCLK) Switching Ready state flag */ + } USBCKCR_b; + }; + + union + { + union + { + __IOM uint8_t OCTACKCR; /*!< (@ 0x00000075) Octal-SPI Clock Control Register */ + + struct + { + __IOM uint8_t OCTACKSEL : 3; /*!< [2..0] Octal-SPI Clock (OCTACLK) Source Select */ + uint8_t : 3; + __IOM uint8_t OCTACKSREQ : 1; /*!< [6..6] Octal-SPI Clock (OCTACLK) Switching Request */ + __IM uint8_t OCTACKSRDY : 1; /*!< [7..7] Octal-SPI Clock (OCTACLK) Switching Ready state flag */ + } OCTACKCR_b; + }; + + union + { + __IOM uint8_t SCISPICKCR; /*!< (@ 0x00000075) SCI SPI Clock Control Register */ + + struct + { + __IOM uint8_t SCISPICKSEL : 3; /*!< [2..0] SCI SPI Clock (SCISPICLK) Source Select */ + uint8_t : 3; + __IOM uint8_t SCISPICKSREQ : 1; /*!< [6..6] SCI SPI Clock (SCISPICLK) Switching Request */ + __IM uint8_t SCISPICKSRDY : 1; /*!< [7..7] SCI SPI Clock (SCISPICLK) Switching Ready state flag */ + } SCISPICKCR_b; + }; + }; + + union + { + __IOM uint8_t CANFDCKCR; /*!< (@ 0x00000076) CANFD Clock Control Register */ + + struct + { + __IOM uint8_t CANFDCKSEL : 3; /*!< [2..0] CANFD Clock (CANFDCLK) Source Select */ + uint8_t : 3; + __IOM uint8_t CANFDCKSREQ : 1; /*!< [6..6] CANFD Clock (CANFDCLK) Switching Request */ + __IM uint8_t CANFDCKSRDY : 1; /*!< [7..7] CANFD Clock (CANFDCLK) Switching Ready state flag */ + } CANFDCKCR_b; + }; + + union + { + __IOM uint8_t GPTCKCR; /*!< (@ 0x00000077) GPT Clock Control Register */ + + struct + { + __IOM uint8_t GPTCKSEL : 3; /*!< [2..0] GPT Clock (GPTCLK) Source Select */ + uint8_t : 3; + __IOM uint8_t GPTCKSREQ : 1; /*!< [6..6] GPT Clock (GPTCLK) Switching Request */ + __IM uint8_t GPTCKSRDY : 1; /*!< [7..7] GPT Clock (GPTCLK) Switching Ready state flag */ + } GPTCKCR_b; + }; + + union + { + __IOM uint8_t IICCKCR; /*!< (@ 0x00000078) IIC Clock Control Register */ + + struct + { + __IOM uint8_t IICCKSEL : 3; /*!< [2..0] IIC Clock (IICCLK) Source Select */ + uint8_t : 3; + __IOM uint8_t IICCKSREQ : 1; /*!< [6..6] IIC Clock (IICCLK) Switching Request */ + __IM uint8_t IICCKSRDY : 1; /*!< [7..7] IIC Clock (IICCLK) Switching Ready state flag */ + } IICCKCR_b; + }; + __IM uint8_t RESERVED22; + __IM uint16_t RESERVED23; + __IM uint32_t RESERVED24[3]; + + union + { + __IOM uint32_t SNZREQCR1; /*!< (@ 0x00000088) Snooze Request Control Register 1 */ + + struct + { + __IOM uint32_t SNZREQEN0 : 1; /*!< [0..0] Enable AGT3 underflow snooze request */ + __IOM uint32_t SNZREQEN1 : 1; /*!< [1..1] Enable AGT3 underflow snooze request */ + __IOM uint32_t SNZREQEN2 : 1; /*!< [2..2] Enable AGT3 underflow snooze request */ + uint32_t : 29; + } SNZREQCR1_b; + }; + __IM uint32_t RESERVED25; + __IM uint16_t RESERVED26; + + 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 RESERVED27; + + 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 RESERVED28; + + union + { + __IOM uint32_t SNZREQCR; /*!< (@ 0x00000098) Snooze Request Control Register */ + + struct + { + __IOM uint32_t SNZREQEN0 : 1; /*!< [0..0] Snooze Request Enable 0Enable IRQ 0 pin snooze request */ + __IOM uint32_t SNZREQEN1 : 1; /*!< [1..1] Snooze Request Enable 0Enable IRQ 1 pin snooze request */ + __IOM uint32_t SNZREQEN2 : 1; /*!< [2..2] Snooze Request Enable 0Enable IRQ 2 pin snooze request */ + __IOM uint32_t SNZREQEN3 : 1; /*!< [3..3] Snooze Request Enable 0Enable IRQ 3 pin snooze request */ + __IOM uint32_t SNZREQEN4 : 1; /*!< [4..4] Snooze Request Enable 0Enable IRQ 4 pin snooze request */ + __IOM uint32_t SNZREQEN5 : 1; /*!< [5..5] Snooze Request Enable 0Enable IRQ 5 pin snooze request */ + __IOM uint32_t SNZREQEN6 : 1; /*!< [6..6] Snooze Request Enable 0Enable IRQ 6 pin snooze request */ + __IOM uint32_t SNZREQEN7 : 1; /*!< [7..7] Snooze Request Enable 0Enable IRQ 7 pin snooze request */ + __IOM uint32_t SNZREQEN8 : 1; /*!< [8..8] Snooze Request Enable 0Enable IRQ 8 pin snooze request */ + __IOM uint32_t SNZREQEN9 : 1; /*!< [9..9] Snooze Request Enable 0Enable IRQ 9 pin snooze request */ + __IOM uint32_t SNZREQEN10 : 1; /*!< [10..10] Snooze Request Enable 0Enable IRQ 10 pin snooze request */ + __IOM uint32_t SNZREQEN11 : 1; /*!< [11..11] Snooze Request Enable 0Enable IRQ 11 pin snooze request */ + __IOM uint32_t SNZREQEN12 : 1; /*!< [12..12] Snooze Request Enable 0Enable IRQ 12 pin snooze request */ + __IOM uint32_t SNZREQEN13 : 1; /*!< [13..13] Snooze Request Enable 0Enable IRQ 13 pin snooze request */ + __IOM uint32_t SNZREQEN14 : 1; /*!< [14..14] Snooze Request Enable 0Enable IRQ 14 pin snooze request */ + __IOM uint32_t SNZREQEN15 : 1; /*!< [15..15] Snooze Request Enable 0Enable IRQ 15 pin snooze request */ + uint32_t : 1; + __IOM uint32_t SNZREQEN17 : 1; /*!< [17..17] Snooze Request Enable 17Enable KR snooze request */ + uint32_t : 4; + __IOM uint32_t SNZREQEN22 : 1; /*!< [22..22] Snooze Request Enable 22Enable Comparator-HS0 snooze + * request */ + __IOM uint32_t SNZREQEN23 : 1; /*!< [23..23] Snooze Request Enable 23Enable Comparator-LP0 snooze + * request */ + __IOM uint32_t SNZREQEN24 : 1; /*!< [24..24] Snooze Request Enable 24Enable RTC alarm snooze request */ + __IOM uint32_t SNZREQEN25 : 1; /*!< [25..25] Snooze Request Enable 25Enable RTC period snooze request */ + uint32_t : 2; + __IOM uint32_t SNZREQEN28 : 1; /*!< [28..28] Snooze Request Enable 28Enable AGT1 underflow snooze + * request */ + __IOM uint32_t SNZREQEN29 : 1; /*!< [29..29] Snooze Request Enable 29Enable AGT1 compare match A + * snooze request */ + __IOM uint32_t SNZREQEN30 : 1; /*!< [30..30] Snooze Request Enable 30Enable AGT1 compare match B + * snooze request */ + uint32_t : 1; + } SNZREQCR_b; + }; + __IM uint16_t RESERVED29; + + union + { + __IOM uint8_t FLSTOP; /*!< (@ 0x0000009E) Flash Operation Control Register */ + + struct + { + __IOM uint8_t FLSTOP : 1; /*!< [0..0] Selecting ON/OFF of the Flash Memory Operation */ + uint8_t : 3; + __IOM uint8_t FLSTPF : 1; /*!< [4..4] Flash Memory Operation Status Flag */ + uint8_t : 3; + } FLSTOP_b; + }; + + union + { + __IOM uint8_t PSMCR; /*!< (@ 0x0000009F) Power Save Memory Control Register */ + + struct + { + __IOM uint8_t PSMC : 2; /*!< [1..0] Power save memory control. */ + uint8_t : 6; + } PSMCR_b; + }; + + 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 RESERVED30; + + 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 RESERVED31[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 RESERVED32[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 RESERVED33; + __IM uint32_t RESERVED34[5]; + + union + { + __IOM uint16_t RSTSR1; /*!< (@ 0x000000C0) Reset Status Register 1 */ + + struct + { + __IOM uint16_t IWDTRF : 1; /*!< [0..0] Independent Watchdog Timer Reset Detect FlagNOTE: Writable + * only to clear the flag. Confirm the value is 1 and then + * write 0. */ + __IOM uint16_t WDTRF : 1; /*!< [1..1] Watchdog Timer Reset Detect FlagNOTE: Writable only to + * clear the flag. Confirm the value is 1 and then write 0. */ + __IOM uint16_t SWRF : 1; /*!< [2..2] Software Reset Detect FlagNOTE: Writable only to clear + * the flag. Confirm the value is 1 and then write 0. */ + uint16_t : 5; + __IOM uint16_t RPERF : 1; /*!< [8..8] RAM Parity Error Reset Detect FlagNOTE: Writable only + * to clear the flag. Confirm the value is 1 and then write + * 0. */ + __IOM uint16_t REERF : 1; /*!< [9..9] RAM ECC Error Reset Detect FlagNOTE: Writable only to + * clear the flag. Confirm the value is 1 and then write 0. */ + __IOM uint16_t BUSSRF : 1; /*!< [10..10] Bus Slave MPU Reset Detect FlagNOTE: Writable only + * to clear the flag. Confirm the value is 1 and then write + * 0. */ + __IOM uint16_t BUSMRF : 1; /*!< [11..11] Bus Master MPU Reset Detect FlagNOTE: Writable only + * to clear the flag. Confirm the value is 1 and then write + * 0. */ + __IOM uint16_t SPERF : 1; /*!< [12..12] SP Error Reset Detect FlagNOTE: Writable only to clear + * the flag. Confirm the value is 1 and then write 0. */ + __IOM uint16_t TZERF : 1; /*!< [13..13] Trust Zone Error Reset Detect Flag */ + uint16_t : 1; + __IOM uint16_t CPERF : 1; /*!< [15..15] Cache Parity Error Reset Detect Flag */ + } RSTSR1_b; + }; + __IM uint16_t RESERVED35; + __IM uint32_t RESERVED36[3]; + + union + { + __IOM uint8_t USBCKCR_ALT; /*!< (@ 0x000000D0) USB Clock Control Register */ + + struct + { + __IOM uint8_t USBCLKSEL : 1; /*!< [0..0] The USBCLKSEL bit selects the source of the USB clock + * (UCLK). */ + uint8_t : 7; + } USBCKCR_ALT_b; + }; + + union + { + __IOM uint8_t SDADCCKCR; /*!< (@ 0x000000D1) 24-bit Sigma-Delta A/D Converter Clock Control + * Register */ + + struct + { + __IOM uint8_t SDADCCKSEL : 1; /*!< [0..0] 24-bit Sigma-Delta A/D Converter Clock Select */ + uint8_t : 6; + __IOM uint8_t SDADCCKEN : 1; /*!< [7..7] 24-bit Sigma-Delta A/D Converter Clock Enable */ + } SDADCCKCR_b; + }; + __IM uint16_t RESERVED37; + __IM uint32_t RESERVED38[3]; + + 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 1 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 1 Signal Monitor Flag */ + uint8_t : 6; + } LVD2SR_b; + }; + __IM uint32_t RESERVED39[183]; + + union + { + __IOM uint32_t CGFSAR; /*!< (@ 0x000003C0) Clock Generation Function Security Attribute + * Register */ + + struct + { + __IOM uint32_t NONSEC00 : 1; /*!< [0..0] Non Secure Attribute bit 00 */ + uint32_t : 1; + __IOM uint32_t NONSEC02 : 1; /*!< [2..2] Non Secure Attribute bit 02 */ + __IOM uint32_t NONSEC03 : 1; /*!< [3..3] Non Secure Attribute bit 03 */ + __IOM uint32_t NONSEC04 : 1; /*!< [4..4] Non Secure Attribute bit 04 */ + __IOM uint32_t NONSEC05 : 1; /*!< [5..5] Non Secure Attribute bit 05 */ + __IOM uint32_t NONSEC06 : 1; /*!< [6..6] Non Secure Attribute bit 06 */ + __IOM uint32_t NONSEC07 : 1; /*!< [7..7] Non Secure Attribute bit 07 */ + __IOM uint32_t NONSEC08 : 1; /*!< [8..8] Non Secure Attribute bit 08 */ + __IOM uint32_t NONSEC09 : 1; /*!< [9..9] Non Secure Attribute bit 09 */ + 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 */ + uint32_t : 3; + __IOM uint32_t NONSEC16 : 1; /*!< [16..16] Non Secure Attribute bit 16 */ + __IOM uint32_t NONSEC17 : 1; /*!< [17..17] Non Secure Attribute bit 17 */ + uint32_t : 14; + } CGFSAR_b; + }; + __IM uint32_t RESERVED40; + + union + { + __IOM uint32_t LPMSAR; /*!< (@ 0x000003C8) Low Power Mode Security Attribution Register */ + + struct + { + __IOM uint32_t NONSEC0 : 1; /*!< [0..0] Non Secure Attribute bit 0 */ + uint32_t : 1; + __IOM uint32_t NONSEC2 : 1; /*!< [2..2] Non Secure Attribute bit 2 */ + uint32_t : 1; + __IOM uint32_t NONSEC4 : 1; /*!< [4..4] Non Secure Attribute bit 4 */ + uint32_t : 3; + __IOM uint32_t NONSEC8 : 1; /*!< [8..8] Non Secure Attribute bit 8 */ + __IOM uint32_t NONSEC9 : 1; /*!< [9..9] Non Secure Attribute bit 9 */ + uint32_t : 22; + } LPMSAR_b; + }; + + union + { + union + { + __IOM uint32_t LVDSAR; /*!< (@ 0x000003CC) Low 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 RSTSAR; /*!< (@ 0x000003CC) 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 */ + uint32_t : 29; + } RSTSAR_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 */ + uint32_t : 13; + __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 */ + __IOM uint32_t NONSEC23 : 1; /*!< [23..23] Non Secure Attribute bit 23 */ + uint32_t : 8; + } BBFSAR_b; + }; + __IM uint32_t RESERVED41[3]; + + union + { + __IOM uint32_t DPFSAR; /*!< (@ 0x000003E0) Deep Standby Interrupt Factor Security Attribution + * Register */ + + struct + { + __IOM uint32_t DPFSA0 : 1; /*!< [0..0] Deep Standby Interrupt Factor Security Attribute bit + * 0 */ + __IOM uint32_t DPFSA1 : 1; /*!< [1..1] Deep Standby Interrupt Factor Security Attribute bit + * 1 */ + __IOM uint32_t DPFSA2 : 1; /*!< [2..2] Deep Standby Interrupt Factor Security Attribute bit + * 2 */ + __IOM uint32_t DPFSA3 : 1; /*!< [3..3] Deep Standby Interrupt Factor Security Attribute bit + * 3 */ + __IOM uint32_t DPFSA4 : 1; /*!< [4..4] Deep Standby Interrupt Factor Security Attribute bit + * 4 */ + __IOM uint32_t DPFSA5 : 1; /*!< [5..5] Deep Standby Interrupt Factor Security Attribute bit + * 5 */ + __IOM uint32_t DPFSA6 : 1; /*!< [6..6] Deep Standby Interrupt Factor Security Attribute bit + * 6 */ + __IOM uint32_t DPFSA7 : 1; /*!< [7..7] Deep Standby Interrupt Factor Security Attribute bit + * 7 */ + __IOM uint32_t DPFSA8 : 1; /*!< [8..8] Deep Standby Interrupt Factor Security Attribute bit + * 8 */ + __IOM uint32_t DPFSA9 : 1; /*!< [9..9] Deep Standby Interrupt Factor Security Attribute bit + * 9 */ + __IOM uint32_t DPFSA10 : 1; /*!< [10..10] Deep Standby Interrupt Factor Security Attribute bit + * 10 */ + __IOM uint32_t DPFSA11 : 1; /*!< [11..11] Deep Standby Interrupt Factor Security Attribute bit + * 11 */ + __IOM uint32_t DPFSA12 : 1; /*!< [12..12] Deep Standby Interrupt Factor Security Attribute bit + * 12 */ + __IOM uint32_t DPFSA13 : 1; /*!< [13..13] Deep Standby Interrupt Factor Security Attribute bit + * 13 */ + __IOM uint32_t DPFSA14 : 1; /*!< [14..14] Deep Standby Interrupt Factor Security Attribute bit + * 14 */ + __IOM uint32_t DPFSA15 : 1; /*!< [15..15] Deep Standby Interrupt Factor Security Attribute bit + * 15 */ + __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 */ + uint32_t : 1; + __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 : 4; + } DPFSAR_b; + }; + __IM uint32_t RESERVED42[6]; + __IM uint16_t RESERVED43; + + union + { + __IOM uint16_t PRCR; /*!< (@ 0x000003FE) Protect 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 consumption modes and the battery + * backup function. */ + uint16_t : 1; + __IOM uint16_t PRC3 : 1; /*!< [3..3] Enables writing to the registers related to the LVD. */ + __IOM uint16_t PRC4 : 1; /*!< [4..4] PRC4 */ + uint16_t : 3; + __OM uint16_t PRKEY : 8; /*!< [15..8] PRKEY Key Code */ + } PRCR_b; + }; + + union + { + __IOM uint8_t DPSBYCR; /*!< (@ 0x00000400) Deep Standby Control Register */ + + struct + { + __IOM uint8_t DEEPCUT : 2; /*!< [1..0] Power-Supply Control */ + uint8_t : 4; + __IOM uint8_t IOKEEP : 1; /*!< [6..6] I/O Port Retention */ + __IOM uint8_t DPSBY : 1; /*!< [7..7] Deep Software Standby */ + } DPSBYCR_b; + }; + + union + { + __IOM uint8_t DPSWCR; /*!< (@ 0x00000401) Deep Standby Wait Control Register */ + + struct + { + __IOM uint8_t WTSTS : 6; /*!< [5..0] Deep Software Wait Standby Time Setting Bit */ + uint8_t : 2; + } DPSWCR_b; + }; + + union + { + __IOM uint8_t DPSIER0; /*!< (@ 0x00000402) Deep Standby Interrupt Enable Register 0 */ + + struct + { + __IOM uint8_t DIRQ0E : 1; /*!< [0..0] IRQ-DS Pin Enable */ + __IOM uint8_t DIRQ1E : 1; /*!< [1..1] IRQ-DS Pin Enable */ + __IOM uint8_t DIRQ2E : 1; /*!< [2..2] IRQ-DS Pin Enable */ + __IOM uint8_t DIRQ3E : 1; /*!< [3..3] IRQ-DS Pin Enable */ + __IOM uint8_t DIRQ4E : 1; /*!< [4..4] IRQ-DS Pin Enable */ + __IOM uint8_t DIRQ5E : 1; /*!< [5..5] IRQ-DS Pin Enable */ + __IOM uint8_t DIRQ6E : 1; /*!< [6..6] IRQ-DS Pin Enable */ + __IOM uint8_t DIRQ7E : 1; /*!< [7..7] IRQ-DS Pin Enable */ + } DPSIER0_b; + }; + + union + { + __IOM uint8_t DPSIER1; /*!< (@ 0x00000403) Deep Standby Interrupt Enable Register 1 */ + + struct + { + __IOM uint8_t DIRQ8E : 1; /*!< [0..0] IRQ-DS Pin Enable */ + __IOM uint8_t DIRQ9E : 1; /*!< [1..1] IRQ-DS Pin Enable */ + __IOM uint8_t DIRQ10E : 1; /*!< [2..2] IRQ-DS Pin Enable */ + __IOM uint8_t DIRQ11E : 1; /*!< [3..3] IRQ-DS Pin Enable */ + __IOM uint8_t DIRQ12E : 1; /*!< [4..4] IRQ-DS Pin Enable */ + __IOM uint8_t DIRQ13E : 1; /*!< [5..5] IRQ-DS Pin Enable */ + __IOM uint8_t DIRQ14E : 1; /*!< [6..6] IRQ-DS Pin Enable */ + __IOM uint8_t DIRQ15E : 1; /*!< [7..7] IRQ-DS Pin Enable */ + } DPSIER1_b; + }; + + union + { + __IOM uint8_t DPSIER2; /*!< (@ 0x00000404) Deep Standby Interrupt Enable Register 2 */ + + struct + { + __IOM uint8_t DLVD1IE : 1; /*!< [0..0] LVD1 Deep Standby Cancel Signal Enable */ + __IOM uint8_t DLVD2IE : 1; /*!< [1..1] LVD2 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; + }; + + union + { + __IOM uint8_t DPSIER3; /*!< (@ 0x00000405) 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 DAGT1IE : 1; /*!< [2..2] AGT1 Underflow Deep Standby Cancel Signal Enable */ + __IOM uint8_t DAGT3IE : 1; /*!< [3..3] AGT3 Underflow Deep Standby Cancel Signal Enable */ + uint8_t : 4; + } DPSIER3_b; + }; + + union + { + __IOM uint8_t DPSIFR0; /*!< (@ 0x00000406) Deep Standby Interrupt Flag Register 0 */ + + struct + { + __IOM uint8_t DIRQ0F : 1; /*!< [0..0] IRQ-DS Pin Deep Standby Cancel Flag */ + __IOM uint8_t DIRQ1F : 1; /*!< [1..1] IRQ-DS Pin Deep Standby Cancel Flag */ + __IOM uint8_t DIRQ2F : 1; /*!< [2..2] IRQ-DS Pin Deep Standby Cancel Flag */ + __IOM uint8_t DIRQ3F : 1; /*!< [3..3] IRQ-DS Pin Deep Standby Cancel Flag */ + __IOM uint8_t DIRQ4F : 1; /*!< [4..4] IRQ-DS Pin Deep Standby Cancel Flag */ + __IOM uint8_t DIRQ5F : 1; /*!< [5..5] IRQ-DS Pin Deep Standby Cancel Flag */ + __IOM uint8_t DIRQ6F : 1; /*!< [6..6] IRQ-DS Pin Deep Standby Cancel Flag */ + __IOM uint8_t DIRQ7F : 1; /*!< [7..7] IRQ-DS Pin Deep Standby Cancel Flag */ + } DPSIFR0_b; + }; + + union + { + __IOM uint8_t DPSIFR1; /*!< (@ 0x00000407) Deep Standby Interrupt Flag Register 1 */ + + struct + { + __IOM uint8_t DIRQ8F : 1; /*!< [0..0] IRQ-DS Pin Deep Standby Cancel Flag */ + __IOM uint8_t DIRQ9F : 1; /*!< [1..1] IRQ-DS Pin Deep Standby Cancel Flag */ + __IOM uint8_t DIRQ10F : 1; /*!< [2..2] IRQ-DS Pin Deep Standby Cancel Flag */ + __IOM uint8_t DIRQ11F : 1; /*!< [3..3] IRQ-DS Pin Deep Standby Cancel Flag */ + __IOM uint8_t DIRQ12F : 1; /*!< [4..4] IRQ-DS Pin Deep Standby Cancel Flag */ + __IOM uint8_t DIRQ13F : 1; /*!< [5..5] IRQ-DS Pin Deep Standby Cancel Flag */ + __IOM uint8_t DIRQ14F : 1; /*!< [6..6] IRQ-DS Pin Deep Standby Cancel Flag */ + __IOM uint8_t DIRQ15F : 1; /*!< [7..7] IRQ-DS Pin Deep Standby Cancel Flag */ + } DPSIFR1_b; + }; + + union + { + __IOM uint8_t DPSIFR2; /*!< (@ 0x00000408) Deep Standby Interrupt Flag Register 2 */ + + struct + { + __IOM uint8_t DLVD1IF : 1; /*!< [0..0] LVD1 Deep Standby Cancel Flag */ + __IOM uint8_t DLVD2IF : 1; /*!< [1..1] LVD2 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; + }; + + union + { + __IOM uint8_t DPSIFR3; /*!< (@ 0x00000409) 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 DAGT1IF : 1; /*!< [2..2] AGT1 Underflow Deep Standby Cancel Flag */ + __IOM uint8_t DAGT3IF : 1; /*!< [3..3] AGT3 Underflow Deep Standby Cancel Flag */ + uint8_t : 4; + } DPSIFR3_b; + }; + + union + { + __IOM uint8_t DPSIEGR0; /*!< (@ 0x0000040A) Deep Standby Interrupt Edge Register 0 */ + + struct + { + __IOM uint8_t DIRQ0EG : 1; /*!< [0..0] IRQ-DS Pin Edge Select */ + __IOM uint8_t DIRQ1EG : 1; /*!< [1..1] IRQ-DS Pin Edge Select */ + __IOM uint8_t DIRQ2EG : 1; /*!< [2..2] IRQ-DS Pin Edge Select */ + __IOM uint8_t DIRQ3EG : 1; /*!< [3..3] IRQ-DS Pin Edge Select */ + __IOM uint8_t DIRQ4EG : 1; /*!< [4..4] IRQ-DS Pin Edge Select */ + __IOM uint8_t DIRQ5EG : 1; /*!< [5..5] IRQ-DS Pin Edge Select */ + __IOM uint8_t DIRQ6EG : 1; /*!< [6..6] IRQ-DS Pin Edge Select */ + __IOM uint8_t DIRQ7EG : 1; /*!< [7..7] IRQ-DS Pin Edge Select */ + } DPSIEGR0_b; + }; + + union + { + __IOM uint8_t DPSIEGR1; /*!< (@ 0x0000040B) Deep Standby Interrupt Edge Register 1 */ + + struct + { + __IOM uint8_t DIRQ0EG : 1; /*!< [0..0] IRQ-DS Pin Edge Select */ + __IOM uint8_t DIRQ1EG : 1; /*!< [1..1] IRQ-DS Pin Edge Select */ + __IOM uint8_t DIRQ2EG : 1; /*!< [2..2] IRQ-DS Pin Edge Select */ + __IOM uint8_t DIRQ3EG : 1; /*!< [3..3] IRQ-DS Pin Edge Select */ + __IOM uint8_t DIRQ4EG : 1; /*!< [4..4] IRQ-DS Pin Edge Select */ + __IOM uint8_t DIRQ5EG : 1; /*!< [5..5] IRQ-DS Pin Edge Select */ + __IOM uint8_t DIRQ6EG : 1; /*!< [6..6] IRQ-DS Pin Edge Select */ + __IOM uint8_t DIRQ7EG : 1; /*!< [7..7] IRQ-DS Pin Edge Select */ + } DPSIEGR1_b; + }; + + union + { + __IOM uint8_t DPSIEGR2; /*!< (@ 0x0000040C) Deep Standby Interrupt Edge Register 2 */ + + struct + { + __IOM uint8_t DLVD1IEG : 1; /*!< [0..0] LVD1 Edge Select */ + __IOM uint8_t DLVD2IEG : 1; /*!< [1..1] LVD2 Edge Select */ + uint8_t : 2; + __IOM uint8_t DNMIEG : 1; /*!< [4..4] NMI Pin Edge Select */ + uint8_t : 3; + } DPSIEGR2_b; + }; + __IM uint8_t RESERVED44; + + union + { + __IOM uint8_t SYOCDCR; /*!< (@ 0x0000040E) 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; + }; + + 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; + }; + + union + { + __IOM uint8_t RSTSR0; /*!< (@ 0x00000410) Reset Status Register 0 */ + + struct + { + __IOM uint8_t PORF : 1; /*!< [0..0] Power-On Reset Detect FlagNOTE: 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 FlagNOTE: 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 FlagNOTE: 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 FlagNOTE: Writable only + * to clear the flag. Confirm the value is 1 and then write + * 0. */ + uint8_t : 3; + __IOM uint8_t DPSRSTF : 1; /*!< [7..7] Deep Software Standby Reset FlagNOTE: Writable only to + * clear the flag. Confirm the value is 1 and then write 0. */ + } RSTSR0_b; + }; + + union + { + __IOM uint8_t RSTSR2; /*!< (@ 0x00000411) 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 RESERVED45; + + union + { + __IOM uint8_t MOMCR; /*!< (@ 0x00000413) Main Clock Oscillator Mode Oscillation Control + * Register */ + + struct + { + uint8_t : 3; + __IOM uint8_t MODRV1 : 1; /*!< [3..3] Main Clock Oscillator Drive Capability 1 Switching */ + __IOM uint8_t MODRV0 : 2; /*!< [5..4] Main Clock Oscillator Drive Capability 0 Switching */ + __IOM uint8_t MOSEL : 1; /*!< [6..6] Main Clock Oscillator Switching */ + __IOM uint8_t AUTODRVEN : 1; /*!< [7..7] Main Clock Oscillator Drive Capability Auto Switching + * Enable */ + } MOMCR_b; + }; + __IM uint16_t RESERVED46; + + union + { + __IOM uint8_t FWEPROR; /*!< (@ 0x00000416) Flash P/E Protect Register */ + + struct + { + __IOM uint8_t FLWE : 2; /*!< [1..0] Flash Programming and Erasure */ + uint8_t : 6; + } FWEPROR_b; + }; + + union + { + union + { + __IOM uint8_t LVCMPCR; /*!< (@ 0x00000417) 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; /*!< (@ 0x00000417) Voltage Monitoring 1 Comparator Control Register */ + + struct + { + __IOM uint8_t LVD1LVL : 5; /*!< [4..0] Voltage Detection 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; + }; + }; + + union + { + union + { + __IOM uint8_t LVDLVLR; /*!< (@ 0x00000418) Voltage Detection Level Select Register */ + + struct + { + __IOM uint8_t LVD1LVL : 5; /*!< [4..0] Voltage Detection 1 Level Select (Standard voltage during + * fall in voltage) */ + __IOM uint8_t LVD2LVL : 3; /*!< [7..5] Voltage Detection 2 Level Select (Standard voltage during + * fall in voltage) */ + } LVDLVLR_b; + }; + + union + { + __IOM uint8_t LVD2CMPCR; /*!< (@ 0x00000418) Voltage Monitoring 2 Comparator Control Register */ + + struct + { + __IOM uint8_t LVD2LVL : 3; /*!< [2..0] Voltage Detection 2 Level Select (Standard voltage during + * drop in voltage) */ + uint8_t : 4; + __IOM uint8_t LVD2E : 1; /*!< [7..7] Voltage Detection 2 Enable */ + } LVD2CMPCR_b; + }; + }; + __IM uint8_t RESERVED47; + + union + { + __IOM uint8_t LVD1CR0; /*!< (@ 0x0000041A) 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; + }; + + union + { + __IOM uint8_t LVD2CR0; /*!< (@ 0x0000041B) 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 RESERVED48; + + union + { + __IOM uint8_t VBATTMNSELR; /*!< (@ 0x0000041D) Battery Backup Voltage Monitor Function Select + * Register */ + + struct + { + __IOM uint8_t VBATTMNSEL : 1; /*!< [0..0] VBATT Low Voltage Detect Function Select Bit */ + uint8_t : 7; + } VBATTMNSELR_b; + }; + + union + { + __IM uint8_t VBATTMONR; /*!< (@ 0x0000041E) Battery Backup Voltage Monitor Register */ + + struct + { + __IM uint8_t VBATTMON : 1; /*!< [0..0] VBATT Voltage Monitor Bit */ + uint8_t : 7; + } VBATTMONR_b; + }; + + union + { + __IOM uint8_t VBTCR1; /*!< (@ 0x0000041F) VBATT Control Register1 */ + + struct + { + __IOM uint8_t BPWSWSTP : 1; /*!< [0..0] Battery Power supply Switch Stop */ + uint8_t : 7; + } VBTCR1_b; + }; + __IM uint32_t RESERVED49[8]; + + union + { + __IOM uint8_t DCDCCTL; /*!< (@ 0x00000440) DCDC/LDO Control Register */ + + struct + { + __IOM uint8_t DCDCON : 1; /*!< [0..0] LDO/DCDC on/off Control bit */ + __IOM uint8_t OCPEN : 1; /*!< [1..1] DCDC OCP Function Enable bit */ + uint8_t : 2; + __IOM uint8_t STOPZA : 1; /*!< [4..4] DCDC IO Buffer Power Control bit */ + __IOM uint8_t LCBOOST : 1; /*!< [5..5] LDO LCBOOST Mode Control bit */ + __IOM uint8_t FST : 1; /*!< [6..6] DCDC Fast Startup */ + __IOM uint8_t PD : 1; /*!< [7..7] DCDC VREF Generate Disable bit */ + } DCDCCTL_b; + }; + + union + { + __IOM uint8_t VCCSEL; /*!< (@ 0x00000441) Voltage Level Selection Control Register */ + + struct + { + __IOM uint8_t VCCSEL : 2; /*!< [1..0] DCDC Working Voltage Level Selection */ + uint8_t : 6; + } VCCSEL_b; + }; + __IM uint16_t RESERVED50; + __IM uint32_t RESERVED51[15]; + + union + { + __IOM uint8_t SOSCCR; /*!< (@ 0x00000480) 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; /*!< (@ 0x00000481) Sub Clock Oscillator Mode Control Register */ + + struct + { + __IOM uint8_t SODRV : 2; /*!< [1..0] Sub-Clock Oscillator Drive Capability Switching */ + uint8_t : 6; + } SOMCR_b; + }; + __IM uint16_t RESERVED52; + __IM uint32_t RESERVED53[3]; + + union + { + __IOM uint8_t LOCOCR; /*!< (@ 0x00000490) 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 RESERVED54; + + union + { + __IOM uint8_t LOCOUTCR; /*!< (@ 0x00000492) LOCO User Trimming Control Register */ + + struct + { + __IOM uint8_t LOCOUTRM : 8; /*!< [7..0] LOCO 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 LOCO + * trimming bits */ + } LOCOUTCR_b; + }; + __IM uint8_t RESERVED55; + __IM uint32_t RESERVED56[7]; + + union + { + __IOM uint8_t VBTCR2; /*!< (@ 0x000004B0) VBATT Control Register2 */ + + struct + { + uint8_t : 4; + __IOM uint8_t VBTLVDEN : 1; /*!< [4..4] VBATT Pin Low Voltage Detect Enable Bit */ + uint8_t : 1; + __IOM uint8_t VBTLVDLVL : 2; /*!< [7..6] VBATT Pin Voltage Low Voltage Detect Level Select Bit */ + } VBTCR2_b; + }; + + union + { + __IOM uint8_t VBTSR; /*!< (@ 0x000004B1) VBATT Status Register */ + + struct + { + __IOM uint8_t VBTRDF : 1; /*!< [0..0] VBAT_R Reset Detect Flag */ + __IOM uint8_t VBTBLDF : 1; /*!< [1..1] VBATT Battery Low voltage Detect Flag */ + uint8_t : 2; + __IM uint8_t VBTRVLD : 1; /*!< [4..4] VBATT_R Valid */ + uint8_t : 3; + } VBTSR_b; + }; + + union + { + __IOM uint8_t VBTCMPCR; /*!< (@ 0x000004B2) VBATT Comparator Control Register */ + + struct + { + __IOM uint8_t VBTCMPE : 1; /*!< [0..0] VBATT pin low voltage detect circuit output enable */ + uint8_t : 7; + } VBTCMPCR_b; + }; + __IM uint8_t RESERVED57; + + union + { + __IOM uint8_t VBTLVDICR; /*!< (@ 0x000004B4) VBATT Pin Low Voltage Detect Interrupt Control + * Register */ + + struct + { + __IOM uint8_t VBTLVDIE : 1; /*!< [0..0] VBATT Pin Low Voltage Detect Interrupt Enable bit */ + __IOM uint8_t VBTLVDISEL : 1; /*!< [1..1] Pin Low Voltage Detect Interrupt Select bit */ + uint8_t : 6; + } VBTLVDICR_b; + }; + __IM uint8_t RESERVED58; + + union + { + __IOM uint8_t VBTWCTLR; /*!< (@ 0x000004B6) VBATT Wakeup function Control Register */ + + struct + { + __IOM uint8_t VWEN : 1; /*!< [0..0] VBATT wakeup enable */ + uint8_t : 7; + } VBTWCTLR_b; + }; + __IM uint8_t RESERVED59; + + union + { + __IOM uint8_t VBTWCH0OTSR; /*!< (@ 0x000004B8) VBATT Wakeup I/O 0 Output Trigger Select Register */ + + struct + { + uint8_t : 1; + __IOM uint8_t CH0VCH1TE : 1; /*!< [1..1] VBATWIO0 Output VBATWIO1 Trigger Enable */ + __IOM uint8_t CH0VCH2TE : 1; /*!< [2..2] VBATWIO0 Output VBATWIO2 Trigger Enable */ + __IOM uint8_t CH0VRTCTE : 1; /*!< [3..3] VBATWIO0 Output RTC Periodic Signal Enable */ + __IOM uint8_t CH0VRTCATE : 1; /*!< [4..4] VBATWIO0 Output RTC Alarm Signal Enable */ + __IOM uint8_t CH0VAGTUTE : 1; /*!< [5..5] CH0 Output AGT(ch1) underflow Signal Enable */ + uint8_t : 2; + } VBTWCH0OTSR_b; + }; + + union + { + __IOM uint8_t VBTWCH1OTSR; /*!< (@ 0x000004B9) VBATT Wakeup I/O 1 Output Trigger Select Register */ + + struct + { + __IOM uint8_t CH1VCH0TE : 1; /*!< [0..0] VBATWIO1 Output VBATWIO0 Trigger Enable */ + uint8_t : 1; + __IOM uint8_t CH1VCH2TE : 1; /*!< [2..2] VBATWIO1 Output VBATWIO2 Trigger Enable */ + __IOM uint8_t CH1VRTCTE : 1; /*!< [3..3] VBATWIO1 Output RTC Periodic Signal Enable */ + __IOM uint8_t CH1VRTCATE : 1; /*!< [4..4] VBATWIO1 Output RTC Alarm Signal Enable */ + __IOM uint8_t CH1VAGTUTE : 1; /*!< [5..5] CH1 Output AGT(ch1) underflow Signal Enable */ + uint8_t : 2; + } VBTWCH1OTSR_b; + }; + + union + { + __IOM uint8_t VBTWCH2OTSR; /*!< (@ 0x000004BA) VBATT Wakeup I/O 2 Output Trigger Select Register */ + + struct + { + __IOM uint8_t CH2VCH0TE : 1; /*!< [0..0] VBATWIO2 Output VBATWIO0 Trigger Enable */ + __IOM uint8_t CH2VCH1TE : 1; /*!< [1..1] VBATWIO2 Output VBATWIO1 Trigger Enable */ + uint8_t : 1; + __IOM uint8_t CH2VRTCTE : 1; /*!< [3..3] VBATWIO2 Output RTC Periodic Signal Enable */ + __IOM uint8_t CH2VRTCATE : 1; /*!< [4..4] VBATWIO2 Output RTC Alarm Signal Enable */ + __IOM uint8_t CH2VAGTUTE : 1; /*!< [5..5] CH2 Output AGT(CH2) underflow Signal Enable */ + uint8_t : 2; + } VBTWCH2OTSR_b; + }; + + union + { + __IOM uint8_t VBTICTLR; /*!< (@ 0x000004BB) 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 VBTOCTLR; /*!< (@ 0x000004BC) VBATT Output Control Register */ + + struct + { + __IOM uint8_t VCH0OEN : 1; /*!< [0..0] VBATT Wakeup I/O 0 Output Enable */ + __IOM uint8_t VCH1OEN : 1; /*!< [1..1] VBATT Wakeup I/O 1 Output Enable */ + __IOM uint8_t VCH2OEN : 1; /*!< [2..2] VBATT Wakeup I/O 2 Output Enable */ + __IOM uint8_t VOUT0LSEL : 1; /*!< [3..3] VBATT Wakeup I/O 0 Output Level Selection */ + __IOM uint8_t VCOU1LSEL : 1; /*!< [4..4] VBATT Wakeup I/O 1 Output Level Selection */ + __IOM uint8_t VOUT2LSEL : 1; /*!< [5..5] VBATT Wakeup I/O 2 Output Level Selection */ + uint8_t : 2; + } VBTOCTLR_b; + }; + + union + { + __IOM uint8_t VBTWTER; /*!< (@ 0x000004BD) VBATT Wakeup Trigger source Enable Register */ + + struct + { + __IOM uint8_t VCH0E : 1; /*!< [0..0] VBATWIO0 Pin Enable */ + __IOM uint8_t VCH1E : 1; /*!< [1..1] VBATWIO1 Pin Enable */ + __IOM uint8_t VCH2E : 1; /*!< [2..2] VBATWIO2 Pin Enable */ + __IOM uint8_t VRTCIE : 1; /*!< [3..3] RTC Periodic Signal Enable */ + __IOM uint8_t VRTCAE : 1; /*!< [4..4] RTC Alarm Signal Enable */ + __IOM uint8_t VAGTUE : 1; /*!< [5..5] AGT(ch1) underflow Signal Enable */ + uint8_t : 2; + } VBTWTER_b; + }; + + union + { + __IOM uint8_t VBTWEGR; /*!< (@ 0x000004BE) VBATT Wakeup Trigger source Edge Register */ + + struct + { + __IOM uint8_t VCH0EG : 1; /*!< [0..0] VBATWIO0 Wakeup Trigger Source Edge Select */ + __IOM uint8_t VCH1EG : 1; /*!< [1..1] VBATWIO1 Wakeup Trigger Source Edge Select */ + __IOM uint8_t VCH2EG : 1; /*!< [2..2] VBATWIO2 Wakeup Trigger Source Edge Select */ + uint8_t : 5; + } VBTWEGR_b; + }; + + union + { + __IOM uint8_t VBTWFR; /*!< (@ 0x000004BF) VBATT Wakeup trigger source Flag Register */ + + struct + { + __IOM uint8_t VCH0F : 1; /*!< [0..0] VBATWIO0 Wakeup Trigger Flag */ + __IOM uint8_t VCH1F : 1; /*!< [1..1] VBATWIO1 Wakeup Trigger Flag */ + __IOM uint8_t VCH2F : 1; /*!< [2..2] VBATWIO2 Wakeup Trigger Flag */ + __IOM uint8_t VRTCIF : 1; /*!< [3..3] VBATT RTC-Interval Wakeup Trigger Flag */ + __IOM uint8_t VRTCAF : 1; /*!< [4..4] VBATT RTC-Alarm Wakeup Trigger Flag */ + __IOM uint8_t VAGTUF : 1; /*!< [5..5] AGT(ch1) underflow VBATT Wakeup Trigger Flag */ + uint8_t : 2; + } VBTWFR_b; + }; + + union + { + __IOM uint8_t VBTBER; /*!< (@ 0x000004C0) 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 RESERVED60; + __IM uint16_t RESERVED61; + __IM uint32_t RESERVED62[15]; + + union + { + __IOM uint8_t VBTBKR[512]; /*!< (@ 0x00000500) VBATT Backup Register [0..511] */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKR is a 512-byte readable/writable register to store + * data powered by VBATT.The value of this register is retained + * even when VCC is not powered but VBATT is powered.VBTBKR + * is initialized by VBATT selected voltage power-on-reset. */ + } VBTBKR_b[512]; + }; +} R_SYSTEM_Type; /*!< Size = 1792 (0x700) */ + +/* =========================================================================================================================== */ +/* ================ R_TSN ================ */ +/* =========================================================================================================================== */ + +/** + * @brief Temperature Sensor (R_TSN) + */ + +typedef struct /*!< (@ 0x407EC000) R_TSN Structure */ +{ + __IM uint8_t RESERVED[552]; + + union + { + __IM uint8_t TSCDRL; /*!< (@ 0x00000228) Temperature Sensor Calibration Data Register + * L */ + + struct + { + __IM uint8_t TSCDRL : 8; /*!< [7..0] The calibration data stores the lower 8 bits of the convertedvalue. */ + } TSCDRL_b; + }; + + union + { + __IM uint8_t TSCDRH; /*!< (@ 0x00000229) Temperature Sensor Calibration Data Register + * H */ + + struct + { + __IM uint8_t TSCDRH : 8; /*!< [7..0] The calibration data stores the higher 8 bits of the + * convertedvalue. */ + } TSCDRH_b; + }; +} R_TSN_Type; /*!< Size = 554 (0x22a) */ + +/* =========================================================================================================================== */ +/* ================ R_TSN_CAL ================ */ +/* =========================================================================================================================== */ + +/** + * @brief Temperature Sensor (R_TSN_CAL) + */ + +typedef struct /*!< (@ 0x407FB17C) 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 /*!< (@ 0x4005D000) 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 /*!< (@ 0x40090000) 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_USB_HS0 ================ */ +/* =========================================================================================================================== */ + +/** + * @brief USB 2.0 Module (R_USB_HS0) + */ + +typedef struct /*!< (@ 0x40090000) 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] CNEN Single End Receiver Enable */ + uint16_t : 1; + __IOM uint16_t SCKE : 1; /*!< [10..10] USB Clock Enable */ + } 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) */ + } 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 */ + } 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. */ + } 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 */ + } 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 : 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] 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 */ + } 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 */ + } 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 */ + } 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 */ + } 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 */ + } 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 */ + } 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 */ + } 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 */ + } 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 */ + } 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 : 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] 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 */ + __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; + + union + { + __IOM uint16_t PIPESEL; /*!< (@ 0x00000064) Pipe Window Select Register */ + + struct + { + __IOM uint16_t PIPESEL : 4; /*!< [3..0] Pipe Window Select */ + } 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 */ + __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 */ + } PIPEBUF_b; /*!< BitSize */ + }; + + union + { + __IOM uint16_t PIPEMAXP; /*!< (@ 0x0000006C) Pipe Maximum Packet Size Register */ + + struct + { + __IOM uint16_t MXPS : 11; /*!< [10..0] Maximum Packet SizePIPE1 and PIPE2: 1 byte (001h) to + * 1024 bytes (400h)PIPE3 to PIPE5: 8 bytes (008h), 16 bytes + * (010h), 32 bytes (020h), 64 bytes (040h),512bytes(200h) ([2:0] are not + * provided.)PIPE6 to PIPE9: 1 byte (001h) to + * 64 bytes (040h) (Bits [10:7] are not provided.) */ + uint16_t : 1; + __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 */ + } 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_HS0_PIPE_TR_Type PIPE_TR[5]; /*!< (@ 0x00000090) Pipe Transaction Counter Registers */ + __IM uint32_t RESERVED15[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 */ + } DEVADD_b[10]; + }; + __IM uint16_t RESERVED16; + __IM uint32_t RESERVED17[6]; + + 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 */ + } 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 */ + } LPSTS_b; + }; + __IM uint32_t RESERVED18[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 */ + } BCCTRL_b; + }; + __IM uint16_t RESERVED19; + + 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 */ + } 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 */ + } 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 */ + } 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 RESERVED20; + + 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. */ + } PHYTRIM1_b; /*!< BitSize */ + }; + + 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 */ + } PHYTRIM2_b; /*!< BitSize */ + }; + __IM uint32_t RESERVED21[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. */ + } 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 */ + } 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 */ + } 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 */ + } DPUSRCR_b; + }; +} R_USB_HS0_Type; /*!< Size = 1032 (0x408) */ + +/* =========================================================================================================================== */ +/* ================ R_WDT ================ */ +/* =========================================================================================================================== */ + +/** + * @brief Watchdog Timer (R_WDT) + */ + +typedef struct /*!< (@ 0x40044200) 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 /*!< (@ 0x40000E00) R_TZF Structure */ +{ + union + { + __IOM uint16_t TZFOAD; /*!< (@ 0x00000000) 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] KeyCode */ + } TZFOAD_b; + }; + __IM uint16_t RESERVED; + + union + { + __IOM uint16_t TZFPT; /*!< (@ 0x00000004) 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] KeyCode */ + } TZFPT_b; + }; + __IM uint16_t RESERVED1; + __IM uint32_t RESERVED2[94]; + + union + { + __IOM uint32_t TZFSAR; /*!< (@ 0x00000180) TrustZone Filter Security Attribution Register */ + + struct + { + __IOM uint32_t TZFSA0 : 1; /*!< [0..0] Security attributes of registers for TrustZone Filter */ + uint32_t : 31; + } TZFSAR_b; + }; +} R_TZF_Type; /*!< Size = 388 (0x184) */ + +/* =========================================================================================================================== */ +/* ================ R_CACHE ================ */ +/* =========================================================================================================================== */ + +/** + * @brief R_CACHE (R_CACHE) + */ + +typedef struct /*!< (@ 0x40007000) R_CACHE Structure */ +{ + union + { + __IOM uint32_t CCACTL; /*!< (@ 0x00000000) C-Cache Control Register */ + + struct + { + __IOM uint32_t ENC : 1; /*!< [0..0] C-Cache Enable */ + uint32_t : 31; + } CCACTL_b; + }; + + union + { + __IOM uint32_t CCAFCT; /*!< (@ 0x00000004) C-Cache Flush Control Register */ + + struct + { + __IOM uint32_t FC : 1; /*!< [0..0] C-Cache Flush */ + uint32_t : 31; + } CCAFCT_b; + }; + + union + { + __IOM uint32_t CCALCF; /*!< (@ 0x00000008) C-Cache Line Configuration Register */ + + struct + { + __IOM uint32_t CC : 2; /*!< [1..0] C-Cache Line Size */ + uint32_t : 30; + } CCALCF_b; + }; + __IM uint32_t RESERVED[13]; + + union + { + __IOM uint32_t SCACTL; /*!< (@ 0x00000040) S-Cache Control Register */ + + struct + { + __IOM uint32_t ENS : 1; /*!< [0..0] S-Cache Enable */ + uint32_t : 31; + } SCACTL_b; + }; + + union + { + __IOM uint32_t SCAFCT; /*!< (@ 0x00000044) S-Cache Flush Control Register */ + + struct + { + __IOM uint32_t FS : 1; /*!< [0..0] S-Cache Flush */ + uint32_t : 31; + } SCAFCT_b; + }; + + union + { + __IOM uint32_t SCALCF; /*!< (@ 0x00000048) S-Cache Line Configuration Register */ + + struct + { + __IOM uint32_t CS : 2; /*!< [1..0] S-Cache Line Size */ + uint32_t : 30; + } SCALCF_b; + }; + __IM uint32_t RESERVED1[109]; + + union + { + __IOM uint32_t CAPOAD; /*!< (@ 0x00000200) Cache Parity Error Operation After Detection + * Register */ + + struct + { + __IOM uint32_t OAD : 1; /*!< [0..0] Operation after Detection */ + uint32_t : 31; + } CAPOAD_b; + }; + + union + { + __IOM uint32_t CAPRCR; /*!< (@ 0x00000204) Cache Protection Register */ + + struct + { + __IOM uint32_t PRCR : 1; /*!< [0..0] Register Write Control */ + __IOM uint32_t KW : 7; /*!< [7..1] Write key code */ + uint32_t : 24; + } CAPRCR_b; + }; +} R_CACHE_Type; /*!< Size = 520 (0x208) */ + +/* =========================================================================================================================== */ +/* ================ 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 */ + uint32_t : 4; + __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 */ + uint32_t : 29; + } 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[30]; + + 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; + }; +} R_CPSCU_Type; /*!< Size = 436 (0x1b4) */ + +/* =========================================================================================================================== */ +/* ================ R_CEC ================ */ +/* =========================================================================================================================== */ + +/** + * @brief Consumer Electronics Control (R_CEC) + */ + +typedef struct /*!< (@ 0x400AC000) R_CEC Structure */ +{ + union + { + __IOM uint16_t CADR; /*!< (@ 0x00000000) CEC Local Address Setting Register */ + + struct + { + __IOM uint16_t ADR00 : 1; /*!< [0..0] Local Address at Address 0 (TV) */ + __IOM uint16_t ADR01 : 1; /*!< [1..1] Local Address Setting at Address 1 (recording device + * 1) */ + __IOM uint16_t ADR02 : 1; /*!< [2..2] Local Address Setting at Address 2 (recording device + * 2) */ + __IOM uint16_t ADR03 : 1; /*!< [3..3] Local Address Setting at Address 3 (tuner 1) */ + __IOM uint16_t ADR04 : 1; /*!< [4..4] Local Address Setting at Address 4 (playback device 1) */ + __IOM uint16_t ADR05 : 1; /*!< [5..5] Local Address Setting at Address 5 (audio system) */ + __IOM uint16_t ADR06 : 1; /*!< [6..6] Local Address Setting at Address 6 (tuner 2) */ + __IOM uint16_t ADR07 : 1; /*!< [7..7] Local Address Setting at Address 7 (tuner 3) */ + __IOM uint16_t ADR08 : 1; /*!< [8..8] Local Address Setting at Address 8 (playback device 2) */ + __IOM uint16_t ADR09 : 1; /*!< [9..9] Local Address Setting at Address 9 (recording device + * 3) */ + __IOM uint16_t ADR10 : 1; /*!< [10..10] Local Address Setting at Address 10 (tuner 4) */ + __IOM uint16_t ADR11 : 1; /*!< [11..11] Local Address Setting at Address 11 (playback device + * 3) */ + __IOM uint16_t ADR12 : 1; /*!< [12..12] Local Address Setting at Address 12 (reserved) */ + __IOM uint16_t ADR13 : 1; /*!< [13..13] Local Address Setting at Address 13 (reserved) */ + __IOM uint16_t ADR14 : 1; /*!< [14..14] Local Address Setting at Address 14 (specific use) */ + uint16_t : 1; + } CADR_b; + }; + + union + { + __IOM uint8_t CECCTL1; /*!< (@ 0x00000002) CEC Control Register 1 */ + + struct + { + __IOM uint8_t SFT : 2; /*!< [1..0] Signal-Free Time Data Bit Width Select */ + __IOM uint8_t CESEL : 2; /*!< [3..2] Communication Complete Interrupt (INTCE) Generation Timing + * Select */ + __IOM uint8_t STERRD : 1; /*!< [4..4] Start Bit Error Detection Select */ + __IOM uint8_t BLERRD : 1; /*!< [5..5] Bus Lock Detection Select */ + __IOM uint8_t CINTMK : 1; /*!< [6..6] CEC Data Interrupt (INTDA) Generation Select */ + __IOM uint8_t CDFC : 1; /*!< [7..7] Digital Filter Select */ + } CECCTL1_b; + }; + __IM uint8_t RESERVED; + + union + { + __IOM uint16_t STATB; /*!< (@ 0x00000004) CEC Transmission Start Bit Width Setting Register */ + + struct + { + __IOM uint16_t STATB : 9; /*!< [8..0] CEC Transmission Start Bit Width Setting */ + uint16_t : 7; + } STATB_b; + }; + + union + { + __IOM uint16_t STATL; /*!< (@ 0x00000006) CEC Transmission Start Bit Low Width Setting + * Register */ + + struct + { + __IOM uint16_t STATL : 9; /*!< [8..0] CEC Transmission Start Bit Low Width Setting */ + uint16_t : 7; + } STATL_b; + }; + + union + { + __IOM uint16_t LGC0L; /*!< (@ 0x00000008) CEC Transmission Logical 0 Low Width Setting + * Register */ + + struct + { + __IOM uint16_t LGC0L : 9; /*!< [8..0] CEC Transmission Logical 0 Low Width Setting */ + uint16_t : 7; + } LGC0L_b; + }; + + union + { + __IOM uint16_t LGC1L; /*!< (@ 0x0000000A) CEC Transmission Logical 1 Low Width Setting + * Register */ + + struct + { + __IOM uint16_t LGC1L : 9; /*!< [8..0] CEC Transmission Logical 1 Low Width Setting */ + uint16_t : 7; + } LGC1L_b; + }; + + union + { + __IOM uint16_t DATB; /*!< (@ 0x0000000C) CEC Transmission Data Bit Width Setting Register */ + + struct + { + __IOM uint16_t DATB : 9; /*!< [8..0] CEC Transmission Data Bit Width Setting */ + uint16_t : 7; + } DATB_b; + }; + + union + { + __IOM uint16_t NOMT; /*!< (@ 0x0000000E) CEC Reception Data Sampling Time Setting Register */ + + struct + { + __IOM uint16_t NOMT : 9; /*!< [8..0] CEC Reception Data Sampling Time Setting, */ + uint16_t : 7; + } NOMT_b; + }; + + union + { + __IOM uint16_t STATLL; /*!< (@ 0x00000010) CEC Reception Start Bit Minimum Low Width Setting + * Register */ + + struct + { + __IOM uint16_t STATLL : 9; /*!< [8..0] CEC Reception Start Bit Minimum Low Width Setting */ + uint16_t : 7; + } STATLL_b; + }; + + union + { + __IOM uint16_t STATLH; /*!< (@ 0x00000012) CEC Reception Start Bit Maximum Low Width Setting + * Register */ + + struct + { + __IOM uint16_t STATLH : 9; /*!< [8..0] CEC Reception Start Bit Maximum Bit Width Setting */ + uint16_t : 7; + } STATLH_b; + }; + + union + { + __IOM uint16_t STATBL; /*!< (@ 0x00000014) CEC Reception Start Bit Minimum Bit Width Setting + * Register */ + + struct + { + __IOM uint16_t STATBL : 9; /*!< [8..0] CEC Reception Start Bit Minimum Bit Width Setting */ + uint16_t : 7; + } STATBL_b; + }; + + union + { + __IOM uint16_t STATBH; /*!< (@ 0x00000016) CEC Reception Start Bit Maximum Bit Width Setting + * Register */ + + struct + { + __IOM uint16_t STATBH : 9; /*!< [8..0] CEC Reception Start Bit Maximum Bit Width Setting */ + uint16_t : 7; + } STATBH_b; + }; + + union + { + __IOM uint16_t LGC0LL; /*!< (@ 0x00000018) CEC Reception Logical 0 Minimum Low Width Setting + * Register */ + + struct + { + __IOM uint16_t LGC0LL : 9; /*!< [8..0] CEC Reception Logical 0 Minimum Low Width Setting */ + uint16_t : 7; + } LGC0LL_b; + }; + + union + { + __IOM uint16_t LGC0LH; /*!< (@ 0x0000001A) CEC Reception Logical 0 Maximum Low Width Setting + * Register */ + + struct + { + __IOM uint16_t LGC0LH : 9; /*!< [8..0] CEC Reception Logical 0 Minimum Low Width Setting */ + uint16_t : 7; + } LGC0LH_b; + }; + + union + { + __IOM uint16_t LGC1LL; /*!< (@ 0x0000001C) CEC Reception Logical 1 Minimum Low Width Setting + * Register */ + + struct + { + __IOM uint16_t LGC1LL : 9; /*!< [8..0] CEC Reception Logical 1 Minimum Low Width Setting */ + uint16_t : 7; + } LGC1LL_b; + }; + + union + { + __IOM uint16_t LGC1LH; /*!< (@ 0x0000001E) CEC Reception Logical 1 Maximum Low Width Setting + * Register */ + + struct + { + __IOM uint16_t LGC1LH : 9; /*!< [8..0] CEC Reception Logical 1 Maximum Low Width Setting */ + uint16_t : 7; + } LGC1LH_b; + }; + + union + { + __IOM uint16_t DATBL; /*!< (@ 0x00000020) CEC Reception Data Bit Minimum Bit Width Setting + * Register */ + + struct + { + __IOM uint16_t DATBL : 9; /*!< [8..0] CEC Reception Data Bit Minimum Bit Width Setting */ + uint16_t : 7; + } DATBL_b; + }; + + union + { + __IOM uint16_t DATBH; /*!< (@ 0x00000022) CEC Reception Data Bit Maximum Bit Width Setting + * Register */ + + struct + { + __IOM uint16_t DATBH : 9; /*!< [8..0] CEC Reception Data Bit Maximum Bit Width Setting */ + uint16_t : 7; + } DATBH_b; + }; + + union + { + __IOM uint16_t NOMP; /*!< (@ 0x00000024) CEC Data Bit Reference Width Setting Register */ + + struct + { + __IOM uint16_t NOMP : 9; /*!< [8..0] CEC Data Bit Reference Width Setting */ + uint16_t : 7; + } NOMP_b; + }; + __IM uint16_t RESERVED1; + + union + { + __IOM uint8_t CECEXMD; /*!< (@ 0x00000028) CEC Extension Mode Register */ + + struct + { + uint8_t : 4; + __IOM uint8_t LERPLEN : 1; /*!< [4..4] Pulse Output Function Enable by Long Bit Width Error */ + __IOM uint8_t RERCVEN : 1; /*!< [5..5] Start Detection Reception Restart Enable */ + uint8_t : 1; + __IOM uint8_t RCVINTDSEL : 1; /*!< [7..7] INTDA Reception Interrupt Timing Change */ + } CECEXMD_b; + }; + __IM uint8_t RESERVED2; + + union + { + __IOM uint8_t CECEXMON; /*!< (@ 0x0000002A) CEC Extension Monitor Register */ + + struct + { + __IM uint8_t CECLNMON : 1; /*!< [0..0] CEC Line Monitor */ + __IM uint8_t ACKF : 1; /*!< [1..1] ACK Flag */ + uint8_t : 6; + } CECEXMON_b; + }; + __IM uint8_t RESERVED3; + __IM uint16_t RESERVED4[10]; + __IOM uint8_t CTXD; /*!< (@ 0x00000040) CEC Transmission Buffer Register */ + __IOM uint8_t CRXD; /*!< (@ 0x00000041) CEC Reception Buffer Register */ + + union + { + __IOM uint8_t CECES; /*!< (@ 0x00000042) CEC Communication Error Status Register */ + + struct + { + __IM uint8_t OERR : 1; /*!< [0..0] Overrun Error Detection Flag */ + __IM uint8_t UERR : 1; /*!< [1..1] Underrun Error Detection Flag */ + __IM uint8_t ACKERR : 1; /*!< [2..2] ACK Error Detection Flag */ + __IM uint8_t TERR : 1; /*!< [3..3] Timing Error Detection Flag */ + __IM uint8_t TXERR : 1; /*!< [4..4] Transmission Error Detection Flag */ + __IM uint8_t AERR : 1; /*!< [5..5] Arbitration Loss Detection Flag */ + __IM uint8_t BLERR : 1; /*!< [6..6] Bus Lock Error Detection Flag */ + uint8_t : 1; + } CECES_b; + }; + + union + { + __IOM uint8_t CECS; /*!< (@ 0x00000043) CEC Communication Status Register */ + + struct + { + __IM uint8_t ADRF : 1; /*!< [0..0] Address Match Detection Flag */ + __IM uint8_t BUSST : 1; /*!< [1..1] Bus Busy Detection Flag */ + __IM uint8_t TXST : 1; /*!< [2..2] Transmission Status Flag */ + __IM uint8_t EOMF : 1; /*!< [3..3] EOM Flag */ + __IM uint8_t ITCEF : 1; /*!< [4..4] INTCE Generation Source Flag */ + uint8_t : 2; + __IM uint8_t SFTST : 1; /*!< [7..7] Signal-Free Time Rewrite Disable Report Flag */ + } CECS_b; + }; + + union + { + __IOM uint8_t CECFC; /*!< (@ 0x00000044) CEC Communication Error Flag Clear Trigger Register */ + + struct + { + __OM uint8_t OCTRG : 1; /*!< [0..0] Overrun Error Detection Flag Clear Trigger */ + __OM uint8_t UCTRG : 1; /*!< [1..1] Underrun Error Detection Flag Clear Trigger */ + __OM uint8_t ACKCTRG : 1; /*!< [2..2] ACK Error Detection Flag Clear Trigger */ + __OM uint8_t TCTRG : 1; /*!< [3..3] Timing Error Detection Flag Clear Trigger */ + __OM uint8_t TXCTRG : 1; /*!< [4..4] Transmission Error Detection Flag Clear Trigger */ + __OM uint8_t ACTRG : 1; /*!< [5..5] Arbitration Loss Detection Flag Clear Trigger */ + __OM uint8_t BLCTRG : 1; /*!< [6..6] Bus Lock Error Detection Flag Clear Trigger */ + uint8_t : 1; + } CECFC_b; + }; + + union + { + __IOM uint8_t CECCTL0; /*!< (@ 0x00000045) CEC Control Register 0 */ + + struct + { + __IOM uint8_t EOM : 1; /*!< [0..0] EOM Setting */ + __IOM uint8_t CECRXEN : 1; /*!< [1..1] Reception Enable Control */ + __OM uint8_t TXTRG : 1; /*!< [2..2] Transmission Start Trigger */ + __IOM uint8_t CCL : 3; /*!< [5..3] CEC Clock (CECCLK) Select */ + __IOM uint8_t ACKTEN : 1; /*!< [6..6] ACK Bit Timing Error (Bit Width) Check Enable */ + __IOM uint8_t CECE : 1; /*!< [7..7] CEC Operation Enable Flag */ + } CECCTL0_b; + }; +} R_CEC_Type; /*!< Size = 70 (0x46) */ + +/* =========================================================================================================================== */ +/* ================ R_OSPI ================ */ +/* =========================================================================================================================== */ + +/** + * @brief Octa Serial Peripheral Interface (R_OSPI) + */ + +typedef struct /*!< (@ 0x400A6000) R_OSPI Structure */ +{ + union + { + __IOM uint32_t DCR; /*!< (@ 0x00000000) Device Command Register */ + + struct + { + __IOM uint32_t DVCMD0 : 8; /*!< [7..0] Device Command data */ + __IOM uint32_t DVCMD1 : 8; /*!< [15..8] Device Command data */ + uint32_t : 16; + } DCR_b; + }; + + union + { + __IOM uint32_t DAR; /*!< (@ 0x00000004) Device Address Register */ + + struct + { + __IOM uint32_t DVAD0 : 8; /*!< [7..0] Device Address data 0 */ + __IOM uint32_t DVAD1 : 8; /*!< [15..8] Device Address data 1 */ + __IOM uint32_t DVAD2 : 8; /*!< [23..16] Device Address data 2 */ + __IOM uint32_t DVAD3 : 8; /*!< [31..24] Device Address data 3 */ + } DAR_b; + }; + + union + { + __IOM uint32_t DCSR; /*!< (@ 0x00000008) Device Command Setting Register */ + + struct + { + __IOM uint32_t DALEN : 8; /*!< [7..0] Transfer data length setting */ + __IOM uint32_t DMLEN : 8; /*!< [15..8] Dummy cycle setting */ + uint32_t : 3; + __IOM uint32_t ACDV : 1; /*!< [19..19] Access Device setting */ + __IOM uint32_t CMDLEN : 3; /*!< [22..20] Transfer command length setting */ + __IOM uint32_t DAOR : 1; /*!< [23..23] Data order setting */ + __IOM uint32_t ADLEN : 3; /*!< [26..24] Transfer address length setting */ + __IOM uint32_t DOPI : 1; /*!< [27..27] DOPI single byte setting */ + __IOM uint32_t ACDA : 1; /*!< [28..28] Data Access Control */ + __IOM uint32_t PREN : 1; /*!< [29..29] Preamble bit enable for OctaRAM */ + uint32_t : 2; + } DCSR_b; + }; + + union + { + __IOM uint32_t DSR[2]; /*!< (@ 0x0000000C) Device Size Register 0 */ + + struct + { + __IOM uint32_t DVSZ : 30; /*!< [29..0] Device size setting */ + __IOM uint32_t DVTYP : 2; /*!< [31..30] Device type setting */ + } DSR_b[2]; + }; + + union + { + __IOM uint32_t MDTR; /*!< (@ 0x00000014) Memory Delay Trim Register */ + + struct + { + __IOM uint32_t DV0DEL : 8; /*!< [7..0] Device 0 delay setting */ + __IOM uint32_t DQSERAM : 4; /*!< [11..8] OM_DQS enable counter */ + __IOM uint32_t DQSESOPI : 4; /*!< [15..12] OM_DQS enable counter */ + __IOM uint32_t DV1DEL : 8; /*!< [23..16] Device 1 delay setting */ + __IOM uint32_t DQSEDOPI : 4; /*!< [27..24] OM_DQS enable counter */ + uint32_t : 4; + } MDTR_b; + }; + + union + { + __IOM uint32_t ACTR; /*!< (@ 0x00000018) Auto-Calibration Timer Register */ + + struct + { + __IOM uint32_t CTP : 32; /*!< [31..0] Automatic calibration cycle time setting */ + } ACTR_b; + }; + + union + { + __IOM uint32_t ACAR[2]; /*!< (@ 0x0000001C) Auto-Calibration Address Register */ + + struct + { + __IOM uint32_t CAD : 32; /*!< [31..0] Automatic calibration address */ + } ACAR_b[2]; + }; + __IM uint32_t RESERVED[4]; + + union + { + __IOM uint32_t DRCSTR; /*!< (@ 0x00000034) Device Memory Map Read Chip Select Timing Setting + * Register */ + + struct + { + __IOM uint32_t CTRW0 : 7; /*!< [6..0] Device 0 single continuous read waiting cycle setting + * in PCLKH units */ + __IOM uint32_t CTR0 : 1; /*!< [7..7] Device 0 single continuous read mode setting */ + __IOM uint32_t DVRDCMD0 : 3; /*!< [10..8] Device 0 Command execution interval setting */ + __IOM uint32_t DVRDHI0 : 3; /*!< [13..11] Device 0 select signal pull-up timing setting */ + __IOM uint32_t DVRDLO0 : 2; /*!< [15..14] Device 0 select signal pull-down timing setting */ + __IOM uint32_t CTRW1 : 7; /*!< [22..16] Device 1 single continuous read waiting cycle setting + * in PCLKH units */ + __IOM uint32_t CTR1 : 1; /*!< [23..23] Device 1 single continuous read mode setting */ + __IOM uint32_t DVRDCMD1 : 3; /*!< [26..24] Device 1 Command execution interval */ + __IOM uint32_t DVRDHI1 : 3; /*!< [29..27] Device 1 select signal High timing setting */ + __IOM uint32_t DVRDLO1 : 2; /*!< [31..30] Device 1 select signal pull-down timing setting */ + } DRCSTR_b; + }; + + union + { + __IOM uint32_t DWCSTR; /*!< (@ 0x00000038) Device Memory Map Write Chip Select Timing Setting + * Register */ + + struct + { + __IOM uint32_t CTWW0 : 7; /*!< [6..0] Device 0 single continuous write waiting cycle setting + * in PCLKH units */ + __IOM uint32_t CTW0 : 1; /*!< [7..7] Device 0 single continuous write mode setting */ + __IOM uint32_t DVWCMD0 : 3; /*!< [10..8] Device 0 Command execution interval setting */ + __IOM uint32_t DVWHI0 : 3; /*!< [13..11] Device 0 select signal pull-up timing setting */ + __IOM uint32_t DVWLO0 : 2; /*!< [15..14] Device 0 select signal pull-down timing setting */ + __IOM uint32_t CTWW1 : 7; /*!< [22..16] Device 1 single continuous write waiting cycle setting + * in PCLKH units */ + __IOM uint32_t CTW1 : 1; /*!< [23..23] Device 1 single continuous write mode setting */ + __IOM uint32_t DVWCMD1 : 3; /*!< [26..24] Device 1 Command execution interval setting */ + __IOM uint32_t DVWHI1 : 3; /*!< [29..27] Device 1 select signal pull-up timing setting */ + __IOM uint32_t DVWLO1 : 2; /*!< [31..30] Device 1 select signal pull-down timing setting */ + } DWCSTR_b; + }; + + union + { + __IOM uint32_t DCSTR; /*!< (@ 0x0000003C) Device Chip Select Timing Setting Register */ + + struct + { + uint32_t : 8; + __IOM uint32_t DVSELCMD : 3; /*!< [10..8] Device Command execution interval setting */ + __IOM uint32_t DVSELHI : 3; /*!< [13..11] Device select signal pull-up timing setting */ + __IOM uint32_t DVSELLO : 2; /*!< [15..14] Device select signal pull-down timing setting */ + uint32_t : 16; + } DCSTR_b; + }; + + union + { + __IOM uint32_t CDSR; /*!< (@ 0x00000040) Controller and Device Setting Register */ + + struct + { + __IOM uint32_t DV0TTYP : 2; /*!< [1..0] Device0_transfer_type setting */ + __IOM uint32_t DV1TTYP : 2; /*!< [3..2] Device1_transfer_type setting */ + __IOM uint32_t DV0PC : 1; /*!< [4..4] Device0_memory precycle setting */ + __IOM uint32_t DV1PC : 1; /*!< [5..5] Device1_memory precycle setting */ + uint32_t : 4; + __IOM uint32_t ACMEME0 : 1; /*!< [10..10] Automatic calibration memory enable setting for device + * 0 */ + __IOM uint32_t ACMEME1 : 1; /*!< [11..11] Automatic calibration memory enable setting for device + * 1 */ + __IOM uint32_t ACMODE : 2; /*!< [13..12] Automatic calibration mode */ + uint32_t : 17; + __IOM uint32_t DLFT : 1; /*!< [31..31] Deadlock Free Timer Enable */ + } CDSR_b; + }; + + union + { + __IOM uint32_t MDLR; /*!< (@ 0x00000044) Memory Map Dummy Length Register */ + + struct + { + __IOM uint32_t DV0RDL : 8; /*!< [7..0] Device 0 Read dummy length setting */ + __IOM uint32_t DV0WDL : 8; /*!< [15..8] Device 0 Write dummy length setting */ + __IOM uint32_t DV1RDL : 8; /*!< [23..16] Device 1 Read dummy length setting */ + __IOM uint32_t DV1WDL : 8; /*!< [31..24] Device 1 Write dummy length setting */ + } MDLR_b; + }; + + union + { + __IOM uint32_t MRWCR[2]; /*!< (@ 0x00000048) Memory Map Read/Write Command Register */ + + struct + { + __IOM uint32_t DMRCMD0 : 8; /*!< [7..0] Memory map read command 0 setting */ + __IOM uint32_t DMRCMD1 : 8; /*!< [15..8] Memory map read command 1 setting */ + __IOM uint32_t DMWCMD0 : 8; /*!< [23..16] Memory map write command 0 setting */ + __IOM uint32_t DMWCMD1 : 8; /*!< [31..24] Memory map write command 1 setting */ + } MRWCR_b[2]; + }; + + union + { + __IOM uint32_t MRWCSR; /*!< (@ 0x00000050) Memory Map Read/Write Setting Register */ + + struct + { + __IOM uint32_t MRAL0 : 3; /*!< [2..0] Device 0 read address length setting */ + __IOM uint32_t MRCL0 : 3; /*!< [5..3] Device 0 read command length setting */ + __IOM uint32_t MRO0 : 1; /*!< [6..6] Device 0 read order setting */ + __IOM uint32_t PREN0 : 1; /*!< [7..7] Preamble bit enable for mem0 memory-map read */ + __IOM uint32_t MWAL0 : 3; /*!< [10..8] Device 0 write address length setting */ + __IOM uint32_t MWCL0 : 3; /*!< [13..11] Device 0 write command length setting */ + __IOM uint32_t MWO0 : 1; /*!< [14..14] Device 0 write order setting */ + uint32_t : 1; + __IOM uint32_t MRAL1 : 3; /*!< [18..16] Device 1 read address length setting */ + __IOM uint32_t MRCL1 : 3; /*!< [21..19] Device 1 read command length setting */ + __IOM uint32_t MRO1 : 1; /*!< [22..22] Device 1 read order setting */ + __IOM uint32_t PREN1 : 1; /*!< [23..23] Preamble bit enable for mem1 memory-map read */ + __IOM uint32_t MWAL1 : 3; /*!< [26..24] Device 1 write address length setting */ + __IOM uint32_t MWCL1 : 3; /*!< [29..27] Device 1 write command length setting */ + __IOM uint32_t MWO1 : 1; /*!< [30..30] Device 1 write order setting */ + uint32_t : 1; + } MRWCSR_b; + }; + + union + { + __IM uint32_t ESR; /*!< (@ 0x00000054) Error Status Register */ + + struct + { + __IM uint32_t MRESR : 8; /*!< [7..0] Memory map read error status */ + __IM uint32_t MWESR : 8; /*!< [15..8] Memory map write error status */ + uint32_t : 16; + } ESR_b; + }; + + union + { + __OM uint32_t CWNDR; /*!< (@ 0x00000058) Configure Write without Data Register */ + + struct + { + __OM uint32_t WND : 32; /*!< [31..0] The write value should be 0. */ + } CWNDR_b; + }; + + union + { + __OM uint32_t CWDR; /*!< (@ 0x0000005C) Configure Write Data Register */ + + struct + { + __OM uint32_t WD0 : 8; /*!< [7..0] Write data 0 */ + __OM uint32_t WD1 : 8; /*!< [15..8] Write data 1 */ + __OM uint32_t WD2 : 8; /*!< [23..16] Write data 2 */ + __OM uint32_t WD3 : 8; /*!< [31..24] Write data 3 */ + } CWDR_b; + }; + + union + { + __IM uint32_t CRR; /*!< (@ 0x00000060) Configure Read Register */ + + struct + { + __IM uint32_t RD0 : 8; /*!< [7..0] Read data 0 */ + __IM uint32_t RD1 : 8; /*!< [15..8] Read data 1 */ + __IM uint32_t RD2 : 8; /*!< [23..16] Read data 2 */ + __IM uint32_t RD3 : 8; /*!< [31..24] Read data 3 */ + } CRR_b; + }; + + union + { + __IOM uint32_t ACSR; /*!< (@ 0x00000064) Auto-Calibration Status Register */ + + struct + { + __IOM uint32_t ACSR0 : 3; /*!< [2..0] Auto-calibration status of device 0 */ + __IOM uint32_t ACSR1 : 3; /*!< [5..3] Auto-calibration status of device 1 */ + uint32_t : 26; + } ACSR_b; + }; + __IM uint32_t RESERVED1[5]; + + union + { + __IOM uint32_t DCSMXR; /*!< (@ 0x0000007C) Device Chip Select Maximum Period Register */ + + struct + { + __IOM uint32_t CTWMX0 : 9; /*!< [8..0] Indicates the maximum period that OM_CS0 and OM_CS1 are + * Low in single continuous write of OctaRAM. */ + uint32_t : 7; + __IOM uint32_t CTWMX1 : 9; /*!< [24..16] Indicates the maximum period that OM_CS0 and OM_CS1 + * are Low in single continuous read of OctaRAM. */ + uint32_t : 7; + } DCSMXR_b; + }; + + union + { + __IOM uint32_t DWSCTSR; /*!< (@ 0x00000080) Device Memory Map Write single continuous translating + * size Register */ + + struct + { + __IOM uint32_t CTSN0 : 11; /*!< [10..0] Indicates the number of bytes to translate in single + * continuous write of device 0. */ + uint32_t : 5; + __IOM uint32_t CTSN1 : 11; /*!< [26..16] Indicates the number of bytes to translate in single + * continuous write of device 1. */ + uint32_t : 5; + } DWSCTSR_b; + }; +} R_OSPI_Type; /*!< Size = 132 (0x84) */ + +/* =========================================================================================================================== */ +/* ================ R_ADC_B0 ================ */ +/* =========================================================================================================================== */ + +/** + * @brief 12-bit A/D Converter (R_ADC_B0) + */ + +typedef struct /*!< (@ 0x40170000) R_ADC_B0 Structure */ +{ + union + { + __IOM uint32_t ADCLKENR; /*!< (@ 0x00000000) A/D Conversion Clock Enable Register */ + + struct + { + __IOM uint32_t CLKEN : 1; /*!< [0..0] ADCLK Operating Enable bit */ + uint32_t : 31; + } ADCLKENR_b; + }; + + union + { + __IM uint32_t ADCLKSR; /*!< (@ 0x00000004) A/D Conversion Clock Status Register */ + + struct + { + __IM uint32_t CLKSR : 1; /*!< [0..0] ADCLK status bit */ + uint32_t : 31; + } ADCLKSR_b; + }; + + union + { + __IOM uint32_t ADCLKCR; /*!< (@ 0x00000008) A/D Conversion Clock Control Register */ + + struct + { + __IOM uint32_t CLKSEL : 2; /*!< [1..0] ADCLK Clock Source Select */ + uint32_t : 14; + __IOM uint32_t DIVR : 3; /*!< [18..16] Clock Division Ratio Select */ + uint32_t : 13; + } ADCLKCR_b; + }; + + union + { + __IOM uint32_t ADSYCR; /*!< (@ 0x0000000C) A/D Converter Synchronous Operation Control Register */ + + struct + { + __IOM uint32_t ADSYCYC : 11; /*!< [10..0] A/D Converter Synchronous Operation Period Cycle */ + uint32_t : 5; + __IOM uint32_t ADSYDIS0 : 1; /*!< [16..16] ADC0 Synchronous Operation Select */ + __IOM uint32_t ADSYDIS1 : 1; /*!< [17..17] ADC1 Synchronous Operation Select */ + uint32_t : 14; + } ADSYCR_b; + }; + __IM uint32_t RESERVED[4]; + + union + { + __IOM uint32_t ADERINTCR; /*!< (@ 0x00000020) A/D Conversion Error Interrupt Enable Register */ + + struct + { + __IOM uint32_t ADEIE0 : 1; /*!< [0..0] ADC0 A/D Conversion Error Interrupt Enable */ + __IOM uint32_t ADEIE1 : 1; /*!< [1..1] ADC1 A/D Conversion Error Interrupt Enable */ + uint32_t : 30; + } ADERINTCR_b; + }; + + union + { + __IOM uint32_t ADOVFINTCR; /*!< (@ 0x00000024) A/D Conversion Overflow Interrupt Enable Register */ + + struct + { + __IOM uint32_t ADOVFIE0 : 1; /*!< [0..0] ADC0 A/D Conversion Overflow Interrupt Enable */ + __IOM uint32_t ADOVFIE1 : 1; /*!< [1..1] ADC1 A/D Conversion Overflow Interrupt Enable */ + uint32_t : 30; + } ADOVFINTCR_b; + }; + + union + { + __IOM uint32_t ADCALINTCR; /*!< (@ 0x00000028) Calibration interrupt Enable Register */ + + struct + { + uint32_t : 16; + __IOM uint32_t CALENDIE0 : 1; /*!< [16..16] ADC0 Calibration End Interrupt Enable */ + __IOM uint32_t CALENDIE1 : 1; /*!< [17..17] ADC1 Calibration End Interrupt Enable */ + uint32_t : 14; + } ADCALINTCR_b; + }; + __IM uint32_t RESERVED1[5]; + + union + { + __IOM uint32_t ADMDR; /*!< (@ 0x00000040) A/D Converter Mode Selection Register */ + + struct + { + __IOM uint32_t ADMD0 : 4; /*!< [3..0] ADC0 Mode Selection */ + uint32_t : 4; + __IOM uint32_t ADMD1 : 4; /*!< [11..8] ADC1 Mode Selection */ + uint32_t : 20; + } ADMDR_b; + }; + + union + { + __IOM uint32_t ADGSPCR; /*!< (@ 0x00000044) A/D Group scan Priority Control Register */ + + struct + { + __IOM uint32_t PGS0 : 1; /*!< [0..0] ADC0 Group Priority Control Setting */ + __IOM uint32_t RSCN0 : 1; /*!< [1..1] ADC0 Group Priority Control Setting 2 */ + __IOM uint32_t LGRRS0 : 1; /*!< [2..2] ADC0 Group Priority Control Setting 3 */ + __IOM uint32_t GRP0 : 1; /*!< [3..3] ADC0 Group Priority Control Setting 4 */ + uint32_t : 4; + __IOM uint32_t PGS1 : 1; /*!< [8..8] ADC1 Group Priority Control Setting */ + __IOM uint32_t RSCN1 : 1; /*!< [9..9] ADC1 Group Priority Control Setting 2 */ + __IOM uint32_t LGRRS1 : 1; /*!< [10..10] ADC1 Group Priority Control Setting 3 */ + __IOM uint32_t GRP1 : 1; /*!< [11..11] ADC1 Group Priority Control Setting 4 */ + uint32_t : 20; + } ADGSPCR_b; + }; + + union + { + __IOM uint32_t ADSGER; /*!< (@ 0x00000048) Scan Group Enable Register */ + + struct + { + __IOM uint32_t SGREn : 9; /*!< [8..0] Scan Group n Enable */ + uint32_t : 23; + } ADSGER_b; + }; + + union + { + __IOM uint32_t ADSGCR0; /*!< (@ 0x0000004C) Scan Group Control Register 0 */ + + struct + { + __IOM uint32_t SGADS0 : 2; /*!< [1..0] Scan Group 0 A/D Converter Selection */ + uint32_t : 6; + __IOM uint32_t SGADS1 : 2; /*!< [9..8] Scan Group 1 A/D Converter Selection */ + uint32_t : 6; + __IOM uint32_t SGADS2 : 2; /*!< [17..16] Scan Group 2 A/D Converter Selection */ + uint32_t : 6; + __IOM uint32_t SGADS3 : 2; /*!< [25..24] Scan Group 3 A/D Converter Selection */ + uint32_t : 6; + } ADSGCR0_b; + }; + + union + { + __IOM uint32_t ADSGCR1; /*!< (@ 0x00000050) Scan Group Control Register 1 */ + + struct + { + __IOM uint32_t SGADS4 : 2; /*!< [1..0] Scan Group 4 A/D Converter Selection */ + uint32_t : 6; + __IOM uint32_t SGADS5 : 2; /*!< [9..8] Scan Group 5 A/D Converter Selection */ + uint32_t : 6; + __IOM uint32_t SGADS6 : 2; /*!< [17..16] Scan Group 6 A/D Converter Selection */ + uint32_t : 6; + __IOM uint32_t SGADS7 : 2; /*!< [25..24] Scan Group 7 A/D Converter Selection */ + uint32_t : 6; + } ADSGCR1_b; + }; + + union + { + __IOM uint32_t ADSGCR2; /*!< (@ 0x00000054) Scan Group Control Register 2 */ + + struct + { + __IOM uint32_t SGADS8 : 2; /*!< [1..0] Scan Group 8 A/D Converter Selection */ + uint32_t : 30; + } ADSGCR2_b; + }; + __IM uint32_t RESERVED2; + + union + { + __IOM uint32_t ADINTCR; /*!< (@ 0x0000005C) Scan End Interrupt Enable Register */ + + struct + { + __IOM uint32_t ADIEn : 10; /*!< [9..0] Scan Group n Scan End Interrupt Enable */ + uint32_t : 22; + } ADINTCR_b; + }; + __IM uint32_t RESERVED3[24]; + + union + { + __IOM uint32_t ADTRGEXT0; /*!< (@ 0x000000C0) External Trigger Enable Register 0 */ + + struct + { + __IOM uint32_t TRGEXT0 : 1; /*!< [0..0] External Trigger Input 0 (ADTRG0) Enable */ + __IOM uint32_t TRGEXT1 : 1; /*!< [1..1] External Trigger Input 1 (ADTRG1) Enable */ + uint32_t : 30; + } ADTRGEXT0_b; + }; + + union + { + __IOM uint32_t ADTRGELC0; /*!< (@ 0x000000C4) ELC Trigger Enable Register 0 */ + + struct + { + __IOM uint32_t TRGELCm : 6; /*!< [5..0] ELC Trigger m Enable */ + uint32_t : 26; + } ADTRGELC0_b; + }; + + union + { + __IOM uint32_t ADTRGGPT0; /*!< (@ 0x000000C8) GPT Trigger Enable Register 0 */ + + struct + { + __IOM uint32_t TRGGPTAm : 10; /*!< [9..0] GPT channel m A/D Conversion Starting Request A Enable */ + uint32_t : 6; + __IOM uint32_t TRGGPTBm : 10; /*!< [25..16] GPT channel m A/D Conversion Starting Request B Enable */ + uint32_t : 6; + } ADTRGGPT0_b; + }; + __IM uint32_t RESERVED4; + + union + { + __IOM uint32_t ADTRGEXT1; /*!< (@ 0x000000D0) External Trigger Enable Register 1 */ + + struct + { + __IOM uint32_t TRGEXT0 : 1; /*!< [0..0] External Trigger Input 0 (ADTRG0) Enable */ + __IOM uint32_t TRGEXT1 : 1; /*!< [1..1] External Trigger Input 1 (ADTRG1) Enable */ + uint32_t : 30; + } ADTRGEXT1_b; + }; + + union + { + __IOM uint32_t ADTRGELC1; /*!< (@ 0x000000D4) ELC Trigger Enable Register 1 */ + + struct + { + __IOM uint32_t TRGELCm : 6; /*!< [5..0] ELC Trigger m Enable */ + uint32_t : 26; + } ADTRGELC1_b; + }; + + union + { + __IOM uint32_t ADTRGGPT1; /*!< (@ 0x000000D8) GPT Trigger Enable Register 1 */ + + struct + { + __IOM uint32_t TRGGPTAm : 10; /*!< [9..0] GPT channel m A/D Conversion Starting Request A Enable */ + uint32_t : 6; + __IOM uint32_t TRGGPTBm : 10; /*!< [25..16] GPT channel m A/D Conversion Starting Request B Enable */ + uint32_t : 6; + } ADTRGGPT1_b; + }; + __IM uint32_t RESERVED5; + + union + { + __IOM uint32_t ADTRGEXT2; /*!< (@ 0x000000E0) External Trigger Enable Register 2 */ + + struct + { + __IOM uint32_t TRGEXT0 : 1; /*!< [0..0] External Trigger Input 0 (ADTRG0) Enable */ + __IOM uint32_t TRGEXT1 : 1; /*!< [1..1] External Trigger Input 1 (ADTRG1) Enable */ + uint32_t : 30; + } ADTRGEXT2_b; + }; + + union + { + __IOM uint32_t ADTRGELC2; /*!< (@ 0x000000E4) ELC Trigger Enable Register 2 */ + + struct + { + __IOM uint32_t TRGELCm : 6; /*!< [5..0] ELC Trigger m Enable */ + uint32_t : 26; + } ADTRGELC2_b; + }; + + union + { + __IOM uint32_t ADTRGGPT2; /*!< (@ 0x000000E8) GPT Trigger Enable Register 2 */ + + struct + { + __IOM uint32_t TRGGPTAm : 10; /*!< [9..0] GPT channel m A/D Conversion Starting Request A Enable */ + uint32_t : 6; + __IOM uint32_t TRGGPTBm : 10; /*!< [25..16] GPT channel m A/D Conversion Starting Request B Enable */ + uint32_t : 6; + } ADTRGGPT2_b; + }; + __IM uint32_t RESERVED6; + + union + { + __IOM uint32_t ADTRGEXT3; /*!< (@ 0x000000F0) External Trigger Enable Register 3 */ + + struct + { + __IOM uint32_t TRGEXT0 : 1; /*!< [0..0] External Trigger Input 0 (ADTRG0) Enable */ + __IOM uint32_t TRGEXT1 : 1; /*!< [1..1] External Trigger Input 1 (ADTRG1) Enable */ + uint32_t : 30; + } ADTRGEXT3_b; + }; + + union + { + __IOM uint32_t ADTRGELC3; /*!< (@ 0x000000F4) ELC Trigger Enable Register 3 */ + + struct + { + __IOM uint32_t TRGELCm : 6; /*!< [5..0] ELC Trigger m Enable */ + uint32_t : 26; + } ADTRGELC3_b; + }; + + union + { + __IOM uint32_t ADTRGGPT3; /*!< (@ 0x000000F8) GPT Trigger Enable Register 3 */ + + struct + { + __IOM uint32_t TRGGPTAm : 10; /*!< [9..0] GPT channel m A/D Conversion Starting Request A Enable */ + uint32_t : 6; + __IOM uint32_t TRGGPTBm : 10; /*!< [25..16] GPT channel m A/D Conversion Starting Request B Enable */ + uint32_t : 6; + } ADTRGGPT3_b; + }; + __IM uint32_t RESERVED7; + + union + { + __IOM uint32_t ADTRGEXT4; /*!< (@ 0x00000100) External Trigger Enable Register 4 */ + + struct + { + __IOM uint32_t TRGEXT0 : 1; /*!< [0..0] External Trigger Input 0 (ADTRG0) Enable */ + __IOM uint32_t TRGEXT1 : 1; /*!< [1..1] External Trigger Input 1 (ADTRG1) Enable */ + uint32_t : 30; + } ADTRGEXT4_b; + }; + + union + { + __IOM uint32_t ADTRGELC4; /*!< (@ 0x00000104) ELC Trigger Enable Register 4 */ + + struct + { + __IOM uint32_t TRGELCm : 6; /*!< [5..0] ELC Trigger m Enable */ + uint32_t : 26; + } ADTRGELC4_b; + }; + + union + { + __IOM uint32_t ADTRGGPT4; /*!< (@ 0x00000108) GPT Trigger Enable Register 4 */ + + struct + { + __IOM uint32_t TRGGPTAm : 10; /*!< [9..0] GPT channel m A/D Conversion Starting Request A Enable */ + uint32_t : 6; + __IOM uint32_t TRGGPTBm : 10; /*!< [25..16] GPT channel m A/D Conversion Starting Request B Enable */ + uint32_t : 6; + } ADTRGGPT4_b; + }; + __IM uint32_t RESERVED8; + + union + { + __IOM uint32_t ADTRGEXT5; /*!< (@ 0x00000110) External Trigger Enable Register 5 */ + + struct + { + __IOM uint32_t TRGEXT0 : 1; /*!< [0..0] External Trigger Input 0 (ADTRG0) Enable */ + __IOM uint32_t TRGEXT1 : 1; /*!< [1..1] External Trigger Input 1 (ADTRG1) Enable */ + uint32_t : 30; + } ADTRGEXT5_b; + }; + + union + { + __IOM uint32_t ADTRGELC5; /*!< (@ 0x00000114) ELC Trigger Enable Register 5 */ + + struct + { + __IOM uint32_t TRGELCm : 6; /*!< [5..0] ELC Trigger m Enable */ + uint32_t : 26; + } ADTRGELC5_b; + }; + + union + { + __IOM uint32_t ADTRGGPT5; /*!< (@ 0x00000118) GPT Trigger Enable Register 5 */ + + struct + { + __IOM uint32_t TRGGPTAm : 10; /*!< [9..0] GPT channel m A/D Conversion Starting Request A Enable */ + uint32_t : 6; + __IOM uint32_t TRGGPTBm : 10; /*!< [25..16] GPT channel m A/D Conversion Starting Request B Enable */ + uint32_t : 6; + } ADTRGGPT5_b; + }; + __IM uint32_t RESERVED9; + + union + { + __IOM uint32_t ADTRGEXT6; /*!< (@ 0x00000120) External Trigger Enable Register 6 */ + + struct + { + __IOM uint32_t TRGEXT0 : 1; /*!< [0..0] External Trigger Input 0 (ADTRG0) Enable */ + __IOM uint32_t TRGEXT1 : 1; /*!< [1..1] External Trigger Input 1 (ADTRG1) Enable */ + uint32_t : 30; + } ADTRGEXT6_b; + }; + + union + { + __IOM uint32_t ADTRGELC6; /*!< (@ 0x00000124) ELC Trigger Enable Register 6 */ + + struct + { + __IOM uint32_t TRGELCm : 6; /*!< [5..0] ELC Trigger m Enable */ + uint32_t : 26; + } ADTRGELC6_b; + }; + + union + { + __IOM uint32_t ADTRGGPT6; /*!< (@ 0x00000128) GPT Trigger Enable Register 6 */ + + struct + { + __IOM uint32_t TRGGPTAm : 10; /*!< [9..0] GPT channel m A/D Conversion Starting Request A Enable */ + uint32_t : 6; + __IOM uint32_t TRGGPTBm : 10; /*!< [25..16] GPT channel m A/D Conversion Starting Request B Enable */ + uint32_t : 6; + } ADTRGGPT6_b; + }; + __IM uint32_t RESERVED10; + + union + { + __IOM uint32_t ADTRGEXT7; /*!< (@ 0x00000130) External Trigger Enable Register 7 */ + + struct + { + __IOM uint32_t TRGEXT0 : 1; /*!< [0..0] External Trigger Input 0 (ADTRG0) Enable */ + __IOM uint32_t TRGEXT1 : 1; /*!< [1..1] External Trigger Input 1 (ADTRG1) Enable */ + uint32_t : 30; + } ADTRGEXT7_b; + }; + + union + { + __IOM uint32_t ADTRGELC7; /*!< (@ 0x00000134) ELC Trigger Enable Register 7 */ + + struct + { + __IOM uint32_t TRGELCm : 6; /*!< [5..0] ELC Trigger m Enable */ + uint32_t : 26; + } ADTRGELC7_b; + }; + + union + { + __IOM uint32_t ADTRGGPT7; /*!< (@ 0x00000138) GPT Trigger Enable Register 7 */ + + struct + { + __IOM uint32_t TRGGPTAm : 10; /*!< [9..0] GPT channel m A/D Conversion Starting Request A Enable */ + uint32_t : 6; + __IOM uint32_t TRGGPTBm : 10; /*!< [25..16] GPT channel m A/D Conversion Starting Request B Enable */ + uint32_t : 6; + } ADTRGGPT7_b; + }; + __IM uint32_t RESERVED11; + + union + { + __IOM uint32_t ADTRGEXT8; /*!< (@ 0x00000140) External Trigger Enable Register 8 */ + + struct + { + __IOM uint32_t TRGEXT0 : 1; /*!< [0..0] External Trigger Input 0 (ADTRG0) Enable */ + __IOM uint32_t TRGEXT1 : 1; /*!< [1..1] External Trigger Input 1 (ADTRG1) Enable */ + uint32_t : 30; + } ADTRGEXT8_b; + }; + + union + { + __IOM uint32_t ADTRGELC8; /*!< (@ 0x00000144) ELC Trigger Enable Register 8 */ + + struct + { + __IOM uint32_t TRGELCm : 6; /*!< [5..0] ELC Trigger m Enable */ + uint32_t : 26; + } ADTRGELC8_b; + }; + + union + { + __IOM uint32_t ADTRGGPT8; /*!< (@ 0x00000148) GPT Trigger Enable Register 8 */ + + struct + { + __IOM uint32_t TRGGPTAm : 10; /*!< [9..0] GPT channel m A/D Conversion Starting Request A Enable */ + uint32_t : 6; + __IOM uint32_t TRGGPTBm : 10; /*!< [25..16] GPT channel m A/D Conversion Starting Request B Enable */ + uint32_t : 6; + } ADTRGGPT8_b; + }; + __IM uint32_t RESERVED12[29]; + + union + { + __IOM uint32_t ADTRGDLR0; /*!< (@ 0x000001C0) A/D Conversion Start Trigger Delay Register 0 */ + + struct + { + __IOM uint32_t TRGDLY0 : 8; /*!< [7..0] Scan Group 0 Trigger Input Delay Configuration */ + uint32_t : 8; + __IOM uint32_t TRGDLY1 : 8; /*!< [23..16] Scan Group 1 Trigger Input Delay Configuration */ + uint32_t : 8; + } ADTRGDLR0_b; + }; + + union + { + __IOM uint32_t ADTRGDLR1; /*!< (@ 0x000001C4) A/D Conversion Start Trigger Delay Register 1 */ + + struct + { + __IOM uint32_t TRGDLY2 : 8; /*!< [7..0] Scan Group 2 Trigger Input Delay Configuration */ + uint32_t : 8; + __IOM uint32_t TRGDLY3 : 8; /*!< [23..16] Scan Group 3 Trigger Input Delay Configuration */ + uint32_t : 8; + } ADTRGDLR1_b; + }; + + union + { + __IOM uint32_t ADTRGDLR2; /*!< (@ 0x000001C8) A/D Conversion Start Trigger Delay Register 2 */ + + struct + { + __IOM uint32_t TRGDLY4 : 8; /*!< [7..0] Scan Group 4 Trigger Input Delay Configuration */ + uint32_t : 8; + __IOM uint32_t TRGDLY5 : 8; /*!< [23..16] Scan Group 5 Trigger Input Delay Configuration */ + uint32_t : 8; + } ADTRGDLR2_b; + }; + + union + { + __IOM uint32_t ADTRGDLR3; /*!< (@ 0x000001CC) A/D Conversion Start Trigger Delay Register 3 */ + + struct + { + __IOM uint32_t TRGDLY6 : 8; /*!< [7..0] Scan Group 6 Trigger Input Delay Configuration */ + uint32_t : 8; + __IOM uint32_t TRGDLY7 : 8; /*!< [23..16] Scan Group 7 Trigger Input Delay Configuration */ + uint32_t : 8; + } ADTRGDLR3_b; + }; + + union + { + __IOM uint32_t ADTRGDLR4; /*!< (@ 0x000001D0) A/D Conversion Start Trigger Delay Register 4 */ + + struct + { + __IOM uint32_t TRGDLY8 : 8; /*!< [7..0] Scan Group 8 Trigger Input Delay Configuration */ + uint32_t : 24; + } ADTRGDLR4_b; + }; + __IM uint32_t RESERVED13[11]; + + union + { + __IOM uint32_t ADSGDCR0; /*!< (@ 0x00000200) Scan Group Diagnosis Function Control Register + * 0 */ + + struct + { + __IOM uint32_t DIAGVAL : 3; /*!< [2..0] Self-diagnosis Voltage Selection */ + uint32_t : 13; + __IOM uint32_t ADDISEN : 1; /*!< [16..16] Disconnection Detection Assist Enable */ + uint32_t : 3; + __IOM uint32_t ADDISP : 1; /*!< [20..20] Disconnection Detection Assist Mode Selection */ + __IOM uint32_t ADDISN : 1; /*!< [21..21] Disconnection Detection Assist Mode Selection */ + uint32_t : 2; + __IOM uint32_t ADNDIS : 4; /*!< [27..24] Disconnection Detection Assist Period */ + uint32_t : 4; + } ADSGDCR0_b; + }; + + union + { + __IOM uint32_t ADSGDCR1; /*!< (@ 0x00000204) Scan Group Diagnosis Function Control Register + * 1 */ + + struct + { + __IOM uint32_t DIAGVAL : 3; /*!< [2..0] Self-diagnosis Voltage Selection */ + uint32_t : 13; + __IOM uint32_t ADDISEN : 1; /*!< [16..16] Disconnection Detection Assist Enable */ + uint32_t : 3; + __IOM uint32_t ADDISP : 1; /*!< [20..20] Disconnection Detection Assist Mode Selection */ + __IOM uint32_t ADDISN : 1; /*!< [21..21] Disconnection Detection Assist Mode Selection */ + uint32_t : 2; + __IOM uint32_t ADNDIS : 4; /*!< [27..24] Disconnection Detection Assist Period */ + uint32_t : 4; + } ADSGDCR1_b; + }; + + union + { + __IOM uint32_t ADSGDCR2; /*!< (@ 0x00000208) Scan Group Diagnosis Function Control Register + * 2 */ + + struct + { + __IOM uint32_t DIAGVAL : 3; /*!< [2..0] Self-diagnosis Voltage Selection */ + uint32_t : 13; + __IOM uint32_t ADDISEN : 1; /*!< [16..16] Disconnection Detection Assist Enable */ + uint32_t : 3; + __IOM uint32_t ADDISP : 1; /*!< [20..20] Disconnection Detection Assist Mode Selection */ + __IOM uint32_t ADDISN : 1; /*!< [21..21] Disconnection Detection Assist Mode Selection */ + uint32_t : 2; + __IOM uint32_t ADNDIS : 4; /*!< [27..24] Disconnection Detection Assist Period */ + uint32_t : 4; + } ADSGDCR2_b; + }; + + union + { + __IOM uint32_t ADSGDCR3; /*!< (@ 0x0000020C) Scan Group Diagnosis Function Control Register + * 3 */ + + struct + { + __IOM uint32_t DIAGVAL : 3; /*!< [2..0] Self-diagnosis Voltage Selection */ + uint32_t : 13; + __IOM uint32_t ADDISEN : 1; /*!< [16..16] Disconnection Detection Assist Enable */ + uint32_t : 3; + __IOM uint32_t ADDISP : 1; /*!< [20..20] Disconnection Detection Assist Mode Selection */ + __IOM uint32_t ADDISN : 1; /*!< [21..21] Disconnection Detection Assist Mode Selection */ + uint32_t : 2; + __IOM uint32_t ADNDIS : 4; /*!< [27..24] Disconnection Detection Assist Period */ + uint32_t : 4; + } ADSGDCR3_b; + }; + + union + { + __IOM uint32_t ADSGDCR4; /*!< (@ 0x00000210) Scan Group Diagnosis Function Control Register + * 4 */ + + struct + { + __IOM uint32_t DIAGVAL : 3; /*!< [2..0] Self-diagnosis Voltage Selection */ + uint32_t : 13; + __IOM uint32_t ADDISEN : 1; /*!< [16..16] Disconnection Detection Assist Enable */ + uint32_t : 3; + __IOM uint32_t ADDISP : 1; /*!< [20..20] Disconnection Detection Assist Mode Selection */ + __IOM uint32_t ADDISN : 1; /*!< [21..21] Disconnection Detection Assist Mode Selection */ + uint32_t : 2; + __IOM uint32_t ADNDIS : 4; /*!< [27..24] Disconnection Detection Assist Period */ + uint32_t : 4; + } ADSGDCR4_b; + }; + + union + { + __IOM uint32_t ADSGDCR5; /*!< (@ 0x00000214) Scan Group Diagnosis Function Control Register + * 5 */ + + struct + { + __IOM uint32_t DIAGVAL : 3; /*!< [2..0] Self-diagnosis Voltage Selection */ + uint32_t : 13; + __IOM uint32_t ADDISEN : 1; /*!< [16..16] Disconnection Detection Assist Enable */ + uint32_t : 3; + __IOM uint32_t ADDISP : 1; /*!< [20..20] Disconnection Detection Assist Mode Selection */ + __IOM uint32_t ADDISN : 1; /*!< [21..21] Disconnection Detection Assist Mode Selection */ + uint32_t : 2; + __IOM uint32_t ADNDIS : 4; /*!< [27..24] Disconnection Detection Assist Period */ + uint32_t : 4; + } ADSGDCR5_b; + }; + + union + { + __IOM uint32_t ADSGDCR6; /*!< (@ 0x00000218) Scan Group Diagnosis Function Control Register + * 6 */ + + struct + { + __IOM uint32_t DIAGVAL : 3; /*!< [2..0] Self-diagnosis Voltage Selection */ + uint32_t : 13; + __IOM uint32_t ADDISEN : 1; /*!< [16..16] Disconnection Detection Assist Enable */ + uint32_t : 3; + __IOM uint32_t ADDISP : 1; /*!< [20..20] Disconnection Detection Assist Mode Selection */ + __IOM uint32_t ADDISN : 1; /*!< [21..21] Disconnection Detection Assist Mode Selection */ + uint32_t : 2; + __IOM uint32_t ADNDIS : 4; /*!< [27..24] Disconnection Detection Assist Period */ + uint32_t : 4; + } ADSGDCR6_b; + }; + + union + { + __IOM uint32_t ADSGDCR7; /*!< (@ 0x0000021C) Scan Group Diagnosis Function Control Register + * 7 */ + + struct + { + __IOM uint32_t DIAGVAL : 3; /*!< [2..0] Self-diagnosis Voltage Selection */ + uint32_t : 13; + __IOM uint32_t ADDISEN : 1; /*!< [16..16] Disconnection Detection Assist Enable */ + uint32_t : 3; + __IOM uint32_t ADDISP : 1; /*!< [20..20] Disconnection Detection Assist Mode Selection */ + __IOM uint32_t ADDISN : 1; /*!< [21..21] Disconnection Detection Assist Mode Selection */ + uint32_t : 2; + __IOM uint32_t ADNDIS : 4; /*!< [27..24] Disconnection Detection Assist Period */ + uint32_t : 4; + } ADSGDCR7_b; + }; + + union + { + __IOM uint32_t ADSGDCR8; /*!< (@ 0x00000220) Scan Group Diagnosis Function Control Register + * 8 */ + + struct + { + __IOM uint32_t DIAGVAL : 3; /*!< [2..0] Self-diagnosis Voltage Selection */ + uint32_t : 13; + __IOM uint32_t ADDISEN : 1; /*!< [16..16] Disconnection Detection Assist Enable */ + uint32_t : 3; + __IOM uint32_t ADDISP : 1; /*!< [20..20] Disconnection Detection Assist Mode Selection */ + __IOM uint32_t ADDISN : 1; /*!< [21..21] Disconnection Detection Assist Mode Selection */ + uint32_t : 2; + __IOM uint32_t ADNDIS : 4; /*!< [27..24] Disconnection Detection Assist Period */ + uint32_t : 4; + } ADSGDCR8_b; + }; + __IM uint32_t RESERVED14[7]; + + union + { + __IOM uint32_t ADSSTR0; /*!< (@ 0x00000240) Sampling State Table Register 0 */ + + struct + { + __IOM uint32_t SST0 : 10; /*!< [9..0] Sampling State Table 0 */ + uint32_t : 6; + __IOM uint32_t SST1 : 10; /*!< [25..16] Sampling State Table 1 */ + uint32_t : 6; + } ADSSTR0_b; + }; + + union + { + __IOM uint32_t ADSSTR1; /*!< (@ 0x00000244) Sampling State Table Register 1 */ + + struct + { + __IOM uint32_t SST2 : 10; /*!< [9..0] Sampling State Table 2 */ + uint32_t : 6; + __IOM uint32_t SST3 : 10; /*!< [25..16] Sampling State Table 3 */ + uint32_t : 6; + } ADSSTR1_b; + }; + + union + { + __IOM uint32_t ADSSTR2; /*!< (@ 0x00000248) Sampling State Table Register 2 */ + + struct + { + __IOM uint32_t SST4 : 10; /*!< [9..0] Sampling State Table 4 */ + uint32_t : 6; + __IOM uint32_t SST5 : 10; /*!< [25..16] Sampling State Table 5 */ + uint32_t : 6; + } ADSSTR2_b; + }; + + union + { + __IOM uint32_t ADSSTR3; /*!< (@ 0x0000024C) Sampling State Table Register 3 */ + + struct + { + __IOM uint32_t SST6 : 10; /*!< [9..0] Sampling State Table 6 */ + uint32_t : 6; + __IOM uint32_t SST7 : 10; /*!< [25..16] Sampling State Table 7 */ + uint32_t : 6; + } ADSSTR3_b; + }; + + union + { + __IOM uint32_t ADSSTR4; /*!< (@ 0x00000250) Sampling State Table Register 4 */ + + struct + { + __IOM uint32_t SST8 : 10; /*!< [9..0] Sampling State Table 8 */ + uint32_t : 6; + __IOM uint32_t SST9 : 10; /*!< [25..16] Sampling State Table 9 */ + uint32_t : 6; + } ADSSTR4_b; + }; + + union + { + __IOM uint32_t ADSSTR5; /*!< (@ 0x00000254) Sampling State Table Register 5 */ + + struct + { + __IOM uint32_t SST10 : 10; /*!< [9..0] Sampling State Table 10 */ + uint32_t : 6; + __IOM uint32_t SST11 : 10; /*!< [25..16] Sampling State Table 11 */ + uint32_t : 6; + } ADSSTR5_b; + }; + + union + { + __IOM uint32_t ADSSTR6; /*!< (@ 0x00000258) Sampling State Table Register 6 */ + + struct + { + __IOM uint32_t SST12 : 10; /*!< [9..0] Sampling State Table 12 */ + uint32_t : 6; + __IOM uint32_t SST13 : 10; /*!< [25..16] Sampling State Table 13 */ + uint32_t : 6; + } ADSSTR6_b; + }; + + union + { + __IOM uint32_t ADSSTR7; /*!< (@ 0x0000025C) Sampling State Table Register 7 */ + + struct + { + __IOM uint32_t SST14 : 10; /*!< [9..0] Sampling State Table 14 */ + uint32_t : 6; + __IOM uint32_t SST15 : 10; /*!< [25..16] Sampling State Table 15 */ + uint32_t : 6; + } ADSSTR7_b; + }; + + union + { + __IOM uint32_t ADCNVSTR; /*!< (@ 0x00000260) A/D Conversion State Register */ + + struct + { + __IOM uint32_t CST0 : 6; /*!< [5..0] A/D Converter Unit 0 (ADC0) */ + uint32_t : 2; + __IOM uint32_t CST1 : 6; /*!< [13..8] A/D Converter Unit 1 (ADC1) */ + uint32_t : 18; + } ADCNVSTR_b; + }; + + union + { + __IOM uint32_t ADCALSTCR; /*!< (@ 0x00000264) A/D Converter Calibration State Register */ + + struct + { + __IOM uint32_t CALADSST : 10; /*!< [9..0] A/D Converter Calibration Sampling Time Configuration */ + uint32_t : 6; + __IOM uint32_t CALADCST : 6; /*!< [21..16] A/D Converter Calibration Conversion Time Configuration. */ + uint32_t : 10; + } ADCALSTCR_b; + }; + __IM uint32_t RESERVED15[6]; + + union + { + __IOM uint32_t ADSHCR0; /*!< (@ 0x00000280) Channel-Dedicated Sample-and-Hold Circuit Control + * Register 0 */ + + struct + { + __IOM uint32_t SHEN0 : 1; /*!< [0..0] Channel-Dedicated Sample-and-Hold Circuit Unit 0 Select */ + __IOM uint32_t SHEN1 : 1; /*!< [1..1] Channel-Dedicated Sample-and-Hold Circuit Unit 1 Select */ + __IOM uint32_t SHEN2 : 1; /*!< [2..2] Channel-Dedicated Sample-and-Hold Circuit Unit 2 Select */ + uint32_t : 29; + } ADSHCR0_b; + }; + __IM uint32_t RESERVED16; + + union + { + __IOM uint32_t ADSHSTR0; /*!< (@ 0x00000288) Channel-Dedicated Sample & Hold Circuit State + * Register 0 */ + + struct + { + __IOM uint32_t SHSST : 8; /*!< [7..0] Channel-Dedicated Sample-and-Hold Circuit Unit 0 to 2 */ + uint32_t : 8; + __IOM uint32_t SHHST : 3; /*!< [18..16] Channel-Dedicated Sample-and-Hold Circuit Unit 0 to + * 2 */ + uint32_t : 13; + } ADSHSTR0_b; + }; + + union + { + __IOM uint32_t ADSHCR1; /*!< (@ 0x0000028C) Channel-Dedicated Sample-and-Hold Circuit Control + * Register 1 */ + + struct + { + __IOM uint32_t SHEN4 : 1; /*!< [0..0] Channel-Dedicated Sample-and-Hold Circuit Unit 4 Select */ + __IOM uint32_t SHEN5 : 1; /*!< [1..1] Channel-Dedicated Sample-and-Hold Circuit Unit 5 Select */ + __IOM uint32_t SHEN6 : 1; /*!< [2..2] Channel-Dedicated Sample-and-Hold Circuit Unit 6 Select */ + uint32_t : 29; + } ADSHCR1_b; + }; + __IM uint32_t RESERVED17; + + union + { + __IOM uint32_t ADSHSTR1; /*!< (@ 0x00000294) Channel-Dedicated Sample & Hold Circuit State + * Register 1 */ + + struct + { + __IOM uint32_t SHSST : 8; /*!< [7..0] Channel-Dedicated Sample-and-Hold Circuit Unit 4 to 6 */ + uint32_t : 8; + __IOM uint32_t SHHST : 3; /*!< [18..16] Channel-Dedicated Sample-and-Hold Circuit Unit 4 to + * 6 */ + uint32_t : 13; + } ADSHSTR1_b; + }; + __IM uint32_t RESERVED18[6]; + + union + { + __IOM uint32_t ADCALSHCR; /*!< (@ 0x000002B0) Channel-Dedicated Sample & Hold Circuit Calibration + * State Register */ + + struct + { + __IOM uint32_t CALSHSST : 8; /*!< [7..0] Channel-Dedicated Sample & Hold Circuit Calibration Sampling + * Time Configuration */ + uint32_t : 8; + __IOM uint32_t CALSHHST : 3; /*!< [18..16] Channel-Dedicated Sample & Hold Circuit Calibration + * Holding Time Configuration */ + uint32_t : 13; + } ADCALSHCR_b; + }; + __IM uint32_t RESERVED19[3]; + + union + { + __IOM uint32_t ADPGACR[4]; /*!< (@ 0x000002C0) Programmable Gain Amplifier Control Register + * [0..3] */ + + struct + { + uint32_t : 1; + __IOM uint32_t PGADEN : 1; /*!< [1..1] PGA Unit n Input Mode Select */ + __IOM uint32_t PGASEL1 : 1; /*!< [2..2] PGA Unit n Transit Enable */ + __IOM uint32_t PGAENAMP : 1; /*!< [3..3] PGA Unit n Enable */ + uint32_t : 12; + __IOM uint32_t PGAGEN : 1; /*!< [16..16] PGA Unit n Gain Setting Enable */ + uint32_t : 3; + __IOM uint32_t PGADG : 2; /*!< [21..20] PGA Unit n Differential Input Gain Setting */ + uint32_t : 2; + __IOM uint32_t PGAGAIN : 4; /*!< [27..24] PGA Unit n Gain Setting */ + uint32_t : 4; + } ADPGACR_b[4]; + }; + __IM uint32_t RESERVED20[12]; + + union + { + __IOM uint32_t ADPGAMONCR; /*!< (@ 0x00000300) Programable Gain Amp Monitor Output Control Register */ + + struct + { + __IOM uint32_t PGAMON : 3; /*!< [2..0] PGA Monitor Signal Selection */ + uint32_t : 13; + __IOM uint32_t MONSEL0 : 1; /*!< [16..16] PGA Unit 0 Monitor Output Enable */ + __IOM uint32_t MONSEL1 : 1; /*!< [17..17] PGA Unit 1 Monitor Output Enable */ + __IOM uint32_t MONSEL2 : 1; /*!< [18..18] PGA Unit 2 Monitor Output Enable */ + __IOM uint32_t MONSEL3 : 1; /*!< [19..19] PGA Unit 3 Monitor Output Enable */ + uint32_t : 12; + } ADPGAMONCR_b; + }; + __IM uint32_t RESERVED21[7]; + + union + { + __IOM uint32_t ADREFCR; /*!< (@ 0x00000320) Internal Reference Voltage Monitor Enable Register */ + + struct + { + __IOM uint32_t VDE : 1; /*!< [0..0] Internal Reference Voltage A/D Conversion Select */ + uint32_t : 31; + } ADREFCR_b; + }; + __IM uint32_t RESERVED22[15]; + + union + { + __IOM uint32_t ADUOFTR0; /*!< (@ 0x00000360) User Offset Table Register 0 */ + + struct + { + __IOM uint32_t UOFSET : 16; /*!< [15..0] User Offset Table n */ + uint32_t : 16; + } ADUOFTR0_b; + }; + + union + { + __IOM uint32_t ADUOFTR1; /*!< (@ 0x00000364) User Offset Table Register 1 */ + + struct + { + __IOM uint32_t UOFSET : 16; /*!< [15..0] User Offset Table n */ + uint32_t : 16; + } ADUOFTR1_b; + }; + + union + { + __IOM uint32_t ADUOFTR2; /*!< (@ 0x00000368) User Offset Table Register 2 */ + + struct + { + __IOM uint32_t UOFSET : 16; /*!< [15..0] User Offset Table n */ + uint32_t : 16; + } ADUOFTR2_b; + }; + + union + { + __IOM uint32_t ADUOFTR3; /*!< (@ 0x0000036C) User Offset Table Register 3 */ + + struct + { + __IOM uint32_t UOFSET : 16; /*!< [15..0] User Offset Table n */ + uint32_t : 16; + } ADUOFTR3_b; + }; + + union + { + __IOM uint32_t ADUOFTR4; /*!< (@ 0x00000370) User Offset Table Register 4 */ + + struct + { + __IOM uint32_t UOFSET : 16; /*!< [15..0] User Offset Table n */ + uint32_t : 16; + } ADUOFTR4_b; + }; + + union + { + __IOM uint32_t ADUOFTR5; /*!< (@ 0x00000374) User Offset Table Register 5 */ + + struct + { + __IOM uint32_t UOFSET : 16; /*!< [15..0] User Offset Table n */ + uint32_t : 16; + } ADUOFTR5_b; + }; + + union + { + __IOM uint32_t ADUOFTR6; /*!< (@ 0x00000378) User Offset Table Register 6 */ + + struct + { + __IOM uint32_t UOFSET : 16; /*!< [15..0] User Offset Table n */ + uint32_t : 16; + } ADUOFTR6_b; + }; + + union + { + __IOM uint32_t ADUOFTR7; /*!< (@ 0x0000037C) User Offset Table Register 7 */ + + struct + { + __IOM uint32_t UOFSET : 16; /*!< [15..0] User Offset Table n */ + uint32_t : 16; + } ADUOFTR7_b; + }; + + union + { + __IOM uint32_t ADUGTR0; /*!< (@ 0x00000380) User Gain Table Register 0 */ + + struct + { + __IOM uint32_t UGAIN : 24; /*!< [23..0] User Gain Table n */ + uint32_t : 8; + } ADUGTR0_b; + }; + + union + { + __IOM uint32_t ADUGTR1; /*!< (@ 0x00000384) User Gain Table Register 1 */ + + struct + { + __IOM uint32_t UGAIN : 24; /*!< [23..0] User Gain Table n */ + uint32_t : 8; + } ADUGTR1_b; + }; + + union + { + __IOM uint32_t ADUGTR2; /*!< (@ 0x00000388) User Gain Table Register 2 */ + + struct + { + __IOM uint32_t UGAIN : 24; /*!< [23..0] User Gain Table n */ + uint32_t : 8; + } ADUGTR2_b; + }; + + union + { + __IOM uint32_t ADUGTR3; /*!< (@ 0x0000038C) User Gain Table Register 3 */ + + struct + { + __IOM uint32_t UGAIN : 24; /*!< [23..0] User Gain Table n */ + uint32_t : 8; + } ADUGTR3_b; + }; + + union + { + __IOM uint32_t ADUGTR4; /*!< (@ 0x00000390) User Gain Table Register 4 */ + + struct + { + __IOM uint32_t UGAIN : 24; /*!< [23..0] User Gain Table n */ + uint32_t : 8; + } ADUGTR4_b; + }; + + union + { + __IOM uint32_t ADUGTR5; /*!< (@ 0x00000394) User Gain Table Register 5 */ + + struct + { + __IOM uint32_t UGAIN : 24; /*!< [23..0] User Gain Table n */ + uint32_t : 8; + } ADUGTR5_b; + }; + + union + { + __IOM uint32_t ADUGTR6; /*!< (@ 0x00000398) User Gain Table Register 6 */ + + struct + { + __IOM uint32_t UGAIN : 24; /*!< [23..0] User Gain Table n */ + uint32_t : 8; + } ADUGTR6_b; + }; + + union + { + __IOM uint32_t ADUGTR7; /*!< (@ 0x0000039C) User Gain Table Register 7 */ + + struct + { + __IOM uint32_t UGAIN : 24; /*!< [23..0] User Gain Table n */ + uint32_t : 8; + } ADUGTR7_b; + }; + + union + { + __IOM uint32_t ADLIMINTCR; /*!< (@ 0x000003A0) Limiter Clip Interrupt Enable Register */ + + struct + { + __IOM uint32_t LIMIEn : 9; /*!< [8..0] Limiter Clip Interrupt n Enable bit */ + uint32_t : 23; + } ADLIMINTCR_b; + }; + + union + { + __IOM uint32_t ADLIMTR0; /*!< (@ 0x000003A4) Limiter Clip Table Register 0 */ + + struct + { + __IOM uint32_t LIML : 16; /*!< [15..0] Limiter clip table n : Lower-side limit value */ + __IOM uint32_t LIMU : 16; /*!< [31..16] Limiter clip table n : Upper-side limit value */ + } ADLIMTR0_b; + }; + + union + { + __IOM uint32_t ADLIMTR1; /*!< (@ 0x000003A8) Limiter Clip Table Register 1 */ + + struct + { + __IOM uint32_t LIML : 16; /*!< [15..0] Limiter clip table n : Lower-side limit value */ + __IOM uint32_t LIMU : 16; /*!< [31..16] Limiter clip table n : Upper-side limit value */ + } ADLIMTR1_b; + }; + + union + { + __IOM uint32_t ADLIMTR2; /*!< (@ 0x000003AC) Limiter Clip Table Register 2 */ + + struct + { + __IOM uint32_t LIML : 16; /*!< [15..0] Limiter clip table n : Lower-side limit value */ + __IOM uint32_t LIMU : 16; /*!< [31..16] Limiter clip table n : Upper-side limit value */ + } ADLIMTR2_b; + }; + + union + { + __IOM uint32_t ADLIMTR3; /*!< (@ 0x000003B0) Limiter Clip Table Register 3 */ + + struct + { + __IOM uint32_t LIML : 16; /*!< [15..0] Limiter clip table n : Lower-side limit value */ + __IOM uint32_t LIMU : 16; /*!< [31..16] Limiter clip table n : Upper-side limit value */ + } ADLIMTR3_b; + }; + + union + { + __IOM uint32_t ADLIMTR4; /*!< (@ 0x000003B4) Limiter Clip Table Register 4 */ + + struct + { + __IOM uint32_t LIML : 16; /*!< [15..0] Limiter clip table n : Lower-side limit value */ + __IOM uint32_t LIMU : 16; /*!< [31..16] Limiter clip table n : Upper-side limit value */ + } ADLIMTR4_b; + }; + + union + { + __IOM uint32_t ADLIMTR5; /*!< (@ 0x000003B8) Limiter Clip Table Register 5 */ + + struct + { + __IOM uint32_t LIML : 16; /*!< [15..0] Limiter clip table n : Lower-side limit value */ + __IOM uint32_t LIMU : 16; /*!< [31..16] Limiter clip table n : Upper-side limit value */ + } ADLIMTR5_b; + }; + + union + { + __IOM uint32_t ADLIMTR6; /*!< (@ 0x000003BC) Limiter Clip Table Register 6 */ + + struct + { + __IOM uint32_t LIML : 16; /*!< [15..0] Limiter clip table n : Lower-side limit value */ + __IOM uint32_t LIMU : 16; /*!< [31..16] Limiter clip table n : Upper-side limit value */ + } ADLIMTR6_b; + }; + + union + { + __IOM uint32_t ADLIMTR7; /*!< (@ 0x000003C0) Limiter Clip Table Register 7 */ + + struct + { + __IOM uint32_t LIML : 16; /*!< [15..0] Limiter clip table n : Lower-side limit value */ + __IOM uint32_t LIMU : 16; /*!< [31..16] Limiter clip table n : Upper-side limit value */ + } ADLIMTR7_b; + }; + __IM uint32_t RESERVED23[15]; + + union + { + __IOM uint32_t ADCMPENR; /*!< (@ 0x00000400) Compare Match Enable Register */ + + struct + { + __IOM uint32_t CMPENn : 8; /*!< [7..0] Compare Match n Enable */ + uint32_t : 24; + } ADCMPENR_b; + }; + + union + { + __IOM uint32_t ADCMPINTCR; /*!< (@ 0x00000404) Compare Match Interrupt Enable Register */ + + struct + { + __IOM uint32_t CMPIEn : 4; /*!< [3..0] Compare Match Interrupt n Enable */ + uint32_t : 28; + } ADCMPINTCR_b; + }; + + union + { + __IOM uint32_t ADCCMPCR0; /*!< (@ 0x00000408) Composite Compare Match Configuration Register + * 0 */ + + struct + { + __IOM uint32_t CCMPCND : 2; /*!< [1..0] Composite Compare Match Condition Selection */ + uint32_t : 14; + __IOM uint32_t CCMPTBLm : 8; /*!< [23..16] Composite Compare Match Condition Table Selection */ + uint32_t : 8; + } ADCCMPCR0_b; + }; + + union + { + __IOM uint32_t ADCCMPCR1; /*!< (@ 0x0000040C) Composite Compare Match Configuration Register + * 1 */ + + struct + { + __IOM uint32_t CCMPCND : 2; /*!< [1..0] Composite Compare Match Condition Selection */ + uint32_t : 14; + __IOM uint32_t CCMPTBLm : 8; /*!< [23..16] Composite Compare Match Condition Table Selection */ + uint32_t : 8; + } ADCCMPCR1_b; + }; + __IM uint32_t RESERVED24[14]; + + union + { + __IOM uint32_t ADCMPMDR0; /*!< (@ 0x00000448) Compare Match Mode Selection Register 0 */ + + struct + { + __IOM uint32_t CMPMD0 : 2; /*!< [1..0] Compare Match 0 : Match Mode Selection */ + uint32_t : 6; + __IOM uint32_t CMPMD1 : 2; /*!< [9..8] Compare Match 1 : Match Mode Selection */ + uint32_t : 6; + __IOM uint32_t CMPMD2 : 2; /*!< [17..16] Compare Match 2 : Match Mode Selection */ + uint32_t : 6; + __IOM uint32_t CMPMD3 : 2; /*!< [25..24] Compare Match 3 : Match Mode Selection */ + uint32_t : 6; + } ADCMPMDR0_b; + }; + + union + { + __IOM uint32_t ADCMPMDR1; /*!< (@ 0x0000044C) Compare Match Mode Selection Register 1 */ + + struct + { + __IOM uint32_t CMPMD4 : 2; /*!< [1..0] Compare Match 4 : Match Mode Selection */ + uint32_t : 6; + __IOM uint32_t CMPMD5 : 2; /*!< [9..8] Compare Match 5 : Match Mode Selection */ + uint32_t : 6; + __IOM uint32_t CMPMD6 : 2; /*!< [17..16] Compare Match 6 : Match Mode Selection */ + uint32_t : 6; + __IOM uint32_t CMPMD7 : 2; /*!< [25..24] Compare Match 7 : Match Mode Selection */ + uint32_t : 6; + } ADCMPMDR1_b; + }; + __IM uint32_t RESERVED25[2]; + + union + { + __IOM uint32_t ADCMPTBR0; /*!< (@ 0x00000458) Compare Match Table Register 0 */ + + struct + { + __IOM uint32_t CMPTBL : 16; /*!< [15..0] Compare Match Table n : Low-side level */ + __IOM uint32_t CMPTBH : 16; /*!< [31..16] Compare Match Table n : High-side level */ + } ADCMPTBR0_b; + }; + + union + { + __IOM uint32_t ADCMPTBR1; /*!< (@ 0x0000045C) Compare Match Table Register 1 */ + + struct + { + __IOM uint32_t CMPTBL : 16; /*!< [15..0] Compare Match Table n : Low-side level */ + __IOM uint32_t CMPTBH : 16; /*!< [31..16] Compare Match Table n : High-side level */ + } ADCMPTBR1_b; + }; + + union + { + __IOM uint32_t ADCMPTBR2; /*!< (@ 0x00000460) Compare Match Table Register 2 */ + + struct + { + __IOM uint32_t CMPTBL : 16; /*!< [15..0] Compare Match Table n : Low-side level */ + __IOM uint32_t CMPTBH : 16; /*!< [31..16] Compare Match Table n : High-side level */ + } ADCMPTBR2_b; + }; + + union + { + __IOM uint32_t ADCMPTBR3; /*!< (@ 0x00000464) Compare Match Table Register 3 */ + + struct + { + __IOM uint32_t CMPTBL : 16; /*!< [15..0] Compare Match Table n : Low-side level */ + __IOM uint32_t CMPTBH : 16; /*!< [31..16] Compare Match Table n : High-side level */ + } ADCMPTBR3_b; + }; + + union + { + __IOM uint32_t ADCMPTBR4; /*!< (@ 0x00000468) Compare Match Table Register 4 */ + + struct + { + __IOM uint32_t CMPTBL : 16; /*!< [15..0] Compare Match Table n : Low-side level */ + __IOM uint32_t CMPTBH : 16; /*!< [31..16] Compare Match Table n : High-side level */ + } ADCMPTBR4_b; + }; + + union + { + __IOM uint32_t ADCMPTBR5; /*!< (@ 0x0000046C) Compare Match Table Register 5 */ + + struct + { + __IOM uint32_t CMPTBL : 16; /*!< [15..0] Compare Match Table n : Low-side level */ + __IOM uint32_t CMPTBH : 16; /*!< [31..16] Compare Match Table n : High-side level */ + } ADCMPTBR5_b; + }; + + union + { + __IOM uint32_t ADCMPTBR6; /*!< (@ 0x00000470) Compare Match Table Register 6 */ + + struct + { + __IOM uint32_t CMPTBL : 16; /*!< [15..0] Compare Match Table n : Low-side level */ + __IOM uint32_t CMPTBH : 16; /*!< [31..16] Compare Match Table n : High-side level */ + } ADCMPTBR6_b; + }; + + union + { + __IOM uint32_t ADCMPTBR7; /*!< (@ 0x00000474) Compare Match Table Register 7 */ + + struct + { + __IOM uint32_t CMPTBL : 16; /*!< [15..0] Compare Match Table n : Low-side level */ + __IOM uint32_t CMPTBH : 16; /*!< [31..16] Compare Match Table n : High-side level */ + } ADCMPTBR7_b; + }; + __IM uint32_t RESERVED26[18]; + + union + { + __IOM uint32_t ADFIFOCR; /*!< (@ 0x000004C0) FIFO Control Register */ + + struct + { + __IOM uint32_t FIFOEN0 : 1; /*!< [0..0] Scan Group 0 FIFO Enable */ + __IOM uint32_t FIFOEN1 : 1; /*!< [1..1] Scan Group 1 FIFO Enable */ + __IOM uint32_t FIFOEN2 : 1; /*!< [2..2] Scan Group 2 FIFO Enable */ + __IOM uint32_t FIFOEN3 : 1; /*!< [3..3] Scan Group 3 FIFO Enable */ + __IOM uint32_t FIFOEN4 : 1; /*!< [4..4] Scan Group 4 FIFO Enable */ + __IOM uint32_t FIFOEN5 : 1; /*!< [5..5] Scan Group 5 FIFO Enable */ + __IOM uint32_t FIFOEN6 : 1; /*!< [6..6] Scan Group 6 FIFO Enable */ + __IOM uint32_t FIFOEN7 : 1; /*!< [7..7] Scan Group 7 FIFO Enable */ + __IOM uint32_t FIFOEN8 : 1; /*!< [8..8] Scan Group 8 FIFO Enable */ + uint32_t : 23; + } ADFIFOCR_b; + }; + + union + { + __IOM uint32_t ADFIFOINTCR; /*!< (@ 0x000004C4) FIFO Interrupt Control Register */ + + struct + { + __IOM uint32_t FIFOIE0 : 1; /*!< [0..0] Scan Group 0 FIFO Interrupt Enable */ + __IOM uint32_t FIFOIE1 : 1; /*!< [1..1] Scan Group 1 FIFO Interrupt Enable */ + __IOM uint32_t FIFOIE2 : 1; /*!< [2..2] Scan Group 2 FIFO Interrupt Enable */ + __IOM uint32_t FIFOIE3 : 1; /*!< [3..3] Scan Group 3 FIFO Interrupt Enable */ + __IOM uint32_t FIFOIE4 : 1; /*!< [4..4] Scan Group 4 FIFO Interrupt Enable */ + __IOM uint32_t FIFOIE5 : 1; /*!< [5..5] Scan Group 5 FIFO Interrupt Enable */ + __IOM uint32_t FIFOIE6 : 1; /*!< [6..6] Scan Group 6 FIFO Interrupt Enable */ + __IOM uint32_t FIFOIE7 : 1; /*!< [7..7] Scan Group 7 FIFO Interrupt Enable */ + __IOM uint32_t FIFOIE8 : 1; /*!< [8..8] Scan Group 8 FIFO Interrupt Enable */ + uint32_t : 23; + } ADFIFOINTCR_b; + }; + + union + { + __IOM uint32_t ADFIFOINTLR0; /*!< (@ 0x000004C8) FIFO Interrupt Generation Level Register 0 */ + + struct + { + __IOM uint32_t FIFOILV0 : 4; /*!< [3..0] Scan Group 0 FIFO Interrupt Output Timing Setting */ + uint32_t : 12; + __IOM uint32_t FIFOILV1 : 4; /*!< [19..16] Scan Group 1 FIFO Interrupt Output Timing Setting */ + uint32_t : 12; + } ADFIFOINTLR0_b; + }; + + union + { + __IOM uint32_t ADFIFOINTLR1; /*!< (@ 0x000004CC) FIFO Interrupt Generation Level Register 1 */ + + struct + { + __IOM uint32_t FIFOILV2 : 4; /*!< [3..0] Scan Group 2 FIFO Interrupt Output Timing Setting */ + uint32_t : 12; + __IOM uint32_t FIFOILV3 : 4; /*!< [19..16] Scan Group 3 FIFO Interrupt Output Timing Setting */ + uint32_t : 12; + } ADFIFOINTLR1_b; + }; + + union + { + __IOM uint32_t ADFIFOINTLR2; /*!< (@ 0x000004D0) FIFO Interrupt Generation Level Register 2 */ + + struct + { + __IOM uint32_t FIFOILV4 : 4; /*!< [3..0] Scan Group 4 FIFO Interrupt Output Timing Setting */ + uint32_t : 12; + __IOM uint32_t FIFOILV5 : 4; /*!< [19..16] Scan Group 5 FIFO Interrupt Output Timing Setting */ + uint32_t : 12; + } ADFIFOINTLR2_b; + }; + + union + { + __IOM uint32_t ADFIFOINTLR3; /*!< (@ 0x000004D4) FIFO Interrupt Generation Level Register 3 */ + + struct + { + __IOM uint32_t FIFOILV6 : 4; /*!< [3..0] Scan Group 6 FIFO Interrupt Output Timing Setting */ + uint32_t : 12; + __IOM uint32_t FIFOILV7 : 4; /*!< [19..16] Scan Group 7 FIFO Interrupt Output Timing Setting */ + uint32_t : 12; + } ADFIFOINTLR3_b; + }; + + union + { + __IOM uint32_t ADFIFOINTLR4; /*!< (@ 0x000004D8) FIFO Interrupt Generation Level Register 4 */ + + struct + { + __IOM uint32_t FIFOILV8 : 4; /*!< [3..0] Scan Group 8 FIFO Interrupt Output Timing Setting */ + uint32_t : 28; + } ADFIFOINTLR4_b; + }; + __IM uint32_t RESERVED27[73]; + + union + { + __IOM uint32_t ADCHCR0; /*!< (@ 0x00000600) A/D Conversion Channel Configuration Register + * 0 */ + + struct + { + __IOM uint32_t SGSEL : 5; /*!< [4..0] Scan Group Selection */ + uint32_t : 3; + __IOM uint32_t CNVCS : 7; /*!< [14..8] A/D Conversion Channel Selection */ + __IOM uint32_t AINMD : 1; /*!< [15..15] Analog Input mode selection */ + __IOM uint32_t SSTSEL : 4; /*!< [19..16] Sampling State Table Selection */ + uint32_t : 12; + } ADCHCR0_b; + }; + + union + { + __IOM uint32_t ADDOPCRA0; /*!< (@ 0x00000604) A/D Conversion Data Operation Control A Register + * 0 */ + + struct + { + uint32_t : 16; + __IOM uint32_t GAINSEL : 4; /*!< [19..16] User Gain Table Selection */ + uint32_t : 4; + __IOM uint32_t OFSETSEL : 4; /*!< [27..24] User Offset Table Selection */ + uint32_t : 4; + } ADDOPCRA0_b; + }; + + union + { + __IOM uint32_t ADDOPCRB0; /*!< (@ 0x00000608) A/D Conversion Data Operation Control B Register + * 0 */ + + struct + { + __IOM uint32_t AVEMD : 2; /*!< [1..0] Addition/Averaging Mode Selection */ + uint32_t : 6; + __IOM uint32_t ADC : 4; /*!< [11..8] Addition/Averaging Times Selection */ + uint32_t : 4; + __IOM uint32_t CMPTBLEm : 8; /*!< [23..16] Compare Match Enable */ + uint32_t : 8; + } ADDOPCRB0_b; + }; + + union + { + __IOM uint32_t ADDOPCRC0; /*!< (@ 0x0000060C) A/D Conversion Data Operation Control C Register + * 0 */ + + struct + { + __IOM uint32_t LIMTBLS : 4; /*!< [3..0] Limiter Clip Table Selection */ + uint32_t : 12; + __IOM uint32_t ADPRC : 2; /*!< [17..16] A/D Conversion Data Format Selection */ + uint32_t : 2; + __IOM uint32_t SIGNSEL : 1; /*!< [20..20] TBD */ + uint32_t : 11; + } ADDOPCRC0_b; + }; + + union + { + __IOM uint32_t ADCHCR1; /*!< (@ 0x00000610) A/D Conversion Channel Configuration Register + * 1 */ + + struct + { + __IOM uint32_t SGSEL : 5; /*!< [4..0] Scan Group Selection */ + uint32_t : 3; + __IOM uint32_t CNVCS : 7; /*!< [14..8] A/D Conversion Channel Selection */ + __IOM uint32_t AINMD : 1; /*!< [15..15] Analog Input mode selection */ + __IOM uint32_t SSTSEL : 4; /*!< [19..16] Sampling State Table Selection */ + uint32_t : 12; + } ADCHCR1_b; + }; + + union + { + __IOM uint32_t ADDOPCRA1; /*!< (@ 0x00000614) A/D Conversion Data Operation Control A Register + * 1 */ + + struct + { + uint32_t : 16; + __IOM uint32_t GAINSEL : 4; /*!< [19..16] User Gain Table Selection */ + uint32_t : 4; + __IOM uint32_t OFSETSEL : 4; /*!< [27..24] User Offset Table Selection */ + uint32_t : 4; + } ADDOPCRA1_b; + }; + + union + { + __IOM uint32_t ADDOPCRB1; /*!< (@ 0x00000618) A/D Conversion Data Operation Control B Register + * 1 */ + + struct + { + __IOM uint32_t AVEMD : 2; /*!< [1..0] Addition/Averaging Mode Selection */ + uint32_t : 6; + __IOM uint32_t ADC : 4; /*!< [11..8] Addition/Averaging Times Selection */ + uint32_t : 4; + __IOM uint32_t CMPTBLEm : 8; /*!< [23..16] Compare Match Enable */ + uint32_t : 8; + } ADDOPCRB1_b; + }; + + union + { + __IOM uint32_t ADDOPCRC1; /*!< (@ 0x0000061C) A/D Conversion Data Operation Control C Register + * 1 */ + + struct + { + __IOM uint32_t LIMTBLS : 4; /*!< [3..0] Limiter Clip Table Selection */ + uint32_t : 12; + __IOM uint32_t ADPRC : 2; /*!< [17..16] A/D Conversion Data Format Selection */ + uint32_t : 2; + __IOM uint32_t SIGNSEL : 1; /*!< [20..20] TBD */ + uint32_t : 11; + } ADDOPCRC1_b; + }; + + union + { + __IOM uint32_t ADCHCR2; /*!< (@ 0x00000620) A/D Conversion Channel Configuration Register + * 2 */ + + struct + { + __IOM uint32_t SGSEL : 5; /*!< [4..0] Scan Group Selection */ + uint32_t : 3; + __IOM uint32_t CNVCS : 7; /*!< [14..8] A/D Conversion Channel Selection */ + __IOM uint32_t AINMD : 1; /*!< [15..15] Analog Input mode selection */ + __IOM uint32_t SSTSEL : 4; /*!< [19..16] Sampling State Table Selection */ + uint32_t : 12; + } ADCHCR2_b; + }; + + union + { + __IOM uint32_t ADDOPCRA2; /*!< (@ 0x00000624) A/D Conversion Data Operation Control A Register + * 2 */ + + struct + { + uint32_t : 16; + __IOM uint32_t GAINSEL : 4; /*!< [19..16] User Gain Table Selection */ + uint32_t : 4; + __IOM uint32_t OFSETSEL : 4; /*!< [27..24] User Offset Table Selection */ + uint32_t : 4; + } ADDOPCRA2_b; + }; + + union + { + __IOM uint32_t ADDOPCRB2; /*!< (@ 0x00000628) A/D Conversion Data Operation Control B Register + * 2 */ + + struct + { + __IOM uint32_t AVEMD : 2; /*!< [1..0] Addition/Averaging Mode Selection */ + uint32_t : 6; + __IOM uint32_t ADC : 4; /*!< [11..8] Addition/Averaging Times Selection */ + uint32_t : 4; + __IOM uint32_t CMPTBLEm : 8; /*!< [23..16] Compare Match Enable */ + uint32_t : 8; + } ADDOPCRB2_b; + }; + + union + { + __IOM uint32_t ADDOPCRC2; /*!< (@ 0x0000062C) A/D Conversion Data Operation Control C Register + * 2 */ + + struct + { + __IOM uint32_t LIMTBLS : 4; /*!< [3..0] Limiter Clip Table Selection */ + uint32_t : 12; + __IOM uint32_t ADPRC : 2; /*!< [17..16] A/D Conversion Data Format Selection */ + uint32_t : 2; + __IOM uint32_t SIGNSEL : 1; /*!< [20..20] TBD */ + uint32_t : 11; + } ADDOPCRC2_b; + }; + + union + { + __IOM uint32_t ADCHCR3; /*!< (@ 0x00000630) A/D Conversion Channel Configuration Register + * 3 */ + + struct + { + __IOM uint32_t SGSEL : 5; /*!< [4..0] Scan Group Selection */ + uint32_t : 3; + __IOM uint32_t CNVCS : 7; /*!< [14..8] A/D Conversion Channel Selection */ + __IOM uint32_t AINMD : 1; /*!< [15..15] Analog Input mode selection */ + __IOM uint32_t SSTSEL : 4; /*!< [19..16] Sampling State Table Selection */ + uint32_t : 12; + } ADCHCR3_b; + }; + + union + { + __IOM uint32_t ADDOPCRA3; /*!< (@ 0x00000634) A/D Conversion Data Operation Control A Register + * 3 */ + + struct + { + uint32_t : 16; + __IOM uint32_t GAINSEL : 4; /*!< [19..16] User Gain Table Selection */ + uint32_t : 4; + __IOM uint32_t OFSETSEL : 4; /*!< [27..24] User Offset Table Selection */ + uint32_t : 4; + } ADDOPCRA3_b; + }; + + union + { + __IOM uint32_t ADDOPCRB3; /*!< (@ 0x00000638) A/D Conversion Data Operation Control B Register + * 3 */ + + struct + { + __IOM uint32_t AVEMD : 2; /*!< [1..0] Addition/Averaging Mode Selection */ + uint32_t : 6; + __IOM uint32_t ADC : 4; /*!< [11..8] Addition/Averaging Times Selection */ + uint32_t : 4; + __IOM uint32_t CMPTBLEm : 8; /*!< [23..16] Compare Match Enable */ + uint32_t : 8; + } ADDOPCRB3_b; + }; + + union + { + __IOM uint32_t ADDOPCRC3; /*!< (@ 0x0000063C) A/D Conversion Data Operation Control C Register + * 3 */ + + struct + { + __IOM uint32_t LIMTBLS : 4; /*!< [3..0] Limiter Clip Table Selection */ + uint32_t : 12; + __IOM uint32_t ADPRC : 2; /*!< [17..16] A/D Conversion Data Format Selection */ + uint32_t : 2; + __IOM uint32_t SIGNSEL : 1; /*!< [20..20] TBD */ + uint32_t : 11; + } ADDOPCRC3_b; + }; + + union + { + __IOM uint32_t ADCHCR4; /*!< (@ 0x00000640) A/D Conversion Channel Configuration Register + * 4 */ + + struct + { + __IOM uint32_t SGSEL : 5; /*!< [4..0] Scan Group Selection */ + uint32_t : 3; + __IOM uint32_t CNVCS : 7; /*!< [14..8] A/D Conversion Channel Selection */ + __IOM uint32_t AINMD : 1; /*!< [15..15] Analog Input mode selection */ + __IOM uint32_t SSTSEL : 4; /*!< [19..16] Sampling State Table Selection */ + uint32_t : 12; + } ADCHCR4_b; + }; + + union + { + __IOM uint32_t ADDOPCRA4; /*!< (@ 0x00000644) A/D Conversion Data Operation Control A Register + * 4 */ + + struct + { + uint32_t : 16; + __IOM uint32_t GAINSEL : 4; /*!< [19..16] User Gain Table Selection */ + uint32_t : 4; + __IOM uint32_t OFSETSEL : 4; /*!< [27..24] User Offset Table Selection */ + uint32_t : 4; + } ADDOPCRA4_b; + }; + + union + { + __IOM uint32_t ADDOPCRB4; /*!< (@ 0x00000648) A/D Conversion Data Operation Control B Register + * 4 */ + + struct + { + __IOM uint32_t AVEMD : 2; /*!< [1..0] Addition/Averaging Mode Selection */ + uint32_t : 6; + __IOM uint32_t ADC : 4; /*!< [11..8] Addition/Averaging Times Selection */ + uint32_t : 4; + __IOM uint32_t CMPTBLEm : 8; /*!< [23..16] Compare Match Enable */ + uint32_t : 8; + } ADDOPCRB4_b; + }; + + union + { + __IOM uint32_t ADDOPCRC4; /*!< (@ 0x0000064C) A/D Conversion Data Operation Control C Register + * 4 */ + + struct + { + __IOM uint32_t LIMTBLS : 4; /*!< [3..0] Limiter Clip Table Selection */ + uint32_t : 12; + __IOM uint32_t ADPRC : 2; /*!< [17..16] A/D Conversion Data Format Selection */ + uint32_t : 2; + __IOM uint32_t SIGNSEL : 1; /*!< [20..20] TBD */ + uint32_t : 11; + } ADDOPCRC4_b; + }; + + union + { + __IOM uint32_t ADCHCR5; /*!< (@ 0x00000650) A/D Conversion Channel Configuration Register + * 5 */ + + struct + { + __IOM uint32_t SGSEL : 5; /*!< [4..0] Scan Group Selection */ + uint32_t : 3; + __IOM uint32_t CNVCS : 7; /*!< [14..8] A/D Conversion Channel Selection */ + __IOM uint32_t AINMD : 1; /*!< [15..15] Analog Input mode selection */ + __IOM uint32_t SSTSEL : 4; /*!< [19..16] Sampling State Table Selection */ + uint32_t : 12; + } ADCHCR5_b; + }; + + union + { + __IOM uint32_t ADDOPCRA5; /*!< (@ 0x00000654) A/D Conversion Data Operation Control A Register + * 5 */ + + struct + { + uint32_t : 16; + __IOM uint32_t GAINSEL : 4; /*!< [19..16] User Gain Table Selection */ + uint32_t : 4; + __IOM uint32_t OFSETSEL : 4; /*!< [27..24] User Offset Table Selection */ + uint32_t : 4; + } ADDOPCRA5_b; + }; + + union + { + __IOM uint32_t ADDOPCRB5; /*!< (@ 0x00000658) A/D Conversion Data Operation Control B Register + * 5 */ + + struct + { + __IOM uint32_t AVEMD : 2; /*!< [1..0] Addition/Averaging Mode Selection */ + uint32_t : 6; + __IOM uint32_t ADC : 4; /*!< [11..8] Addition/Averaging Times Selection */ + uint32_t : 4; + __IOM uint32_t CMPTBLEm : 8; /*!< [23..16] Compare Match Enable */ + uint32_t : 8; + } ADDOPCRB5_b; + }; + + union + { + __IOM uint32_t ADDOPCRC5; /*!< (@ 0x0000065C) A/D Conversion Data Operation Control C Register + * 5 */ + + struct + { + __IOM uint32_t LIMTBLS : 4; /*!< [3..0] Limiter Clip Table Selection */ + uint32_t : 12; + __IOM uint32_t ADPRC : 2; /*!< [17..16] A/D Conversion Data Format Selection */ + uint32_t : 2; + __IOM uint32_t SIGNSEL : 1; /*!< [20..20] TBD */ + uint32_t : 11; + } ADDOPCRC5_b; + }; + + union + { + __IOM uint32_t ADCHCR6; /*!< (@ 0x00000660) A/D Conversion Channel Configuration Register + * 6 */ + + struct + { + __IOM uint32_t SGSEL : 5; /*!< [4..0] Scan Group Selection */ + uint32_t : 3; + __IOM uint32_t CNVCS : 7; /*!< [14..8] A/D Conversion Channel Selection */ + __IOM uint32_t AINMD : 1; /*!< [15..15] Analog Input mode selection */ + __IOM uint32_t SSTSEL : 4; /*!< [19..16] Sampling State Table Selection */ + uint32_t : 12; + } ADCHCR6_b; + }; + + union + { + __IOM uint32_t ADDOPCRA6; /*!< (@ 0x00000664) A/D Conversion Data Operation Control A Register + * 6 */ + + struct + { + uint32_t : 16; + __IOM uint32_t GAINSEL : 4; /*!< [19..16] User Gain Table Selection */ + uint32_t : 4; + __IOM uint32_t OFSETSEL : 4; /*!< [27..24] User Offset Table Selection */ + uint32_t : 4; + } ADDOPCRA6_b; + }; + + union + { + __IOM uint32_t ADDOPCRB6; /*!< (@ 0x00000668) A/D Conversion Data Operation Control B Register + * 6 */ + + struct + { + __IOM uint32_t AVEMD : 2; /*!< [1..0] Addition/Averaging Mode Selection */ + uint32_t : 6; + __IOM uint32_t ADC : 4; /*!< [11..8] Addition/Averaging Times Selection */ + uint32_t : 4; + __IOM uint32_t CMPTBLEm : 8; /*!< [23..16] Compare Match Enable */ + uint32_t : 8; + } ADDOPCRB6_b; + }; + + union + { + __IOM uint32_t ADDOPCRC6; /*!< (@ 0x0000066C) A/D Conversion Data Operation Control C Register + * 6 */ + + struct + { + __IOM uint32_t LIMTBLS : 4; /*!< [3..0] Limiter Clip Table Selection */ + uint32_t : 12; + __IOM uint32_t ADPRC : 2; /*!< [17..16] A/D Conversion Data Format Selection */ + uint32_t : 2; + __IOM uint32_t SIGNSEL : 1; /*!< [20..20] TBD */ + uint32_t : 11; + } ADDOPCRC6_b; + }; + + union + { + __IOM uint32_t ADCHCR7; /*!< (@ 0x00000670) A/D Conversion Channel Configuration Register + * 7 */ + + struct + { + __IOM uint32_t SGSEL : 5; /*!< [4..0] Scan Group Selection */ + uint32_t : 3; + __IOM uint32_t CNVCS : 7; /*!< [14..8] A/D Conversion Channel Selection */ + __IOM uint32_t AINMD : 1; /*!< [15..15] Analog Input mode selection */ + __IOM uint32_t SSTSEL : 4; /*!< [19..16] Sampling State Table Selection */ + uint32_t : 12; + } ADCHCR7_b; + }; + + union + { + __IOM uint32_t ADDOPCRA7; /*!< (@ 0x00000674) A/D Conversion Data Operation Control A Register + * 7 */ + + struct + { + uint32_t : 16; + __IOM uint32_t GAINSEL : 4; /*!< [19..16] User Gain Table Selection */ + uint32_t : 4; + __IOM uint32_t OFSETSEL : 4; /*!< [27..24] User Offset Table Selection */ + uint32_t : 4; + } ADDOPCRA7_b; + }; + + union + { + __IOM uint32_t ADDOPCRB7; /*!< (@ 0x00000678) A/D Conversion Data Operation Control B Register + * 7 */ + + struct + { + __IOM uint32_t AVEMD : 2; /*!< [1..0] Addition/Averaging Mode Selection */ + uint32_t : 6; + __IOM uint32_t ADC : 4; /*!< [11..8] Addition/Averaging Times Selection */ + uint32_t : 4; + __IOM uint32_t CMPTBLEm : 8; /*!< [23..16] Compare Match Enable */ + uint32_t : 8; + } ADDOPCRB7_b; + }; + + union + { + __IOM uint32_t ADDOPCRC7; /*!< (@ 0x0000067C) A/D Conversion Data Operation Control C Register + * 7 */ + + struct + { + __IOM uint32_t LIMTBLS : 4; /*!< [3..0] Limiter Clip Table Selection */ + uint32_t : 12; + __IOM uint32_t ADPRC : 2; /*!< [17..16] A/D Conversion Data Format Selection */ + uint32_t : 2; + __IOM uint32_t SIGNSEL : 1; /*!< [20..20] TBD */ + uint32_t : 11; + } ADDOPCRC7_b; + }; + + union + { + __IOM uint32_t ADCHCR8; /*!< (@ 0x00000680) A/D Conversion Channel Configuration Register + * 8 */ + + struct + { + __IOM uint32_t SGSEL : 5; /*!< [4..0] Scan Group Selection */ + uint32_t : 3; + __IOM uint32_t CNVCS : 7; /*!< [14..8] A/D Conversion Channel Selection */ + __IOM uint32_t AINMD : 1; /*!< [15..15] Analog Input mode selection */ + __IOM uint32_t SSTSEL : 4; /*!< [19..16] Sampling State Table Selection */ + uint32_t : 12; + } ADCHCR8_b; + }; + + union + { + __IOM uint32_t ADDOPCRA8; /*!< (@ 0x00000684) A/D Conversion Data Operation Control A Register + * 8 */ + + struct + { + uint32_t : 16; + __IOM uint32_t GAINSEL : 4; /*!< [19..16] User Gain Table Selection */ + uint32_t : 4; + __IOM uint32_t OFSETSEL : 4; /*!< [27..24] User Offset Table Selection */ + uint32_t : 4; + } ADDOPCRA8_b; + }; + + union + { + __IOM uint32_t ADDOPCRB8; /*!< (@ 0x00000688) A/D Conversion Data Operation Control B Register + * 8 */ + + struct + { + __IOM uint32_t AVEMD : 2; /*!< [1..0] Addition/Averaging Mode Selection */ + uint32_t : 6; + __IOM uint32_t ADC : 4; /*!< [11..8] Addition/Averaging Times Selection */ + uint32_t : 4; + __IOM uint32_t CMPTBLEm : 8; /*!< [23..16] Compare Match Enable */ + uint32_t : 8; + } ADDOPCRB8_b; + }; + + union + { + __IOM uint32_t ADDOPCRC8; /*!< (@ 0x0000068C) A/D Conversion Data Operation Control C Register + * 8 */ + + struct + { + __IOM uint32_t LIMTBLS : 4; /*!< [3..0] Limiter Clip Table Selection */ + uint32_t : 12; + __IOM uint32_t ADPRC : 2; /*!< [17..16] A/D Conversion Data Format Selection */ + uint32_t : 2; + __IOM uint32_t SIGNSEL : 1; /*!< [20..20] TBD */ + uint32_t : 11; + } ADDOPCRC8_b; + }; + + union + { + __IOM uint32_t ADCHCR9; /*!< (@ 0x00000690) A/D Conversion Channel Configuration Register + * 9 */ + + struct + { + __IOM uint32_t SGSEL : 5; /*!< [4..0] Scan Group Selection */ + uint32_t : 3; + __IOM uint32_t CNVCS : 7; /*!< [14..8] A/D Conversion Channel Selection */ + __IOM uint32_t AINMD : 1; /*!< [15..15] Analog Input mode selection */ + __IOM uint32_t SSTSEL : 4; /*!< [19..16] Sampling State Table Selection */ + uint32_t : 12; + } ADCHCR9_b; + }; + + union + { + __IOM uint32_t ADDOPCRA9; /*!< (@ 0x00000694) A/D Conversion Data Operation Control A Register + * 9 */ + + struct + { + uint32_t : 16; + __IOM uint32_t GAINSEL : 4; /*!< [19..16] User Gain Table Selection */ + uint32_t : 4; + __IOM uint32_t OFSETSEL : 4; /*!< [27..24] User Offset Table Selection */ + uint32_t : 4; + } ADDOPCRA9_b; + }; + + union + { + __IOM uint32_t ADDOPCRB9; /*!< (@ 0x00000698) A/D Conversion Data Operation Control B Register + * 9 */ + + struct + { + __IOM uint32_t AVEMD : 2; /*!< [1..0] Addition/Averaging Mode Selection */ + uint32_t : 6; + __IOM uint32_t ADC : 4; /*!< [11..8] Addition/Averaging Times Selection */ + uint32_t : 4; + __IOM uint32_t CMPTBLEm : 8; /*!< [23..16] Compare Match Enable */ + uint32_t : 8; + } ADDOPCRB9_b; + }; + + union + { + __IOM uint32_t ADDOPCRC9; /*!< (@ 0x0000069C) A/D Conversion Data Operation Control C Register + * 9 */ + + struct + { + __IOM uint32_t LIMTBLS : 4; /*!< [3..0] Limiter Clip Table Selection */ + uint32_t : 12; + __IOM uint32_t ADPRC : 2; /*!< [17..16] A/D Conversion Data Format Selection */ + uint32_t : 2; + __IOM uint32_t SIGNSEL : 1; /*!< [20..20] TBD */ + uint32_t : 11; + } ADDOPCRC9_b; + }; + + union + { + __IOM uint32_t ADCHCR10; /*!< (@ 0x000006A0) A/D Conversion Channel Configuration Register + * 10 */ + + struct + { + __IOM uint32_t SGSEL : 5; /*!< [4..0] Scan Group Selection */ + uint32_t : 3; + __IOM uint32_t CNVCS : 7; /*!< [14..8] A/D Conversion Channel Selection */ + __IOM uint32_t AINMD : 1; /*!< [15..15] Analog Input mode selection */ + __IOM uint32_t SSTSEL : 4; /*!< [19..16] Sampling State Table Selection */ + uint32_t : 12; + } ADCHCR10_b; + }; + + union + { + __IOM uint32_t ADDOPCRA10; /*!< (@ 0x000006A4) A/D Conversion Data Operation Control A Register + * 10 */ + + struct + { + uint32_t : 16; + __IOM uint32_t GAINSEL : 4; /*!< [19..16] User Gain Table Selection */ + uint32_t : 4; + __IOM uint32_t OFSETSEL : 4; /*!< [27..24] User Offset Table Selection */ + uint32_t : 4; + } ADDOPCRA10_b; + }; + + union + { + __IOM uint32_t ADDOPCRB10; /*!< (@ 0x000006A8) A/D Conversion Data Operation Control B Register + * 10 */ + + struct + { + __IOM uint32_t AVEMD : 2; /*!< [1..0] Addition/Averaging Mode Selection */ + uint32_t : 6; + __IOM uint32_t ADC : 4; /*!< [11..8] Addition/Averaging Times Selection */ + uint32_t : 4; + __IOM uint32_t CMPTBLEm : 8; /*!< [23..16] Compare Match Enable */ + uint32_t : 8; + } ADDOPCRB10_b; + }; + + union + { + __IOM uint32_t ADDOPCRC10; /*!< (@ 0x000006AC) A/D Conversion Data Operation Control C Register + * 10 */ + + struct + { + __IOM uint32_t LIMTBLS : 4; /*!< [3..0] Limiter Clip Table Selection */ + uint32_t : 12; + __IOM uint32_t ADPRC : 2; /*!< [17..16] A/D Conversion Data Format Selection */ + uint32_t : 2; + __IOM uint32_t SIGNSEL : 1; /*!< [20..20] TBD */ + uint32_t : 11; + } ADDOPCRC10_b; + }; + + union + { + __IOM uint32_t ADCHCR11; /*!< (@ 0x000006B0) A/D Conversion Channel Configuration Register + * 11 */ + + struct + { + __IOM uint32_t SGSEL : 5; /*!< [4..0] Scan Group Selection */ + uint32_t : 3; + __IOM uint32_t CNVCS : 7; /*!< [14..8] A/D Conversion Channel Selection */ + __IOM uint32_t AINMD : 1; /*!< [15..15] Analog Input mode selection */ + __IOM uint32_t SSTSEL : 4; /*!< [19..16] Sampling State Table Selection */ + uint32_t : 12; + } ADCHCR11_b; + }; + + union + { + __IOM uint32_t ADDOPCRA11; /*!< (@ 0x000006B4) A/D Conversion Data Operation Control A Register + * 11 */ + + struct + { + uint32_t : 16; + __IOM uint32_t GAINSEL : 4; /*!< [19..16] User Gain Table Selection */ + uint32_t : 4; + __IOM uint32_t OFSETSEL : 4; /*!< [27..24] User Offset Table Selection */ + uint32_t : 4; + } ADDOPCRA11_b; + }; + + union + { + __IOM uint32_t ADDOPCRB11; /*!< (@ 0x000006B8) A/D Conversion Data Operation Control B Register + * 11 */ + + struct + { + __IOM uint32_t AVEMD : 2; /*!< [1..0] Addition/Averaging Mode Selection */ + uint32_t : 6; + __IOM uint32_t ADC : 4; /*!< [11..8] Addition/Averaging Times Selection */ + uint32_t : 4; + __IOM uint32_t CMPTBLEm : 8; /*!< [23..16] Compare Match Enable */ + uint32_t : 8; + } ADDOPCRB11_b; + }; + + union + { + __IOM uint32_t ADDOPCRC11; /*!< (@ 0x000006BC) A/D Conversion Data Operation Control C Register + * 11 */ + + struct + { + __IOM uint32_t LIMTBLS : 4; /*!< [3..0] Limiter Clip Table Selection */ + uint32_t : 12; + __IOM uint32_t ADPRC : 2; /*!< [17..16] A/D Conversion Data Format Selection */ + uint32_t : 2; + __IOM uint32_t SIGNSEL : 1; /*!< [20..20] TBD */ + uint32_t : 11; + } ADDOPCRC11_b; + }; + + union + { + __IOM uint32_t ADCHCR12; /*!< (@ 0x000006C0) A/D Conversion Channel Configuration Register + * 12 */ + + struct + { + __IOM uint32_t SGSEL : 5; /*!< [4..0] Scan Group Selection */ + uint32_t : 3; + __IOM uint32_t CNVCS : 7; /*!< [14..8] A/D Conversion Channel Selection */ + __IOM uint32_t AINMD : 1; /*!< [15..15] Analog Input mode selection */ + __IOM uint32_t SSTSEL : 4; /*!< [19..16] Sampling State Table Selection */ + uint32_t : 12; + } ADCHCR12_b; + }; + + union + { + __IOM uint32_t ADDOPCRA12; /*!< (@ 0x000006C4) A/D Conversion Data Operation Control A Register + * 12 */ + + struct + { + uint32_t : 16; + __IOM uint32_t GAINSEL : 4; /*!< [19..16] User Gain Table Selection */ + uint32_t : 4; + __IOM uint32_t OFSETSEL : 4; /*!< [27..24] User Offset Table Selection */ + uint32_t : 4; + } ADDOPCRA12_b; + }; + + union + { + __IOM uint32_t ADDOPCRB12; /*!< (@ 0x000006C8) A/D Conversion Data Operation Control B Register + * 12 */ + + struct + { + __IOM uint32_t AVEMD : 2; /*!< [1..0] Addition/Averaging Mode Selection */ + uint32_t : 6; + __IOM uint32_t ADC : 4; /*!< [11..8] Addition/Averaging Times Selection */ + uint32_t : 4; + __IOM uint32_t CMPTBLEm : 8; /*!< [23..16] Compare Match Enable */ + uint32_t : 8; + } ADDOPCRB12_b; + }; + + union + { + __IOM uint32_t ADDOPCRC12; /*!< (@ 0x000006CC) A/D Conversion Data Operation Control C Register + * 12 */ + + struct + { + __IOM uint32_t LIMTBLS : 4; /*!< [3..0] Limiter Clip Table Selection */ + uint32_t : 12; + __IOM uint32_t ADPRC : 2; /*!< [17..16] A/D Conversion Data Format Selection */ + uint32_t : 2; + __IOM uint32_t SIGNSEL : 1; /*!< [20..20] TBD */ + uint32_t : 11; + } ADDOPCRC12_b; + }; + + union + { + __IOM uint32_t ADCHCR13; /*!< (@ 0x000006D0) A/D Conversion Channel Configuration Register + * 13 */ + + struct + { + __IOM uint32_t SGSEL : 5; /*!< [4..0] Scan Group Selection */ + uint32_t : 3; + __IOM uint32_t CNVCS : 7; /*!< [14..8] A/D Conversion Channel Selection */ + __IOM uint32_t AINMD : 1; /*!< [15..15] Analog Input mode selection */ + __IOM uint32_t SSTSEL : 4; /*!< [19..16] Sampling State Table Selection */ + uint32_t : 12; + } ADCHCR13_b; + }; + + union + { + __IOM uint32_t ADDOPCRA13; /*!< (@ 0x000006D4) A/D Conversion Data Operation Control A Register + * 13 */ + + struct + { + uint32_t : 16; + __IOM uint32_t GAINSEL : 4; /*!< [19..16] User Gain Table Selection */ + uint32_t : 4; + __IOM uint32_t OFSETSEL : 4; /*!< [27..24] User Offset Table Selection */ + uint32_t : 4; + } ADDOPCRA13_b; + }; + + union + { + __IOM uint32_t ADDOPCRB13; /*!< (@ 0x000006D8) A/D Conversion Data Operation Control B Register + * 13 */ + + struct + { + __IOM uint32_t AVEMD : 2; /*!< [1..0] Addition/Averaging Mode Selection */ + uint32_t : 6; + __IOM uint32_t ADC : 4; /*!< [11..8] Addition/Averaging Times Selection */ + uint32_t : 4; + __IOM uint32_t CMPTBLEm : 8; /*!< [23..16] Compare Match Enable */ + uint32_t : 8; + } ADDOPCRB13_b; + }; + + union + { + __IOM uint32_t ADDOPCRC13; /*!< (@ 0x000006DC) A/D Conversion Data Operation Control C Register + * 13 */ + + struct + { + __IOM uint32_t LIMTBLS : 4; /*!< [3..0] Limiter Clip Table Selection */ + uint32_t : 12; + __IOM uint32_t ADPRC : 2; /*!< [17..16] A/D Conversion Data Format Selection */ + uint32_t : 2; + __IOM uint32_t SIGNSEL : 1; /*!< [20..20] TBD */ + uint32_t : 11; + } ADDOPCRC13_b; + }; + + union + { + __IOM uint32_t ADCHCR14; /*!< (@ 0x000006E0) A/D Conversion Channel Configuration Register + * 14 */ + + struct + { + __IOM uint32_t SGSEL : 5; /*!< [4..0] Scan Group Selection */ + uint32_t : 3; + __IOM uint32_t CNVCS : 7; /*!< [14..8] A/D Conversion Channel Selection */ + __IOM uint32_t AINMD : 1; /*!< [15..15] Analog Input mode selection */ + __IOM uint32_t SSTSEL : 4; /*!< [19..16] Sampling State Table Selection */ + uint32_t : 12; + } ADCHCR14_b; + }; + + union + { + __IOM uint32_t ADDOPCRA14; /*!< (@ 0x000006E4) A/D Conversion Data Operation Control A Register + * 14 */ + + struct + { + uint32_t : 16; + __IOM uint32_t GAINSEL : 4; /*!< [19..16] User Gain Table Selection */ + uint32_t : 4; + __IOM uint32_t OFSETSEL : 4; /*!< [27..24] User Offset Table Selection */ + uint32_t : 4; + } ADDOPCRA14_b; + }; + + union + { + __IOM uint32_t ADDOPCRB14; /*!< (@ 0x000006E8) A/D Conversion Data Operation Control B Register + * 14 */ + + struct + { + __IOM uint32_t AVEMD : 2; /*!< [1..0] Addition/Averaging Mode Selection */ + uint32_t : 6; + __IOM uint32_t ADC : 4; /*!< [11..8] Addition/Averaging Times Selection */ + uint32_t : 4; + __IOM uint32_t CMPTBLEm : 8; /*!< [23..16] Compare Match Enable */ + uint32_t : 8; + } ADDOPCRB14_b; + }; + + union + { + __IOM uint32_t ADDOPCRC14; /*!< (@ 0x000006EC) A/D Conversion Data Operation Control C Register + * 14 */ + + struct + { + __IOM uint32_t LIMTBLS : 4; /*!< [3..0] Limiter Clip Table Selection */ + uint32_t : 12; + __IOM uint32_t ADPRC : 2; /*!< [17..16] A/D Conversion Data Format Selection */ + uint32_t : 2; + __IOM uint32_t SIGNSEL : 1; /*!< [20..20] TBD */ + uint32_t : 11; + } ADDOPCRC14_b; + }; + + union + { + __IOM uint32_t ADCHCR15; /*!< (@ 0x000006F0) A/D Conversion Channel Configuration Register + * 15 */ + + struct + { + __IOM uint32_t SGSEL : 5; /*!< [4..0] Scan Group Selection */ + uint32_t : 3; + __IOM uint32_t CNVCS : 7; /*!< [14..8] A/D Conversion Channel Selection */ + __IOM uint32_t AINMD : 1; /*!< [15..15] Analog Input mode selection */ + __IOM uint32_t SSTSEL : 4; /*!< [19..16] Sampling State Table Selection */ + uint32_t : 12; + } ADCHCR15_b; + }; + + union + { + __IOM uint32_t ADDOPCRA15; /*!< (@ 0x000006F4) A/D Conversion Data Operation Control A Register + * 15 */ + + struct + { + uint32_t : 16; + __IOM uint32_t GAINSEL : 4; /*!< [19..16] User Gain Table Selection */ + uint32_t : 4; + __IOM uint32_t OFSETSEL : 4; /*!< [27..24] User Offset Table Selection */ + uint32_t : 4; + } ADDOPCRA15_b; + }; + + union + { + __IOM uint32_t ADDOPCRB15; /*!< (@ 0x000006F8) A/D Conversion Data Operation Control B Register + * 15 */ + + struct + { + __IOM uint32_t AVEMD : 2; /*!< [1..0] Addition/Averaging Mode Selection */ + uint32_t : 6; + __IOM uint32_t ADC : 4; /*!< [11..8] Addition/Averaging Times Selection */ + uint32_t : 4; + __IOM uint32_t CMPTBLEm : 8; /*!< [23..16] Compare Match Enable */ + uint32_t : 8; + } ADDOPCRB15_b; + }; + + union + { + __IOM uint32_t ADDOPCRC15; /*!< (@ 0x000006FC) A/D Conversion Data Operation Control C Register + * 15 */ + + struct + { + __IOM uint32_t LIMTBLS : 4; /*!< [3..0] Limiter Clip Table Selection */ + uint32_t : 12; + __IOM uint32_t ADPRC : 2; /*!< [17..16] A/D Conversion Data Format Selection */ + uint32_t : 2; + __IOM uint32_t SIGNSEL : 1; /*!< [20..20] TBD */ + uint32_t : 11; + } ADDOPCRC15_b; + }; + + union + { + __IOM uint32_t ADCHCR16; /*!< (@ 0x00000700) A/D Conversion Channel Configuration Register + * 16 */ + + struct + { + __IOM uint32_t SGSEL : 5; /*!< [4..0] Scan Group Selection */ + uint32_t : 3; + __IOM uint32_t CNVCS : 7; /*!< [14..8] A/D Conversion Channel Selection */ + __IOM uint32_t AINMD : 1; /*!< [15..15] Analog Input mode selection */ + __IOM uint32_t SSTSEL : 4; /*!< [19..16] Sampling State Table Selection */ + uint32_t : 12; + } ADCHCR16_b; + }; + + union + { + __IOM uint32_t ADDOPCRA16; /*!< (@ 0x00000704) A/D Conversion Data Operation Control A Register + * 16 */ + + struct + { + uint32_t : 16; + __IOM uint32_t GAINSEL : 4; /*!< [19..16] User Gain Table Selection */ + uint32_t : 4; + __IOM uint32_t OFSETSEL : 4; /*!< [27..24] User Offset Table Selection */ + uint32_t : 4; + } ADDOPCRA16_b; + }; + + union + { + __IOM uint32_t ADDOPCRB16; /*!< (@ 0x00000708) A/D Conversion Data Operation Control B Register + * 16 */ + + struct + { + __IOM uint32_t AVEMD : 2; /*!< [1..0] Addition/Averaging Mode Selection */ + uint32_t : 6; + __IOM uint32_t ADC : 4; /*!< [11..8] Addition/Averaging Times Selection */ + uint32_t : 4; + __IOM uint32_t CMPTBLEm : 8; /*!< [23..16] Compare Match Enable */ + uint32_t : 8; + } ADDOPCRB16_b; + }; + + union + { + __IOM uint32_t ADDOPCRC16; /*!< (@ 0x0000070C) A/D Conversion Data Operation Control C Register + * 16 */ + + struct + { + __IOM uint32_t LIMTBLS : 4; /*!< [3..0] Limiter Clip Table Selection */ + uint32_t : 12; + __IOM uint32_t ADPRC : 2; /*!< [17..16] A/D Conversion Data Format Selection */ + uint32_t : 2; + __IOM uint32_t SIGNSEL : 1; /*!< [20..20] TBD */ + uint32_t : 11; + } ADDOPCRC16_b; + }; + + union + { + __IOM uint32_t ADCHCR17; /*!< (@ 0x00000710) A/D Conversion Channel Configuration Register + * 17 */ + + struct + { + __IOM uint32_t SGSEL : 5; /*!< [4..0] Scan Group Selection */ + uint32_t : 3; + __IOM uint32_t CNVCS : 7; /*!< [14..8] A/D Conversion Channel Selection */ + __IOM uint32_t AINMD : 1; /*!< [15..15] Analog Input mode selection */ + __IOM uint32_t SSTSEL : 4; /*!< [19..16] Sampling State Table Selection */ + uint32_t : 12; + } ADCHCR17_b; + }; + + union + { + __IOM uint32_t ADDOPCRA17; /*!< (@ 0x00000714) A/D Conversion Data Operation Control A Register + * 17 */ + + struct + { + uint32_t : 16; + __IOM uint32_t GAINSEL : 4; /*!< [19..16] User Gain Table Selection */ + uint32_t : 4; + __IOM uint32_t OFSETSEL : 4; /*!< [27..24] User Offset Table Selection */ + uint32_t : 4; + } ADDOPCRA17_b; + }; + + union + { + __IOM uint32_t ADDOPCRB17; /*!< (@ 0x00000718) A/D Conversion Data Operation Control B Register + * 17 */ + + struct + { + __IOM uint32_t AVEMD : 2; /*!< [1..0] Addition/Averaging Mode Selection */ + uint32_t : 6; + __IOM uint32_t ADC : 4; /*!< [11..8] Addition/Averaging Times Selection */ + uint32_t : 4; + __IOM uint32_t CMPTBLEm : 8; /*!< [23..16] Compare Match Enable */ + uint32_t : 8; + } ADDOPCRB17_b; + }; + + union + { + __IOM uint32_t ADDOPCRC17; /*!< (@ 0x0000071C) A/D Conversion Data Operation Control C Register + * 17 */ + + struct + { + __IOM uint32_t LIMTBLS : 4; /*!< [3..0] Limiter Clip Table Selection */ + uint32_t : 12; + __IOM uint32_t ADPRC : 2; /*!< [17..16] A/D Conversion Data Format Selection */ + uint32_t : 2; + __IOM uint32_t SIGNSEL : 1; /*!< [20..20] TBD */ + uint32_t : 11; + } ADDOPCRC17_b; + }; + + union + { + __IOM uint32_t ADCHCR18; /*!< (@ 0x00000720) A/D Conversion Channel Configuration Register + * 18 */ + + struct + { + __IOM uint32_t SGSEL : 5; /*!< [4..0] Scan Group Selection */ + uint32_t : 3; + __IOM uint32_t CNVCS : 7; /*!< [14..8] A/D Conversion Channel Selection */ + __IOM uint32_t AINMD : 1; /*!< [15..15] Analog Input mode selection */ + __IOM uint32_t SSTSEL : 4; /*!< [19..16] Sampling State Table Selection */ + uint32_t : 12; + } ADCHCR18_b; + }; + + union + { + __IOM uint32_t ADDOPCRA18; /*!< (@ 0x00000724) A/D Conversion Data Operation Control A Register + * 18 */ + + struct + { + uint32_t : 16; + __IOM uint32_t GAINSEL : 4; /*!< [19..16] User Gain Table Selection */ + uint32_t : 4; + __IOM uint32_t OFSETSEL : 4; /*!< [27..24] User Offset Table Selection */ + uint32_t : 4; + } ADDOPCRA18_b; + }; + + union + { + __IOM uint32_t ADDOPCRB18; /*!< (@ 0x00000728) A/D Conversion Data Operation Control B Register + * 18 */ + + struct + { + __IOM uint32_t AVEMD : 2; /*!< [1..0] Addition/Averaging Mode Selection */ + uint32_t : 6; + __IOM uint32_t ADC : 4; /*!< [11..8] Addition/Averaging Times Selection */ + uint32_t : 4; + __IOM uint32_t CMPTBLEm : 8; /*!< [23..16] Compare Match Enable */ + uint32_t : 8; + } ADDOPCRB18_b; + }; + + union + { + __IOM uint32_t ADDOPCRC18; /*!< (@ 0x0000072C) A/D Conversion Data Operation Control C Register + * 18 */ + + struct + { + __IOM uint32_t LIMTBLS : 4; /*!< [3..0] Limiter Clip Table Selection */ + uint32_t : 12; + __IOM uint32_t ADPRC : 2; /*!< [17..16] A/D Conversion Data Format Selection */ + uint32_t : 2; + __IOM uint32_t SIGNSEL : 1; /*!< [20..20] TBD */ + uint32_t : 11; + } ADDOPCRC18_b; + }; + + union + { + __IOM uint32_t ADCHCR19; /*!< (@ 0x00000730) A/D Conversion Channel Configuration Register + * 19 */ + + struct + { + __IOM uint32_t SGSEL : 5; /*!< [4..0] Scan Group Selection */ + uint32_t : 3; + __IOM uint32_t CNVCS : 7; /*!< [14..8] A/D Conversion Channel Selection */ + __IOM uint32_t AINMD : 1; /*!< [15..15] Analog Input mode selection */ + __IOM uint32_t SSTSEL : 4; /*!< [19..16] Sampling State Table Selection */ + uint32_t : 12; + } ADCHCR19_b; + }; + + union + { + __IOM uint32_t ADDOPCRA19; /*!< (@ 0x00000734) A/D Conversion Data Operation Control A Register + * 19 */ + + struct + { + uint32_t : 16; + __IOM uint32_t GAINSEL : 4; /*!< [19..16] User Gain Table Selection */ + uint32_t : 4; + __IOM uint32_t OFSETSEL : 4; /*!< [27..24] User Offset Table Selection */ + uint32_t : 4; + } ADDOPCRA19_b; + }; + + union + { + __IOM uint32_t ADDOPCRB19; /*!< (@ 0x00000738) A/D Conversion Data Operation Control B Register + * 19 */ + + struct + { + __IOM uint32_t AVEMD : 2; /*!< [1..0] Addition/Averaging Mode Selection */ + uint32_t : 6; + __IOM uint32_t ADC : 4; /*!< [11..8] Addition/Averaging Times Selection */ + uint32_t : 4; + __IOM uint32_t CMPTBLEm : 8; /*!< [23..16] Compare Match Enable */ + uint32_t : 8; + } ADDOPCRB19_b; + }; + + union + { + __IOM uint32_t ADDOPCRC19; /*!< (@ 0x0000073C) A/D Conversion Data Operation Control C Register + * 19 */ + + struct + { + __IOM uint32_t LIMTBLS : 4; /*!< [3..0] Limiter Clip Table Selection */ + uint32_t : 12; + __IOM uint32_t ADPRC : 2; /*!< [17..16] A/D Conversion Data Format Selection */ + uint32_t : 2; + __IOM uint32_t SIGNSEL : 1; /*!< [20..20] TBD */ + uint32_t : 11; + } ADDOPCRC19_b; + }; + + union + { + __IOM uint32_t ADCHCR20; /*!< (@ 0x00000740) A/D Conversion Channel Configuration Register + * 20 */ + + struct + { + __IOM uint32_t SGSEL : 5; /*!< [4..0] Scan Group Selection */ + uint32_t : 3; + __IOM uint32_t CNVCS : 7; /*!< [14..8] A/D Conversion Channel Selection */ + __IOM uint32_t AINMD : 1; /*!< [15..15] Analog Input mode selection */ + __IOM uint32_t SSTSEL : 4; /*!< [19..16] Sampling State Table Selection */ + uint32_t : 12; + } ADCHCR20_b; + }; + + union + { + __IOM uint32_t ADDOPCRA20; /*!< (@ 0x00000744) A/D Conversion Data Operation Control A Register + * 20 */ + + struct + { + uint32_t : 16; + __IOM uint32_t GAINSEL : 4; /*!< [19..16] User Gain Table Selection */ + uint32_t : 4; + __IOM uint32_t OFSETSEL : 4; /*!< [27..24] User Offset Table Selection */ + uint32_t : 4; + } ADDOPCRA20_b; + }; + + union + { + __IOM uint32_t ADDOPCRB20; /*!< (@ 0x00000748) A/D Conversion Data Operation Control B Register + * 20 */ + + struct + { + __IOM uint32_t AVEMD : 2; /*!< [1..0] Addition/Averaging Mode Selection */ + uint32_t : 6; + __IOM uint32_t ADC : 4; /*!< [11..8] Addition/Averaging Times Selection */ + uint32_t : 4; + __IOM uint32_t CMPTBLEm : 8; /*!< [23..16] Compare Match Enable */ + uint32_t : 8; + } ADDOPCRB20_b; + }; + + union + { + __IOM uint32_t ADDOPCRC20; /*!< (@ 0x0000074C) A/D Conversion Data Operation Control C Register + * 20 */ + + struct + { + __IOM uint32_t LIMTBLS : 4; /*!< [3..0] Limiter Clip Table Selection */ + uint32_t : 12; + __IOM uint32_t ADPRC : 2; /*!< [17..16] A/D Conversion Data Format Selection */ + uint32_t : 2; + __IOM uint32_t SIGNSEL : 1; /*!< [20..20] TBD */ + uint32_t : 11; + } ADDOPCRC20_b; + }; + + union + { + __IOM uint32_t ADCHCR21; /*!< (@ 0x00000750) A/D Conversion Channel Configuration Register + * 21 */ + + struct + { + __IOM uint32_t SGSEL : 5; /*!< [4..0] Scan Group Selection */ + uint32_t : 3; + __IOM uint32_t CNVCS : 7; /*!< [14..8] A/D Conversion Channel Selection */ + __IOM uint32_t AINMD : 1; /*!< [15..15] Analog Input mode selection */ + __IOM uint32_t SSTSEL : 4; /*!< [19..16] Sampling State Table Selection */ + uint32_t : 12; + } ADCHCR21_b; + }; + + union + { + __IOM uint32_t ADDOPCRA21; /*!< (@ 0x00000754) A/D Conversion Data Operation Control A Register + * 21 */ + + struct + { + uint32_t : 16; + __IOM uint32_t GAINSEL : 4; /*!< [19..16] User Gain Table Selection */ + uint32_t : 4; + __IOM uint32_t OFSETSEL : 4; /*!< [27..24] User Offset Table Selection */ + uint32_t : 4; + } ADDOPCRA21_b; + }; + + union + { + __IOM uint32_t ADDOPCRB21; /*!< (@ 0x00000758) A/D Conversion Data Operation Control B Register + * 21 */ + + struct + { + __IOM uint32_t AVEMD : 2; /*!< [1..0] Addition/Averaging Mode Selection */ + uint32_t : 6; + __IOM uint32_t ADC : 4; /*!< [11..8] Addition/Averaging Times Selection */ + uint32_t : 4; + __IOM uint32_t CMPTBLEm : 8; /*!< [23..16] Compare Match Enable */ + uint32_t : 8; + } ADDOPCRB21_b; + }; + + union + { + __IOM uint32_t ADDOPCRC21; /*!< (@ 0x0000075C) A/D Conversion Data Operation Control C Register + * 21 */ + + struct + { + __IOM uint32_t LIMTBLS : 4; /*!< [3..0] Limiter Clip Table Selection */ + uint32_t : 12; + __IOM uint32_t ADPRC : 2; /*!< [17..16] A/D Conversion Data Format Selection */ + uint32_t : 2; + __IOM uint32_t SIGNSEL : 1; /*!< [20..20] TBD */ + uint32_t : 11; + } ADDOPCRC21_b; + }; + + union + { + __IOM uint32_t ADCHCR22; /*!< (@ 0x00000760) A/D Conversion Channel Configuration Register + * 22 */ + + struct + { + __IOM uint32_t SGSEL : 5; /*!< [4..0] Scan Group Selection */ + uint32_t : 3; + __IOM uint32_t CNVCS : 7; /*!< [14..8] A/D Conversion Channel Selection */ + __IOM uint32_t AINMD : 1; /*!< [15..15] Analog Input mode selection */ + __IOM uint32_t SSTSEL : 4; /*!< [19..16] Sampling State Table Selection */ + uint32_t : 12; + } ADCHCR22_b; + }; + + union + { + __IOM uint32_t ADDOPCRA22; /*!< (@ 0x00000764) A/D Conversion Data Operation Control A Register + * 22 */ + + struct + { + uint32_t : 16; + __IOM uint32_t GAINSEL : 4; /*!< [19..16] User Gain Table Selection */ + uint32_t : 4; + __IOM uint32_t OFSETSEL : 4; /*!< [27..24] User Offset Table Selection */ + uint32_t : 4; + } ADDOPCRA22_b; + }; + + union + { + __IOM uint32_t ADDOPCRB22; /*!< (@ 0x00000768) A/D Conversion Data Operation Control B Register + * 22 */ + + struct + { + __IOM uint32_t AVEMD : 2; /*!< [1..0] Addition/Averaging Mode Selection */ + uint32_t : 6; + __IOM uint32_t ADC : 4; /*!< [11..8] Addition/Averaging Times Selection */ + uint32_t : 4; + __IOM uint32_t CMPTBLEm : 8; /*!< [23..16] Compare Match Enable */ + uint32_t : 8; + } ADDOPCRB22_b; + }; + + union + { + __IOM uint32_t ADDOPCRC22; /*!< (@ 0x0000076C) A/D Conversion Data Operation Control C Register + * 22 */ + + struct + { + __IOM uint32_t LIMTBLS : 4; /*!< [3..0] Limiter Clip Table Selection */ + uint32_t : 12; + __IOM uint32_t ADPRC : 2; /*!< [17..16] A/D Conversion Data Format Selection */ + uint32_t : 2; + __IOM uint32_t SIGNSEL : 1; /*!< [20..20] TBD */ + uint32_t : 11; + } ADDOPCRC22_b; + }; + + union + { + __IOM uint32_t ADCHCR23; /*!< (@ 0x00000770) A/D Conversion Channel Configuration Register + * 23 */ + + struct + { + __IOM uint32_t SGSEL : 5; /*!< [4..0] Scan Group Selection */ + uint32_t : 3; + __IOM uint32_t CNVCS : 7; /*!< [14..8] A/D Conversion Channel Selection */ + __IOM uint32_t AINMD : 1; /*!< [15..15] Analog Input mode selection */ + __IOM uint32_t SSTSEL : 4; /*!< [19..16] Sampling State Table Selection */ + uint32_t : 12; + } ADCHCR23_b; + }; + + union + { + __IOM uint32_t ADDOPCRA23; /*!< (@ 0x00000774) A/D Conversion Data Operation Control A Register + * 23 */ + + struct + { + uint32_t : 16; + __IOM uint32_t GAINSEL : 4; /*!< [19..16] User Gain Table Selection */ + uint32_t : 4; + __IOM uint32_t OFSETSEL : 4; /*!< [27..24] User Offset Table Selection */ + uint32_t : 4; + } ADDOPCRA23_b; + }; + + union + { + __IOM uint32_t ADDOPCRB23; /*!< (@ 0x00000778) A/D Conversion Data Operation Control B Register + * 23 */ + + struct + { + __IOM uint32_t AVEMD : 2; /*!< [1..0] Addition/Averaging Mode Selection */ + uint32_t : 6; + __IOM uint32_t ADC : 4; /*!< [11..8] Addition/Averaging Times Selection */ + uint32_t : 4; + __IOM uint32_t CMPTBLEm : 8; /*!< [23..16] Compare Match Enable */ + uint32_t : 8; + } ADDOPCRB23_b; + }; + + union + { + __IOM uint32_t ADDOPCRC23; /*!< (@ 0x0000077C) A/D Conversion Data Operation Control C Register + * 23 */ + + struct + { + __IOM uint32_t LIMTBLS : 4; /*!< [3..0] Limiter Clip Table Selection */ + uint32_t : 12; + __IOM uint32_t ADPRC : 2; /*!< [17..16] A/D Conversion Data Format Selection */ + uint32_t : 2; + __IOM uint32_t SIGNSEL : 1; /*!< [20..20] TBD */ + uint32_t : 11; + } ADDOPCRC23_b; + }; + + union + { + __IOM uint32_t ADCHCR24; /*!< (@ 0x00000780) A/D Conversion Channel Configuration Register + * 24 */ + + struct + { + __IOM uint32_t SGSEL : 5; /*!< [4..0] Scan Group Selection */ + uint32_t : 3; + __IOM uint32_t CNVCS : 7; /*!< [14..8] A/D Conversion Channel Selection */ + __IOM uint32_t AINMD : 1; /*!< [15..15] Analog Input mode selection */ + __IOM uint32_t SSTSEL : 4; /*!< [19..16] Sampling State Table Selection */ + uint32_t : 12; + } ADCHCR24_b; + }; + + union + { + __IOM uint32_t ADDOPCRA24; /*!< (@ 0x00000784) A/D Conversion Data Operation Control A Register + * 24 */ + + struct + { + uint32_t : 16; + __IOM uint32_t GAINSEL : 4; /*!< [19..16] User Gain Table Selection */ + uint32_t : 4; + __IOM uint32_t OFSETSEL : 4; /*!< [27..24] User Offset Table Selection */ + uint32_t : 4; + } ADDOPCRA24_b; + }; + + union + { + __IOM uint32_t ADDOPCRB24; /*!< (@ 0x00000788) A/D Conversion Data Operation Control B Register + * 24 */ + + struct + { + __IOM uint32_t AVEMD : 2; /*!< [1..0] Addition/Averaging Mode Selection */ + uint32_t : 6; + __IOM uint32_t ADC : 4; /*!< [11..8] Addition/Averaging Times Selection */ + uint32_t : 4; + __IOM uint32_t CMPTBLEm : 8; /*!< [23..16] Compare Match Enable */ + uint32_t : 8; + } ADDOPCRB24_b; + }; + + union + { + __IOM uint32_t ADDOPCRC24; /*!< (@ 0x0000078C) A/D Conversion Data Operation Control C Register + * 24 */ + + struct + { + __IOM uint32_t LIMTBLS : 4; /*!< [3..0] Limiter Clip Table Selection */ + uint32_t : 12; + __IOM uint32_t ADPRC : 2; /*!< [17..16] A/D Conversion Data Format Selection */ + uint32_t : 2; + __IOM uint32_t SIGNSEL : 1; /*!< [20..20] TBD */ + uint32_t : 11; + } ADDOPCRC24_b; + }; + + union + { + __IOM uint32_t ADCHCR25; /*!< (@ 0x00000790) A/D Conversion Channel Configuration Register + * 25 */ + + struct + { + __IOM uint32_t SGSEL : 5; /*!< [4..0] Scan Group Selection */ + uint32_t : 3; + __IOM uint32_t CNVCS : 7; /*!< [14..8] A/D Conversion Channel Selection */ + __IOM uint32_t AINMD : 1; /*!< [15..15] Analog Input mode selection */ + __IOM uint32_t SSTSEL : 4; /*!< [19..16] Sampling State Table Selection */ + uint32_t : 12; + } ADCHCR25_b; + }; + + union + { + __IOM uint32_t ADDOPCRA25; /*!< (@ 0x00000794) A/D Conversion Data Operation Control A Register + * 25 */ + + struct + { + uint32_t : 16; + __IOM uint32_t GAINSEL : 4; /*!< [19..16] User Gain Table Selection */ + uint32_t : 4; + __IOM uint32_t OFSETSEL : 4; /*!< [27..24] User Offset Table Selection */ + uint32_t : 4; + } ADDOPCRA25_b; + }; + + union + { + __IOM uint32_t ADDOPCRB25; /*!< (@ 0x00000798) A/D Conversion Data Operation Control B Register + * 25 */ + + struct + { + __IOM uint32_t AVEMD : 2; /*!< [1..0] Addition/Averaging Mode Selection */ + uint32_t : 6; + __IOM uint32_t ADC : 4; /*!< [11..8] Addition/Averaging Times Selection */ + uint32_t : 4; + __IOM uint32_t CMPTBLEm : 8; /*!< [23..16] Compare Match Enable */ + uint32_t : 8; + } ADDOPCRB25_b; + }; + + union + { + __IOM uint32_t ADDOPCRC25; /*!< (@ 0x0000079C) A/D Conversion Data Operation Control C Register + * 25 */ + + struct + { + __IOM uint32_t LIMTBLS : 4; /*!< [3..0] Limiter Clip Table Selection */ + uint32_t : 12; + __IOM uint32_t ADPRC : 2; /*!< [17..16] A/D Conversion Data Format Selection */ + uint32_t : 2; + __IOM uint32_t SIGNSEL : 1; /*!< [20..20] TBD */ + uint32_t : 11; + } ADDOPCRC25_b; + }; + + union + { + __IOM uint32_t ADCHCR26; /*!< (@ 0x000007A0) A/D Conversion Channel Configuration Register + * 26 */ + + struct + { + __IOM uint32_t SGSEL : 5; /*!< [4..0] Scan Group Selection */ + uint32_t : 3; + __IOM uint32_t CNVCS : 7; /*!< [14..8] A/D Conversion Channel Selection */ + __IOM uint32_t AINMD : 1; /*!< [15..15] Analog Input mode selection */ + __IOM uint32_t SSTSEL : 4; /*!< [19..16] Sampling State Table Selection */ + uint32_t : 12; + } ADCHCR26_b; + }; + + union + { + __IOM uint32_t ADDOPCRA26; /*!< (@ 0x000007A4) A/D Conversion Data Operation Control A Register + * 26 */ + + struct + { + uint32_t : 16; + __IOM uint32_t GAINSEL : 4; /*!< [19..16] User Gain Table Selection */ + uint32_t : 4; + __IOM uint32_t OFSETSEL : 4; /*!< [27..24] User Offset Table Selection */ + uint32_t : 4; + } ADDOPCRA26_b; + }; + + union + { + __IOM uint32_t ADDOPCRB26; /*!< (@ 0x000007A8) A/D Conversion Data Operation Control B Register + * 26 */ + + struct + { + __IOM uint32_t AVEMD : 2; /*!< [1..0] Addition/Averaging Mode Selection */ + uint32_t : 6; + __IOM uint32_t ADC : 4; /*!< [11..8] Addition/Averaging Times Selection */ + uint32_t : 4; + __IOM uint32_t CMPTBLEm : 8; /*!< [23..16] Compare Match Enable */ + uint32_t : 8; + } ADDOPCRB26_b; + }; + + union + { + __IOM uint32_t ADDOPCRC26; /*!< (@ 0x000007AC) A/D Conversion Data Operation Control C Register + * 26 */ + + struct + { + __IOM uint32_t LIMTBLS : 4; /*!< [3..0] Limiter Clip Table Selection */ + uint32_t : 12; + __IOM uint32_t ADPRC : 2; /*!< [17..16] A/D Conversion Data Format Selection */ + uint32_t : 2; + __IOM uint32_t SIGNSEL : 1; /*!< [20..20] TBD */ + uint32_t : 11; + } ADDOPCRC26_b; + }; + + union + { + __IOM uint32_t ADCHCR27; /*!< (@ 0x000007B0) A/D Conversion Channel Configuration Register + * 27 */ + + struct + { + __IOM uint32_t SGSEL : 5; /*!< [4..0] Scan Group Selection */ + uint32_t : 3; + __IOM uint32_t CNVCS : 7; /*!< [14..8] A/D Conversion Channel Selection */ + __IOM uint32_t AINMD : 1; /*!< [15..15] Analog Input mode selection */ + __IOM uint32_t SSTSEL : 4; /*!< [19..16] Sampling State Table Selection */ + uint32_t : 12; + } ADCHCR27_b; + }; + + union + { + __IOM uint32_t ADDOPCRA27; /*!< (@ 0x000007B4) A/D Conversion Data Operation Control A Register + * 27 */ + + struct + { + uint32_t : 16; + __IOM uint32_t GAINSEL : 4; /*!< [19..16] User Gain Table Selection */ + uint32_t : 4; + __IOM uint32_t OFSETSEL : 4; /*!< [27..24] User Offset Table Selection */ + uint32_t : 4; + } ADDOPCRA27_b; + }; + + union + { + __IOM uint32_t ADDOPCRB27; /*!< (@ 0x000007B8) A/D Conversion Data Operation Control B Register + * 27 */ + + struct + { + __IOM uint32_t AVEMD : 2; /*!< [1..0] Addition/Averaging Mode Selection */ + uint32_t : 6; + __IOM uint32_t ADC : 4; /*!< [11..8] Addition/Averaging Times Selection */ + uint32_t : 4; + __IOM uint32_t CMPTBLEm : 8; /*!< [23..16] Compare Match Enable */ + uint32_t : 8; + } ADDOPCRB27_b; + }; + + union + { + __IOM uint32_t ADDOPCRC27; /*!< (@ 0x000007BC) A/D Conversion Data Operation Control C Register + * 27 */ + + struct + { + __IOM uint32_t LIMTBLS : 4; /*!< [3..0] Limiter Clip Table Selection */ + uint32_t : 12; + __IOM uint32_t ADPRC : 2; /*!< [17..16] A/D Conversion Data Format Selection */ + uint32_t : 2; + __IOM uint32_t SIGNSEL : 1; /*!< [20..20] TBD */ + uint32_t : 11; + } ADDOPCRC27_b; + }; + + union + { + __IOM uint32_t ADCHCR28; /*!< (@ 0x000007C0) A/D Conversion Channel Configuration Register + * 28 */ + + struct + { + __IOM uint32_t SGSEL : 5; /*!< [4..0] Scan Group Selection */ + uint32_t : 3; + __IOM uint32_t CNVCS : 7; /*!< [14..8] A/D Conversion Channel Selection */ + __IOM uint32_t AINMD : 1; /*!< [15..15] Analog Input mode selection */ + __IOM uint32_t SSTSEL : 4; /*!< [19..16] Sampling State Table Selection */ + uint32_t : 12; + } ADCHCR28_b; + }; + + union + { + __IOM uint32_t ADDOPCRA28; /*!< (@ 0x000007C4) A/D Conversion Data Operation Control A Register + * 28 */ + + struct + { + uint32_t : 16; + __IOM uint32_t GAINSEL : 4; /*!< [19..16] User Gain Table Selection */ + uint32_t : 4; + __IOM uint32_t OFSETSEL : 4; /*!< [27..24] User Offset Table Selection */ + uint32_t : 4; + } ADDOPCRA28_b; + }; + + union + { + __IOM uint32_t ADDOPCRB28; /*!< (@ 0x000007C8) A/D Conversion Data Operation Control B Register + * 28 */ + + struct + { + __IOM uint32_t AVEMD : 2; /*!< [1..0] Addition/Averaging Mode Selection */ + uint32_t : 6; + __IOM uint32_t ADC : 4; /*!< [11..8] Addition/Averaging Times Selection */ + uint32_t : 4; + __IOM uint32_t CMPTBLEm : 8; /*!< [23..16] Compare Match Enable */ + uint32_t : 8; + } ADDOPCRB28_b; + }; + + union + { + __IOM uint32_t ADDOPCRC28; /*!< (@ 0x000007CC) A/D Conversion Data Operation Control C Register + * 28 */ + + struct + { + __IOM uint32_t LIMTBLS : 4; /*!< [3..0] Limiter Clip Table Selection */ + uint32_t : 12; + __IOM uint32_t ADPRC : 2; /*!< [17..16] A/D Conversion Data Format Selection */ + uint32_t : 2; + __IOM uint32_t SIGNSEL : 1; /*!< [20..20] TBD */ + uint32_t : 11; + } ADDOPCRC28_b; + }; + + union + { + __IOM uint32_t ADCHCR29; /*!< (@ 0x000007D0) A/D Conversion Channel Configuration Register + * 29 */ + + struct + { + __IOM uint32_t SGSEL : 5; /*!< [4..0] Scan Group Selection */ + uint32_t : 3; + __IOM uint32_t CNVCS : 7; /*!< [14..8] A/D Conversion Channel Selection */ + __IOM uint32_t AINMD : 1; /*!< [15..15] Analog Input mode selection */ + __IOM uint32_t SSTSEL : 4; /*!< [19..16] Sampling State Table Selection */ + uint32_t : 12; + } ADCHCR29_b; + }; + + union + { + __IOM uint32_t ADDOPCRA29; /*!< (@ 0x000007D4) A/D Conversion Data Operation Control A Register + * 29 */ + + struct + { + uint32_t : 16; + __IOM uint32_t GAINSEL : 4; /*!< [19..16] User Gain Table Selection */ + uint32_t : 4; + __IOM uint32_t OFSETSEL : 4; /*!< [27..24] User Offset Table Selection */ + uint32_t : 4; + } ADDOPCRA29_b; + }; + + union + { + __IOM uint32_t ADDOPCRB29; /*!< (@ 0x000007D8) A/D Conversion Data Operation Control B Register + * 29 */ + + struct + { + __IOM uint32_t AVEMD : 2; /*!< [1..0] Addition/Averaging Mode Selection */ + uint32_t : 6; + __IOM uint32_t ADC : 4; /*!< [11..8] Addition/Averaging Times Selection */ + uint32_t : 4; + __IOM uint32_t CMPTBLEm : 8; /*!< [23..16] Compare Match Enable */ + uint32_t : 8; + } ADDOPCRB29_b; + }; + + union + { + __IOM uint32_t ADDOPCRC29; /*!< (@ 0x000007DC) A/D Conversion Data Operation Control C Register + * 29 */ + + struct + { + __IOM uint32_t LIMTBLS : 4; /*!< [3..0] Limiter Clip Table Selection */ + uint32_t : 12; + __IOM uint32_t ADPRC : 2; /*!< [17..16] A/D Conversion Data Format Selection */ + uint32_t : 2; + __IOM uint32_t SIGNSEL : 1; /*!< [20..20] TBD */ + uint32_t : 11; + } ADDOPCRC29_b; + }; + + union + { + __IOM uint32_t ADCHCR30; /*!< (@ 0x000007E0) A/D Conversion Channel Configuration Register + * 30 */ + + struct + { + __IOM uint32_t SGSEL : 5; /*!< [4..0] Scan Group Selection */ + uint32_t : 3; + __IOM uint32_t CNVCS : 7; /*!< [14..8] A/D Conversion Channel Selection */ + __IOM uint32_t AINMD : 1; /*!< [15..15] Analog Input mode selection */ + __IOM uint32_t SSTSEL : 4; /*!< [19..16] Sampling State Table Selection */ + uint32_t : 12; + } ADCHCR30_b; + }; + + union + { + __IOM uint32_t ADDOPCRA30; /*!< (@ 0x000007E4) A/D Conversion Data Operation Control A Register + * 30 */ + + struct + { + uint32_t : 16; + __IOM uint32_t GAINSEL : 4; /*!< [19..16] User Gain Table Selection */ + uint32_t : 4; + __IOM uint32_t OFSETSEL : 4; /*!< [27..24] User Offset Table Selection */ + uint32_t : 4; + } ADDOPCRA30_b; + }; + + union + { + __IOM uint32_t ADDOPCRB30; /*!< (@ 0x000007E8) A/D Conversion Data Operation Control B Register + * 30 */ + + struct + { + __IOM uint32_t AVEMD : 2; /*!< [1..0] Addition/Averaging Mode Selection */ + uint32_t : 6; + __IOM uint32_t ADC : 4; /*!< [11..8] Addition/Averaging Times Selection */ + uint32_t : 4; + __IOM uint32_t CMPTBLEm : 8; /*!< [23..16] Compare Match Enable */ + uint32_t : 8; + } ADDOPCRB30_b; + }; + + union + { + __IOM uint32_t ADDOPCRC30; /*!< (@ 0x000007EC) A/D Conversion Data Operation Control C Register + * 30 */ + + struct + { + __IOM uint32_t LIMTBLS : 4; /*!< [3..0] Limiter Clip Table Selection */ + uint32_t : 12; + __IOM uint32_t ADPRC : 2; /*!< [17..16] A/D Conversion Data Format Selection */ + uint32_t : 2; + __IOM uint32_t SIGNSEL : 1; /*!< [20..20] TBD */ + uint32_t : 11; + } ADDOPCRC30_b; + }; + + union + { + __IOM uint32_t ADCHCR31; /*!< (@ 0x000007F0) A/D Conversion Channel Configuration Register + * 31 */ + + struct + { + __IOM uint32_t SGSEL : 5; /*!< [4..0] Scan Group Selection */ + uint32_t : 3; + __IOM uint32_t CNVCS : 7; /*!< [14..8] A/D Conversion Channel Selection */ + __IOM uint32_t AINMD : 1; /*!< [15..15] Analog Input mode selection */ + __IOM uint32_t SSTSEL : 4; /*!< [19..16] Sampling State Table Selection */ + uint32_t : 12; + } ADCHCR31_b; + }; + + union + { + __IOM uint32_t ADDOPCRA31; /*!< (@ 0x000007F4) A/D Conversion Data Operation Control A Register + * 31 */ + + struct + { + uint32_t : 16; + __IOM uint32_t GAINSEL : 4; /*!< [19..16] User Gain Table Selection */ + uint32_t : 4; + __IOM uint32_t OFSETSEL : 4; /*!< [27..24] User Offset Table Selection */ + uint32_t : 4; + } ADDOPCRA31_b; + }; + + union + { + __IOM uint32_t ADDOPCRB31; /*!< (@ 0x000007F8) A/D Conversion Data Operation Control B Register + * 31 */ + + struct + { + __IOM uint32_t AVEMD : 2; /*!< [1..0] Addition/Averaging Mode Selection */ + uint32_t : 6; + __IOM uint32_t ADC : 4; /*!< [11..8] Addition/Averaging Times Selection */ + uint32_t : 4; + __IOM uint32_t CMPTBLEm : 8; /*!< [23..16] Compare Match Enable */ + uint32_t : 8; + } ADDOPCRB31_b; + }; + + union + { + __IOM uint32_t ADDOPCRC31; /*!< (@ 0x000007FC) A/D Conversion Data Operation Control C Register + * 31 */ + + struct + { + __IOM uint32_t LIMTBLS : 4; /*!< [3..0] Limiter Clip Table Selection */ + uint32_t : 12; + __IOM uint32_t ADPRC : 2; /*!< [17..16] A/D Conversion Data Format Selection */ + uint32_t : 2; + __IOM uint32_t SIGNSEL : 1; /*!< [20..20] TBD */ + uint32_t : 11; + } ADDOPCRC31_b; + }; + + union + { + __IOM uint32_t ADCHCR32; /*!< (@ 0x00000800) A/D Conversion Channel Configuration Register + * 32 */ + + struct + { + __IOM uint32_t SGSEL : 5; /*!< [4..0] Scan Group Selection */ + uint32_t : 3; + __IOM uint32_t CNVCS : 7; /*!< [14..8] A/D Conversion Channel Selection */ + __IOM uint32_t AINMD : 1; /*!< [15..15] Analog Input mode selection */ + __IOM uint32_t SSTSEL : 4; /*!< [19..16] Sampling State Table Selection */ + uint32_t : 12; + } ADCHCR32_b; + }; + + union + { + __IOM uint32_t ADDOPCRA32; /*!< (@ 0x00000804) A/D Conversion Data Operation Control A Register + * 32 */ + + struct + { + uint32_t : 16; + __IOM uint32_t GAINSEL : 4; /*!< [19..16] User Gain Table Selection */ + uint32_t : 4; + __IOM uint32_t OFSETSEL : 4; /*!< [27..24] User Offset Table Selection */ + uint32_t : 4; + } ADDOPCRA32_b; + }; + + union + { + __IOM uint32_t ADDOPCRB32; /*!< (@ 0x00000808) A/D Conversion Data Operation Control B Register + * 32 */ + + struct + { + __IOM uint32_t AVEMD : 2; /*!< [1..0] Addition/Averaging Mode Selection */ + uint32_t : 6; + __IOM uint32_t ADC : 4; /*!< [11..8] Addition/Averaging Times Selection */ + uint32_t : 4; + __IOM uint32_t CMPTBLEm : 8; /*!< [23..16] Compare Match Enable */ + uint32_t : 8; + } ADDOPCRB32_b; + }; + + union + { + __IOM uint32_t ADDOPCRC32; /*!< (@ 0x0000080C) A/D Conversion Data Operation Control C Register + * 32 */ + + struct + { + __IOM uint32_t LIMTBLS : 4; /*!< [3..0] Limiter Clip Table Selection */ + uint32_t : 12; + __IOM uint32_t ADPRC : 2; /*!< [17..16] A/D Conversion Data Format Selection */ + uint32_t : 2; + __IOM uint32_t SIGNSEL : 1; /*!< [20..20] TBD */ + uint32_t : 11; + } ADDOPCRC32_b; + }; + + union + { + __IOM uint32_t ADCHCR33; /*!< (@ 0x00000810) A/D Conversion Channel Configuration Register + * 33 */ + + struct + { + __IOM uint32_t SGSEL : 5; /*!< [4..0] Scan Group Selection */ + uint32_t : 3; + __IOM uint32_t CNVCS : 7; /*!< [14..8] A/D Conversion Channel Selection */ + __IOM uint32_t AINMD : 1; /*!< [15..15] Analog Input mode selection */ + __IOM uint32_t SSTSEL : 4; /*!< [19..16] Sampling State Table Selection */ + uint32_t : 12; + } ADCHCR33_b; + }; + + union + { + __IOM uint32_t ADDOPCRA33; /*!< (@ 0x00000814) A/D Conversion Data Operation Control A Register + * 33 */ + + struct + { + uint32_t : 16; + __IOM uint32_t GAINSEL : 4; /*!< [19..16] User Gain Table Selection */ + uint32_t : 4; + __IOM uint32_t OFSETSEL : 4; /*!< [27..24] User Offset Table Selection */ + uint32_t : 4; + } ADDOPCRA33_b; + }; + + union + { + __IOM uint32_t ADDOPCRB33; /*!< (@ 0x00000818) A/D Conversion Data Operation Control B Register + * 33 */ + + struct + { + __IOM uint32_t AVEMD : 2; /*!< [1..0] Addition/Averaging Mode Selection */ + uint32_t : 6; + __IOM uint32_t ADC : 4; /*!< [11..8] Addition/Averaging Times Selection */ + uint32_t : 4; + __IOM uint32_t CMPTBLEm : 8; /*!< [23..16] Compare Match Enable */ + uint32_t : 8; + } ADDOPCRB33_b; + }; + + union + { + __IOM uint32_t ADDOPCRC33; /*!< (@ 0x0000081C) A/D Conversion Data Operation Control C Register + * 33 */ + + struct + { + __IOM uint32_t LIMTBLS : 4; /*!< [3..0] Limiter Clip Table Selection */ + uint32_t : 12; + __IOM uint32_t ADPRC : 2; /*!< [17..16] A/D Conversion Data Format Selection */ + uint32_t : 2; + __IOM uint32_t SIGNSEL : 1; /*!< [20..20] TBD */ + uint32_t : 11; + } ADDOPCRC33_b; + }; + + union + { + __IOM uint32_t ADCHCR34; /*!< (@ 0x00000820) A/D Conversion Channel Configuration Register + * 34 */ + + struct + { + __IOM uint32_t SGSEL : 5; /*!< [4..0] Scan Group Selection */ + uint32_t : 3; + __IOM uint32_t CNVCS : 7; /*!< [14..8] A/D Conversion Channel Selection */ + __IOM uint32_t AINMD : 1; /*!< [15..15] Analog Input mode selection */ + __IOM uint32_t SSTSEL : 4; /*!< [19..16] Sampling State Table Selection */ + uint32_t : 12; + } ADCHCR34_b; + }; + + union + { + __IOM uint32_t ADDOPCRA34; /*!< (@ 0x00000824) A/D Conversion Data Operation Control A Register + * 34 */ + + struct + { + uint32_t : 16; + __IOM uint32_t GAINSEL : 4; /*!< [19..16] User Gain Table Selection */ + uint32_t : 4; + __IOM uint32_t OFSETSEL : 4; /*!< [27..24] User Offset Table Selection */ + uint32_t : 4; + } ADDOPCRA34_b; + }; + + union + { + __IOM uint32_t ADDOPCRB34; /*!< (@ 0x00000828) A/D Conversion Data Operation Control B Register + * 34 */ + + struct + { + __IOM uint32_t AVEMD : 2; /*!< [1..0] Addition/Averaging Mode Selection */ + uint32_t : 6; + __IOM uint32_t ADC : 4; /*!< [11..8] Addition/Averaging Times Selection */ + uint32_t : 4; + __IOM uint32_t CMPTBLEm : 8; /*!< [23..16] Compare Match Enable */ + uint32_t : 8; + } ADDOPCRB34_b; + }; + + union + { + __IOM uint32_t ADDOPCRC34; /*!< (@ 0x0000082C) A/D Conversion Data Operation Control C Register + * 34 */ + + struct + { + __IOM uint32_t LIMTBLS : 4; /*!< [3..0] Limiter Clip Table Selection */ + uint32_t : 12; + __IOM uint32_t ADPRC : 2; /*!< [17..16] A/D Conversion Data Format Selection */ + uint32_t : 2; + __IOM uint32_t SIGNSEL : 1; /*!< [20..20] TBD */ + uint32_t : 11; + } ADDOPCRC34_b; + }; + + union + { + __IOM uint32_t ADCHCR35; /*!< (@ 0x00000830) A/D Conversion Channel Configuration Register + * 35 */ + + struct + { + __IOM uint32_t SGSEL : 5; /*!< [4..0] Scan Group Selection */ + uint32_t : 3; + __IOM uint32_t CNVCS : 7; /*!< [14..8] A/D Conversion Channel Selection */ + __IOM uint32_t AINMD : 1; /*!< [15..15] Analog Input mode selection */ + __IOM uint32_t SSTSEL : 4; /*!< [19..16] Sampling State Table Selection */ + uint32_t : 12; + } ADCHCR35_b; + }; + + union + { + __IOM uint32_t ADDOPCRA35; /*!< (@ 0x00000834) A/D Conversion Data Operation Control A Register + * 35 */ + + struct + { + uint32_t : 16; + __IOM uint32_t GAINSEL : 4; /*!< [19..16] User Gain Table Selection */ + uint32_t : 4; + __IOM uint32_t OFSETSEL : 4; /*!< [27..24] User Offset Table Selection */ + uint32_t : 4; + } ADDOPCRA35_b; + }; + + union + { + __IOM uint32_t ADDOPCRB35; /*!< (@ 0x00000838) A/D Conversion Data Operation Control B Register + * 35 */ + + struct + { + __IOM uint32_t AVEMD : 2; /*!< [1..0] Addition/Averaging Mode Selection */ + uint32_t : 6; + __IOM uint32_t ADC : 4; /*!< [11..8] Addition/Averaging Times Selection */ + uint32_t : 4; + __IOM uint32_t CMPTBLEm : 8; /*!< [23..16] Compare Match Enable */ + uint32_t : 8; + } ADDOPCRB35_b; + }; + + union + { + __IOM uint32_t ADDOPCRC35; /*!< (@ 0x0000083C) A/D Conversion Data Operation Control C Register + * 35 */ + + struct + { + __IOM uint32_t LIMTBLS : 4; /*!< [3..0] Limiter Clip Table Selection */ + uint32_t : 12; + __IOM uint32_t ADPRC : 2; /*!< [17..16] A/D Conversion Data Format Selection */ + uint32_t : 2; + __IOM uint32_t SIGNSEL : 1; /*!< [20..20] TBD */ + uint32_t : 11; + } ADDOPCRC35_b; + }; + + union + { + __IOM uint32_t ADCHCR36; /*!< (@ 0x00000840) A/D Conversion Channel Configuration Register + * 36 */ + + struct + { + __IOM uint32_t SGSEL : 5; /*!< [4..0] Scan Group Selection */ + uint32_t : 3; + __IOM uint32_t CNVCS : 7; /*!< [14..8] A/D Conversion Channel Selection */ + __IOM uint32_t AINMD : 1; /*!< [15..15] Analog Input mode selection */ + __IOM uint32_t SSTSEL : 4; /*!< [19..16] Sampling State Table Selection */ + uint32_t : 12; + } ADCHCR36_b; + }; + + union + { + __IOM uint32_t ADDOPCRA36; /*!< (@ 0x00000844) A/D Conversion Data Operation Control A Register + * 36 */ + + struct + { + uint32_t : 16; + __IOM uint32_t GAINSEL : 4; /*!< [19..16] User Gain Table Selection */ + uint32_t : 4; + __IOM uint32_t OFSETSEL : 4; /*!< [27..24] User Offset Table Selection */ + uint32_t : 4; + } ADDOPCRA36_b; + }; + + union + { + __IOM uint32_t ADDOPCRB36; /*!< (@ 0x00000848) A/D Conversion Data Operation Control B Register + * 36 */ + + struct + { + __IOM uint32_t AVEMD : 2; /*!< [1..0] Addition/Averaging Mode Selection */ + uint32_t : 6; + __IOM uint32_t ADC : 4; /*!< [11..8] Addition/Averaging Times Selection */ + uint32_t : 4; + __IOM uint32_t CMPTBLEm : 8; /*!< [23..16] Compare Match Enable */ + uint32_t : 8; + } ADDOPCRB36_b; + }; + + union + { + __IOM uint32_t ADDOPCRC36; /*!< (@ 0x0000084C) A/D Conversion Data Operation Control C Register + * 36 */ + + struct + { + __IOM uint32_t LIMTBLS : 4; /*!< [3..0] Limiter Clip Table Selection */ + uint32_t : 12; + __IOM uint32_t ADPRC : 2; /*!< [17..16] A/D Conversion Data Format Selection */ + uint32_t : 2; + __IOM uint32_t SIGNSEL : 1; /*!< [20..20] TBD */ + uint32_t : 11; + } ADDOPCRC36_b; + }; + __IM uint32_t RESERVED28[236]; + + union + { + __OM uint32_t ADCALSTR; /*!< (@ 0x00000C00) A/D Converter Calibration Start Register */ + + struct + { + __OM uint32_t ADCALST0 : 3; /*!< [2..0] A/D Converter Unit 0 (ADC0) Calibration Start Control + * bits */ + uint32_t : 5; + __OM uint32_t ADCALST1 : 3; /*!< [10..8] A/D Converter Unit 1 (ADC1) Calibration Start Control + * bits */ + uint32_t : 21; + } ADCALSTR_b; + }; + __IM uint32_t RESERVED29; + + union + { + __IOM uint32_t ADTRGENR; /*!< (@ 0x00000C08) A/D Conversion Start Trigger Enable Register */ + + struct + { + __IOM uint32_t STTRGENn : 9; /*!< [8..0] Scan Group n A/D Conversion Start Trigger Enable */ + uint32_t : 23; + } ADTRGENR_b; + }; + __IM uint32_t RESERVED30; + + union + { + __OM uint32_t ADSYSTR; /*!< (@ 0x00000C10) A/D Conversion Synchronous Software Start Register */ + + struct + { + __OM uint32_t ADSYSTn : 9; /*!< [8..0] Scan Group n : A/D Conversion start */ + uint32_t : 23; + } ADSYSTR_b; + }; + __IM uint32_t RESERVED31[3]; + + union + { + __OM uint32_t ADSTR[9]; /*!< (@ 0x00000C20) A/D Conversion Software Start Register [0..8] */ + + struct + { + __OM uint32_t ADST : 1; /*!< [0..0] Scan Group n A/D Conversion Start */ + uint32_t : 31; + } ADSTR_b[9]; + }; + __IM uint32_t RESERVED32[7]; + + union + { + __OM uint32_t ADSTOPR; /*!< (@ 0x00000C60) A/D Conversion Stop Register */ + + struct + { + __OM uint32_t ADSTOP0 : 1; /*!< [0..0] A/D Converter Unit 0 Force Stop bit */ + uint32_t : 7; + __OM uint32_t ADSTOP1 : 1; /*!< [8..8] A/D Converter Unit 1 Force Stop bit */ + uint32_t : 23; + } ADSTOPR_b; + }; + __IM uint32_t RESERVED33[7]; + + union + { + __IM uint32_t ADSR; /*!< (@ 0x00000C80) A/D Conversion Status Register */ + + struct + { + __IM uint32_t ADACT0 : 1; /*!< [0..0] A/D Converter Unit 0 (ADC0) A/D Conversion Status */ + __IM uint32_t ADACT1 : 1; /*!< [1..1] A/D Converter Unit 1 (ADC1) A/D Conversion Status */ + uint32_t : 14; + __IM uint32_t CALACT0 : 1; /*!< [16..16] A/D Converter Unit 0 (ADC0) : Calibration Status */ + __IM uint32_t CALACT1 : 1; /*!< [17..17] A/D Converter Unit 1 (ADC1) : Calibration Status */ + uint32_t : 14; + } ADSR_b; + }; + + union + { + __IM uint32_t ADGRSR; /*!< (@ 0x00000C84) Scan Group Status Register */ + + struct + { + __IM uint32_t ACTGRn : 9; /*!< [8..0] Scan Group n Status */ + uint32_t : 23; + } ADGRSR_b; + }; + + union + { + __IM uint32_t ADERSR; /*!< (@ 0x00000C88) A/D Conversion Error Status Register */ + + struct + { + __IM uint32_t ADERF0 : 1; /*!< [0..0] A/D Converter Unit 0 (ADC0) Error Flag */ + __IM uint32_t ADERF1 : 1; /*!< [1..1] A/D Converter Unit 1 (ADC1) Error Flag */ + uint32_t : 30; + } ADERSR_b; + }; + + union + { + __OM uint32_t ADERSCR; /*!< (@ 0x00000C8C) A/D Conversion Error Status Clear Register */ + + struct + { + __OM uint32_t ADERCLR0 : 1; /*!< [0..0] A/D Converter Unit 0 Error Flag Clear */ + __OM uint32_t ADERCLR1 : 1; /*!< [1..1] A/D Converter Unit 1 Error Flag Clear */ + uint32_t : 30; + } ADERSCR_b; + }; + __IM uint32_t RESERVED34[2]; + + union + { + __IM uint32_t ADCALENDSR; /*!< (@ 0x00000C98) A/D Converter Calibration End Status Register */ + + struct + { + __IM uint32_t CALENDF0 : 1; /*!< [0..0] A/D Converter Unit 0 Calibration End flag */ + __IM uint32_t CALENDF1 : 1; /*!< [1..1] A/D Converter Unit 1 Calibration End flag */ + uint32_t : 30; + } ADCALENDSR_b; + }; + + union + { + __OM uint32_t ADCALENDSCR; /*!< (@ 0x00000C9C) A/D Converter Calibration End Status Clear Register */ + + struct + { + __OM uint32_t CALENDC0 : 1; /*!< [0..0] A/D Converter Unit 0 Calibration End Flag Clear */ + __OM uint32_t CALENDC1 : 1; /*!< [1..1] A/D Converter Unit 1 Calibration End Flag Clear */ + uint32_t : 30; + } ADCALENDSCR_b; + }; + + union + { + __IM uint32_t ADOVFERSR; /*!< (@ 0x00000CA0) A/D Conversion Overflow Error Status Register */ + + struct + { + __IM uint32_t ADOVFEF0 : 1; /*!< [0..0] A/D Converter Unit 0 (ADC0) Overflow Error Flag */ + __IM uint32_t ADOVFEF1 : 1; /*!< [1..1] A/D Converter Unit 1 (ADC1) Overflow Error Flag */ + uint32_t : 30; + } ADOVFERSR_b; + }; + + union + { + __IM uint32_t ADOVFCHSR0; /*!< (@ 0x00000CA4) A/D Conversion Overflow Channel Status Register + * 0 */ + + struct + { + __IM uint32_t OFVCHFn : 29; /*!< [28..0] Analog Input Channel No. n : Overflow Flag */ + uint32_t : 3; + } ADOVFCHSR0_b; + }; + __IM uint32_t RESERVED35[2]; + + union + { + __IM uint32_t ADOVFEXSR; /*!< (@ 0x00000CB0) Extended Analog A/D Conversion Overflow Status + * Register */ + + struct + { + __IM uint32_t OVFEXF0 : 1; /*!< [0..0] Self-Diagnosis Channel : Overflow Flag bit */ + __IM uint32_t OVFEXF1 : 1; /*!< [1..1] Temperature Sensor Channel : Overflow Flag bit */ + __IM uint32_t OVFEXF2 : 1; /*!< [2..2] Internal Reference Voltage Channel : Overflow Flag bit */ + uint32_t : 2; + __IM uint32_t OVFEXF5 : 1; /*!< [5..5] D/A Converter 0 Channel : Overflow Flag bit */ + __IM uint32_t OVFEXF6 : 1; /*!< [6..6] D/A Converter 1 Channel : Overflow Flag bit */ + __IM uint32_t OVFEXF7 : 1; /*!< [7..7] D/A Converter 2 Channel : Overflow Flag bit */ + __IM uint32_t OVFEXF8 : 1; /*!< [8..8] D/A Converter 3 Channel : Overflow Flag bit */ + uint32_t : 23; + } ADOVFEXSR_b; + }; + + union + { + __OM uint32_t ADOVFERSCR; /*!< (@ 0x00000CB4) A/D Conversion Overflow Error Status Clear Register */ + + struct + { + __OM uint32_t ADOVFEC0 : 1; /*!< [0..0] A/D Converter Unit 0 (ADC0) Overflow Error Flag Clear */ + __OM uint32_t ADOVFEC1 : 1; /*!< [1..1] A/D Converter Unit 1 (ADC1) Overflow Error Flag Clear */ + uint32_t : 30; + } ADOVFERSCR_b; + }; + + union + { + __OM uint32_t ADOVFCHSCR0; /*!< (@ 0x00000CB8) A/D Conversion Overflow Channel Status Clear + * Register 0 */ + + struct + { + __OM uint32_t OVFCHCn : 29; /*!< [28..0] Analog Input Channel No. n : Overflow Flag Clear */ + uint32_t : 3; + } ADOVFCHSCR0_b; + }; + __IM uint32_t RESERVED36[2]; + + union + { + __OM uint32_t ADOVFEXSCR; /*!< (@ 0x00000CC4) Extended Analog A/D Conversion Overflow Status + * Clear Register */ + + struct + { + __OM uint32_t OVFEXC0 : 1; /*!< [0..0] Self-Diagnosis Channel : Overflow Flag Clear */ + __OM uint32_t OVFEXC1 : 1; /*!< [1..1] Temperature Sensor Channel : Overflow Flag Clear */ + __OM uint32_t OVFEXC2 : 1; /*!< [2..2] Internal Reference Voltage Channel : Overflow Flag Clear */ + uint32_t : 2; + __OM uint32_t OVFEXC5 : 1; /*!< [5..5] D/A Converter 0 Channel : Overflow Flag Clear */ + __OM uint32_t OVFEXC6 : 1; /*!< [6..6] D/A Converter 1 Channel : Overflow Flag Clear */ + __OM uint32_t OVFEXC7 : 1; /*!< [7..7] D/A Converter 2 Channel : Overflow Flag Clear */ + __OM uint32_t OVFEXC8 : 1; /*!< [8..8] D/A Converter 3 Channel : Overflow Flag Clear */ + uint32_t : 23; + } ADOVFEXSCR_b; + }; + __IM uint32_t RESERVED37[2]; + + union + { + __IM uint32_t ADFIFOSR0; /*!< (@ 0x00000CD0) FIFO Status Register 0 */ + + struct + { + __IM uint32_t FIFOST0 : 4; /*!< [3..0] Number of Available Stages in FIFO for Scan Group 0 */ + uint32_t : 12; + __IM uint32_t FIFOST1 : 4; /*!< [19..16] Number of Available Stages in FIFO for Scan Group 1 */ + uint32_t : 12; + } ADFIFOSR0_b; + }; + + union + { + __IM uint32_t ADFIFOSR1; /*!< (@ 0x00000CD4) FIFO Status Register 1 */ + + struct + { + __IM uint32_t FIFOST2 : 4; /*!< [3..0] Number of Available Stages in FIFO for Scan Group 2 */ + uint32_t : 12; + __IM uint32_t FIFOST3 : 4; /*!< [19..16] Number of Available Stages in FIFO for Scan Group 3 */ + uint32_t : 12; + } ADFIFOSR1_b; + }; + + union + { + __IM uint32_t ADFIFOSR2; /*!< (@ 0x00000CD8) FIFO Status Register 2 */ + + struct + { + __IM uint32_t FIFOST4 : 4; /*!< [3..0] Number of Available Stages in FIFO for Scan Group 4 */ + uint32_t : 12; + __IM uint32_t FIFOST5 : 4; /*!< [19..16] Number of Available Stages in FIFO for Scan Group 5 */ + uint32_t : 12; + } ADFIFOSR2_b; + }; + + union + { + __IM uint32_t ADFIFOSR3; /*!< (@ 0x00000CDC) FIFO Status Register 3 */ + + struct + { + __IM uint32_t FIFOST6 : 4; /*!< [3..0] Number of Available Stages in FIFO for Scan Group 6 */ + uint32_t : 12; + __IM uint32_t FIFOST7 : 4; /*!< [19..16] Number of Available Stages in FIFO for Scan Group 7 */ + uint32_t : 12; + } ADFIFOSR3_b; + }; + + union + { + __IM uint32_t ADFIFOSR4; /*!< (@ 0x00000CE0) FIFO Status Register 4 */ + + struct + { + __IM uint32_t FIFOST8 : 4; /*!< [3..0] Number of Available Stages in FIFO for Scan Group 8 */ + uint32_t : 28; + } ADFIFOSR4_b; + }; + __IM uint32_t RESERVED38[3]; + + union + { + __OM uint32_t ADFIFODCR; /*!< (@ 0x00000CF0) FIFO Data Clear Register */ + + struct + { + __OM uint32_t FIFODCn : 9; /*!< [8..0] Scan Group n FIFO Data Clear */ + uint32_t : 23; + } ADFIFODCR_b; + }; + + union + { + __IM uint32_t ADFIFOERSR; /*!< (@ 0x00000CF4) FIFO Error Status Register */ + + struct + { + __IM uint32_t FIFOOVFn : 9; /*!< [8..0] Scan Group n FIFO Overflow Flag */ + uint32_t : 7; + __IM uint32_t FIFOFLFn : 9; /*!< [24..16] Scan Group n FIFO Data Full Flag */ + uint32_t : 7; + } ADFIFOERSR_b; + }; + + union + { + __OM uint32_t ADFIFOERSCR; /*!< (@ 0x00000CF8) FIFO Error Status Clear Register */ + + struct + { + __OM uint32_t FIFOOVFCn : 9; /*!< [8..0] Scan Group n FIFO Overflow Flag Clear */ + uint32_t : 7; + __OM uint32_t FIFOFLCn : 9; /*!< [24..16] Scan Group n FIFO Data Full Flag Clear */ + uint32_t : 7; + } ADFIFOERSCR_b; + }; + __IM uint32_t RESERVED39; + + union + { + __IM uint32_t ADCMPTBSR; /*!< (@ 0x00000D00) Compare Match Table Status Register */ + + struct + { + __IM uint32_t CMPTBFn : 8; /*!< [7..0] Compare Match Table n Match Flag */ + uint32_t : 24; + } ADCMPTBSR_b; + }; + + union + { + __OM uint32_t ADCMPTBSCR; /*!< (@ 0x00000D04) Compare Match Table Status Clear Register */ + + struct + { + __OM uint32_t CMPTBCn : 8; /*!< [7..0] Compare Match Table n : Match Flag Clear */ + uint32_t : 24; + } ADCMPTBSCR_b; + }; + + union + { + __IM uint32_t ADCMPCHSR0; /*!< (@ 0x00000D08) Compare Match Channel Status Register 0 */ + + struct + { + __IM uint32_t CMPCHFn : 29; /*!< [28..0] Analog Channel No. n : Compare Match Flag */ + uint32_t : 3; + } ADCMPCHSR0_b; + }; + __IM uint32_t RESERVED40[2]; + + union + { + __IM uint32_t ADCMPEXSR; /*!< (@ 0x00000D14) Extended Analog Compare Match Status Register */ + + struct + { + __IM uint32_t CMPEXF0 : 1; /*!< [0..0] Self-Diagnosis Channel : Compare Match Flag */ + __IM uint32_t CMPEXF1 : 1; /*!< [1..1] Temperature Sensor Channel : Compare Match Flag */ + __IM uint32_t CMPEXF2 : 1; /*!< [2..2] Internal Reference Voltage Channel : Compare Match Flag */ + uint32_t : 2; + __IM uint32_t CMPEXF5 : 1; /*!< [5..5] D/A Converter 0 Channel : Compare Match Flag */ + __IM uint32_t CMPEXF6 : 1; /*!< [6..6] D/A Converter 1 Channel : Compare Match Flag */ + __IM uint32_t CMPEXF7 : 1; /*!< [7..7] D/A Converter 2 Channel : Compare Match Flag */ + __IM uint32_t CMPEXF8 : 1; /*!< [8..8] D/A Converter 3 Channel : Compare Match Flag */ + uint32_t : 23; + } ADCMPEXSR_b; + }; + + union + { + __OM uint32_t ADCMPCHSCR0; /*!< (@ 0x00000D18) Compare Match Channel Status Clear Register 0 */ + + struct + { + __OM uint32_t CMPCHCn : 29; /*!< [28..0] Analog Channel No. n : Compare Match Flag Clear bit */ + uint32_t : 3; + } ADCMPCHSCR0_b; + }; + __IM uint32_t RESERVED41[2]; + + union + { + __OM uint32_t ADCMPEXSCR; /*!< (@ 0x00000D24) Extended Analog Compare Match Status Clear Register */ + + struct + { + __OM uint32_t CMPEXC0 : 1; /*!< [0..0] Self-Diagnosis Channel : Compare Match Flag Clear bit */ + __OM uint32_t CMPEXC1 : 1; /*!< [1..1] Temperature Sensor Channel : Compare Match Flag Clear + * bit */ + __OM uint32_t CMPEXC2 : 1; /*!< [2..2] Internal Reference Voltage Channel : Compare Match Flag + * Clear bit */ + uint32_t : 2; + __OM uint32_t CMPEXC5 : 1; /*!< [5..5] D/A Converter 0 Channel : Compare Match Flag Clear bit */ + __OM uint32_t CMPEXC6 : 1; /*!< [6..6] D/A Converter 1 Channel : Compare Match Flag Clear bit */ + __OM uint32_t CMPEXC7 : 1; /*!< [7..7] D/A Converter 2 Channel : Compare Match Flag Clear bit */ + __OM uint32_t CMPEXC8 : 1; /*!< [8..8] D/A Converter 3 Channel : Compare Match Flag Clear bit */ + uint32_t : 23; + } ADCMPEXSCR_b; + }; + + union + { + __IM uint32_t ADLIMGRSR; /*!< (@ 0x00000D28) Limiter Clip Scan Group Status Register */ + + struct + { + __IM uint32_t LIMGRFn : 9; /*!< [8..0] Scan Group n Limiter Clip Flag */ + uint32_t : 23; + } ADLIMGRSR_b; + }; + + union + { + __IM uint32_t ADLIMCHSR0; /*!< (@ 0x00000D2C) Limiter Clip Channel Status Register 0 */ + + struct + { + __IM uint32_t LIMCHFn : 29; /*!< [28..0] Analog Channel No. n : Limiter Clip Flag bit */ + uint32_t : 3; + } ADLIMCHSR0_b; + }; + __IM uint32_t RESERVED42[2]; + + union + { + __IM uint32_t ADLIMEXSR; /*!< (@ 0x00000D38) Extended Analog Limiter Clip Status Register */ + + struct + { + __IM uint32_t LIMEXF0 : 1; /*!< [0..0] Self-Diagnosis Channel : Limiter Clip Flag bit */ + __IM uint32_t LIMEXF1 : 1; /*!< [1..1] Temperature Sensor Channel : Limiter Clip Flag bit */ + __IM uint32_t LIMEXF2 : 1; /*!< [2..2] Internal Reference Voltage Channel : Limiter Clip Flag + * bit */ + uint32_t : 2; + __IM uint32_t LIMEXF5 : 1; /*!< [5..5] D/A Converter 0 Channel : Limiter Clip Flag bit */ + __IM uint32_t LIMEXF6 : 1; /*!< [6..6] D/A Converter 1 Channel : Limiter Clip Flag bit */ + __IM uint32_t LIMEXF7 : 1; /*!< [7..7] D/A Converter 2 Channel : Limiter Clip Flag bit */ + __IM uint32_t LIMEXF8 : 1; /*!< [8..8] D/A Converter 3 Channel : Limiter Clip Flag bit */ + uint32_t : 23; + } ADLIMEXSR_b; + }; + + union + { + __OM uint32_t ADLIMGRSCR; /*!< (@ 0x00000D3C) Limiter Clip Scan Group Status Clear Register */ + + struct + { + __OM uint32_t LIMGRCn : 9; /*!< [8..0] Scan Group n Limiter Clip Flag Clear */ + uint32_t : 23; + } ADLIMGRSCR_b; + }; + + union + { + __OM uint32_t ADLIMCHSCR0; /*!< (@ 0x00000D40) Limiter Clip Channel Status Clear Register 0 */ + + struct + { + __OM uint32_t LIMCHCn : 29; /*!< [28..0] Analog Channel No. n Limiter Clip Flag Clear bit */ + uint32_t : 3; + } ADLIMCHSCR0_b; + }; + __IM uint32_t RESERVED43[2]; + + union + { + __OM uint32_t ADLIMEXSCR; /*!< (@ 0x00000D4C) Extended Analog Limiter Clip Status Clear Register */ + + struct + { + __OM uint32_t LIMEXF0 : 1; /*!< [0..0] Self-Diagnosis Channel : Limiter Clip Flag Clear */ + __OM uint32_t LIMEXF1 : 1; /*!< [1..1] Temperature Sensor Channel : Limiter Clip Flag Clear */ + __OM uint32_t LIMEXF2 : 1; /*!< [2..2] Internal Reference Voltage Channel : Limiter Clip Flag + * Clear */ + uint32_t : 2; + __OM uint32_t LIMEXF5 : 1; /*!< [5..5] D/A Converter 0 Channel : Limiter Clip Flag Clear */ + __OM uint32_t LIMEXF6 : 1; /*!< [6..6] D/A Converter 1 Channel : Limiter Clip Flag Clear */ + __OM uint32_t LIMEXF7 : 1; /*!< [7..7] D/A Converter 2 Channel : Limiter Clip Flag Clear */ + __OM uint32_t LIMEXF8 : 1; /*!< [8..8] D/A Converter 3 Channel : Limiter Clip Flag Clear */ + uint32_t : 23; + } ADLIMEXSCR_b; + }; + + union + { + __IM uint32_t ADSCANENDSR; /*!< (@ 0x00000D50) Scan End Status Register */ + + struct + { + __IM uint32_t SCENDFn : 9; /*!< [8..0] Scan Group n Scan End Flag */ + uint32_t : 23; + } ADSCANENDSR_b; + }; + + union + { + __OM uint32_t ADSCANENDSCR; /*!< (@ 0x00000D54) Scan End Status Clear Register */ + + struct + { + __OM uint32_t SCENDCn : 9; /*!< [8..0] Scan Group n Scan End Flag Clear */ + uint32_t : 23; + } ADSCANENDSCR_b; + }; + __IM uint32_t RESERVED44[170]; + + union + { + __IM uint32_t ADDR[29]; /*!< (@ 0x00001000) A/D Data Register [0..28] */ + + struct + { + __IM uint32_t DATA : 16; /*!< [15..0] A/D conversion data */ + uint32_t : 15; + __IM uint32_t ERR : 1; /*!< [31..31] A/D conversion data error status */ + } ADDR_b[29]; + }; + __IM uint32_t RESERVED45[67]; + + union + { + __IM uint32_t ADEXDR[9]; /*!< (@ 0x00001180) A/D Extended Analog Data Register [0..8] */ + + struct + { + __IM uint32_t DATA : 16; /*!< [15..0] A/D conversion data */ + uint32_t : 8; + __IM uint32_t DIAGSR : 3; /*!< [26..24] Self-Diagnosis Status */ + uint32_t : 4; + __IM uint32_t ERR : 1; /*!< [31..31] A/D Conversion Error Status */ + } ADEXDR_b[9]; + }; + __IM uint32_t RESERVED46[23]; + + union + { + __IM uint32_t ADFIFODR0; /*!< (@ 0x00001200) FIFO Data Register 0 */ + + struct + { + __IM uint32_t DATA : 16; /*!< [15..0] A/D Conversion Data */ + uint32_t : 8; + __IM uint32_t CH : 7; /*!< [30..24] A/D Conversion Channel Number */ + __IM uint32_t ERR : 1; /*!< [31..31] A/D Conversion Data Error Status */ + } ADFIFODR0_b; + }; + + union + { + __IM uint32_t ADFIFODR1; /*!< (@ 0x00001204) FIFO Data Register 1 */ + + struct + { + __IM uint32_t DATA : 16; /*!< [15..0] A/D Conversion Data */ + uint32_t : 8; + __IM uint32_t CH : 7; /*!< [30..24] A/D Conversion Channel Number */ + __IM uint32_t ERR : 1; /*!< [31..31] A/D Conversion Data Error Status */ + } ADFIFODR1_b; + }; + + union + { + __IM uint32_t ADFIFODR2; /*!< (@ 0x00001208) FIFO Data Register 2 */ + + struct + { + __IM uint32_t DATA : 16; /*!< [15..0] A/D Conversion Data */ + uint32_t : 8; + __IM uint32_t CH : 7; /*!< [30..24] A/D Conversion Channel Number */ + __IM uint32_t ERR : 1; /*!< [31..31] A/D Conversion Data Error Status */ + } ADFIFODR2_b; + }; + + union + { + __IM uint32_t ADFIFODR3; /*!< (@ 0x0000120C) FIFO Data Register 3 */ + + struct + { + __IM uint32_t DATA : 16; /*!< [15..0] A/D Conversion Data */ + uint32_t : 8; + __IM uint32_t CH : 7; /*!< [30..24] A/D Conversion Channel Number */ + __IM uint32_t ERR : 1; /*!< [31..31] A/D Conversion Data Error Status */ + } ADFIFODR3_b; + }; + + union + { + __IM uint32_t ADFIFODR4; /*!< (@ 0x00001210) FIFO Data Register 4 */ + + struct + { + __IM uint32_t DATA : 16; /*!< [15..0] A/D Conversion Data */ + uint32_t : 8; + __IM uint32_t CH : 7; /*!< [30..24] A/D Conversion Channel Number */ + __IM uint32_t ERR : 1; /*!< [31..31] A/D Conversion Data Error Status */ + } ADFIFODR4_b; + }; + + union + { + __IM uint32_t ADFIFODR5; /*!< (@ 0x00001214) FIFO Data Register 5 */ + + struct + { + __IM uint32_t DATA : 16; /*!< [15..0] A/D Conversion Data */ + uint32_t : 8; + __IM uint32_t CH : 7; /*!< [30..24] A/D Conversion Channel Number */ + __IM uint32_t ERR : 1; /*!< [31..31] A/D Conversion Data Error Status */ + } ADFIFODR5_b; + }; + + union + { + __IM uint32_t ADFIFODR6; /*!< (@ 0x00001218) FIFO Data Register 6 */ + + struct + { + __IM uint32_t DATA : 16; /*!< [15..0] A/D Conversion Data */ + uint32_t : 8; + __IM uint32_t CH : 7; /*!< [30..24] A/D Conversion Channel Number */ + __IM uint32_t ERR : 1; /*!< [31..31] A/D Conversion Data Error Status */ + } ADFIFODR6_b; + }; + + union + { + __IM uint32_t ADFIFODR7; /*!< (@ 0x0000121C) FIFO Data Register 7 */ + + struct + { + __IM uint32_t DATA : 16; /*!< [15..0] A/D Conversion Data */ + uint32_t : 8; + __IM uint32_t CH : 7; /*!< [30..24] A/D Conversion Channel Number */ + __IM uint32_t ERR : 1; /*!< [31..31] A/D Conversion Data Error Status */ + } ADFIFODR7_b; + }; + + union + { + __IM uint32_t ADFIFODR8; /*!< (@ 0x00001220) FIFO Data Register 8 */ + + struct + { + __IM uint32_t DATA : 16; /*!< [15..0] A/D Conversion Data */ + uint32_t : 8; + __IM uint32_t CH : 7; /*!< [30..24] A/D Conversion Channel Number */ + __IM uint32_t ERR : 1; /*!< [31..31] A/D Conversion Data Error Status */ + } ADFIFODR8_b; + }; +} R_ADC_B0_Type; /*!< Size = 4644 (0x1224) */ + +/* =========================================================================================================================== */ +/* ================ R_DOC_B ================ */ +/* =========================================================================================================================== */ + +/** + * @brief Data Operation Circuit (R_DOC_B) + */ + +typedef struct /*!< (@ 0x40109000) 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 */ + __IOM uint8_t DOPCIE : 1; /*!< [7..7] Data Operation Circuit Interrupt Enable */ + } 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 /*!< (@ 0x40118000) R_SCI_B0 Structure */ +{ + 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 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 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 : 6; + __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 /*!< (@ 0x4011A000) 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_TFU ================ */ +/* =========================================================================================================================== */ + +/** + * @brief Trigonometric Function Unit (TFU) (R_TFU) + */ + +typedef struct /*!< (@ 0x90003000) R_TFU Structure */ +{ + __IM uint32_t RESERVED[4]; + + union + { + __IOM float SCDT0; /*!< (@ 0x00000010) TBD */ + + struct + { + __IOM uint32_t SCDT0 : 32; /*!< [31..0] TBD */ + } SCDT0_b; + }; + + union + { + __IOM float SCDT1; /*!< (@ 0x00000014) TBD */ + + struct + { + __IOM uint32_t SCDT1 : 32; /*!< [31..0] TBD */ + } SCDT1_b; + }; + + union + { + __IOM float ATDT0; /*!< (@ 0x00000018) TBD */ + + struct + { + __IOM uint32_t ATDT0 : 32; /*!< [31..0] TBD */ + } ATDT0_b; + }; + + union + { + __IOM float ATDT1; /*!< (@ 0x0000001C) TBD */ + + struct + { + __IOM uint32_t ATDT1 : 32; /*!< [31..0] TBD */ + } ATDT1_b; + }; +} R_TFU_Type; /*!< Size = 32 (0x20) */ + +/** @} */ /* End of group Device_Peripheral_peripherals */ + + #ifdef BSP_OVERRIDE_REG_HEADER + #include BSP_OVERRIDE_REG_HEADER + #endif + + #include "base_addresses.h" + +/* ========================================= 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) */ + +/* =========================================================================================================================== */ +/* ================ BUSERR ================ */ +/* =========================================================================================================================== */ + +/* ========================================================== ADD ========================================================== */ + #define R_BUS_BUSERR_ADD_BERAD_Pos (0UL) /*!< BERAD (Bit 0) */ + #define R_BUS_BUSERR_ADD_BERAD_Msk (0xffffffffUL) /*!< BERAD (Bitfield-Mask: 0xffffffff) */ +/* ========================================================= STAT ========================================================== */ + #define R_BUS_BUSERR_STAT_ERRSTAT_Pos (7UL) /*!< ERRSTAT (Bit 7) */ + #define R_BUS_BUSERR_STAT_ERRSTAT_Msk (0x80UL) /*!< ERRSTAT (Bitfield-Mask: 0x01) */ + #define R_BUS_BUSERR_STAT_ACCSTAT_Pos (0UL) /*!< ACCSTAT (Bit 0) */ + #define R_BUS_BUSERR_STAT_ACCSTAT_Msk (0x1UL) /*!< ACCSTAT (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) */ + +/* =========================================================================================================================== */ +/* ================ MB ================ */ +/* =========================================================================================================================== */ + +/* ========================================================== ID =========================================================== */ + #define R_CAN0_MB_ID_IDE_Pos (31UL) /*!< IDE (Bit 31) */ + #define R_CAN0_MB_ID_IDE_Msk (0x80000000UL) /*!< IDE (Bitfield-Mask: 0x01) */ + #define R_CAN0_MB_ID_RTR_Pos (30UL) /*!< RTR (Bit 30) */ + #define R_CAN0_MB_ID_RTR_Msk (0x40000000UL) /*!< RTR (Bitfield-Mask: 0x01) */ + #define R_CAN0_MB_ID_SID_Pos (18UL) /*!< SID (Bit 18) */ + #define R_CAN0_MB_ID_SID_Msk (0x1ffc0000UL) /*!< SID (Bitfield-Mask: 0x7ff) */ + #define R_CAN0_MB_ID_EID_Pos (0UL) /*!< EID (Bit 0) */ + #define R_CAN0_MB_ID_EID_Msk (0x3ffffUL) /*!< EID (Bitfield-Mask: 0x3ffff) */ +/* ========================================================== DL =========================================================== */ + #define R_CAN0_MB_DL_DLC_Pos (0UL) /*!< DLC (Bit 0) */ + #define R_CAN0_MB_DL_DLC_Msk (0xfUL) /*!< DLC (Bitfield-Mask: 0x0f) */ +/* =========================================================== D =========================================================== */ + #define R_CAN0_MB_D_DATA_Pos (0UL) /*!< DATA (Bit 0) */ + #define R_CAN0_MB_D_DATA_Msk (0xffUL) /*!< DATA (Bitfield-Mask: 0xff) */ +/* ========================================================== TS =========================================================== */ + #define R_CAN0_MB_TS_TSH_Pos (8UL) /*!< TSH (Bit 8) */ + #define R_CAN0_MB_TS_TSH_Msk (0xff00UL) /*!< TSH (Bitfield-Mask: 0xff) */ + #define R_CAN0_MB_TS_TSL_Pos (0UL) /*!< TSL (Bit 0) */ + #define R_CAN0_MB_TS_TSL_Msk (0xffUL) /*!< TSL (Bitfield-Mask: 0xff) */ + +/* =========================================================================================================================== */ +/* ================ 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_TRWE_Pos (27UL) /*!< TRWE (Bit 27) */ + #define R_CANFD_CFDC_CTR_TRWE_Msk (0x8000000UL) /*!< TRWE (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDC_CTR_TRH_Pos (28UL) /*!< TRH (Bit 28) */ + #define R_CANFD_CFDC_CTR_TRH_Msk (0x10000000UL) /*!< TRH (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDC_CTR_TRR_Pos (29UL) /*!< TRR (Bit 29) */ + #define R_CANFD_CFDC_CTR_TRR_Msk (0x20000000UL) /*!< TRR (Bitfield-Mask: 0x01) */ + #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_GWEN_Pos (24UL) /*!< GWEN (Bit 24) */ + #define R_CANFD_CFDC2_FDCFG_GWEN_Msk (0x1000000UL) /*!< GWEN (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDC2_FDCFG_GWFDF_Pos (25UL) /*!< GWFDF (Bit 25) */ + #define R_CANFD_CFDC2_FDCFG_GWFDF_Msk (0x2000000UL) /*!< GWFDF (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDC2_FDCFG_GWBRS_Pos (26UL) /*!< GWBRS (Bit 26) */ + #define R_CANFD_CFDC2_FDCFG_GWBRS_Msk (0x4000000UL) /*!< GWBRS (Bitfield-Mask: 0x01) */ + #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) */ + #define R_CANFD_CFDC2_FDCFG_CFDTE_Pos (31UL) /*!< CFDTE (Bit 31) */ + #define R_CANFD_CFDC2_FDCFG_CFDTE_Msk (0x80000000UL) /*!< CFDTE (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) */ +/* ========================================================= BLCT ========================================================== */ + #define R_CANFD_CFDC2_BLCT_BLCE_Pos (0UL) /*!< BLCE (Bit 0) */ + #define R_CANFD_CFDC2_BLCT_BLCE_Msk (0x1UL) /*!< BLCE (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDC2_BLCT_BLCLD_Pos (8UL) /*!< BLCLD (Bit 8) */ + #define R_CANFD_CFDC2_BLCT_BLCLD_Msk (0x100UL) /*!< BLCLD (Bitfield-Mask: 0x01) */ +/* ========================================================= BLSTS ========================================================= */ + #define R_CANFD_CFDC2_BLSTS_BLC_Pos (3UL) /*!< BLC (Bit 3) */ + #define R_CANFD_CFDC2_BLSTS_BLC_Msk (0xfffffff8UL) /*!< BLC (Bitfield-Mask: 0x1fffffff) */ + +/* =========================================================================================================================== */ +/* ================ 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_GAFLSRD0_Pos (4UL) /*!< GAFLSRD0 (Bit 4) */ + #define R_CANFD_CFDGAFL_P0_GAFLSRD0_Msk (0x10UL) /*!< GAFLSRD0 (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDGAFL_P0_GAFLSRD1_Pos (5UL) /*!< GAFLSRD1 (Bit 5) */ + #define R_CANFD_CFDGAFL_P0_GAFLSRD1_Msk (0x20UL) /*!< GAFLSRD1 (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDGAFL_P0_GAFLSRD2_Pos (6UL) /*!< GAFLSRD2 (Bit 6) */ + #define R_CANFD_CFDGAFL_P0_GAFLSRD2_Msk (0x40UL) /*!< GAFLSRD2 (Bitfield-Mask: 0x01) */ + #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 (0x3fffUL) /*!< GAFLFDP (Bitfield-Mask: 0x3fff) */ + +/* =========================================================================================================================== */ +/* ================ 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_TGW_Pos (15UL) /*!< TGW (Bit 15) */ + #define R_CANFD_CFDTHL_ACC0_TGW_Msk (0x8000UL) /*!< TGW (Bitfield-Mask: 0x01) */ + #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) */ + +/* =========================================================================================================================== */ +/* ================ CFDRM ================ */ +/* =========================================================================================================================== */ + +/* ========================================================== ID =========================================================== */ + #define R_CANFD_CFDRM_ID_RMID_Pos (0UL) /*!< RMID (Bit 0) */ + #define R_CANFD_CFDRM_ID_RMID_Msk (0x1fffffffUL) /*!< RMID (Bitfield-Mask: 0x1fffffff) */ + #define R_CANFD_CFDRM_ID_RMRTR_Pos (30UL) /*!< RMRTR (Bit 30) */ + #define R_CANFD_CFDRM_ID_RMRTR_Msk (0x40000000UL) /*!< RMRTR (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDRM_ID_RMIDE_Pos (31UL) /*!< RMIDE (Bit 31) */ + #define R_CANFD_CFDRM_ID_RMIDE_Msk (0x80000000UL) /*!< RMIDE (Bitfield-Mask: 0x01) */ +/* ========================================================== PTR ========================================================== */ + #define R_CANFD_CFDRM_PTR_RMTS_Pos (0UL) /*!< RMTS (Bit 0) */ + #define R_CANFD_CFDRM_PTR_RMTS_Msk (0xffffUL) /*!< RMTS (Bitfield-Mask: 0xffff) */ + #define R_CANFD_CFDRM_PTR_RMDLC_Pos (28UL) /*!< RMDLC (Bit 28) */ + #define R_CANFD_CFDRM_PTR_RMDLC_Msk (0xf0000000UL) /*!< RMDLC (Bitfield-Mask: 0x0f) */ +/* ========================================================= FDSTS ========================================================= */ + #define R_CANFD_CFDRM_FDSTS_RMESI_Pos (0UL) /*!< RMESI (Bit 0) */ + #define R_CANFD_CFDRM_FDSTS_RMESI_Msk (0x1UL) /*!< RMESI (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDRM_FDSTS_RMBRS_Pos (1UL) /*!< RMBRS (Bit 1) */ + #define R_CANFD_CFDRM_FDSTS_RMBRS_Msk (0x2UL) /*!< RMBRS (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDRM_FDSTS_RMFDF_Pos (2UL) /*!< RMFDF (Bit 2) */ + #define R_CANFD_CFDRM_FDSTS_RMFDF_Msk (0x4UL) /*!< RMFDF (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDRM_FDSTS_RMIFL_Pos (8UL) /*!< RMIFL (Bit 8) */ + #define R_CANFD_CFDRM_FDSTS_RMIFL_Msk (0x300UL) /*!< RMIFL (Bitfield-Mask: 0x03) */ + #define R_CANFD_CFDRM_FDSTS_RMPTR_Pos (16UL) /*!< RMPTR (Bit 16) */ + #define R_CANFD_CFDRM_FDSTS_RMPTR_Msk (0xffff0000UL) /*!< RMPTR (Bitfield-Mask: 0xffff) */ +/* ========================================================== DF =========================================================== */ + #define R_CANFD_CFDRM_DF_RMDB_Pos (0UL) /*!< RMDB (Bit 0) */ + #define R_CANFD_CFDRM_DF_RMDB_Msk (0xffUL) /*!< RMDB (Bitfield-Mask: 0xff) */ + +/* =========================================================================================================================== */ +/* ================ 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) */ + +/* =========================================================================================================================== */ +/* ================ CFDC ================ */ +/* =========================================================================================================================== */ + +/* ========================================================= NCFG ========================================================== */ + #define R_CANFDL_CFDC_NCFG_NBRP_Pos (0UL) /*!< NBRP (Bit 0) */ + #define R_CANFDL_CFDC_NCFG_NBRP_Msk (0x3ffUL) /*!< NBRP (Bitfield-Mask: 0x3ff) */ + #define R_CANFDL_CFDC_NCFG_NSJW_Pos (10UL) /*!< NSJW (Bit 10) */ + #define R_CANFDL_CFDC_NCFG_NSJW_Msk (0x1fc00UL) /*!< NSJW (Bitfield-Mask: 0x7f) */ + #define R_CANFDL_CFDC_NCFG_NTSEG1_Pos (17UL) /*!< NTSEG1 (Bit 17) */ + #define R_CANFDL_CFDC_NCFG_NTSEG1_Msk (0x1fe0000UL) /*!< NTSEG1 (Bitfield-Mask: 0xff) */ + #define R_CANFDL_CFDC_NCFG_NTSEG2_Pos (25UL) /*!< NTSEG2 (Bit 25) */ + #define R_CANFDL_CFDC_NCFG_NTSEG2_Msk (0xfe000000UL) /*!< NTSEG2 (Bitfield-Mask: 0x7f) */ +/* ========================================================== CTR ========================================================== */ + #define R_CANFDL_CFDC_CTR_CHMDC_Pos (0UL) /*!< CHMDC (Bit 0) */ + #define R_CANFDL_CFDC_CTR_CHMDC_Msk (0x3UL) /*!< CHMDC (Bitfield-Mask: 0x03) */ + #define R_CANFDL_CFDC_CTR_CSLPR_Pos (2UL) /*!< CSLPR (Bit 2) */ + #define R_CANFDL_CFDC_CTR_CSLPR_Msk (0x4UL) /*!< CSLPR (Bitfield-Mask: 0x01) */ + #define R_CANFDL_CFDC_CTR_RTBO_Pos (3UL) /*!< RTBO (Bit 3) */ + #define R_CANFDL_CFDC_CTR_RTBO_Msk (0x8UL) /*!< RTBO (Bitfield-Mask: 0x01) */ + #define R_CANFDL_CFDC_CTR_BEIE_Pos (8UL) /*!< BEIE (Bit 8) */ + #define R_CANFDL_CFDC_CTR_BEIE_Msk (0x100UL) /*!< BEIE (Bitfield-Mask: 0x01) */ + #define R_CANFDL_CFDC_CTR_EWIE_Pos (9UL) /*!< EWIE (Bit 9) */ + #define R_CANFDL_CFDC_CTR_EWIE_Msk (0x200UL) /*!< EWIE (Bitfield-Mask: 0x01) */ + #define R_CANFDL_CFDC_CTR_EPIE_Pos (10UL) /*!< EPIE (Bit 10) */ + #define R_CANFDL_CFDC_CTR_EPIE_Msk (0x400UL) /*!< EPIE (Bitfield-Mask: 0x01) */ + #define R_CANFDL_CFDC_CTR_BOEIE_Pos (11UL) /*!< BOEIE (Bit 11) */ + #define R_CANFDL_CFDC_CTR_BOEIE_Msk (0x800UL) /*!< BOEIE (Bitfield-Mask: 0x01) */ + #define R_CANFDL_CFDC_CTR_BORIE_Pos (12UL) /*!< BORIE (Bit 12) */ + #define R_CANFDL_CFDC_CTR_BORIE_Msk (0x1000UL) /*!< BORIE (Bitfield-Mask: 0x01) */ + #define R_CANFDL_CFDC_CTR_OLIE_Pos (13UL) /*!< OLIE (Bit 13) */ + #define R_CANFDL_CFDC_CTR_OLIE_Msk (0x2000UL) /*!< OLIE (Bitfield-Mask: 0x01) */ + #define R_CANFDL_CFDC_CTR_BLIE_Pos (14UL) /*!< BLIE (Bit 14) */ + #define R_CANFDL_CFDC_CTR_BLIE_Msk (0x4000UL) /*!< BLIE (Bitfield-Mask: 0x01) */ + #define R_CANFDL_CFDC_CTR_ALIE_Pos (15UL) /*!< ALIE (Bit 15) */ + #define R_CANFDL_CFDC_CTR_ALIE_Msk (0x8000UL) /*!< ALIE (Bitfield-Mask: 0x01) */ + #define R_CANFDL_CFDC_CTR_TAIE_Pos (16UL) /*!< TAIE (Bit 16) */ + #define R_CANFDL_CFDC_CTR_TAIE_Msk (0x10000UL) /*!< TAIE (Bitfield-Mask: 0x01) */ + #define R_CANFDL_CFDC_CTR_EOCOIE_Pos (17UL) /*!< EOCOIE (Bit 17) */ + #define R_CANFDL_CFDC_CTR_EOCOIE_Msk (0x20000UL) /*!< EOCOIE (Bitfield-Mask: 0x01) */ + #define R_CANFDL_CFDC_CTR_SOCOIE_Pos (18UL) /*!< SOCOIE (Bit 18) */ + #define R_CANFDL_CFDC_CTR_SOCOIE_Msk (0x40000UL) /*!< SOCOIE (Bitfield-Mask: 0x01) */ + #define R_CANFDL_CFDC_CTR_TDCVFIE_Pos (19UL) /*!< TDCVFIE (Bit 19) */ + #define R_CANFDL_CFDC_CTR_TDCVFIE_Msk (0x80000UL) /*!< TDCVFIE (Bitfield-Mask: 0x01) */ + #define R_CANFDL_CFDC_CTR_BOM_Pos (21UL) /*!< BOM (Bit 21) */ + #define R_CANFDL_CFDC_CTR_BOM_Msk (0x600000UL) /*!< BOM (Bitfield-Mask: 0x03) */ + #define R_CANFDL_CFDC_CTR_ERRD_Pos (23UL) /*!< ERRD (Bit 23) */ + #define R_CANFDL_CFDC_CTR_ERRD_Msk (0x800000UL) /*!< ERRD (Bitfield-Mask: 0x01) */ + #define R_CANFDL_CFDC_CTR_CTME_Pos (24UL) /*!< CTME (Bit 24) */ + #define R_CANFDL_CFDC_CTR_CTME_Msk (0x1000000UL) /*!< CTME (Bitfield-Mask: 0x01) */ + #define R_CANFDL_CFDC_CTR_CTMS_Pos (25UL) /*!< CTMS (Bit 25) */ + #define R_CANFDL_CFDC_CTR_CTMS_Msk (0x6000000UL) /*!< CTMS (Bitfield-Mask: 0x03) */ + #define R_CANFDL_CFDC_CTR_CRCT_Pos (30UL) /*!< CRCT (Bit 30) */ + #define R_CANFDL_CFDC_CTR_CRCT_Msk (0x40000000UL) /*!< CRCT (Bitfield-Mask: 0x01) */ + #define R_CANFDL_CFDC_CTR_ROM_Pos (31UL) /*!< ROM (Bit 31) */ + #define R_CANFDL_CFDC_CTR_ROM_Msk (0x80000000UL) /*!< ROM (Bitfield-Mask: 0x01) */ +/* ========================================================== STS ========================================================== */ + #define R_CANFDL_CFDC_STS_CRSTSTS_Pos (0UL) /*!< CRSTSTS (Bit 0) */ + #define R_CANFDL_CFDC_STS_CRSTSTS_Msk (0x1UL) /*!< CRSTSTS (Bitfield-Mask: 0x01) */ + #define R_CANFDL_CFDC_STS_CHLTSTS_Pos (1UL) /*!< CHLTSTS (Bit 1) */ + #define R_CANFDL_CFDC_STS_CHLTSTS_Msk (0x2UL) /*!< CHLTSTS (Bitfield-Mask: 0x01) */ + #define R_CANFDL_CFDC_STS_CSLPSTS_Pos (2UL) /*!< CSLPSTS (Bit 2) */ + #define R_CANFDL_CFDC_STS_CSLPSTS_Msk (0x4UL) /*!< CSLPSTS (Bitfield-Mask: 0x01) */ + #define R_CANFDL_CFDC_STS_EPSTS_Pos (3UL) /*!< EPSTS (Bit 3) */ + #define R_CANFDL_CFDC_STS_EPSTS_Msk (0x8UL) /*!< EPSTS (Bitfield-Mask: 0x01) */ + #define R_CANFDL_CFDC_STS_BOSTS_Pos (4UL) /*!< BOSTS (Bit 4) */ + #define R_CANFDL_CFDC_STS_BOSTS_Msk (0x10UL) /*!< BOSTS (Bitfield-Mask: 0x01) */ + #define R_CANFDL_CFDC_STS_TRMSTS_Pos (5UL) /*!< TRMSTS (Bit 5) */ + #define R_CANFDL_CFDC_STS_TRMSTS_Msk (0x20UL) /*!< TRMSTS (Bitfield-Mask: 0x01) */ + #define R_CANFDL_CFDC_STS_RECSTS_Pos (6UL) /*!< RECSTS (Bit 6) */ + #define R_CANFDL_CFDC_STS_RECSTS_Msk (0x40UL) /*!< RECSTS (Bitfield-Mask: 0x01) */ + #define R_CANFDL_CFDC_STS_COMSTS_Pos (7UL) /*!< COMSTS (Bit 7) */ + #define R_CANFDL_CFDC_STS_COMSTS_Msk (0x80UL) /*!< COMSTS (Bitfield-Mask: 0x01) */ + #define R_CANFDL_CFDC_STS_ESIF_Pos (8UL) /*!< ESIF (Bit 8) */ + #define R_CANFDL_CFDC_STS_ESIF_Msk (0x100UL) /*!< ESIF (Bitfield-Mask: 0x01) */ + #define R_CANFDL_CFDC_STS_REC_Pos (16UL) /*!< REC (Bit 16) */ + #define R_CANFDL_CFDC_STS_REC_Msk (0xff0000UL) /*!< REC (Bitfield-Mask: 0xff) */ + #define R_CANFDL_CFDC_STS_TEC_Pos (24UL) /*!< TEC (Bit 24) */ + #define R_CANFDL_CFDC_STS_TEC_Msk (0xff000000UL) /*!< TEC (Bitfield-Mask: 0xff) */ +/* ========================================================= ERFL ========================================================== */ + #define R_CANFDL_CFDC_ERFL_BEF_Pos (0UL) /*!< BEF (Bit 0) */ + #define R_CANFDL_CFDC_ERFL_BEF_Msk (0x1UL) /*!< BEF (Bitfield-Mask: 0x01) */ + #define R_CANFDL_CFDC_ERFL_EWF_Pos (1UL) /*!< EWF (Bit 1) */ + #define R_CANFDL_CFDC_ERFL_EWF_Msk (0x2UL) /*!< EWF (Bitfield-Mask: 0x01) */ + #define R_CANFDL_CFDC_ERFL_EPF_Pos (2UL) /*!< EPF (Bit 2) */ + #define R_CANFDL_CFDC_ERFL_EPF_Msk (0x4UL) /*!< EPF (Bitfield-Mask: 0x01) */ + #define R_CANFDL_CFDC_ERFL_BOEF_Pos (3UL) /*!< BOEF (Bit 3) */ + #define R_CANFDL_CFDC_ERFL_BOEF_Msk (0x8UL) /*!< BOEF (Bitfield-Mask: 0x01) */ + #define R_CANFDL_CFDC_ERFL_BORF_Pos (4UL) /*!< BORF (Bit 4) */ + #define R_CANFDL_CFDC_ERFL_BORF_Msk (0x10UL) /*!< BORF (Bitfield-Mask: 0x01) */ + #define R_CANFDL_CFDC_ERFL_OVLF_Pos (5UL) /*!< OVLF (Bit 5) */ + #define R_CANFDL_CFDC_ERFL_OVLF_Msk (0x20UL) /*!< OVLF (Bitfield-Mask: 0x01) */ + #define R_CANFDL_CFDC_ERFL_BLF_Pos (6UL) /*!< BLF (Bit 6) */ + #define R_CANFDL_CFDC_ERFL_BLF_Msk (0x40UL) /*!< BLF (Bitfield-Mask: 0x01) */ + #define R_CANFDL_CFDC_ERFL_ALF_Pos (7UL) /*!< ALF (Bit 7) */ + #define R_CANFDL_CFDC_ERFL_ALF_Msk (0x80UL) /*!< ALF (Bitfield-Mask: 0x01) */ + #define R_CANFDL_CFDC_ERFL_SERR_Pos (8UL) /*!< SERR (Bit 8) */ + #define R_CANFDL_CFDC_ERFL_SERR_Msk (0x100UL) /*!< SERR (Bitfield-Mask: 0x01) */ + #define R_CANFDL_CFDC_ERFL_FERR_Pos (9UL) /*!< FERR (Bit 9) */ + #define R_CANFDL_CFDC_ERFL_FERR_Msk (0x200UL) /*!< FERR (Bitfield-Mask: 0x01) */ + #define R_CANFDL_CFDC_ERFL_AERR_Pos (10UL) /*!< AERR (Bit 10) */ + #define R_CANFDL_CFDC_ERFL_AERR_Msk (0x400UL) /*!< AERR (Bitfield-Mask: 0x01) */ + #define R_CANFDL_CFDC_ERFL_CERR_Pos (11UL) /*!< CERR (Bit 11) */ + #define R_CANFDL_CFDC_ERFL_CERR_Msk (0x800UL) /*!< CERR (Bitfield-Mask: 0x01) */ + #define R_CANFDL_CFDC_ERFL_B1ERR_Pos (12UL) /*!< B1ERR (Bit 12) */ + #define R_CANFDL_CFDC_ERFL_B1ERR_Msk (0x1000UL) /*!< B1ERR (Bitfield-Mask: 0x01) */ + #define R_CANFDL_CFDC_ERFL_B0ERR_Pos (13UL) /*!< B0ERR (Bit 13) */ + #define R_CANFDL_CFDC_ERFL_B0ERR_Msk (0x2000UL) /*!< B0ERR (Bitfield-Mask: 0x01) */ + #define R_CANFDL_CFDC_ERFL_ADERR_Pos (14UL) /*!< ADERR (Bit 14) */ + #define R_CANFDL_CFDC_ERFL_ADERR_Msk (0x4000UL) /*!< ADERR (Bitfield-Mask: 0x01) */ + #define R_CANFDL_CFDC_ERFL_CRCREG_Pos (16UL) /*!< CRCREG (Bit 16) */ + #define R_CANFDL_CFDC_ERFL_CRCREG_Msk (0x7fff0000UL) /*!< CRCREG (Bitfield-Mask: 0x7fff) */ + +/* =========================================================================================================================== */ +/* ================ CFDC2 ================ */ +/* =========================================================================================================================== */ + +/* ========================================================= DCFG ========================================================== */ + #define R_CANFDL_CFDC2_DCFG_DBRP_Pos (0UL) /*!< DBRP (Bit 0) */ + #define R_CANFDL_CFDC2_DCFG_DBRP_Msk (0xffUL) /*!< DBRP (Bitfield-Mask: 0xff) */ + #define R_CANFDL_CFDC2_DCFG_DTSEG1_Pos (8UL) /*!< DTSEG1 (Bit 8) */ + #define R_CANFDL_CFDC2_DCFG_DTSEG1_Msk (0x1f00UL) /*!< DTSEG1 (Bitfield-Mask: 0x1f) */ + #define R_CANFDL_CFDC2_DCFG_DTSEG2_Pos (16UL) /*!< DTSEG2 (Bit 16) */ + #define R_CANFDL_CFDC2_DCFG_DTSEG2_Msk (0xf0000UL) /*!< DTSEG2 (Bitfield-Mask: 0x0f) */ + #define R_CANFDL_CFDC2_DCFG_DSJW_Pos (24UL) /*!< DSJW (Bit 24) */ + #define R_CANFDL_CFDC2_DCFG_DSJW_Msk (0xf000000UL) /*!< DSJW (Bitfield-Mask: 0x0f) */ +/* ========================================================= FDCFG ========================================================= */ + #define R_CANFDL_CFDC2_FDCFG_EOCCFG_Pos (0UL) /*!< EOCCFG (Bit 0) */ + #define R_CANFDL_CFDC2_FDCFG_EOCCFG_Msk (0x7UL) /*!< EOCCFG (Bitfield-Mask: 0x07) */ + #define R_CANFDL_CFDC2_FDCFG_TDCOC_Pos (8UL) /*!< TDCOC (Bit 8) */ + #define R_CANFDL_CFDC2_FDCFG_TDCOC_Msk (0x100UL) /*!< TDCOC (Bitfield-Mask: 0x01) */ + #define R_CANFDL_CFDC2_FDCFG_TDCE_Pos (9UL) /*!< TDCE (Bit 9) */ + #define R_CANFDL_CFDC2_FDCFG_TDCE_Msk (0x200UL) /*!< TDCE (Bitfield-Mask: 0x01) */ + #define R_CANFDL_CFDC2_FDCFG_ESIC_Pos (10UL) /*!< ESIC (Bit 10) */ + #define R_CANFDL_CFDC2_FDCFG_ESIC_Msk (0x400UL) /*!< ESIC (Bitfield-Mask: 0x01) */ + #define R_CANFDL_CFDC2_FDCFG_TDCO_Pos (16UL) /*!< TDCO (Bit 16) */ + #define R_CANFDL_CFDC2_FDCFG_TDCO_Msk (0xff0000UL) /*!< TDCO (Bitfield-Mask: 0xff) */ + #define R_CANFDL_CFDC2_FDCFG_FDOE_Pos (28UL) /*!< FDOE (Bit 28) */ + #define R_CANFDL_CFDC2_FDCFG_FDOE_Msk (0x10000000UL) /*!< FDOE (Bitfield-Mask: 0x01) */ + #define R_CANFDL_CFDC2_FDCFG_REFE_Pos (29UL) /*!< REFE (Bit 29) */ + #define R_CANFDL_CFDC2_FDCFG_REFE_Msk (0x20000000UL) /*!< REFE (Bitfield-Mask: 0x01) */ + #define R_CANFDL_CFDC2_FDCFG_CLOE_Pos (30UL) /*!< CLOE (Bit 30) */ + #define R_CANFDL_CFDC2_FDCFG_CLOE_Msk (0x40000000UL) /*!< CLOE (Bitfield-Mask: 0x01) */ +/* ========================================================= FDCTR ========================================================= */ + #define R_CANFDL_CFDC2_FDCTR_EOCCLR_Pos (0UL) /*!< EOCCLR (Bit 0) */ + #define R_CANFDL_CFDC2_FDCTR_EOCCLR_Msk (0x1UL) /*!< EOCCLR (Bitfield-Mask: 0x01) */ + #define R_CANFDL_CFDC2_FDCTR_SOCCLR_Pos (1UL) /*!< SOCCLR (Bit 1) */ + #define R_CANFDL_CFDC2_FDCTR_SOCCLR_Msk (0x2UL) /*!< SOCCLR (Bitfield-Mask: 0x01) */ +/* ========================================================= FDSTS ========================================================= */ + #define R_CANFDL_CFDC2_FDSTS_TDCR_Pos (0UL) /*!< TDCR (Bit 0) */ + #define R_CANFDL_CFDC2_FDSTS_TDCR_Msk (0xffUL) /*!< TDCR (Bitfield-Mask: 0xff) */ + #define R_CANFDL_CFDC2_FDSTS_EOCO_Pos (8UL) /*!< EOCO (Bit 8) */ + #define R_CANFDL_CFDC2_FDSTS_EOCO_Msk (0x100UL) /*!< EOCO (Bitfield-Mask: 0x01) */ + #define R_CANFDL_CFDC2_FDSTS_SOCO_Pos (9UL) /*!< SOCO (Bit 9) */ + #define R_CANFDL_CFDC2_FDSTS_SOCO_Msk (0x200UL) /*!< SOCO (Bitfield-Mask: 0x01) */ + #define R_CANFDL_CFDC2_FDSTS_TDCVF_Pos (15UL) /*!< TDCVF (Bit 15) */ + #define R_CANFDL_CFDC2_FDSTS_TDCVF_Msk (0x8000UL) /*!< TDCVF (Bitfield-Mask: 0x01) */ + #define R_CANFDL_CFDC2_FDSTS_EOC_Pos (16UL) /*!< EOC (Bit 16) */ + #define R_CANFDL_CFDC2_FDSTS_EOC_Msk (0xff0000UL) /*!< EOC (Bitfield-Mask: 0xff) */ + #define R_CANFDL_CFDC2_FDSTS_SOC_Pos (24UL) /*!< SOC (Bit 24) */ + #define R_CANFDL_CFDC2_FDSTS_SOC_Msk (0xff000000UL) /*!< SOC (Bitfield-Mask: 0xff) */ +/* ========================================================= FDCRC ========================================================= */ + #define R_CANFDL_CFDC2_FDCRC_CRCREG_Pos (0UL) /*!< CRCREG (Bit 0) */ + #define R_CANFDL_CFDC2_FDCRC_CRCREG_Msk (0x1fffffUL) /*!< CRCREG (Bitfield-Mask: 0x1fffff) */ + #define R_CANFDL_CFDC2_FDCRC_SCNT_Pos (24UL) /*!< SCNT (Bit 24) */ + #define R_CANFDL_CFDC2_FDCRC_SCNT_Msk (0xf000000UL) /*!< SCNT (Bitfield-Mask: 0x0f) */ + +/* =========================================================================================================================== */ +/* ================ CFDGAFL ================ */ +/* =========================================================================================================================== */ + +/* ========================================================== ID =========================================================== */ + #define R_CANFDL_CFDGAFL_ID_GAFLID_Pos (0UL) /*!< GAFLID (Bit 0) */ + #define R_CANFDL_CFDGAFL_ID_GAFLID_Msk (0x1fffffffUL) /*!< GAFLID (Bitfield-Mask: 0x1fffffff) */ + #define R_CANFDL_CFDGAFL_ID_GAFLLB_Pos (29UL) /*!< GAFLLB (Bit 29) */ + #define R_CANFDL_CFDGAFL_ID_GAFLLB_Msk (0x20000000UL) /*!< GAFLLB (Bitfield-Mask: 0x01) */ + #define R_CANFDL_CFDGAFL_ID_GAFLRTR_Pos (30UL) /*!< GAFLRTR (Bit 30) */ + #define R_CANFDL_CFDGAFL_ID_GAFLRTR_Msk (0x40000000UL) /*!< GAFLRTR (Bitfield-Mask: 0x01) */ + #define R_CANFDL_CFDGAFL_ID_GAFLIDE_Pos (31UL) /*!< GAFLIDE (Bit 31) */ + #define R_CANFDL_CFDGAFL_ID_GAFLIDE_Msk (0x80000000UL) /*!< GAFLIDE (Bitfield-Mask: 0x01) */ +/* =========================================================== M =========================================================== */ + #define R_CANFDL_CFDGAFL_M_GAFLIDM_Pos (0UL) /*!< GAFLIDM (Bit 0) */ + #define R_CANFDL_CFDGAFL_M_GAFLIDM_Msk (0x1fffffffUL) /*!< GAFLIDM (Bitfield-Mask: 0x1fffffff) */ + #define R_CANFDL_CFDGAFL_M_GAFLIFL1_Pos (29UL) /*!< GAFLIFL1 (Bit 29) */ + #define R_CANFDL_CFDGAFL_M_GAFLIFL1_Msk (0x20000000UL) /*!< GAFLIFL1 (Bitfield-Mask: 0x01) */ + #define R_CANFDL_CFDGAFL_M_GAFLRTRM_Pos (30UL) /*!< GAFLRTRM (Bit 30) */ + #define R_CANFDL_CFDGAFL_M_GAFLRTRM_Msk (0x40000000UL) /*!< GAFLRTRM (Bitfield-Mask: 0x01) */ + #define R_CANFDL_CFDGAFL_M_GAFLIDEM_Pos (31UL) /*!< GAFLIDEM (Bit 31) */ + #define R_CANFDL_CFDGAFL_M_GAFLIDEM_Msk (0x80000000UL) /*!< GAFLIDEM (Bitfield-Mask: 0x01) */ +/* ========================================================== P0 =========================================================== */ + #define R_CANFDL_CFDGAFL_P0_GAFLDLC_Pos (0UL) /*!< GAFLDLC (Bit 0) */ + #define R_CANFDL_CFDGAFL_P0_GAFLDLC_Msk (0xfUL) /*!< GAFLDLC (Bitfield-Mask: 0x0f) */ + #define R_CANFDL_CFDGAFL_P0_GAFLIFL0_Pos (7UL) /*!< GAFLIFL0 (Bit 7) */ + #define R_CANFDL_CFDGAFL_P0_GAFLIFL0_Msk (0x80UL) /*!< GAFLIFL0 (Bitfield-Mask: 0x01) */ + #define R_CANFDL_CFDGAFL_P0_GAFLRMDP_Pos (8UL) /*!< GAFLRMDP (Bit 8) */ + #define R_CANFDL_CFDGAFL_P0_GAFLRMDP_Msk (0x1f00UL) /*!< GAFLRMDP (Bitfield-Mask: 0x1f) */ + #define R_CANFDL_CFDGAFL_P0_GAFLRMV_Pos (15UL) /*!< GAFLRMV (Bit 15) */ + #define R_CANFDL_CFDGAFL_P0_GAFLRMV_Msk (0x8000UL) /*!< GAFLRMV (Bitfield-Mask: 0x01) */ + #define R_CANFDL_CFDGAFL_P0_GAFLPTR_Pos (16UL) /*!< GAFLPTR (Bit 16) */ + #define R_CANFDL_CFDGAFL_P0_GAFLPTR_Msk (0xffff0000UL) /*!< GAFLPTR (Bitfield-Mask: 0xffff) */ +/* ========================================================== P1 =========================================================== */ + #define R_CANFDL_CFDGAFL_P1_GAFLFDP_Pos (0UL) /*!< GAFLFDP (Bit 0) */ + #define R_CANFDL_CFDGAFL_P1_GAFLFDP_Msk (0x1ffUL) /*!< GAFLFDP (Bitfield-Mask: 0x1ff) */ + +/* =========================================================================================================================== */ +/* ================ CFDTHL ================ */ +/* =========================================================================================================================== */ + +/* ========================================================= ACC0 ========================================================== */ + #define R_CANFDL_CFDTHL_ACC0_BT_Pos (0UL) /*!< BT (Bit 0) */ + #define R_CANFDL_CFDTHL_ACC0_BT_Msk (0x7UL) /*!< BT (Bitfield-Mask: 0x07) */ + #define R_CANFDL_CFDTHL_ACC0_BN_Pos (3UL) /*!< BN (Bit 3) */ + #define R_CANFDL_CFDTHL_ACC0_BN_Msk (0x3f8UL) /*!< BN (Bitfield-Mask: 0x7f) */ + #define R_CANFDL_CFDTHL_ACC0_TMTS_Pos (16UL) /*!< TMTS (Bit 16) */ + #define R_CANFDL_CFDTHL_ACC0_TMTS_Msk (0xffff0000UL) /*!< TMTS (Bitfield-Mask: 0xffff) */ +/* ========================================================= ACC1 ========================================================== */ + #define R_CANFDL_CFDTHL_ACC1_TID_Pos (0UL) /*!< TID (Bit 0) */ + #define R_CANFDL_CFDTHL_ACC1_TID_Msk (0xffffUL) /*!< TID (Bitfield-Mask: 0xffff) */ + #define R_CANFDL_CFDTHL_ACC1_TIFL_Pos (16UL) /*!< TIFL (Bit 16) */ + #define R_CANFDL_CFDTHL_ACC1_TIFL_Msk (0x30000UL) /*!< TIFL (Bitfield-Mask: 0x03) */ + +/* =========================================================================================================================== */ +/* ================ CFDRF ================ */ +/* =========================================================================================================================== */ + +/* ========================================================== ID =========================================================== */ + #define R_CANFDL_CFDRF_ID_RFID_Pos (0UL) /*!< RFID (Bit 0) */ + #define R_CANFDL_CFDRF_ID_RFID_Msk (0x1fffffffUL) /*!< RFID (Bitfield-Mask: 0x1fffffff) */ + #define R_CANFDL_CFDRF_ID_RFRTR_Pos (30UL) /*!< RFRTR (Bit 30) */ + #define R_CANFDL_CFDRF_ID_RFRTR_Msk (0x40000000UL) /*!< RFRTR (Bitfield-Mask: 0x01) */ + #define R_CANFDL_CFDRF_ID_RFIDE_Pos (31UL) /*!< RFIDE (Bit 31) */ + #define R_CANFDL_CFDRF_ID_RFIDE_Msk (0x80000000UL) /*!< RFIDE (Bitfield-Mask: 0x01) */ +/* ========================================================== PTR ========================================================== */ + #define R_CANFDL_CFDRF_PTR_RFTS_Pos (0UL) /*!< RFTS (Bit 0) */ + #define R_CANFDL_CFDRF_PTR_RFTS_Msk (0xffffUL) /*!< RFTS (Bitfield-Mask: 0xffff) */ + #define R_CANFDL_CFDRF_PTR_RFDLC_Pos (28UL) /*!< RFDLC (Bit 28) */ + #define R_CANFDL_CFDRF_PTR_RFDLC_Msk (0xf0000000UL) /*!< RFDLC (Bitfield-Mask: 0x0f) */ +/* ========================================================= FDSTS ========================================================= */ + #define R_CANFDL_CFDRF_FDSTS_RFESI_Pos (0UL) /*!< RFESI (Bit 0) */ + #define R_CANFDL_CFDRF_FDSTS_RFESI_Msk (0x1UL) /*!< RFESI (Bitfield-Mask: 0x01) */ + #define R_CANFDL_CFDRF_FDSTS_RFBRS_Pos (1UL) /*!< RFBRS (Bit 1) */ + #define R_CANFDL_CFDRF_FDSTS_RFBRS_Msk (0x2UL) /*!< RFBRS (Bitfield-Mask: 0x01) */ + #define R_CANFDL_CFDRF_FDSTS_RFFDF_Pos (2UL) /*!< RFFDF (Bit 2) */ + #define R_CANFDL_CFDRF_FDSTS_RFFDF_Msk (0x4UL) /*!< RFFDF (Bitfield-Mask: 0x01) */ + #define R_CANFDL_CFDRF_FDSTS_RFIFL_Pos (8UL) /*!< RFIFL (Bit 8) */ + #define R_CANFDL_CFDRF_FDSTS_RFIFL_Msk (0x300UL) /*!< RFIFL (Bitfield-Mask: 0x03) */ + #define R_CANFDL_CFDRF_FDSTS_RFPTR_Pos (16UL) /*!< RFPTR (Bit 16) */ + #define R_CANFDL_CFDRF_FDSTS_RFPTR_Msk (0xffff0000UL) /*!< RFPTR (Bitfield-Mask: 0xffff) */ +/* ========================================================== DF =========================================================== */ + #define R_CANFDL_CFDRF_DF_RFDB_Pos (0UL) /*!< RFDB (Bit 0) */ + #define R_CANFDL_CFDRF_DF_RFDB_Msk (0xffUL) /*!< RFDB (Bitfield-Mask: 0xff) */ + +/* =========================================================================================================================== */ +/* ================ CFDCF ================ */ +/* =========================================================================================================================== */ + +/* ========================================================== ID =========================================================== */ + #define R_CANFDL_CFDCF_ID_CFID_Pos (0UL) /*!< CFID (Bit 0) */ + #define R_CANFDL_CFDCF_ID_CFID_Msk (0x1fffffffUL) /*!< CFID (Bitfield-Mask: 0x1fffffff) */ + #define R_CANFDL_CFDCF_ID_CFRTR_Pos (30UL) /*!< CFRTR (Bit 30) */ + #define R_CANFDL_CFDCF_ID_CFRTR_Msk (0x40000000UL) /*!< CFRTR (Bitfield-Mask: 0x01) */ + #define R_CANFDL_CFDCF_ID_CFIDE_Pos (31UL) /*!< CFIDE (Bit 31) */ + #define R_CANFDL_CFDCF_ID_CFIDE_Msk (0x80000000UL) /*!< CFIDE (Bitfield-Mask: 0x01) */ +/* ========================================================== PTR ========================================================== */ + #define R_CANFDL_CFDCF_PTR_CFTS_Pos (0UL) /*!< CFTS (Bit 0) */ + #define R_CANFDL_CFDCF_PTR_CFTS_Msk (0xffffUL) /*!< CFTS (Bitfield-Mask: 0xffff) */ + #define R_CANFDL_CFDCF_PTR_CFDLC_Pos (28UL) /*!< CFDLC (Bit 28) */ + #define R_CANFDL_CFDCF_PTR_CFDLC_Msk (0xf0000000UL) /*!< CFDLC (Bitfield-Mask: 0x0f) */ +/* ========================================================= FDSTS ========================================================= */ + #define R_CANFDL_CFDCF_FDSTS_CFESI_Pos (0UL) /*!< CFESI (Bit 0) */ + #define R_CANFDL_CFDCF_FDSTS_CFESI_Msk (0x1UL) /*!< CFESI (Bitfield-Mask: 0x01) */ + #define R_CANFDL_CFDCF_FDSTS_CFBRS_Pos (1UL) /*!< CFBRS (Bit 1) */ + #define R_CANFDL_CFDCF_FDSTS_CFBRS_Msk (0x2UL) /*!< CFBRS (Bitfield-Mask: 0x01) */ + #define R_CANFDL_CFDCF_FDSTS_CFFDF_Pos (2UL) /*!< CFFDF (Bit 2) */ + #define R_CANFDL_CFDCF_FDSTS_CFFDF_Msk (0x4UL) /*!< CFFDF (Bitfield-Mask: 0x01) */ + #define R_CANFDL_CFDCF_FDSTS_CFIFL_Pos (8UL) /*!< CFIFL (Bit 8) */ + #define R_CANFDL_CFDCF_FDSTS_CFIFL_Msk (0x300UL) /*!< CFIFL (Bitfield-Mask: 0x03) */ + #define R_CANFDL_CFDCF_FDSTS_CFPTR_Pos (16UL) /*!< CFPTR (Bit 16) */ + #define R_CANFDL_CFDCF_FDSTS_CFPTR_Msk (0xffff0000UL) /*!< CFPTR (Bitfield-Mask: 0xffff) */ +/* ========================================================== DF =========================================================== */ + #define R_CANFDL_CFDCF_DF_CFDB_Pos (0UL) /*!< CFDB (Bit 0) */ + #define R_CANFDL_CFDCF_DF_CFDB_Msk (0xffUL) /*!< CFDB (Bitfield-Mask: 0xff) */ + +/* =========================================================================================================================== */ +/* ================ CFDTM ================ */ +/* =========================================================================================================================== */ + +/* ========================================================== ID =========================================================== */ + #define R_CANFDL_CFDTM_ID_TMID_Pos (0UL) /*!< TMID (Bit 0) */ + #define R_CANFDL_CFDTM_ID_TMID_Msk (0x1fffffffUL) /*!< TMID (Bitfield-Mask: 0x1fffffff) */ + #define R_CANFDL_CFDTM_ID_TMRTR_Pos (30UL) /*!< TMRTR (Bit 30) */ + #define R_CANFDL_CFDTM_ID_TMRTR_Msk (0x40000000UL) /*!< TMRTR (Bitfield-Mask: 0x01) */ + #define R_CANFDL_CFDTM_ID_TMIDE_Pos (31UL) /*!< TMIDE (Bit 31) */ + #define R_CANFDL_CFDTM_ID_TMIDE_Msk (0x80000000UL) /*!< TMIDE (Bitfield-Mask: 0x01) */ +/* ========================================================== PTR ========================================================== */ + #define R_CANFDL_CFDTM_PTR_TMTS_Pos (0UL) /*!< TMTS (Bit 0) */ + #define R_CANFDL_CFDTM_PTR_TMTS_Msk (0xffffUL) /*!< TMTS (Bitfield-Mask: 0xffff) */ + #define R_CANFDL_CFDTM_PTR_TMDLC_Pos (28UL) /*!< TMDLC (Bit 28) */ + #define R_CANFDL_CFDTM_PTR_TMDLC_Msk (0xf0000000UL) /*!< TMDLC (Bitfield-Mask: 0x0f) */ +/* ========================================================= FDCTR ========================================================= */ + #define R_CANFDL_CFDTM_FDCTR_TMESI_Pos (0UL) /*!< TMESI (Bit 0) */ + #define R_CANFDL_CFDTM_FDCTR_TMESI_Msk (0x1UL) /*!< TMESI (Bitfield-Mask: 0x01) */ + #define R_CANFDL_CFDTM_FDCTR_TMBRS_Pos (1UL) /*!< TMBRS (Bit 1) */ + #define R_CANFDL_CFDTM_FDCTR_TMBRS_Msk (0x2UL) /*!< TMBRS (Bitfield-Mask: 0x01) */ + #define R_CANFDL_CFDTM_FDCTR_TMFDF_Pos (2UL) /*!< TMFDF (Bit 2) */ + #define R_CANFDL_CFDTM_FDCTR_TMFDF_Msk (0x4UL) /*!< TMFDF (Bitfield-Mask: 0x01) */ + #define R_CANFDL_CFDTM_FDCTR_TMIFL_Pos (8UL) /*!< TMIFL (Bit 8) */ + #define R_CANFDL_CFDTM_FDCTR_TMIFL_Msk (0x300UL) /*!< TMIFL (Bitfield-Mask: 0x03) */ + #define R_CANFDL_CFDTM_FDCTR_TMPTR_Pos (16UL) /*!< TMPTR (Bit 16) */ + #define R_CANFDL_CFDTM_FDCTR_TMPTR_Msk (0xffff0000UL) /*!< TMPTR (Bitfield-Mask: 0xffff) */ +/* ========================================================== DF =========================================================== */ + #define R_CANFDL_CFDTM_DF_TMDB_Pos (0UL) /*!< TMDB (Bit 0) */ + #define R_CANFDL_CFDTM_DF_TMDB_Msk (0xffUL) /*!< TMDB (Bitfield-Mask: 0xff) */ + +/* =========================================================================================================================== */ +/* ================ RM ================ */ +/* =========================================================================================================================== */ + +/* ========================================================== ID =========================================================== */ + #define R_CANFDL_CFDRMC_RM_ID_RMID_Pos (0UL) /*!< RMID (Bit 0) */ + #define R_CANFDL_CFDRMC_RM_ID_RMID_Msk (0x1fffffffUL) /*!< RMID (Bitfield-Mask: 0x1fffffff) */ + #define R_CANFDL_CFDRMC_RM_ID_RMRTR_Pos (30UL) /*!< RMRTR (Bit 30) */ + #define R_CANFDL_CFDRMC_RM_ID_RMRTR_Msk (0x40000000UL) /*!< RMRTR (Bitfield-Mask: 0x01) */ + #define R_CANFDL_CFDRMC_RM_ID_RMIDE_Pos (31UL) /*!< RMIDE (Bit 31) */ + #define R_CANFDL_CFDRMC_RM_ID_RMIDE_Msk (0x80000000UL) /*!< RMIDE (Bitfield-Mask: 0x01) */ +/* ========================================================== PTR ========================================================== */ + #define R_CANFDL_CFDRMC_RM_PTR_RMTS_Pos (0UL) /*!< RMTS (Bit 0) */ + #define R_CANFDL_CFDRMC_RM_PTR_RMTS_Msk (0xffffUL) /*!< RMTS (Bitfield-Mask: 0xffff) */ + #define R_CANFDL_CFDRMC_RM_PTR_RMDLC_Pos (28UL) /*!< RMDLC (Bit 28) */ + #define R_CANFDL_CFDRMC_RM_PTR_RMDLC_Msk (0xf0000000UL) /*!< RMDLC (Bitfield-Mask: 0x0f) */ +/* ========================================================= FDSTS ========================================================= */ + #define R_CANFDL_CFDRMC_RM_FDSTS_RMESI_Pos (0UL) /*!< RMESI (Bit 0) */ + #define R_CANFDL_CFDRMC_RM_FDSTS_RMESI_Msk (0x1UL) /*!< RMESI (Bitfield-Mask: 0x01) */ + #define R_CANFDL_CFDRMC_RM_FDSTS_RMBRS_Pos (1UL) /*!< RMBRS (Bit 1) */ + #define R_CANFDL_CFDRMC_RM_FDSTS_RMBRS_Msk (0x2UL) /*!< RMBRS (Bitfield-Mask: 0x01) */ + #define R_CANFDL_CFDRMC_RM_FDSTS_RMFDF_Pos (2UL) /*!< RMFDF (Bit 2) */ + #define R_CANFDL_CFDRMC_RM_FDSTS_RMFDF_Msk (0x4UL) /*!< RMFDF (Bitfield-Mask: 0x01) */ + #define R_CANFDL_CFDRMC_RM_FDSTS_RMIFL_Pos (8UL) /*!< RMIFL (Bit 8) */ + #define R_CANFDL_CFDRMC_RM_FDSTS_RMIFL_Msk (0x300UL) /*!< RMIFL (Bitfield-Mask: 0x03) */ + #define R_CANFDL_CFDRMC_RM_FDSTS_RMPTR_Pos (16UL) /*!< RMPTR (Bit 16) */ + #define R_CANFDL_CFDRMC_RM_FDSTS_RMPTR_Msk (0xffff0000UL) /*!< RMPTR (Bitfield-Mask: 0xffff) */ +/* ========================================================== DF =========================================================== */ + #define R_CANFDL_CFDRMC_RM_DF_RMDB_Pos (0UL) /*!< RMDB (Bit 0) */ + #define R_CANFDL_CFDRMC_RM_DF_RMDB_Msk (0xffUL) /*!< RMDB (Bitfield-Mask: 0xff) */ + +/* =========================================================================================================================== */ +/* ================ CFDRMC ================ */ +/* =========================================================================================================================== */ + +/* =========================================================================================================================== */ +/* ================ 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) */ + +/* =========================================================================================================================== */ +/* ================ TM ================ */ +/* =========================================================================================================================== */ + +/* ========================================================= STTRU ========================================================= */ + #define R_ETHERC_EPTPC_COMMON_TM_STTRU_TMSTTRU_Pos (0UL) /*!< TMSTTRU (Bit 0) */ + #define R_ETHERC_EPTPC_COMMON_TM_STTRU_TMSTTRU_Msk (0xffffffffUL) /*!< TMSTTRU (Bitfield-Mask: 0xffffffff) */ +/* ========================================================= STTRL ========================================================= */ + #define R_ETHERC_EPTPC_COMMON_TM_STTRL_TMSTTRL_Pos (0UL) /*!< TMSTTRL (Bit 0) */ + #define R_ETHERC_EPTPC_COMMON_TM_STTRL_TMSTTRL_Msk (0xffffffffUL) /*!< TMSTTRL (Bitfield-Mask: 0xffffffff) */ +/* ========================================================= CYCR ========================================================== */ + #define R_ETHERC_EPTPC_COMMON_TM_CYCR_TMCYCR_Pos (0UL) /*!< TMCYCR (Bit 0) */ + #define R_ETHERC_EPTPC_COMMON_TM_CYCR_TMCYCR_Msk (0x3fffffffUL) /*!< TMCYCR (Bitfield-Mask: 0x3fffffff) */ +/* ========================================================= PLSR ========================================================== */ + #define R_ETHERC_EPTPC_COMMON_TM_PLSR_TMPLSR_Pos (0UL) /*!< TMPLSR (Bit 0) */ + #define R_ETHERC_EPTPC_COMMON_TM_PLSR_TMPLSR_Msk (0x1fffffffUL) /*!< TMPLSR (Bitfield-Mask: 0x1fffffff) */ + +/* =========================================================================================================================== */ +/* ================ PR ================ */ +/* =========================================================================================================================== */ + +/* ========================================================= MACRU ========================================================= */ + #define R_ETHERC_EPTPC_COMMON_PR_MACRU_PRMACRU_Pos (0UL) /*!< PRMACRU (Bit 0) */ + #define R_ETHERC_EPTPC_COMMON_PR_MACRU_PRMACRU_Msk (0xffffffUL) /*!< PRMACRU (Bitfield-Mask: 0xffffff) */ +/* ========================================================= MACRL ========================================================= */ + #define R_ETHERC_EPTPC_COMMON_PR_MACRL_PRMACRL_Pos (0UL) /*!< PRMACRL (Bit 0) */ + #define R_ETHERC_EPTPC_COMMON_PR_MACRL_PRMACRL_Msk (0xffffffUL) /*!< PRMACRL (Bitfield-Mask: 0xffffff) */ + +/* =========================================================================================================================== */ +/* ================ 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) */ + +/* =========================================================================================================================== */ +/* ================ GTDLYR ================ */ +/* =========================================================================================================================== */ + +/* =========================================================== A =========================================================== */ + #define R_GPT_ODC_GTDLYR_A_DLY_Pos (0UL) /*!< DLY (Bit 0) */ + #define R_GPT_ODC_GTDLYR_A_DLY_Msk (0x1fUL) /*!< DLY (Bitfield-Mask: 0x1f) */ +/* =========================================================== B =========================================================== */ + #define R_GPT_ODC_GTDLYR_B_DLY_Pos (0UL) /*!< DLY (Bit 0) */ + #define R_GPT_ODC_GTDLYR_B_DLY_Msk (0x1fUL) /*!< DLY (Bitfield-Mask: 0x1f) */ + +/* =========================================================================================================================== */ +/* ================ 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 ================ */ +/* =========================================================================================================================== */ + +/* =========================================================== C =========================================================== */ + #define R_MPU_MMPU_MMPU_REGION_C_WP_Pos (2UL) /*!< WP (Bit 2) */ + #define R_MPU_MMPU_MMPU_REGION_C_WP_Msk (0x4UL) /*!< WP (Bitfield-Mask: 0x01) */ + #define R_MPU_MMPU_MMPU_REGION_C_RP_Pos (1UL) /*!< RP (Bit 1) */ + #define R_MPU_MMPU_MMPU_REGION_C_RP_Msk (0x2UL) /*!< RP (Bitfield-Mask: 0x01) */ + #define R_MPU_MMPU_MMPU_REGION_C_ENABLE_Pos (0UL) /*!< ENABLE (Bit 0) */ + #define R_MPU_MMPU_MMPU_REGION_C_ENABLE_Msk (0x1UL) /*!< ENABLE (Bitfield-Mask: 0x01) */ +/* =========================================================== S =========================================================== */ + #define R_MPU_MMPU_MMPU_REGION_S_MMPUSmn_Pos (0UL) /*!< MMPUSmn (Bit 0) */ + #define R_MPU_MMPU_MMPU_REGION_S_MMPUSmn_Msk (0xffffffffUL) /*!< MMPUSmn (Bitfield-Mask: 0xffffffff) */ +/* =========================================================== E =========================================================== */ + #define R_MPU_MMPU_MMPU_REGION_E_MMPUEmn_Pos (0UL) /*!< MMPUEmn (Bit 0) */ + #define R_MPU_MMPU_MMPU_REGION_E_MMPUEmn_Msk (0xffffffffUL) /*!< MMPUEmn (Bitfield-Mask: 0xffffffff) */ + +/* =========================================================================================================================== */ +/* ================ MMPU ================ */ +/* =========================================================================================================================== */ + +/* ========================================================== CTL ========================================================== */ + #define R_MPU_MMPU_MMPU_CTL_KEY_Pos (8UL) /*!< KEY (Bit 8) */ + #define R_MPU_MMPU_MMPU_CTL_KEY_Msk (0xff00UL) /*!< KEY (Bitfield-Mask: 0xff) */ + #define R_MPU_MMPU_MMPU_CTL_OAD_Pos (1UL) /*!< OAD (Bit 1) */ + #define R_MPU_MMPU_MMPU_CTL_OAD_Msk (0x2UL) /*!< OAD (Bitfield-Mask: 0x01) */ + #define R_MPU_MMPU_MMPU_CTL_ENABLE_Pos (0UL) /*!< ENABLE (Bit 0) */ + #define R_MPU_MMPU_MMPU_CTL_ENABLE_Msk (0x1UL) /*!< ENABLE (Bitfield-Mask: 0x01) */ +/* ========================================================== PT =========================================================== */ + #define R_MPU_MMPU_MMPU_PT_KEY_Pos (8UL) /*!< KEY (Bit 8) */ + #define R_MPU_MMPU_MMPU_PT_KEY_Msk (0xff00UL) /*!< KEY (Bitfield-Mask: 0xff) */ + #define R_MPU_MMPU_MMPU_PT_PROTECT_Pos (0UL) /*!< PROTECT (Bit 0) */ + #define R_MPU_MMPU_MMPU_PT_PROTECT_Msk (0x1UL) /*!< PROTECT (Bitfield-Mask: 0x01) */ + +/* =========================================================================================================================== */ +/* ================ SMPU ================ */ +/* =========================================================================================================================== */ + +/* =========================================================== R =========================================================== */ + #define R_MPU_SMPU_SMPU_R_WPSRAMHS_Pos (15UL) /*!< WPSRAMHS (Bit 15) */ + #define R_MPU_SMPU_SMPU_R_WPSRAMHS_Msk (0x8000UL) /*!< WPSRAMHS (Bitfield-Mask: 0x01) */ + #define R_MPU_SMPU_SMPU_R_RPSRAMHS_Pos (14UL) /*!< RPSRAMHS (Bit 14) */ + #define R_MPU_SMPU_SMPU_R_RPSRAMHS_Msk (0x4000UL) /*!< RPSRAMHS (Bitfield-Mask: 0x01) */ + #define R_MPU_SMPU_SMPU_R_WPFLI_Pos (13UL) /*!< WPFLI (Bit 13) */ + #define R_MPU_SMPU_SMPU_R_WPFLI_Msk (0x2000UL) /*!< WPFLI (Bitfield-Mask: 0x01) */ + #define R_MPU_SMPU_SMPU_R_RPFLI_Pos (12UL) /*!< RPFLI (Bit 12) */ + #define R_MPU_SMPU_SMPU_R_RPFLI_Msk (0x1000UL) /*!< RPFLI (Bitfield-Mask: 0x01) */ + #define R_MPU_SMPU_SMPU_R_WPGRPC_Pos (7UL) /*!< WPGRPC (Bit 7) */ + #define R_MPU_SMPU_SMPU_R_WPGRPC_Msk (0x80UL) /*!< WPGRPC (Bitfield-Mask: 0x01) */ + #define R_MPU_SMPU_SMPU_R_RPGRPC_Pos (6UL) /*!< RPGRPC (Bit 6) */ + #define R_MPU_SMPU_SMPU_R_RPGRPC_Msk (0x40UL) /*!< RPGRPC (Bitfield-Mask: 0x01) */ + #define R_MPU_SMPU_SMPU_R_WPGRPB_Pos (5UL) /*!< WPGRPB (Bit 5) */ + #define R_MPU_SMPU_SMPU_R_WPGRPB_Msk (0x20UL) /*!< WPGRPB (Bitfield-Mask: 0x01) */ + #define R_MPU_SMPU_SMPU_R_RPGRPB_Pos (4UL) /*!< RPGRPB (Bit 4) */ + #define R_MPU_SMPU_SMPU_R_RPGRPB_Msk (0x10UL) /*!< RPGRPB (Bitfield-Mask: 0x01) */ + #define R_MPU_SMPU_SMPU_R_WPGRPA_Pos (3UL) /*!< WPGRPA (Bit 3) */ + #define R_MPU_SMPU_SMPU_R_WPGRPA_Msk (0x8UL) /*!< WPGRPA (Bitfield-Mask: 0x01) */ + #define R_MPU_SMPU_SMPU_R_RPGRPA_Pos (2UL) /*!< RPGRPA (Bit 2) */ + #define R_MPU_SMPU_SMPU_R_RPGRPA_Msk (0x4UL) /*!< RPGRPA (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) */ + +/* =========================================================================================================================== */ +/* ================ AMP ================ */ +/* =========================================================================================================================== */ + +/* ========================================================== OS =========================================================== */ +/* ========================================================== PS =========================================================== */ +/* ========================================================== MS =========================================================== */ + +/* =========================================================================================================================== */ +/* ================ AMPOT ================ */ +/* =========================================================================================================================== */ + +/* =========================================================== P =========================================================== */ + #define R_OPAMP_AMPOT_P_TRMP_Pos (0UL) /*!< TRMP (Bit 0) */ + #define R_OPAMP_AMPOT_P_TRMP_Msk (0x1fUL) /*!< TRMP (Bitfield-Mask: 0x1f) */ +/* =========================================================== N =========================================================== */ + #define R_OPAMP_AMPOT_N_TRMN_Pos (0UL) /*!< TRMN (Bit 0) */ + #define R_OPAMP_AMPOT_N_TRMN_Msk (0x1fUL) /*!< TRMN (Bitfield-Mask: 0x1f) */ + +/* =========================================================================================================================== */ +/* ================ PIN ================ */ +/* =========================================================================================================================== */ + +/* ======================================================= PmnPFS_BY ======================================================= */ + #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) */ + #define R_PFS_PORT_PIN_PmnPFS_BY_PIM_Pos (5UL) /*!< PIM (Bit 5) */ + #define R_PFS_PORT_PIN_PmnPFS_BY_PIM_Msk (0x20UL) /*!< PIM (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_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_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_PODR_Pos (0UL) /*!< PODR (Bit 0) */ + #define R_PFS_PORT_PIN_PmnPFS_BY_PODR_Msk (0x1UL) /*!< PODR (Bitfield-Mask: 0x01) */ +/* ======================================================= PmnPFS_HA ======================================================= */ + #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_PIM_Pos (5UL) /*!< PIM (Bit 5) */ + #define R_PFS_PORT_PIN_PmnPFS_HA_PIM_Msk (0x20UL) /*!< PIM (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_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_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_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_ASEL_Pos (15UL) /*!< ASEL (Bit 15) */ + #define R_PFS_PORT_PIN_PmnPFS_HA_ASEL_Msk (0x8000UL) /*!< ASEL (Bitfield-Mask: 0x01) */ + #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_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_DSCR_Pos (10UL) /*!< DSCR (Bit 10) */ + #define R_PFS_PORT_PIN_PmnPFS_HA_DSCR_Msk (0xc00UL) /*!< DSCR (Bitfield-Mask: 0x03) */ +/* ======================================================== PmnPFS ========================================================= */ + #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_PIM_Pos (5UL) /*!< PIM (Bit 5) */ + #define R_PFS_PORT_PIN_PmnPFS_PIM_Msk (0x20UL) /*!< PIM (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_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_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_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_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_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_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_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_PSEL_Pos (24UL) /*!< PSEL (Bit 24) */ + #define R_PFS_PORT_PIN_PmnPFS_PSEL_Msk (0x1f000000UL) /*!< PSEL (Bitfield-Mask: 0x1f) */ + #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) */ + +/* =========================================================================================================================== */ +/* ================ PORT ================ */ +/* =========================================================================================================================== */ + +/* =========================================================================================================================== */ +/* ================ PMSAR ================ */ +/* =========================================================================================================================== */ + +/* ========================================================= PMSAR ========================================================= */ + +/* =========================================================================================================================== */ +/* ================ RTCCR ================ */ +/* =========================================================================================================================== */ + +/* ========================================================= RTCCR ========================================================= */ + #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) */ + +/* =========================================================================================================================== */ +/* ================ CSa ================ */ +/* =========================================================================================================================== */ + +/* ========================================================== MOD ========================================================== */ + #define R_BUS_B_CSa_MOD_PRMOD_Pos (15UL) /*!< PRMOD (Bit 15) */ + #define R_BUS_B_CSa_MOD_PRMOD_Msk (0x8000UL) /*!< PRMOD (Bitfield-Mask: 0x01) */ + #define R_BUS_B_CSa_MOD_PWENB_Pos (9UL) /*!< PWENB (Bit 9) */ + #define R_BUS_B_CSa_MOD_PWENB_Msk (0x200UL) /*!< PWENB (Bitfield-Mask: 0x01) */ + #define R_BUS_B_CSa_MOD_PRENB_Pos (8UL) /*!< PRENB (Bit 8) */ + #define R_BUS_B_CSa_MOD_PRENB_Msk (0x100UL) /*!< PRENB (Bitfield-Mask: 0x01) */ + #define R_BUS_B_CSa_MOD_EWENB_Pos (3UL) /*!< EWENB (Bit 3) */ + #define R_BUS_B_CSa_MOD_EWENB_Msk (0x8UL) /*!< EWENB (Bitfield-Mask: 0x01) */ + #define R_BUS_B_CSa_MOD_WRMOD_Pos (0UL) /*!< WRMOD (Bit 0) */ + #define R_BUS_B_CSa_MOD_WRMOD_Msk (0x1UL) /*!< WRMOD (Bitfield-Mask: 0x01) */ +/* ========================================================= WCR1 ========================================================== */ + #define R_BUS_B_CSa_WCR1_CSRWAIT_Pos (24UL) /*!< CSRWAIT (Bit 24) */ + #define R_BUS_B_CSa_WCR1_CSRWAIT_Msk (0x1f000000UL) /*!< CSRWAIT (Bitfield-Mask: 0x1f) */ + #define R_BUS_B_CSa_WCR1_CSWWAIT_Pos (16UL) /*!< CSWWAIT (Bit 16) */ + #define R_BUS_B_CSa_WCR1_CSWWAIT_Msk (0x1f0000UL) /*!< CSWWAIT (Bitfield-Mask: 0x1f) */ + #define R_BUS_B_CSa_WCR1_CSPRWAIT_Pos (8UL) /*!< CSPRWAIT (Bit 8) */ + #define R_BUS_B_CSa_WCR1_CSPRWAIT_Msk (0x700UL) /*!< CSPRWAIT (Bitfield-Mask: 0x07) */ + #define R_BUS_B_CSa_WCR1_CSPWWAIT_Pos (0UL) /*!< CSPWWAIT (Bit 0) */ + #define R_BUS_B_CSa_WCR1_CSPWWAIT_Msk (0x7UL) /*!< CSPWWAIT (Bitfield-Mask: 0x07) */ +/* ========================================================= WCR2 ========================================================== */ + #define R_BUS_B_CSa_WCR2_CSON_Pos (28UL) /*!< CSON (Bit 28) */ + #define R_BUS_B_CSa_WCR2_CSON_Msk (0x70000000UL) /*!< CSON (Bitfield-Mask: 0x07) */ + #define R_BUS_B_CSa_WCR2_WDON_Pos (24UL) /*!< WDON (Bit 24) */ + #define R_BUS_B_CSa_WCR2_WDON_Msk (0x7000000UL) /*!< WDON (Bitfield-Mask: 0x07) */ + #define R_BUS_B_CSa_WCR2_WRON_Pos (20UL) /*!< WRON (Bit 20) */ + #define R_BUS_B_CSa_WCR2_WRON_Msk (0x700000UL) /*!< WRON (Bitfield-Mask: 0x07) */ + #define R_BUS_B_CSa_WCR2_RDON_Pos (16UL) /*!< RDON (Bit 16) */ + #define R_BUS_B_CSa_WCR2_RDON_Msk (0x70000UL) /*!< RDON (Bitfield-Mask: 0x07) */ + #define R_BUS_B_CSa_WCR2_AWAIT_Pos (12UL) /*!< AWAIT (Bit 12) */ + #define R_BUS_B_CSa_WCR2_AWAIT_Msk (0x3000UL) /*!< AWAIT (Bitfield-Mask: 0x03) */ + #define R_BUS_B_CSa_WCR2_WDOFF_Pos (8UL) /*!< WDOFF (Bit 8) */ + #define R_BUS_B_CSa_WCR2_WDOFF_Msk (0x700UL) /*!< WDOFF (Bitfield-Mask: 0x07) */ + #define R_BUS_B_CSa_WCR2_CSWOFF_Pos (4UL) /*!< CSWOFF (Bit 4) */ + #define R_BUS_B_CSa_WCR2_CSWOFF_Msk (0x70UL) /*!< CSWOFF (Bitfield-Mask: 0x07) */ + #define R_BUS_B_CSa_WCR2_CSROFF_Pos (0UL) /*!< CSROFF (Bit 0) */ + #define R_BUS_B_CSa_WCR2_CSROFF_Msk (0x7UL) /*!< CSROFF (Bitfield-Mask: 0x07) */ + +/* =========================================================================================================================== */ +/* ================ CSb ================ */ +/* =========================================================================================================================== */ + +/* ========================================================== CR =========================================================== */ + #define R_BUS_B_CSb_CR_MPXEN_Pos (12UL) /*!< MPXEN (Bit 12) */ + #define R_BUS_B_CSb_CR_MPXEN_Msk (0x1000UL) /*!< MPXEN (Bitfield-Mask: 0x01) */ + #define R_BUS_B_CSb_CR_EMODE_Pos (8UL) /*!< EMODE (Bit 8) */ + #define R_BUS_B_CSb_CR_EMODE_Msk (0x100UL) /*!< EMODE (Bitfield-Mask: 0x01) */ + #define R_BUS_B_CSb_CR_BSIZE_Pos (4UL) /*!< BSIZE (Bit 4) */ + #define R_BUS_B_CSb_CR_BSIZE_Msk (0x30UL) /*!< BSIZE (Bitfield-Mask: 0x03) */ + #define R_BUS_B_CSb_CR_EXENB_Pos (0UL) /*!< EXENB (Bit 0) */ + #define R_BUS_B_CSb_CR_EXENB_Msk (0x1UL) /*!< EXENB (Bitfield-Mask: 0x01) */ +/* ========================================================== REC ========================================================== */ + #define R_BUS_B_CSb_REC_WRCV_Pos (8UL) /*!< WRCV (Bit 8) */ + #define R_BUS_B_CSb_REC_WRCV_Msk (0xf00UL) /*!< WRCV (Bitfield-Mask: 0x0f) */ + #define R_BUS_B_CSb_REC_RRCV_Pos (0UL) /*!< RRCV (Bit 0) */ + #define R_BUS_B_CSb_REC_RRCV_Msk (0xfUL) /*!< RRCV (Bitfield-Mask: 0x0f) */ + +/* =========================================================================================================================== */ +/* ================ BUSERR ================ */ +/* =========================================================================================================================== */ + +/* ========================================================== ADD ========================================================== */ + #define R_BUS_B_BUSERR_ADD_BERAD_Pos (0UL) /*!< BERAD (Bit 0) */ + #define R_BUS_B_BUSERR_ADD_BERAD_Msk (0xffffffffUL) /*!< BERAD (Bitfield-Mask: 0xffffffff) */ +/* ========================================================= ERRRW ========================================================= */ + #define R_BUS_B_BUSERR_ERRRW_RWSTAT_Pos (0UL) /*!< RWSTAT (Bit 0) */ + #define R_BUS_B_BUSERR_ERRRW_RWSTAT_Msk (0x1UL) /*!< RWSTAT (Bitfield-Mask: 0x01) */ + +/* =========================================================================================================================== */ +/* ================ BUSTZFERR ================ */ +/* =========================================================================================================================== */ + +/* ======================================================== TZFADD ========================================================= */ + #define R_BUS_B_BUSTZFERR_TZFADD_BTZFERAD_Pos (0UL) /*!< BTZFERAD (Bit 0) */ + #define R_BUS_B_BUSTZFERR_TZFADD_BTZFERAD_Msk (0xffffffffUL) /*!< BTZFERAD (Bitfield-Mask: 0xffffffff) */ +/* ======================================================= TZFERRRW ======================================================== */ + #define R_BUS_B_BUSTZFERR_TZFERRRW_TRWSTAT_Pos (0UL) /*!< TRWSTAT (Bit 0) */ + #define R_BUS_B_BUSTZFERR_TZFERRRW_TRWSTAT_Msk (0x1UL) /*!< TRWSTAT (Bitfield-Mask: 0x01) */ + +/* =========================================================================================================================== */ +/* ================ 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) */ + +/** @} */ /* 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_ACMPLP ================ */ +/* =========================================================================================================================== */ + +/* ======================================================== COMPMDR ======================================================== */ + #define R_ACMPLP_COMPMDR_C1MON_Pos (7UL) /*!< C1MON (Bit 7) */ + #define R_ACMPLP_COMPMDR_C1MON_Msk (0x80UL) /*!< C1MON (Bitfield-Mask: 0x01) */ + #define R_ACMPLP_COMPMDR_C1VRF_Pos (6UL) /*!< C1VRF (Bit 6) */ + #define R_ACMPLP_COMPMDR_C1VRF_Msk (0x40UL) /*!< C1VRF (Bitfield-Mask: 0x01) */ + #define R_ACMPLP_COMPMDR_C1WDE_Pos (5UL) /*!< C1WDE (Bit 5) */ + #define R_ACMPLP_COMPMDR_C1WDE_Msk (0x20UL) /*!< C1WDE (Bitfield-Mask: 0x01) */ + #define R_ACMPLP_COMPMDR_C1ENB_Pos (4UL) /*!< C1ENB (Bit 4) */ + #define R_ACMPLP_COMPMDR_C1ENB_Msk (0x10UL) /*!< C1ENB (Bitfield-Mask: 0x01) */ + #define R_ACMPLP_COMPMDR_C0MON_Pos (3UL) /*!< C0MON (Bit 3) */ + #define R_ACMPLP_COMPMDR_C0MON_Msk (0x8UL) /*!< C0MON (Bitfield-Mask: 0x01) */ + #define R_ACMPLP_COMPMDR_C0WDE_Pos (1UL) /*!< C0WDE (Bit 1) */ + #define R_ACMPLP_COMPMDR_C0WDE_Msk (0x2UL) /*!< C0WDE (Bitfield-Mask: 0x01) */ + #define R_ACMPLP_COMPMDR_C0VRF_Pos (2UL) /*!< C0VRF (Bit 2) */ + #define R_ACMPLP_COMPMDR_C0VRF_Msk (0x4UL) /*!< C0VRF (Bitfield-Mask: 0x01) */ + #define R_ACMPLP_COMPMDR_C0ENB_Pos (0UL) /*!< C0ENB (Bit 0) */ + #define R_ACMPLP_COMPMDR_C0ENB_Msk (0x1UL) /*!< C0ENB (Bitfield-Mask: 0x01) */ +/* ======================================================== COMPFIR ======================================================== */ + #define R_ACMPLP_COMPFIR_C1EDG_Pos (7UL) /*!< C1EDG (Bit 7) */ + #define R_ACMPLP_COMPFIR_C1EDG_Msk (0x80UL) /*!< C1EDG (Bitfield-Mask: 0x01) */ + #define R_ACMPLP_COMPFIR_C1EPO_Pos (6UL) /*!< C1EPO (Bit 6) */ + #define R_ACMPLP_COMPFIR_C1EPO_Msk (0x40UL) /*!< C1EPO (Bitfield-Mask: 0x01) */ + #define R_ACMPLP_COMPFIR_C1FCK_Pos (4UL) /*!< C1FCK (Bit 4) */ + #define R_ACMPLP_COMPFIR_C1FCK_Msk (0x30UL) /*!< C1FCK (Bitfield-Mask: 0x03) */ + #define R_ACMPLP_COMPFIR_C0EDG_Pos (3UL) /*!< C0EDG (Bit 3) */ + #define R_ACMPLP_COMPFIR_C0EDG_Msk (0x8UL) /*!< C0EDG (Bitfield-Mask: 0x01) */ + #define R_ACMPLP_COMPFIR_C0EPO_Pos (2UL) /*!< C0EPO (Bit 2) */ + #define R_ACMPLP_COMPFIR_C0EPO_Msk (0x4UL) /*!< C0EPO (Bitfield-Mask: 0x01) */ + #define R_ACMPLP_COMPFIR_C0FCK_Pos (0UL) /*!< C0FCK (Bit 0) */ + #define R_ACMPLP_COMPFIR_C0FCK_Msk (0x3UL) /*!< C0FCK (Bitfield-Mask: 0x03) */ +/* ======================================================== COMPOCR ======================================================== */ + #define R_ACMPLP_COMPOCR_SPDMD_Pos (7UL) /*!< SPDMD (Bit 7) */ + #define R_ACMPLP_COMPOCR_SPDMD_Msk (0x80UL) /*!< SPDMD (Bitfield-Mask: 0x01) */ + #define R_ACMPLP_COMPOCR_C1OP_Pos (6UL) /*!< C1OP (Bit 6) */ + #define R_ACMPLP_COMPOCR_C1OP_Msk (0x40UL) /*!< C1OP (Bitfield-Mask: 0x01) */ + #define R_ACMPLP_COMPOCR_C1OE_Pos (5UL) /*!< C1OE (Bit 5) */ + #define R_ACMPLP_COMPOCR_C1OE_Msk (0x20UL) /*!< C1OE (Bitfield-Mask: 0x01) */ + #define R_ACMPLP_COMPOCR_C0OP_Pos (2UL) /*!< C0OP (Bit 2) */ + #define R_ACMPLP_COMPOCR_C0OP_Msk (0x4UL) /*!< C0OP (Bitfield-Mask: 0x01) */ + #define R_ACMPLP_COMPOCR_C0OE_Pos (1UL) /*!< C0OE (Bit 1) */ + #define R_ACMPLP_COMPOCR_C0OE_Msk (0x2UL) /*!< C0OE (Bitfield-Mask: 0x01) */ +/* ======================================================= COMPSEL0 ======================================================== */ + #define R_ACMPLP_COMPSEL0_IVCMP1_Pos (4UL) /*!< IVCMP1 (Bit 4) */ + #define R_ACMPLP_COMPSEL0_IVCMP1_Msk (0x70UL) /*!< IVCMP1 (Bitfield-Mask: 0x07) */ + #define R_ACMPLP_COMPSEL0_IVCMP0_Pos (0UL) /*!< IVCMP0 (Bit 0) */ + #define R_ACMPLP_COMPSEL0_IVCMP0_Msk (0x7UL) /*!< IVCMP0 (Bitfield-Mask: 0x07) */ +/* ======================================================= COMPSEL1 ======================================================== */ + #define R_ACMPLP_COMPSEL1_C1VRF2_Pos (7UL) /*!< C1VRF2 (Bit 7) */ + #define R_ACMPLP_COMPSEL1_C1VRF2_Msk (0x80UL) /*!< C1VRF2 (Bitfield-Mask: 0x01) */ + #define R_ACMPLP_COMPSEL1_IVREF1_Pos (4UL) /*!< IVREF1 (Bit 4) */ + #define R_ACMPLP_COMPSEL1_IVREF1_Msk (0x70UL) /*!< IVREF1 (Bitfield-Mask: 0x07) */ + #define R_ACMPLP_COMPSEL1_IVREF0_Pos (0UL) /*!< IVREF0 (Bit 0) */ + #define R_ACMPLP_COMPSEL1_IVREF0_Msk (0x7UL) /*!< IVREF0 (Bitfield-Mask: 0x07) */ + +/* =========================================================================================================================== */ +/* ================ 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) */ + +/* =========================================================================================================================== */ +/* ================ R_PSCU ================ */ +/* =========================================================================================================================== */ + +/* ========================================================= PSARB ========================================================= */ + #define R_PSCU_PSARB_PSARB1_Pos (1UL) /*!< PSARB1 (Bit 1) */ + #define R_PSCU_PSARB_PSARB1_Msk (0x2UL) /*!< PSARB1 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PSARB_PSARB2_Pos (2UL) /*!< PSARB2 (Bit 2) */ + #define R_PSCU_PSARB_PSARB2_Msk (0x4UL) /*!< PSARB2 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PSARB_PSARB3_Pos (3UL) /*!< PSARB3 (Bit 3) */ + #define R_PSCU_PSARB_PSARB3_Msk (0x8UL) /*!< PSARB3 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PSARB_PSARB6_Pos (6UL) /*!< PSARB6 (Bit 6) */ + #define R_PSCU_PSARB_PSARB6_Msk (0x40UL) /*!< PSARB6 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PSARB_PSARB7_Pos (7UL) /*!< PSARB7 (Bit 7) */ + #define R_PSCU_PSARB_PSARB7_Msk (0x80UL) /*!< PSARB7 (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_PSARB23_Pos (23UL) /*!< PSARB23 (Bit 23) */ + #define R_PSCU_PSARB_PSARB23_Msk (0x800000UL) /*!< PSARB23 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PSARB_PSARB24_Pos (24UL) /*!< PSARB24 (Bit 24) */ + #define R_PSCU_PSARB_PSARB24_Msk (0x1000000UL) /*!< PSARB24 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PSARB_PSARB25_Pos (25UL) /*!< PSARB25 (Bit 25) */ + #define R_PSCU_PSARB_PSARB25_Msk (0x2000000UL) /*!< PSARB25 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PSARB_PSARB26_Pos (26UL) /*!< PSARB26 (Bit 26) */ + #define R_PSCU_PSARB_PSARB26_Msk (0x4000000UL) /*!< PSARB26 (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_PSARC3_Pos (3UL) /*!< PSARC3 (Bit 3) */ + #define R_PSCU_PSARC_PSARC3_Msk (0x8UL) /*!< PSARC3 (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_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_PSARC20_Pos (20UL) /*!< PSARC20 (Bit 20) */ + #define R_PSCU_PSARC_PSARC20_Msk (0x100000UL) /*!< PSARC20 (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_PSARD0_Pos (0UL) /*!< PSARD0 (Bit 0) */ + #define R_PSCU_PSARD_PSARD0_Msk (0x1UL) /*!< PSARD0 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PSARD_PSARD1_Pos (1UL) /*!< PSARD1 (Bit 1) */ + #define R_PSCU_PSARD_PSARD1_Msk (0x2UL) /*!< PSARD1 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PSARD_PSARD2_Pos (2UL) /*!< PSARD2 (Bit 2) */ + #define R_PSCU_PSARD_PSARD2_Msk (0x4UL) /*!< PSARD2 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PSARD_PSARD3_Pos (3UL) /*!< PSARD3 (Bit 3) */ + #define R_PSCU_PSARD_PSARD3_Msk (0x8UL) /*!< PSARD3 (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_PSARD19_Pos (19UL) /*!< PSARD19 (Bit 19) */ + #define R_PSCU_PSARD_PSARD19_Msk (0x80000UL) /*!< PSARD19 (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_PSARD25_Pos (25UL) /*!< PSARD25 (Bit 25) */ + #define R_PSCU_PSARD_PSARD25_Msk (0x2000000UL) /*!< PSARD25 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PSARD_PSARD26_Pos (26UL) /*!< PSARD26 (Bit 26) */ + #define R_PSCU_PSARD_PSARD26_Msk (0x4000000UL) /*!< PSARD26 (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_PSARE0_Pos (0UL) /*!< PSARE0 (Bit 0) */ + #define R_PSCU_PSARE_PSARE0_Msk (0x1UL) /*!< PSARE0 (Bitfield-Mask: 0x01) */ + #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_PSARE14_Pos (14UL) /*!< PSARE14 (Bit 14) */ + #define R_PSCU_PSARE_PSARE14_Msk (0x4000UL) /*!< PSARE14 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PSARE_PSARE15_Pos (15UL) /*!< PSARE15 (Bit 15) */ + #define R_PSCU_PSARE_PSARE15_Msk (0x8000UL) /*!< PSARE15 (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_MSSAR2_Pos (2UL) /*!< MSSAR2 (Bit 2) */ + #define R_PSCU_MSSAR_MSSAR2_Msk (0x4UL) /*!< MSSAR2 (Bitfield-Mask: 0x01) */ + #define R_PSCU_MSSAR_MSSAR3_Pos (3UL) /*!< MSSAR3 (Bit 3) */ + #define R_PSCU_MSSAR_MSSAR3_Msk (0x8UL) /*!< MSSAR3 (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) */ +/* ======================================================= CFSAMONB ======================================================== */ + #define R_PSCU_CFSAMONB_CFS1_Pos (10UL) /*!< CFS1 (Bit 10) */ + #define R_PSCU_CFSAMONB_CFS1_Msk (0xfffc00UL) /*!< CFS1 (Bitfield-Mask: 0x3fff) */ +/* ======================================================== DFSAMON ======================================================== */ + #define R_PSCU_DFSAMON_DFS_Pos (10UL) /*!< DFS (Bit 10) */ + #define R_PSCU_DFSAMON_DFS_Msk (0xfc00UL) /*!< DFS (Bitfield-Mask: 0x3f) */ +/* ======================================================== SSAMONA ======================================================== */ + #define R_PSCU_SSAMONA_SS2_Pos (13UL) /*!< SS2 (Bit 13) */ + #define R_PSCU_SSAMONA_SS2_Msk (0x1fe000UL) /*!< SS2 (Bitfield-Mask: 0xff) */ +/* ======================================================== SSAMONB ======================================================== */ + #define R_PSCU_SSAMONB_SS1_Pos (10UL) /*!< SS1 (Bit 10) */ + #define R_PSCU_SSAMONB_SS1_Msk (0x1ffc00UL) /*!< SS1 (Bitfield-Mask: 0x7ff) */ +/* ======================================================== DLMMON ========================================================= */ + #define R_PSCU_DLMMON_DLMMON_Pos (0UL) /*!< DLMMON (Bit 0) */ + #define R_PSCU_DLMMON_DLMMON_Msk (0xfUL) /*!< DLMMON (Bitfield-Mask: 0x0f) */ + +/* =========================================================================================================================== */ +/* ================ R_AGT0 ================ */ +/* =========================================================================================================================== */ + +/* ========================================================== AGT ========================================================== */ + #define R_AGT0_AGT_AGT_Pos (0UL) /*!< AGT (Bit 0) */ + #define R_AGT0_AGT_AGT_Msk (0xffffUL) /*!< AGT (Bitfield-Mask: 0xffff) */ +/* ======================================================== AGTCMA ========================================================= */ + #define R_AGT0_AGTCMA_AGTCMA_Pos (0UL) /*!< AGTCMA (Bit 0) */ + #define R_AGT0_AGTCMA_AGTCMA_Msk (0xffffUL) /*!< AGTCMA (Bitfield-Mask: 0xffff) */ +/* ======================================================== AGTCMB ========================================================= */ + #define R_AGT0_AGTCMB_AGTCMB_Pos (0UL) /*!< AGTCMB (Bit 0) */ + #define R_AGT0_AGTCMB_AGTCMB_Msk (0xffffUL) /*!< AGTCMB (Bitfield-Mask: 0xffff) */ +/* ========================================================= AGTCR ========================================================= */ + #define R_AGT0_AGTCR_TCMBF_Pos (7UL) /*!< TCMBF (Bit 7) */ + #define R_AGT0_AGTCR_TCMBF_Msk (0x80UL) /*!< TCMBF (Bitfield-Mask: 0x01) */ + #define R_AGT0_AGTCR_TCMAF_Pos (6UL) /*!< TCMAF (Bit 6) */ + #define R_AGT0_AGTCR_TCMAF_Msk (0x40UL) /*!< TCMAF (Bitfield-Mask: 0x01) */ + #define R_AGT0_AGTCR_TUNDF_Pos (5UL) /*!< TUNDF (Bit 5) */ + #define R_AGT0_AGTCR_TUNDF_Msk (0x20UL) /*!< TUNDF (Bitfield-Mask: 0x01) */ + #define R_AGT0_AGTCR_TEDGF_Pos (4UL) /*!< TEDGF (Bit 4) */ + #define R_AGT0_AGTCR_TEDGF_Msk (0x10UL) /*!< TEDGF (Bitfield-Mask: 0x01) */ + #define R_AGT0_AGTCR_TSTOP_Pos (2UL) /*!< TSTOP (Bit 2) */ + #define R_AGT0_AGTCR_TSTOP_Msk (0x4UL) /*!< TSTOP (Bitfield-Mask: 0x01) */ + #define R_AGT0_AGTCR_TCSTF_Pos (1UL) /*!< TCSTF (Bit 1) */ + #define R_AGT0_AGTCR_TCSTF_Msk (0x2UL) /*!< TCSTF (Bitfield-Mask: 0x01) */ + #define R_AGT0_AGTCR_TSTART_Pos (0UL) /*!< TSTART (Bit 0) */ + #define R_AGT0_AGTCR_TSTART_Msk (0x1UL) /*!< TSTART (Bitfield-Mask: 0x01) */ +/* ======================================================== AGTMR1 ========================================================= */ + #define R_AGT0_AGTMR1_TCK_Pos (4UL) /*!< TCK (Bit 4) */ + #define R_AGT0_AGTMR1_TCK_Msk (0x70UL) /*!< TCK (Bitfield-Mask: 0x07) */ + #define R_AGT0_AGTMR1_TEDGPL_Pos (3UL) /*!< TEDGPL (Bit 3) */ + #define R_AGT0_AGTMR1_TEDGPL_Msk (0x8UL) /*!< TEDGPL (Bitfield-Mask: 0x01) */ + #define R_AGT0_AGTMR1_TMOD_Pos (0UL) /*!< TMOD (Bit 0) */ + #define R_AGT0_AGTMR1_TMOD_Msk (0x7UL) /*!< TMOD (Bitfield-Mask: 0x07) */ +/* ======================================================== AGTMR2 ========================================================= */ + #define R_AGT0_AGTMR2_LPM_Pos (7UL) /*!< LPM (Bit 7) */ + #define R_AGT0_AGTMR2_LPM_Msk (0x80UL) /*!< LPM (Bitfield-Mask: 0x01) */ + #define R_AGT0_AGTMR2_CKS_Pos (0UL) /*!< CKS (Bit 0) */ + #define R_AGT0_AGTMR2_CKS_Msk (0x7UL) /*!< CKS (Bitfield-Mask: 0x07) */ +/* ======================================================== AGTIOC ========================================================= */ + #define R_AGT0_AGTIOC_TIOGT_Pos (6UL) /*!< TIOGT (Bit 6) */ + #define R_AGT0_AGTIOC_TIOGT_Msk (0xc0UL) /*!< TIOGT (Bitfield-Mask: 0x03) */ + #define R_AGT0_AGTIOC_TIPF_Pos (4UL) /*!< TIPF (Bit 4) */ + #define R_AGT0_AGTIOC_TIPF_Msk (0x30UL) /*!< TIPF (Bitfield-Mask: 0x03) */ + #define R_AGT0_AGTIOC_TOE_Pos (2UL) /*!< TOE (Bit 2) */ + #define R_AGT0_AGTIOC_TOE_Msk (0x4UL) /*!< TOE (Bitfield-Mask: 0x01) */ + #define R_AGT0_AGTIOC_TEDGSEL_Pos (0UL) /*!< TEDGSEL (Bit 0) */ + #define R_AGT0_AGTIOC_TEDGSEL_Msk (0x1UL) /*!< TEDGSEL (Bitfield-Mask: 0x01) */ +/* ======================================================== AGTISR ========================================================= */ + #define R_AGT0_AGTISR_EEPS_Pos (2UL) /*!< EEPS (Bit 2) */ + #define R_AGT0_AGTISR_EEPS_Msk (0x4UL) /*!< EEPS (Bitfield-Mask: 0x01) */ +/* ======================================================== AGTCMSR ======================================================== */ + #define R_AGT0_AGTCMSR_TOPOLB_Pos (6UL) /*!< TOPOLB (Bit 6) */ + #define R_AGT0_AGTCMSR_TOPOLB_Msk (0x40UL) /*!< TOPOLB (Bitfield-Mask: 0x01) */ + #define R_AGT0_AGTCMSR_TOEB_Pos (5UL) /*!< TOEB (Bit 5) */ + #define R_AGT0_AGTCMSR_TOEB_Msk (0x20UL) /*!< TOEB (Bitfield-Mask: 0x01) */ + #define R_AGT0_AGTCMSR_TCMEB_Pos (4UL) /*!< TCMEB (Bit 4) */ + #define R_AGT0_AGTCMSR_TCMEB_Msk (0x10UL) /*!< TCMEB (Bitfield-Mask: 0x01) */ + #define R_AGT0_AGTCMSR_TOPOLA_Pos (2UL) /*!< TOPOLA (Bit 2) */ + #define R_AGT0_AGTCMSR_TOPOLA_Msk (0x4UL) /*!< TOPOLA (Bitfield-Mask: 0x01) */ + #define R_AGT0_AGTCMSR_TOEA_Pos (1UL) /*!< TOEA (Bit 1) */ + #define R_AGT0_AGTCMSR_TOEA_Msk (0x2UL) /*!< TOEA (Bitfield-Mask: 0x01) */ + #define R_AGT0_AGTCMSR_TCMEA_Pos (0UL) /*!< TCMEA (Bit 0) */ + #define R_AGT0_AGTCMSR_TCMEA_Msk (0x1UL) /*!< TCMEA (Bitfield-Mask: 0x01) */ +/* ======================================================= AGTIOSEL ======================================================== */ + #define R_AGT0_AGTIOSEL_TIES_Pos (4UL) /*!< TIES (Bit 4) */ + #define R_AGT0_AGTIOSEL_TIES_Msk (0x10UL) /*!< TIES (Bitfield-Mask: 0x01) */ + #define R_AGT0_AGTIOSEL_SEL_Pos (0UL) /*!< SEL (Bit 0) */ + #define R_AGT0_AGTIOSEL_SEL_Msk (0x3UL) /*!< SEL (Bitfield-Mask: 0x03) */ + +/* =========================================================================================================================== */ +/* ================ R_AGTW0 ================ */ +/* =========================================================================================================================== */ + +/* ========================================================== AGT ========================================================== */ + #define R_AGTW0_AGT_AGT_Pos (0UL) /*!< AGT (Bit 0) */ + #define R_AGTW0_AGT_AGT_Msk (0xffffffffUL) /*!< AGT (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== AGTCMA ========================================================= */ + #define R_AGTW0_AGTCMA_AGTCMA_Pos (0UL) /*!< AGTCMA (Bit 0) */ + #define R_AGTW0_AGTCMA_AGTCMA_Msk (0xffffffffUL) /*!< AGTCMA (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== AGTCMB ========================================================= */ + #define R_AGTW0_AGTCMB_AGTCMB_Pos (0UL) /*!< AGTCMB (Bit 0) */ + #define R_AGTW0_AGTCMB_AGTCMB_Msk (0xffffffffUL) /*!< AGTCMB (Bitfield-Mask: 0xffffffff) */ +/* ========================================================= AGTCR ========================================================= */ + #define R_AGTW0_AGTCR_TCMBF_Pos (7UL) /*!< TCMBF (Bit 7) */ + #define R_AGTW0_AGTCR_TCMBF_Msk (0x80UL) /*!< TCMBF (Bitfield-Mask: 0x01) */ + #define R_AGTW0_AGTCR_TCMAF_Pos (6UL) /*!< TCMAF (Bit 6) */ + #define R_AGTW0_AGTCR_TCMAF_Msk (0x40UL) /*!< TCMAF (Bitfield-Mask: 0x01) */ + #define R_AGTW0_AGTCR_TUNDF_Pos (5UL) /*!< TUNDF (Bit 5) */ + #define R_AGTW0_AGTCR_TUNDF_Msk (0x20UL) /*!< TUNDF (Bitfield-Mask: 0x01) */ + #define R_AGTW0_AGTCR_TEDGF_Pos (4UL) /*!< TEDGF (Bit 4) */ + #define R_AGTW0_AGTCR_TEDGF_Msk (0x10UL) /*!< TEDGF (Bitfield-Mask: 0x01) */ + #define R_AGTW0_AGTCR_TSTOP_Pos (2UL) /*!< TSTOP (Bit 2) */ + #define R_AGTW0_AGTCR_TSTOP_Msk (0x4UL) /*!< TSTOP (Bitfield-Mask: 0x01) */ + #define R_AGTW0_AGTCR_TCSTF_Pos (1UL) /*!< TCSTF (Bit 1) */ + #define R_AGTW0_AGTCR_TCSTF_Msk (0x2UL) /*!< TCSTF (Bitfield-Mask: 0x01) */ + #define R_AGTW0_AGTCR_TSTART_Pos (0UL) /*!< TSTART (Bit 0) */ + #define R_AGTW0_AGTCR_TSTART_Msk (0x1UL) /*!< TSTART (Bitfield-Mask: 0x01) */ +/* ======================================================== AGTMR1 ========================================================= */ + #define R_AGTW0_AGTMR1_TCK_Pos (4UL) /*!< TCK (Bit 4) */ + #define R_AGTW0_AGTMR1_TCK_Msk (0x70UL) /*!< TCK (Bitfield-Mask: 0x07) */ + #define R_AGTW0_AGTMR1_TEDGPL_Pos (3UL) /*!< TEDGPL (Bit 3) */ + #define R_AGTW0_AGTMR1_TEDGPL_Msk (0x8UL) /*!< TEDGPL (Bitfield-Mask: 0x01) */ + #define R_AGTW0_AGTMR1_TMOD_Pos (0UL) /*!< TMOD (Bit 0) */ + #define R_AGTW0_AGTMR1_TMOD_Msk (0x7UL) /*!< TMOD (Bitfield-Mask: 0x07) */ +/* ======================================================== AGTMR2 ========================================================= */ + #define R_AGTW0_AGTMR2_LPM_Pos (7UL) /*!< LPM (Bit 7) */ + #define R_AGTW0_AGTMR2_LPM_Msk (0x80UL) /*!< LPM (Bitfield-Mask: 0x01) */ + #define R_AGTW0_AGTMR2_CKS_Pos (0UL) /*!< CKS (Bit 0) */ + #define R_AGTW0_AGTMR2_CKS_Msk (0x7UL) /*!< CKS (Bitfield-Mask: 0x07) */ +/* ======================================================== AGTIOC ========================================================= */ + #define R_AGTW0_AGTIOC_TIOGT_Pos (6UL) /*!< TIOGT (Bit 6) */ + #define R_AGTW0_AGTIOC_TIOGT_Msk (0xc0UL) /*!< TIOGT (Bitfield-Mask: 0x03) */ + #define R_AGTW0_AGTIOC_TIPF_Pos (4UL) /*!< TIPF (Bit 4) */ + #define R_AGTW0_AGTIOC_TIPF_Msk (0x30UL) /*!< TIPF (Bitfield-Mask: 0x03) */ + #define R_AGTW0_AGTIOC_TOE_Pos (2UL) /*!< TOE (Bit 2) */ + #define R_AGTW0_AGTIOC_TOE_Msk (0x4UL) /*!< TOE (Bitfield-Mask: 0x01) */ + #define R_AGTW0_AGTIOC_TEDGSEL_Pos (0UL) /*!< TEDGSEL (Bit 0) */ + #define R_AGTW0_AGTIOC_TEDGSEL_Msk (0x1UL) /*!< TEDGSEL (Bitfield-Mask: 0x01) */ +/* ======================================================== AGTISR ========================================================= */ + #define R_AGTW0_AGTISR_EEPS_Pos (2UL) /*!< EEPS (Bit 2) */ + #define R_AGTW0_AGTISR_EEPS_Msk (0x4UL) /*!< EEPS (Bitfield-Mask: 0x01) */ +/* ======================================================== AGTCMSR ======================================================== */ + #define R_AGTW0_AGTCMSR_TOPOLB_Pos (6UL) /*!< TOPOLB (Bit 6) */ + #define R_AGTW0_AGTCMSR_TOPOLB_Msk (0x40UL) /*!< TOPOLB (Bitfield-Mask: 0x01) */ + #define R_AGTW0_AGTCMSR_TOEB_Pos (5UL) /*!< TOEB (Bit 5) */ + #define R_AGTW0_AGTCMSR_TOEB_Msk (0x20UL) /*!< TOEB (Bitfield-Mask: 0x01) */ + #define R_AGTW0_AGTCMSR_TCMEB_Pos (4UL) /*!< TCMEB (Bit 4) */ + #define R_AGTW0_AGTCMSR_TCMEB_Msk (0x10UL) /*!< TCMEB (Bitfield-Mask: 0x01) */ + #define R_AGTW0_AGTCMSR_TOPOLA_Pos (2UL) /*!< TOPOLA (Bit 2) */ + #define R_AGTW0_AGTCMSR_TOPOLA_Msk (0x4UL) /*!< TOPOLA (Bitfield-Mask: 0x01) */ + #define R_AGTW0_AGTCMSR_TOEA_Pos (1UL) /*!< TOEA (Bit 1) */ + #define R_AGTW0_AGTCMSR_TOEA_Msk (0x2UL) /*!< TOEA (Bitfield-Mask: 0x01) */ + #define R_AGTW0_AGTCMSR_TCMEA_Pos (0UL) /*!< TCMEA (Bit 0) */ + #define R_AGTW0_AGTCMSR_TCMEA_Msk (0x1UL) /*!< TCMEA (Bitfield-Mask: 0x01) */ +/* ======================================================= AGTIOSEL ======================================================== */ + #define R_AGTW0_AGTIOSEL_TIES_Pos (4UL) /*!< TIES (Bit 4) */ + #define R_AGTW0_AGTIOSEL_TIES_Msk (0x10UL) /*!< TIES (Bitfield-Mask: 0x01) */ + +/* =========================================================================================================================== */ +/* ================ 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) */ + +/* =========================================================================================================================== */ +/* ================ 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_CAN0 ================ */ +/* =========================================================================================================================== */ + +/* ========================================================== MKR ========================================================== */ + #define R_CAN0_MKR_SID_Pos (18UL) /*!< SID (Bit 18) */ + #define R_CAN0_MKR_SID_Msk (0x1ffc0000UL) /*!< SID (Bitfield-Mask: 0x7ff) */ + #define R_CAN0_MKR_EID_Pos (0UL) /*!< EID (Bit 0) */ + #define R_CAN0_MKR_EID_Msk (0x3ffffUL) /*!< EID (Bitfield-Mask: 0x3ffff) */ +/* ========================================================= FIDCR ========================================================= */ + #define R_CAN0_FIDCR_IDE_Pos (31UL) /*!< IDE (Bit 31) */ + #define R_CAN0_FIDCR_IDE_Msk (0x80000000UL) /*!< IDE (Bitfield-Mask: 0x01) */ + #define R_CAN0_FIDCR_RTR_Pos (30UL) /*!< RTR (Bit 30) */ + #define R_CAN0_FIDCR_RTR_Msk (0x40000000UL) /*!< RTR (Bitfield-Mask: 0x01) */ + #define R_CAN0_FIDCR_SID_Pos (18UL) /*!< SID (Bit 18) */ + #define R_CAN0_FIDCR_SID_Msk (0x1ffc0000UL) /*!< SID (Bitfield-Mask: 0x7ff) */ + #define R_CAN0_FIDCR_EID_Pos (0UL) /*!< EID (Bit 0) */ + #define R_CAN0_FIDCR_EID_Msk (0x3ffffUL) /*!< EID (Bitfield-Mask: 0x3ffff) */ +/* ======================================================== MKIVLR ========================================================= */ + #define R_CAN0_MKIVLR_MB31_Pos (31UL) /*!< MB31 (Bit 31) */ + #define R_CAN0_MKIVLR_MB31_Msk (0x80000000UL) /*!< MB31 (Bitfield-Mask: 0x01) */ + #define R_CAN0_MKIVLR_MB30_Pos (30UL) /*!< MB30 (Bit 30) */ + #define R_CAN0_MKIVLR_MB30_Msk (0x40000000UL) /*!< MB30 (Bitfield-Mask: 0x01) */ + #define R_CAN0_MKIVLR_MB29_Pos (29UL) /*!< MB29 (Bit 29) */ + #define R_CAN0_MKIVLR_MB29_Msk (0x20000000UL) /*!< MB29 (Bitfield-Mask: 0x01) */ + #define R_CAN0_MKIVLR_MB28_Pos (28UL) /*!< MB28 (Bit 28) */ + #define R_CAN0_MKIVLR_MB28_Msk (0x10000000UL) /*!< MB28 (Bitfield-Mask: 0x01) */ + #define R_CAN0_MKIVLR_MB27_Pos (27UL) /*!< MB27 (Bit 27) */ + #define R_CAN0_MKIVLR_MB27_Msk (0x8000000UL) /*!< MB27 (Bitfield-Mask: 0x01) */ + #define R_CAN0_MKIVLR_MB26_Pos (26UL) /*!< MB26 (Bit 26) */ + #define R_CAN0_MKIVLR_MB26_Msk (0x4000000UL) /*!< MB26 (Bitfield-Mask: 0x01) */ + #define R_CAN0_MKIVLR_MB25_Pos (25UL) /*!< MB25 (Bit 25) */ + #define R_CAN0_MKIVLR_MB25_Msk (0x2000000UL) /*!< MB25 (Bitfield-Mask: 0x01) */ + #define R_CAN0_MKIVLR_MB24_Pos (24UL) /*!< MB24 (Bit 24) */ + #define R_CAN0_MKIVLR_MB24_Msk (0x1000000UL) /*!< MB24 (Bitfield-Mask: 0x01) */ + #define R_CAN0_MKIVLR_MB23_Pos (23UL) /*!< MB23 (Bit 23) */ + #define R_CAN0_MKIVLR_MB23_Msk (0x800000UL) /*!< MB23 (Bitfield-Mask: 0x01) */ + #define R_CAN0_MKIVLR_MB22_Pos (22UL) /*!< MB22 (Bit 22) */ + #define R_CAN0_MKIVLR_MB22_Msk (0x400000UL) /*!< MB22 (Bitfield-Mask: 0x01) */ + #define R_CAN0_MKIVLR_MB21_Pos (21UL) /*!< MB21 (Bit 21) */ + #define R_CAN0_MKIVLR_MB21_Msk (0x200000UL) /*!< MB21 (Bitfield-Mask: 0x01) */ + #define R_CAN0_MKIVLR_MB20_Pos (20UL) /*!< MB20 (Bit 20) */ + #define R_CAN0_MKIVLR_MB20_Msk (0x100000UL) /*!< MB20 (Bitfield-Mask: 0x01) */ + #define R_CAN0_MKIVLR_MB19_Pos (19UL) /*!< MB19 (Bit 19) */ + #define R_CAN0_MKIVLR_MB19_Msk (0x80000UL) /*!< MB19 (Bitfield-Mask: 0x01) */ + #define R_CAN0_MKIVLR_MB18_Pos (18UL) /*!< MB18 (Bit 18) */ + #define R_CAN0_MKIVLR_MB18_Msk (0x40000UL) /*!< MB18 (Bitfield-Mask: 0x01) */ + #define R_CAN0_MKIVLR_MB17_Pos (17UL) /*!< MB17 (Bit 17) */ + #define R_CAN0_MKIVLR_MB17_Msk (0x20000UL) /*!< MB17 (Bitfield-Mask: 0x01) */ + #define R_CAN0_MKIVLR_MB16_Pos (16UL) /*!< MB16 (Bit 16) */ + #define R_CAN0_MKIVLR_MB16_Msk (0x10000UL) /*!< MB16 (Bitfield-Mask: 0x01) */ + #define R_CAN0_MKIVLR_MB15_Pos (15UL) /*!< MB15 (Bit 15) */ + #define R_CAN0_MKIVLR_MB15_Msk (0x8000UL) /*!< MB15 (Bitfield-Mask: 0x01) */ + #define R_CAN0_MKIVLR_MB14_Pos (14UL) /*!< MB14 (Bit 14) */ + #define R_CAN0_MKIVLR_MB14_Msk (0x4000UL) /*!< MB14 (Bitfield-Mask: 0x01) */ + #define R_CAN0_MKIVLR_MB13_Pos (13UL) /*!< MB13 (Bit 13) */ + #define R_CAN0_MKIVLR_MB13_Msk (0x2000UL) /*!< MB13 (Bitfield-Mask: 0x01) */ + #define R_CAN0_MKIVLR_MB12_Pos (12UL) /*!< MB12 (Bit 12) */ + #define R_CAN0_MKIVLR_MB12_Msk (0x1000UL) /*!< MB12 (Bitfield-Mask: 0x01) */ + #define R_CAN0_MKIVLR_MB11_Pos (11UL) /*!< MB11 (Bit 11) */ + #define R_CAN0_MKIVLR_MB11_Msk (0x800UL) /*!< MB11 (Bitfield-Mask: 0x01) */ + #define R_CAN0_MKIVLR_MB10_Pos (10UL) /*!< MB10 (Bit 10) */ + #define R_CAN0_MKIVLR_MB10_Msk (0x400UL) /*!< MB10 (Bitfield-Mask: 0x01) */ + #define R_CAN0_MKIVLR_MB9_Pos (9UL) /*!< MB9 (Bit 9) */ + #define R_CAN0_MKIVLR_MB9_Msk (0x200UL) /*!< MB9 (Bitfield-Mask: 0x01) */ + #define R_CAN0_MKIVLR_MB8_Pos (8UL) /*!< MB8 (Bit 8) */ + #define R_CAN0_MKIVLR_MB8_Msk (0x100UL) /*!< MB8 (Bitfield-Mask: 0x01) */ + #define R_CAN0_MKIVLR_MB7_Pos (7UL) /*!< MB7 (Bit 7) */ + #define R_CAN0_MKIVLR_MB7_Msk (0x80UL) /*!< MB7 (Bitfield-Mask: 0x01) */ + #define R_CAN0_MKIVLR_MB6_Pos (6UL) /*!< MB6 (Bit 6) */ + #define R_CAN0_MKIVLR_MB6_Msk (0x40UL) /*!< MB6 (Bitfield-Mask: 0x01) */ + #define R_CAN0_MKIVLR_MB5_Pos (5UL) /*!< MB5 (Bit 5) */ + #define R_CAN0_MKIVLR_MB5_Msk (0x20UL) /*!< MB5 (Bitfield-Mask: 0x01) */ + #define R_CAN0_MKIVLR_MB4_Pos (4UL) /*!< MB4 (Bit 4) */ + #define R_CAN0_MKIVLR_MB4_Msk (0x10UL) /*!< MB4 (Bitfield-Mask: 0x01) */ + #define R_CAN0_MKIVLR_MB3_Pos (3UL) /*!< MB3 (Bit 3) */ + #define R_CAN0_MKIVLR_MB3_Msk (0x8UL) /*!< MB3 (Bitfield-Mask: 0x01) */ + #define R_CAN0_MKIVLR_MB2_Pos (2UL) /*!< MB2 (Bit 2) */ + #define R_CAN0_MKIVLR_MB2_Msk (0x4UL) /*!< MB2 (Bitfield-Mask: 0x01) */ + #define R_CAN0_MKIVLR_MB1_Pos (1UL) /*!< MB1 (Bit 1) */ + #define R_CAN0_MKIVLR_MB1_Msk (0x2UL) /*!< MB1 (Bitfield-Mask: 0x01) */ + #define R_CAN0_MKIVLR_MB0_Pos (0UL) /*!< MB0 (Bit 0) */ + #define R_CAN0_MKIVLR_MB0_Msk (0x1UL) /*!< MB0 (Bitfield-Mask: 0x01) */ +/* ========================================================= MIER ========================================================== */ + #define R_CAN0_MIER_MB31_Pos (31UL) /*!< MB31 (Bit 31) */ + #define R_CAN0_MIER_MB31_Msk (0x80000000UL) /*!< MB31 (Bitfield-Mask: 0x01) */ + #define R_CAN0_MIER_MB30_Pos (30UL) /*!< MB30 (Bit 30) */ + #define R_CAN0_MIER_MB30_Msk (0x40000000UL) /*!< MB30 (Bitfield-Mask: 0x01) */ + #define R_CAN0_MIER_MB29_Pos (29UL) /*!< MB29 (Bit 29) */ + #define R_CAN0_MIER_MB29_Msk (0x20000000UL) /*!< MB29 (Bitfield-Mask: 0x01) */ + #define R_CAN0_MIER_MB28_Pos (28UL) /*!< MB28 (Bit 28) */ + #define R_CAN0_MIER_MB28_Msk (0x10000000UL) /*!< MB28 (Bitfield-Mask: 0x01) */ + #define R_CAN0_MIER_MB27_Pos (27UL) /*!< MB27 (Bit 27) */ + #define R_CAN0_MIER_MB27_Msk (0x8000000UL) /*!< MB27 (Bitfield-Mask: 0x01) */ + #define R_CAN0_MIER_MB26_Pos (26UL) /*!< MB26 (Bit 26) */ + #define R_CAN0_MIER_MB26_Msk (0x4000000UL) /*!< MB26 (Bitfield-Mask: 0x01) */ + #define R_CAN0_MIER_MB25_Pos (25UL) /*!< MB25 (Bit 25) */ + #define R_CAN0_MIER_MB25_Msk (0x2000000UL) /*!< MB25 (Bitfield-Mask: 0x01) */ + #define R_CAN0_MIER_MB24_Pos (24UL) /*!< MB24 (Bit 24) */ + #define R_CAN0_MIER_MB24_Msk (0x1000000UL) /*!< MB24 (Bitfield-Mask: 0x01) */ + #define R_CAN0_MIER_MB23_Pos (23UL) /*!< MB23 (Bit 23) */ + #define R_CAN0_MIER_MB23_Msk (0x800000UL) /*!< MB23 (Bitfield-Mask: 0x01) */ + #define R_CAN0_MIER_MB22_Pos (22UL) /*!< MB22 (Bit 22) */ + #define R_CAN0_MIER_MB22_Msk (0x400000UL) /*!< MB22 (Bitfield-Mask: 0x01) */ + #define R_CAN0_MIER_MB21_Pos (21UL) /*!< MB21 (Bit 21) */ + #define R_CAN0_MIER_MB21_Msk (0x200000UL) /*!< MB21 (Bitfield-Mask: 0x01) */ + #define R_CAN0_MIER_MB20_Pos (20UL) /*!< MB20 (Bit 20) */ + #define R_CAN0_MIER_MB20_Msk (0x100000UL) /*!< MB20 (Bitfield-Mask: 0x01) */ + #define R_CAN0_MIER_MB19_Pos (19UL) /*!< MB19 (Bit 19) */ + #define R_CAN0_MIER_MB19_Msk (0x80000UL) /*!< MB19 (Bitfield-Mask: 0x01) */ + #define R_CAN0_MIER_MB18_Pos (18UL) /*!< MB18 (Bit 18) */ + #define R_CAN0_MIER_MB18_Msk (0x40000UL) /*!< MB18 (Bitfield-Mask: 0x01) */ + #define R_CAN0_MIER_MB17_Pos (17UL) /*!< MB17 (Bit 17) */ + #define R_CAN0_MIER_MB17_Msk (0x20000UL) /*!< MB17 (Bitfield-Mask: 0x01) */ + #define R_CAN0_MIER_MB16_Pos (16UL) /*!< MB16 (Bit 16) */ + #define R_CAN0_MIER_MB16_Msk (0x10000UL) /*!< MB16 (Bitfield-Mask: 0x01) */ + #define R_CAN0_MIER_MB15_Pos (15UL) /*!< MB15 (Bit 15) */ + #define R_CAN0_MIER_MB15_Msk (0x8000UL) /*!< MB15 (Bitfield-Mask: 0x01) */ + #define R_CAN0_MIER_MB14_Pos (14UL) /*!< MB14 (Bit 14) */ + #define R_CAN0_MIER_MB14_Msk (0x4000UL) /*!< MB14 (Bitfield-Mask: 0x01) */ + #define R_CAN0_MIER_MB13_Pos (13UL) /*!< MB13 (Bit 13) */ + #define R_CAN0_MIER_MB13_Msk (0x2000UL) /*!< MB13 (Bitfield-Mask: 0x01) */ + #define R_CAN0_MIER_MB12_Pos (12UL) /*!< MB12 (Bit 12) */ + #define R_CAN0_MIER_MB12_Msk (0x1000UL) /*!< MB12 (Bitfield-Mask: 0x01) */ + #define R_CAN0_MIER_MB11_Pos (11UL) /*!< MB11 (Bit 11) */ + #define R_CAN0_MIER_MB11_Msk (0x800UL) /*!< MB11 (Bitfield-Mask: 0x01) */ + #define R_CAN0_MIER_MB10_Pos (10UL) /*!< MB10 (Bit 10) */ + #define R_CAN0_MIER_MB10_Msk (0x400UL) /*!< MB10 (Bitfield-Mask: 0x01) */ + #define R_CAN0_MIER_MB9_Pos (9UL) /*!< MB9 (Bit 9) */ + #define R_CAN0_MIER_MB9_Msk (0x200UL) /*!< MB9 (Bitfield-Mask: 0x01) */ + #define R_CAN0_MIER_MB8_Pos (8UL) /*!< MB8 (Bit 8) */ + #define R_CAN0_MIER_MB8_Msk (0x100UL) /*!< MB8 (Bitfield-Mask: 0x01) */ + #define R_CAN0_MIER_MB7_Pos (7UL) /*!< MB7 (Bit 7) */ + #define R_CAN0_MIER_MB7_Msk (0x80UL) /*!< MB7 (Bitfield-Mask: 0x01) */ + #define R_CAN0_MIER_MB6_Pos (6UL) /*!< MB6 (Bit 6) */ + #define R_CAN0_MIER_MB6_Msk (0x40UL) /*!< MB6 (Bitfield-Mask: 0x01) */ + #define R_CAN0_MIER_MB5_Pos (5UL) /*!< MB5 (Bit 5) */ + #define R_CAN0_MIER_MB5_Msk (0x20UL) /*!< MB5 (Bitfield-Mask: 0x01) */ + #define R_CAN0_MIER_MB4_Pos (4UL) /*!< MB4 (Bit 4) */ + #define R_CAN0_MIER_MB4_Msk (0x10UL) /*!< MB4 (Bitfield-Mask: 0x01) */ + #define R_CAN0_MIER_MB3_Pos (3UL) /*!< MB3 (Bit 3) */ + #define R_CAN0_MIER_MB3_Msk (0x8UL) /*!< MB3 (Bitfield-Mask: 0x01) */ + #define R_CAN0_MIER_MB2_Pos (2UL) /*!< MB2 (Bit 2) */ + #define R_CAN0_MIER_MB2_Msk (0x4UL) /*!< MB2 (Bitfield-Mask: 0x01) */ + #define R_CAN0_MIER_MB1_Pos (1UL) /*!< MB1 (Bit 1) */ + #define R_CAN0_MIER_MB1_Msk (0x2UL) /*!< MB1 (Bitfield-Mask: 0x01) */ + #define R_CAN0_MIER_MB0_Pos (0UL) /*!< MB0 (Bit 0) */ + #define R_CAN0_MIER_MB0_Msk (0x1UL) /*!< MB0 (Bitfield-Mask: 0x01) */ +/* ======================================================= MIER_FIFO ======================================================= */ + #define R_CAN0_MIER_FIFO_MB29_Pos (29UL) /*!< MB29 (Bit 29) */ + #define R_CAN0_MIER_FIFO_MB29_Msk (0x20000000UL) /*!< MB29 (Bitfield-Mask: 0x01) */ + #define R_CAN0_MIER_FIFO_MB28_Pos (28UL) /*!< MB28 (Bit 28) */ + #define R_CAN0_MIER_FIFO_MB28_Msk (0x10000000UL) /*!< MB28 (Bitfield-Mask: 0x01) */ + #define R_CAN0_MIER_FIFO_MB25_Pos (25UL) /*!< MB25 (Bit 25) */ + #define R_CAN0_MIER_FIFO_MB25_Msk (0x2000000UL) /*!< MB25 (Bitfield-Mask: 0x01) */ + #define R_CAN0_MIER_FIFO_MB24_Pos (24UL) /*!< MB24 (Bit 24) */ + #define R_CAN0_MIER_FIFO_MB24_Msk (0x1000000UL) /*!< MB24 (Bitfield-Mask: 0x01) */ + #define R_CAN0_MIER_FIFO_MB23_Pos (23UL) /*!< MB23 (Bit 23) */ + #define R_CAN0_MIER_FIFO_MB23_Msk (0x800000UL) /*!< MB23 (Bitfield-Mask: 0x01) */ + #define R_CAN0_MIER_FIFO_MB22_Pos (22UL) /*!< MB22 (Bit 22) */ + #define R_CAN0_MIER_FIFO_MB22_Msk (0x400000UL) /*!< MB22 (Bitfield-Mask: 0x01) */ + #define R_CAN0_MIER_FIFO_MB21_Pos (21UL) /*!< MB21 (Bit 21) */ + #define R_CAN0_MIER_FIFO_MB21_Msk (0x200000UL) /*!< MB21 (Bitfield-Mask: 0x01) */ + #define R_CAN0_MIER_FIFO_MB20_Pos (20UL) /*!< MB20 (Bit 20) */ + #define R_CAN0_MIER_FIFO_MB20_Msk (0x100000UL) /*!< MB20 (Bitfield-Mask: 0x01) */ + #define R_CAN0_MIER_FIFO_MB19_Pos (19UL) /*!< MB19 (Bit 19) */ + #define R_CAN0_MIER_FIFO_MB19_Msk (0x80000UL) /*!< MB19 (Bitfield-Mask: 0x01) */ + #define R_CAN0_MIER_FIFO_MB18_Pos (18UL) /*!< MB18 (Bit 18) */ + #define R_CAN0_MIER_FIFO_MB18_Msk (0x40000UL) /*!< MB18 (Bitfield-Mask: 0x01) */ + #define R_CAN0_MIER_FIFO_MB17_Pos (17UL) /*!< MB17 (Bit 17) */ + #define R_CAN0_MIER_FIFO_MB17_Msk (0x20000UL) /*!< MB17 (Bitfield-Mask: 0x01) */ + #define R_CAN0_MIER_FIFO_MB16_Pos (16UL) /*!< MB16 (Bit 16) */ + #define R_CAN0_MIER_FIFO_MB16_Msk (0x10000UL) /*!< MB16 (Bitfield-Mask: 0x01) */ + #define R_CAN0_MIER_FIFO_MB15_Pos (15UL) /*!< MB15 (Bit 15) */ + #define R_CAN0_MIER_FIFO_MB15_Msk (0x8000UL) /*!< MB15 (Bitfield-Mask: 0x01) */ + #define R_CAN0_MIER_FIFO_MB14_Pos (14UL) /*!< MB14 (Bit 14) */ + #define R_CAN0_MIER_FIFO_MB14_Msk (0x4000UL) /*!< MB14 (Bitfield-Mask: 0x01) */ + #define R_CAN0_MIER_FIFO_MB13_Pos (13UL) /*!< MB13 (Bit 13) */ + #define R_CAN0_MIER_FIFO_MB13_Msk (0x2000UL) /*!< MB13 (Bitfield-Mask: 0x01) */ + #define R_CAN0_MIER_FIFO_MB12_Pos (12UL) /*!< MB12 (Bit 12) */ + #define R_CAN0_MIER_FIFO_MB12_Msk (0x1000UL) /*!< MB12 (Bitfield-Mask: 0x01) */ + #define R_CAN0_MIER_FIFO_MB11_Pos (11UL) /*!< MB11 (Bit 11) */ + #define R_CAN0_MIER_FIFO_MB11_Msk (0x800UL) /*!< MB11 (Bitfield-Mask: 0x01) */ + #define R_CAN0_MIER_FIFO_MB10_Pos (10UL) /*!< MB10 (Bit 10) */ + #define R_CAN0_MIER_FIFO_MB10_Msk (0x400UL) /*!< MB10 (Bitfield-Mask: 0x01) */ + #define R_CAN0_MIER_FIFO_MB9_Pos (9UL) /*!< MB9 (Bit 9) */ + #define R_CAN0_MIER_FIFO_MB9_Msk (0x200UL) /*!< MB9 (Bitfield-Mask: 0x01) */ + #define R_CAN0_MIER_FIFO_MB8_Pos (8UL) /*!< MB8 (Bit 8) */ + #define R_CAN0_MIER_FIFO_MB8_Msk (0x100UL) /*!< MB8 (Bitfield-Mask: 0x01) */ + #define R_CAN0_MIER_FIFO_MB7_Pos (7UL) /*!< MB7 (Bit 7) */ + #define R_CAN0_MIER_FIFO_MB7_Msk (0x80UL) /*!< MB7 (Bitfield-Mask: 0x01) */ + #define R_CAN0_MIER_FIFO_MB6_Pos (6UL) /*!< MB6 (Bit 6) */ + #define R_CAN0_MIER_FIFO_MB6_Msk (0x40UL) /*!< MB6 (Bitfield-Mask: 0x01) */ + #define R_CAN0_MIER_FIFO_MB5_Pos (5UL) /*!< MB5 (Bit 5) */ + #define R_CAN0_MIER_FIFO_MB5_Msk (0x20UL) /*!< MB5 (Bitfield-Mask: 0x01) */ + #define R_CAN0_MIER_FIFO_MB4_Pos (4UL) /*!< MB4 (Bit 4) */ + #define R_CAN0_MIER_FIFO_MB4_Msk (0x10UL) /*!< MB4 (Bitfield-Mask: 0x01) */ + #define R_CAN0_MIER_FIFO_MB3_Pos (3UL) /*!< MB3 (Bit 3) */ + #define R_CAN0_MIER_FIFO_MB3_Msk (0x8UL) /*!< MB3 (Bitfield-Mask: 0x01) */ + #define R_CAN0_MIER_FIFO_MB2_Pos (2UL) /*!< MB2 (Bit 2) */ + #define R_CAN0_MIER_FIFO_MB2_Msk (0x4UL) /*!< MB2 (Bitfield-Mask: 0x01) */ + #define R_CAN0_MIER_FIFO_MB1_Pos (1UL) /*!< MB1 (Bit 1) */ + #define R_CAN0_MIER_FIFO_MB1_Msk (0x2UL) /*!< MB1 (Bitfield-Mask: 0x01) */ + #define R_CAN0_MIER_FIFO_MB0_Pos (0UL) /*!< MB0 (Bit 0) */ + #define R_CAN0_MIER_FIFO_MB0_Msk (0x1UL) /*!< MB0 (Bitfield-Mask: 0x01) */ +/* ======================================================== MCTL_TX ======================================================== */ + #define R_CAN0_MCTL_TX_TRMREQ_Pos (7UL) /*!< TRMREQ (Bit 7) */ + #define R_CAN0_MCTL_TX_TRMREQ_Msk (0x80UL) /*!< TRMREQ (Bitfield-Mask: 0x01) */ + #define R_CAN0_MCTL_TX_RECREQ_Pos (6UL) /*!< RECREQ (Bit 6) */ + #define R_CAN0_MCTL_TX_RECREQ_Msk (0x40UL) /*!< RECREQ (Bitfield-Mask: 0x01) */ + #define R_CAN0_MCTL_TX_ONESHOT_Pos (4UL) /*!< ONESHOT (Bit 4) */ + #define R_CAN0_MCTL_TX_ONESHOT_Msk (0x10UL) /*!< ONESHOT (Bitfield-Mask: 0x01) */ + #define R_CAN0_MCTL_TX_TRMABT_Pos (2UL) /*!< TRMABT (Bit 2) */ + #define R_CAN0_MCTL_TX_TRMABT_Msk (0x4UL) /*!< TRMABT (Bitfield-Mask: 0x01) */ + #define R_CAN0_MCTL_TX_TRMACTIVE_Pos (1UL) /*!< TRMACTIVE (Bit 1) */ + #define R_CAN0_MCTL_TX_TRMACTIVE_Msk (0x2UL) /*!< TRMACTIVE (Bitfield-Mask: 0x01) */ + #define R_CAN0_MCTL_TX_SENTDATA_Pos (0UL) /*!< SENTDATA (Bit 0) */ + #define R_CAN0_MCTL_TX_SENTDATA_Msk (0x1UL) /*!< SENTDATA (Bitfield-Mask: 0x01) */ +/* ======================================================== MCTL_RX ======================================================== */ + #define R_CAN0_MCTL_RX_TRMREQ_Pos (7UL) /*!< TRMREQ (Bit 7) */ + #define R_CAN0_MCTL_RX_TRMREQ_Msk (0x80UL) /*!< TRMREQ (Bitfield-Mask: 0x01) */ + #define R_CAN0_MCTL_RX_RECREQ_Pos (6UL) /*!< RECREQ (Bit 6) */ + #define R_CAN0_MCTL_RX_RECREQ_Msk (0x40UL) /*!< RECREQ (Bitfield-Mask: 0x01) */ + #define R_CAN0_MCTL_RX_ONESHOT_Pos (4UL) /*!< ONESHOT (Bit 4) */ + #define R_CAN0_MCTL_RX_ONESHOT_Msk (0x10UL) /*!< ONESHOT (Bitfield-Mask: 0x01) */ + #define R_CAN0_MCTL_RX_MSGLOST_Pos (2UL) /*!< MSGLOST (Bit 2) */ + #define R_CAN0_MCTL_RX_MSGLOST_Msk (0x4UL) /*!< MSGLOST (Bitfield-Mask: 0x01) */ + #define R_CAN0_MCTL_RX_INVALDATA_Pos (1UL) /*!< INVALDATA (Bit 1) */ + #define R_CAN0_MCTL_RX_INVALDATA_Msk (0x2UL) /*!< INVALDATA (Bitfield-Mask: 0x01) */ + #define R_CAN0_MCTL_RX_NEWDATA_Pos (0UL) /*!< NEWDATA (Bit 0) */ + #define R_CAN0_MCTL_RX_NEWDATA_Msk (0x1UL) /*!< NEWDATA (Bitfield-Mask: 0x01) */ +/* ========================================================= CTLR ========================================================== */ + #define R_CAN0_CTLR_RBOC_Pos (13UL) /*!< RBOC (Bit 13) */ + #define R_CAN0_CTLR_RBOC_Msk (0x2000UL) /*!< RBOC (Bitfield-Mask: 0x01) */ + #define R_CAN0_CTLR_BOM_Pos (11UL) /*!< BOM (Bit 11) */ + #define R_CAN0_CTLR_BOM_Msk (0x1800UL) /*!< BOM (Bitfield-Mask: 0x03) */ + #define R_CAN0_CTLR_SLPM_Pos (10UL) /*!< SLPM (Bit 10) */ + #define R_CAN0_CTLR_SLPM_Msk (0x400UL) /*!< SLPM (Bitfield-Mask: 0x01) */ + #define R_CAN0_CTLR_CANM_Pos (8UL) /*!< CANM (Bit 8) */ + #define R_CAN0_CTLR_CANM_Msk (0x300UL) /*!< CANM (Bitfield-Mask: 0x03) */ + #define R_CAN0_CTLR_TSPS_Pos (6UL) /*!< TSPS (Bit 6) */ + #define R_CAN0_CTLR_TSPS_Msk (0xc0UL) /*!< TSPS (Bitfield-Mask: 0x03) */ + #define R_CAN0_CTLR_TSRC_Pos (5UL) /*!< TSRC (Bit 5) */ + #define R_CAN0_CTLR_TSRC_Msk (0x20UL) /*!< TSRC (Bitfield-Mask: 0x01) */ + #define R_CAN0_CTLR_TPM_Pos (4UL) /*!< TPM (Bit 4) */ + #define R_CAN0_CTLR_TPM_Msk (0x10UL) /*!< TPM (Bitfield-Mask: 0x01) */ + #define R_CAN0_CTLR_MLM_Pos (3UL) /*!< MLM (Bit 3) */ + #define R_CAN0_CTLR_MLM_Msk (0x8UL) /*!< MLM (Bitfield-Mask: 0x01) */ + #define R_CAN0_CTLR_IDFM_Pos (1UL) /*!< IDFM (Bit 1) */ + #define R_CAN0_CTLR_IDFM_Msk (0x6UL) /*!< IDFM (Bitfield-Mask: 0x03) */ + #define R_CAN0_CTLR_MBM_Pos (0UL) /*!< MBM (Bit 0) */ + #define R_CAN0_CTLR_MBM_Msk (0x1UL) /*!< MBM (Bitfield-Mask: 0x01) */ +/* ========================================================== STR ========================================================== */ + #define R_CAN0_STR_RECST_Pos (14UL) /*!< RECST (Bit 14) */ + #define R_CAN0_STR_RECST_Msk (0x4000UL) /*!< RECST (Bitfield-Mask: 0x01) */ + #define R_CAN0_STR_TRMST_Pos (13UL) /*!< TRMST (Bit 13) */ + #define R_CAN0_STR_TRMST_Msk (0x2000UL) /*!< TRMST (Bitfield-Mask: 0x01) */ + #define R_CAN0_STR_BOST_Pos (12UL) /*!< BOST (Bit 12) */ + #define R_CAN0_STR_BOST_Msk (0x1000UL) /*!< BOST (Bitfield-Mask: 0x01) */ + #define R_CAN0_STR_EPST_Pos (11UL) /*!< EPST (Bit 11) */ + #define R_CAN0_STR_EPST_Msk (0x800UL) /*!< EPST (Bitfield-Mask: 0x01) */ + #define R_CAN0_STR_SLPST_Pos (10UL) /*!< SLPST (Bit 10) */ + #define R_CAN0_STR_SLPST_Msk (0x400UL) /*!< SLPST (Bitfield-Mask: 0x01) */ + #define R_CAN0_STR_HLTST_Pos (9UL) /*!< HLTST (Bit 9) */ + #define R_CAN0_STR_HLTST_Msk (0x200UL) /*!< HLTST (Bitfield-Mask: 0x01) */ + #define R_CAN0_STR_RSTST_Pos (8UL) /*!< RSTST (Bit 8) */ + #define R_CAN0_STR_RSTST_Msk (0x100UL) /*!< RSTST (Bitfield-Mask: 0x01) */ + #define R_CAN0_STR_EST_Pos (7UL) /*!< EST (Bit 7) */ + #define R_CAN0_STR_EST_Msk (0x80UL) /*!< EST (Bitfield-Mask: 0x01) */ + #define R_CAN0_STR_TABST_Pos (6UL) /*!< TABST (Bit 6) */ + #define R_CAN0_STR_TABST_Msk (0x40UL) /*!< TABST (Bitfield-Mask: 0x01) */ + #define R_CAN0_STR_FMLST_Pos (5UL) /*!< FMLST (Bit 5) */ + #define R_CAN0_STR_FMLST_Msk (0x20UL) /*!< FMLST (Bitfield-Mask: 0x01) */ + #define R_CAN0_STR_NMLST_Pos (4UL) /*!< NMLST (Bit 4) */ + #define R_CAN0_STR_NMLST_Msk (0x10UL) /*!< NMLST (Bitfield-Mask: 0x01) */ + #define R_CAN0_STR_TFST_Pos (3UL) /*!< TFST (Bit 3) */ + #define R_CAN0_STR_TFST_Msk (0x8UL) /*!< TFST (Bitfield-Mask: 0x01) */ + #define R_CAN0_STR_RFST_Pos (2UL) /*!< RFST (Bit 2) */ + #define R_CAN0_STR_RFST_Msk (0x4UL) /*!< RFST (Bitfield-Mask: 0x01) */ + #define R_CAN0_STR_SDST_Pos (1UL) /*!< SDST (Bit 1) */ + #define R_CAN0_STR_SDST_Msk (0x2UL) /*!< SDST (Bitfield-Mask: 0x01) */ + #define R_CAN0_STR_NDST_Pos (0UL) /*!< NDST (Bit 0) */ + #define R_CAN0_STR_NDST_Msk (0x1UL) /*!< NDST (Bitfield-Mask: 0x01) */ +/* ========================================================== BCR ========================================================== */ + #define R_CAN0_BCR_TSEG1_Pos (28UL) /*!< TSEG1 (Bit 28) */ + #define R_CAN0_BCR_TSEG1_Msk (0xf0000000UL) /*!< TSEG1 (Bitfield-Mask: 0x0f) */ + #define R_CAN0_BCR_BRP_Pos (16UL) /*!< BRP (Bit 16) */ + #define R_CAN0_BCR_BRP_Msk (0x3ff0000UL) /*!< BRP (Bitfield-Mask: 0x3ff) */ + #define R_CAN0_BCR_SJW_Pos (12UL) /*!< SJW (Bit 12) */ + #define R_CAN0_BCR_SJW_Msk (0x3000UL) /*!< SJW (Bitfield-Mask: 0x03) */ + #define R_CAN0_BCR_TSEG2_Pos (8UL) /*!< TSEG2 (Bit 8) */ + #define R_CAN0_BCR_TSEG2_Msk (0x700UL) /*!< TSEG2 (Bitfield-Mask: 0x07) */ + #define R_CAN0_BCR_CCLKS_Pos (0UL) /*!< CCLKS (Bit 0) */ + #define R_CAN0_BCR_CCLKS_Msk (0x1UL) /*!< CCLKS (Bitfield-Mask: 0x01) */ +/* ========================================================= RFCR ========================================================== */ + #define R_CAN0_RFCR_RFEST_Pos (7UL) /*!< RFEST (Bit 7) */ + #define R_CAN0_RFCR_RFEST_Msk (0x80UL) /*!< RFEST (Bitfield-Mask: 0x01) */ + #define R_CAN0_RFCR_RFWST_Pos (6UL) /*!< RFWST (Bit 6) */ + #define R_CAN0_RFCR_RFWST_Msk (0x40UL) /*!< RFWST (Bitfield-Mask: 0x01) */ + #define R_CAN0_RFCR_RFFST_Pos (5UL) /*!< RFFST (Bit 5) */ + #define R_CAN0_RFCR_RFFST_Msk (0x20UL) /*!< RFFST (Bitfield-Mask: 0x01) */ + #define R_CAN0_RFCR_RFMLF_Pos (4UL) /*!< RFMLF (Bit 4) */ + #define R_CAN0_RFCR_RFMLF_Msk (0x10UL) /*!< RFMLF (Bitfield-Mask: 0x01) */ + #define R_CAN0_RFCR_RFUST_Pos (1UL) /*!< RFUST (Bit 1) */ + #define R_CAN0_RFCR_RFUST_Msk (0xeUL) /*!< RFUST (Bitfield-Mask: 0x07) */ + #define R_CAN0_RFCR_RFE_Pos (0UL) /*!< RFE (Bit 0) */ + #define R_CAN0_RFCR_RFE_Msk (0x1UL) /*!< RFE (Bitfield-Mask: 0x01) */ +/* ========================================================= RFPCR ========================================================= */ + #define R_CAN0_RFPCR_RFPCR_Pos (0UL) /*!< RFPCR (Bit 0) */ + #define R_CAN0_RFPCR_RFPCR_Msk (0xffUL) /*!< RFPCR (Bitfield-Mask: 0xff) */ +/* ========================================================= TFCR ========================================================== */ + #define R_CAN0_TFCR_TFEST_Pos (7UL) /*!< TFEST (Bit 7) */ + #define R_CAN0_TFCR_TFEST_Msk (0x80UL) /*!< TFEST (Bitfield-Mask: 0x01) */ + #define R_CAN0_TFCR_TFFST_Pos (6UL) /*!< TFFST (Bit 6) */ + #define R_CAN0_TFCR_TFFST_Msk (0x40UL) /*!< TFFST (Bitfield-Mask: 0x01) */ + #define R_CAN0_TFCR_TFUST_Pos (1UL) /*!< TFUST (Bit 1) */ + #define R_CAN0_TFCR_TFUST_Msk (0xeUL) /*!< TFUST (Bitfield-Mask: 0x07) */ + #define R_CAN0_TFCR_TFE_Pos (0UL) /*!< TFE (Bit 0) */ + #define R_CAN0_TFCR_TFE_Msk (0x1UL) /*!< TFE (Bitfield-Mask: 0x01) */ +/* ========================================================= TFPCR ========================================================= */ + #define R_CAN0_TFPCR_TFPCR_Pos (0UL) /*!< TFPCR (Bit 0) */ + #define R_CAN0_TFPCR_TFPCR_Msk (0xffUL) /*!< TFPCR (Bitfield-Mask: 0xff) */ +/* ========================================================= EIER ========================================================== */ + #define R_CAN0_EIER_BLIE_Pos (7UL) /*!< BLIE (Bit 7) */ + #define R_CAN0_EIER_BLIE_Msk (0x80UL) /*!< BLIE (Bitfield-Mask: 0x01) */ + #define R_CAN0_EIER_OLIE_Pos (6UL) /*!< OLIE (Bit 6) */ + #define R_CAN0_EIER_OLIE_Msk (0x40UL) /*!< OLIE (Bitfield-Mask: 0x01) */ + #define R_CAN0_EIER_ORIE_Pos (5UL) /*!< ORIE (Bit 5) */ + #define R_CAN0_EIER_ORIE_Msk (0x20UL) /*!< ORIE (Bitfield-Mask: 0x01) */ + #define R_CAN0_EIER_BORIE_Pos (4UL) /*!< BORIE (Bit 4) */ + #define R_CAN0_EIER_BORIE_Msk (0x10UL) /*!< BORIE (Bitfield-Mask: 0x01) */ + #define R_CAN0_EIER_BOEIE_Pos (3UL) /*!< BOEIE (Bit 3) */ + #define R_CAN0_EIER_BOEIE_Msk (0x8UL) /*!< BOEIE (Bitfield-Mask: 0x01) */ + #define R_CAN0_EIER_EPIE_Pos (2UL) /*!< EPIE (Bit 2) */ + #define R_CAN0_EIER_EPIE_Msk (0x4UL) /*!< EPIE (Bitfield-Mask: 0x01) */ + #define R_CAN0_EIER_EWIE_Pos (1UL) /*!< EWIE (Bit 1) */ + #define R_CAN0_EIER_EWIE_Msk (0x2UL) /*!< EWIE (Bitfield-Mask: 0x01) */ + #define R_CAN0_EIER_BEIE_Pos (0UL) /*!< BEIE (Bit 0) */ + #define R_CAN0_EIER_BEIE_Msk (0x1UL) /*!< BEIE (Bitfield-Mask: 0x01) */ +/* ========================================================= EIFR ========================================================== */ + #define R_CAN0_EIFR_BLIF_Pos (7UL) /*!< BLIF (Bit 7) */ + #define R_CAN0_EIFR_BLIF_Msk (0x80UL) /*!< BLIF (Bitfield-Mask: 0x01) */ + #define R_CAN0_EIFR_OLIF_Pos (6UL) /*!< OLIF (Bit 6) */ + #define R_CAN0_EIFR_OLIF_Msk (0x40UL) /*!< OLIF (Bitfield-Mask: 0x01) */ + #define R_CAN0_EIFR_ORIF_Pos (5UL) /*!< ORIF (Bit 5) */ + #define R_CAN0_EIFR_ORIF_Msk (0x20UL) /*!< ORIF (Bitfield-Mask: 0x01) */ + #define R_CAN0_EIFR_BORIF_Pos (4UL) /*!< BORIF (Bit 4) */ + #define R_CAN0_EIFR_BORIF_Msk (0x10UL) /*!< BORIF (Bitfield-Mask: 0x01) */ + #define R_CAN0_EIFR_BOEIF_Pos (3UL) /*!< BOEIF (Bit 3) */ + #define R_CAN0_EIFR_BOEIF_Msk (0x8UL) /*!< BOEIF (Bitfield-Mask: 0x01) */ + #define R_CAN0_EIFR_EPIF_Pos (2UL) /*!< EPIF (Bit 2) */ + #define R_CAN0_EIFR_EPIF_Msk (0x4UL) /*!< EPIF (Bitfield-Mask: 0x01) */ + #define R_CAN0_EIFR_EWIF_Pos (1UL) /*!< EWIF (Bit 1) */ + #define R_CAN0_EIFR_EWIF_Msk (0x2UL) /*!< EWIF (Bitfield-Mask: 0x01) */ + #define R_CAN0_EIFR_BEIF_Pos (0UL) /*!< BEIF (Bit 0) */ + #define R_CAN0_EIFR_BEIF_Msk (0x1UL) /*!< BEIF (Bitfield-Mask: 0x01) */ +/* ========================================================= RECR ========================================================== */ + #define R_CAN0_RECR_RECR_Pos (0UL) /*!< RECR (Bit 0) */ + #define R_CAN0_RECR_RECR_Msk (0xffUL) /*!< RECR (Bitfield-Mask: 0xff) */ +/* ========================================================= TECR ========================================================== */ + #define R_CAN0_TECR_TECR_Pos (0UL) /*!< TECR (Bit 0) */ + #define R_CAN0_TECR_TECR_Msk (0xffUL) /*!< TECR (Bitfield-Mask: 0xff) */ +/* ========================================================= ECSR ========================================================== */ + #define R_CAN0_ECSR_EDPM_Pos (7UL) /*!< EDPM (Bit 7) */ + #define R_CAN0_ECSR_EDPM_Msk (0x80UL) /*!< EDPM (Bitfield-Mask: 0x01) */ + #define R_CAN0_ECSR_ADEF_Pos (6UL) /*!< ADEF (Bit 6) */ + #define R_CAN0_ECSR_ADEF_Msk (0x40UL) /*!< ADEF (Bitfield-Mask: 0x01) */ + #define R_CAN0_ECSR_BE0F_Pos (5UL) /*!< BE0F (Bit 5) */ + #define R_CAN0_ECSR_BE0F_Msk (0x20UL) /*!< BE0F (Bitfield-Mask: 0x01) */ + #define R_CAN0_ECSR_BE1F_Pos (4UL) /*!< BE1F (Bit 4) */ + #define R_CAN0_ECSR_BE1F_Msk (0x10UL) /*!< BE1F (Bitfield-Mask: 0x01) */ + #define R_CAN0_ECSR_CEF_Pos (3UL) /*!< CEF (Bit 3) */ + #define R_CAN0_ECSR_CEF_Msk (0x8UL) /*!< CEF (Bitfield-Mask: 0x01) */ + #define R_CAN0_ECSR_AEF_Pos (2UL) /*!< AEF (Bit 2) */ + #define R_CAN0_ECSR_AEF_Msk (0x4UL) /*!< AEF (Bitfield-Mask: 0x01) */ + #define R_CAN0_ECSR_FEF_Pos (1UL) /*!< FEF (Bit 1) */ + #define R_CAN0_ECSR_FEF_Msk (0x2UL) /*!< FEF (Bitfield-Mask: 0x01) */ + #define R_CAN0_ECSR_SEF_Pos (0UL) /*!< SEF (Bit 0) */ + #define R_CAN0_ECSR_SEF_Msk (0x1UL) /*!< SEF (Bitfield-Mask: 0x01) */ +/* ========================================================= CSSR ========================================================== */ + #define R_CAN0_CSSR_CSSR_Pos (0UL) /*!< CSSR (Bit 0) */ + #define R_CAN0_CSSR_CSSR_Msk (0xffUL) /*!< CSSR (Bitfield-Mask: 0xff) */ +/* ========================================================= MSSR ========================================================== */ + #define R_CAN0_MSSR_SEST_Pos (7UL) /*!< SEST (Bit 7) */ + #define R_CAN0_MSSR_SEST_Msk (0x80UL) /*!< SEST (Bitfield-Mask: 0x01) */ + #define R_CAN0_MSSR_MBNST_Pos (0UL) /*!< MBNST (Bit 0) */ + #define R_CAN0_MSSR_MBNST_Msk (0x1fUL) /*!< MBNST (Bitfield-Mask: 0x1f) */ +/* ========================================================= MSMR ========================================================== */ + #define R_CAN0_MSMR_MBSM_Pos (0UL) /*!< MBSM (Bit 0) */ + #define R_CAN0_MSMR_MBSM_Msk (0x3UL) /*!< MBSM (Bitfield-Mask: 0x03) */ +/* ========================================================== TSR ========================================================== */ + #define R_CAN0_TSR_TSR_Pos (0UL) /*!< TSR (Bit 0) */ + #define R_CAN0_TSR_TSR_Msk (0xffffUL) /*!< TSR (Bitfield-Mask: 0xffff) */ +/* ========================================================= AFSR ========================================================== */ + #define R_CAN0_AFSR_AFSR_Pos (0UL) /*!< AFSR (Bit 0) */ + #define R_CAN0_AFSR_AFSR_Msk (0xffffUL) /*!< AFSR (Bitfield-Mask: 0xffff) */ +/* ========================================================== TCR ========================================================== */ + #define R_CAN0_TCR_TSTM_Pos (1UL) /*!< TSTM (Bit 1) */ + #define R_CAN0_TCR_TSTM_Msk (0x6UL) /*!< TSTM (Bitfield-Mask: 0x03) */ + #define R_CAN0_TCR_TSTE_Pos (0UL) /*!< TSTE (Bit 0) */ + #define R_CAN0_TCR_TSTE_Msk (0x1UL) /*!< TSTE (Bitfield-Mask: 0x01) */ + +/* =========================================================================================================================== */ +/* ================ R_CANFD ================ */ +/* =========================================================================================================================== */ + +/* ======================================================== 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_TSBTCS_Pos (13UL) /*!< TSBTCS (Bit 13) */ + #define R_CANFD_CFDGCFG_TSBTCS_Msk (0xe000UL) /*!< TSBTCS (Bitfield-Mask: 0x07) */ + #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_QMEIE_Pos (14UL) /*!< QMEIE (Bit 14) */ + #define R_CANFD_CFDGCTR_QMEIE_Msk (0x4000UL) /*!< QMEIE (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDGCTR_MOWEIE_Pos (15UL) /*!< MOWEIE (Bit 15) */ + #define R_CANFD_CFDGCTR_MOWEIE_Msk (0x8000UL) /*!< MOWEIE (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDGCTR_TSRST_Pos (16UL) /*!< TSRST (Bit 16) */ + #define R_CANFD_CFDGCTR_TSRST_Msk (0x10000UL) /*!< TSRST (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDGCTR_TSWR_Pos (17UL) /*!< TSWR (Bit 17) */ + #define R_CANFD_CFDGCTR_TSWR_Msk (0x20000UL) /*!< TSWR (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_QOWES_Pos (4UL) /*!< QOWES (Bit 4) */ + #define R_CANFD_CFDGERFL_QOWES_Msk (0x10UL) /*!< QOWES (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDGERFL_OTBMLTSTS_Pos (5UL) /*!< OTBMLTSTS (Bit 5) */ + #define R_CANFD_CFDGERFL_OTBMLTSTS_Msk (0x20UL) /*!< OTBMLTSTS (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDGERFL_QMES_Pos (6UL) /*!< QMES (Bit 6) */ + #define R_CANFD_CFDGERFL_QMES_Msk (0x40UL) /*!< QMES (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDGERFL_RXSFAIL0_Pos (8UL) /*!< RXSFAIL0 (Bit 8) */ + #define R_CANFD_CFDGERFL_RXSFAIL0_Msk (0x100UL) /*!< RXSFAIL0 (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDGERFL_RXSFAIL1_Pos (9UL) /*!< RXSFAIL1 (Bit 9) */ + #define R_CANFD_CFDGERFL_RXSFAIL1_Msk (0x200UL) /*!< RXSFAIL1 (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDGERFL_EEF0_Pos (16UL) /*!< EEF0 (Bit 16) */ + #define R_CANFD_CFDGERFL_EEF0_Msk (0x10000UL) /*!< EEF0 (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDGERFL_EEF1_Pos (17UL) /*!< EEF1 (Bit 17) */ + #define R_CANFD_CFDGERFL_EEF1_Msk (0x20000UL) /*!< EEF1 (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) */ +/* ======================================================== 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) */ + #define R_CANFD_CFDRFCC_RFFIE_Pos (16UL) /*!< RFFIE (Bit 16) */ + #define R_CANFD_CFDRFCC_RFFIE_Msk (0x10000UL) /*!< RFFIE (Bitfield-Mask: 0x01) */ +/* ======================================================= 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) */ + #define R_CANFD_CFDRFSTS_RFFIF_Pos (16UL) /*!< RFFIF (Bit 16) */ + #define R_CANFD_CFDRFSTS_RFFIF_Msk (0x10000UL) /*!< RFFIF (Bitfield-Mask: 0x01) */ +/* ======================================================= 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) */ +/* ======================================================= CFDCFCCE ======================================================== */ + #define R_CANFD_CFDCFCCE_CFFIE_Pos (0UL) /*!< CFFIE (Bit 0) */ + #define R_CANFD_CFDCFCCE_CFFIE_Msk (0x1UL) /*!< CFFIE (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDCFCCE_CFOFRXIE_Pos (1UL) /*!< CFOFRXIE (Bit 1) */ + #define R_CANFD_CFDCFCCE_CFOFRXIE_Msk (0x2UL) /*!< CFOFRXIE (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDCFCCE_CFOFTXIE_Pos (2UL) /*!< CFOFTXIE (Bit 2) */ + #define R_CANFD_CFDCFCCE_CFOFTXIE_Msk (0x4UL) /*!< CFOFTXIE (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDCFCCE_CFMOWM_Pos (8UL) /*!< CFMOWM (Bit 8) */ + #define R_CANFD_CFDCFCCE_CFMOWM_Msk (0x100UL) /*!< CFMOWM (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDCFCCE_CFBME_Pos (16UL) /*!< CFBME (Bit 16) */ + #define R_CANFD_CFDCFCCE_CFBME_Msk (0x10000UL) /*!< CFBME (Bitfield-Mask: 0x01) */ +/* ======================================================= 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) */ + #define R_CANFD_CFDCFSTS_CFFIF_Pos (16UL) /*!< CFFIF (Bit 16) */ + #define R_CANFD_CFDCFSTS_CFFIF_Msk (0x10000UL) /*!< CFFIF (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDCFSTS_CFOFRXIF_Pos (17UL) /*!< CFOFRXIF (Bit 17) */ + #define R_CANFD_CFDCFSTS_CFOFRXIF_Msk (0x20000UL) /*!< CFOFRXIF (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDCFSTS_CFOFTXIF_Pos (18UL) /*!< CFOFTXIF (Bit 18) */ + #define R_CANFD_CFDCFSTS_CFOFTXIF_Msk (0x40000UL) /*!< CFOFTXIF (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDCFSTS_CFMOW_Pos (24UL) /*!< CFMOW (Bit 24) */ + #define R_CANFD_CFDCFSTS_CFMOW_Msk (0x1000000UL) /*!< CFMOW (Bitfield-Mask: 0x01) */ +/* ======================================================= 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 (0xffUL) /*!< RFXEMP (Bitfield-Mask: 0xff) */ + #define R_CANFD_CFDFESTS_CFXEMP_Pos (8UL) /*!< CFXEMP (Bit 8) */ + #define R_CANFD_CFDFESTS_CFXEMP_Msk (0x3f00UL) /*!< CFXEMP (Bitfield-Mask: 0x3f) */ +/* ======================================================= CFDFFSTS ======================================================== */ + #define R_CANFD_CFDFFSTS_RFXFLL_Pos (0UL) /*!< RFXFLL (Bit 0) */ + #define R_CANFD_CFDFFSTS_RFXFLL_Msk (0xffUL) /*!< RFXFLL (Bitfield-Mask: 0xff) */ + #define R_CANFD_CFDFFSTS_CFXFLL_Pos (8UL) /*!< CFXFLL (Bit 8) */ + #define R_CANFD_CFDFFSTS_CFXFLL_Msk (0x3f00UL) /*!< CFXFLL (Bitfield-Mask: 0x3f) */ +/* ======================================================= CFDFMSTS ======================================================== */ + #define R_CANFD_CFDFMSTS_RFXMLT_Pos (0UL) /*!< RFXMLT (Bit 0) */ + #define R_CANFD_CFDFMSTS_RFXMLT_Msk (0xffUL) /*!< RFXMLT (Bitfield-Mask: 0xff) */ + #define R_CANFD_CFDFMSTS_CFXMLT_Pos (8UL) /*!< CFXMLT (Bit 8) */ + #define R_CANFD_CFDFMSTS_CFXMLT_Msk (0x3f00UL) /*!< CFXMLT (Bitfield-Mask: 0x3f) */ +/* ======================================================= CFDRFISTS ======================================================= */ + #define R_CANFD_CFDRFISTS_RFXIF_Pos (0UL) /*!< RFXIF (Bit 0) */ + #define R_CANFD_CFDRFISTS_RFXIF_Msk (0xffUL) /*!< RFXIF (Bitfield-Mask: 0xff) */ + #define R_CANFD_CFDRFISTS_RFXFFLL_Pos (16UL) /*!< RFXFFLL (Bit 16) */ + #define R_CANFD_CFDRFISTS_RFXFFLL_Msk (0xff0000UL) /*!< RFXFFLL (Bitfield-Mask: 0xff) */ +/* ====================================================== CFDCFRISTS ======================================================= */ + #define R_CANFD_CFDCFRISTS_CFXRXIF_Pos (0UL) /*!< CFXRXIF (Bit 0) */ + #define R_CANFD_CFDCFRISTS_CFXRXIF_Msk (0x3fUL) /*!< CFXRXIF (Bitfield-Mask: 0x3f) */ +/* ====================================================== CFDCFTISTS ======================================================= */ + #define R_CANFD_CFDCFTISTS_CFXTXIF_Pos (0UL) /*!< CFXTXIF (Bit 0) */ + #define R_CANFD_CFDCFTISTS_CFXTXIF_Msk (0x3fUL) /*!< CFXTXIF (Bitfield-Mask: 0x3f) */ +/* ===================================================== CFDCFOFRISTS ====================================================== */ + #define R_CANFD_CFDCFOFRISTS_CFXOFRXIF_Pos (0UL) /*!< CFXOFRXIF (Bit 0) */ + #define R_CANFD_CFDCFOFRISTS_CFXOFRXIF_Msk (0x3fUL) /*!< CFXOFRXIF (Bitfield-Mask: 0x3f) */ +/* ===================================================== CFDCFOFTISTS ====================================================== */ + #define R_CANFD_CFDCFOFTISTS_CFXOFTXIF_Pos (0UL) /*!< CFXOFTXIF (Bit 0) */ + #define R_CANFD_CFDCFOFTISTS_CFXOFTXIF_Msk (0x3fUL) /*!< CFXOFTXIF (Bitfield-Mask: 0x3f) */ +/* ====================================================== CFDCFMOWSTS ====================================================== */ + #define R_CANFD_CFDCFMOWSTS_CFXMOW_Pos (0UL) /*!< CFXMOW (Bit 0) */ + #define R_CANFD_CFDCFMOWSTS_CFXMOW_Msk (0x3fUL) /*!< CFXMOW (Bitfield-Mask: 0x3f) */ +/* ======================================================= CFDFFFSTS ======================================================= */ + #define R_CANFD_CFDFFFSTS_RFXFFLL_Pos (0UL) /*!< RFXFFLL (Bit 0) */ + #define R_CANFD_CFDFFFSTS_RFXFFLL_Msk (0xffUL) /*!< RFXFFLL (Bitfield-Mask: 0xff) */ + #define R_CANFD_CFDFFFSTS_CFXFFLL_Pos (8UL) /*!< CFXFFLL (Bit 8) */ + #define R_CANFD_CFDFFFSTS_CFXFFLL_Msk (0x3f00UL) /*!< CFXFFLL (Bitfield-Mask: 0x3f) */ +/* ======================================================== 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 (0xffUL) /*!< CFDTMTRSTSg (Bitfield-Mask: 0xff) */ +/* ====================================================== CFDTMTARSTS ====================================================== */ + #define R_CANFD_CFDTMTARSTS_CFDTMTARSTSg_Pos (0UL) /*!< CFDTMTARSTSg (Bit 0) */ + #define R_CANFD_CFDTMTARSTS_CFDTMTARSTSg_Msk (0xffUL) /*!< CFDTMTARSTSg (Bitfield-Mask: 0xff) */ +/* ====================================================== CFDTMTCSTS ======================================================= */ + #define R_CANFD_CFDTMTCSTS_CFDTMTCSTSg_Pos (0UL) /*!< CFDTMTCSTSg (Bit 0) */ + #define R_CANFD_CFDTMTCSTS_CFDTMTCSTSg_Msk (0xffUL) /*!< CFDTMTCSTSg (Bitfield-Mask: 0xff) */ +/* ====================================================== CFDTMTASTS ======================================================= */ + #define R_CANFD_CFDTMTASTS_CFDTMTASTSg_Pos (0UL) /*!< CFDTMTASTSg (Bit 0) */ + #define R_CANFD_CFDTMTASTS_CFDTMTASTSg_Msk (0xffUL) /*!< CFDTMTASTSg (Bitfield-Mask: 0xff) */ +/* ======================================================= CFDTMIEC ======================================================== */ + #define R_CANFD_CFDTMIEC_TMIEg_Pos (0UL) /*!< TMIEg (Bit 0) */ + #define R_CANFD_CFDTMIEC_TMIEg_Msk (0xffUL) /*!< TMIEg (Bitfield-Mask: 0xff) */ +/* ======================================================= 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_TXQGWE_Pos (1UL) /*!< TXQGWE (Bit 1) */ + #define R_CANFD_CFDTXQCC0_TXQGWE_Msk (0x2UL) /*!< TXQGWE (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 (0x1f00UL) /*!< TXQDC (Bitfield-Mask: 0x1f) */ + #define R_CANFD_CFDTXQCC0_TXQFIE_Pos (16UL) /*!< TXQFIE (Bit 16) */ + #define R_CANFD_CFDTXQCC0_TXQFIE_Msk (0x10000UL) /*!< TXQFIE (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDTXQCC0_TXQOFRXIE_Pos (17UL) /*!< TXQOFRXIE (Bit 17) */ + #define R_CANFD_CFDTXQCC0_TXQOFRXIE_Msk (0x20000UL) /*!< TXQOFRXIE (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDTXQCC0_TXQOFTXIE_Pos (18UL) /*!< TXQOFTXIE (Bit 18) */ + #define R_CANFD_CFDTXQCC0_TXQOFTXIE_Msk (0x40000UL) /*!< TXQOFTXIE (Bitfield-Mask: 0x01) */ +/* ====================================================== 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) */ + #define R_CANFD_CFDTXQSTS0_TXQFIF_Pos (16UL) /*!< TXQFIF (Bit 16) */ + #define R_CANFD_CFDTXQSTS0_TXQFIF_Msk (0x10000UL) /*!< TXQFIF (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDTXQSTS0_TXQOFRXIF_Pos (17UL) /*!< TXQOFRXIF (Bit 17) */ + #define R_CANFD_CFDTXQSTS0_TXQOFRXIF_Msk (0x20000UL) /*!< TXQOFRXIF (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDTXQSTS0_TXQOFTXIF_Pos (18UL) /*!< TXQOFTXIF (Bit 18) */ + #define R_CANFD_CFDTXQSTS0_TXQOFTXIF_Msk (0x40000UL) /*!< TXQOFTXIF (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDTXQSTS0_TXQMLT_Pos (19UL) /*!< TXQMLT (Bit 19) */ + #define R_CANFD_CFDTXQSTS0_TXQMLT_Msk (0x80000UL) /*!< TXQMLT (Bitfield-Mask: 0x01) */ +/* ====================================================== CFDTXQPCTR0 ====================================================== */ + #define R_CANFD_CFDTXQPCTR0_TXQPC_Pos (0UL) /*!< TXQPC (Bit 0) */ + #define R_CANFD_CFDTXQPCTR0_TXQPC_Msk (0xffUL) /*!< TXQPC (Bitfield-Mask: 0xff) */ +/* ======================================================= CFDTXQCC1 ======================================================= */ + #define R_CANFD_CFDTXQCC1_TXQE_Pos (0UL) /*!< TXQE (Bit 0) */ + #define R_CANFD_CFDTXQCC1_TXQE_Msk (0x1UL) /*!< TXQE (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDTXQCC1_TXQGWE_Pos (1UL) /*!< TXQGWE (Bit 1) */ + #define R_CANFD_CFDTXQCC1_TXQGWE_Msk (0x2UL) /*!< TXQGWE (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDTXQCC1_TXQTXIE_Pos (5UL) /*!< TXQTXIE (Bit 5) */ + #define R_CANFD_CFDTXQCC1_TXQTXIE_Msk (0x20UL) /*!< TXQTXIE (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDTXQCC1_TXQIM_Pos (7UL) /*!< TXQIM (Bit 7) */ + #define R_CANFD_CFDTXQCC1_TXQIM_Msk (0x80UL) /*!< TXQIM (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDTXQCC1_TXQDC_Pos (8UL) /*!< TXQDC (Bit 8) */ + #define R_CANFD_CFDTXQCC1_TXQDC_Msk (0x1f00UL) /*!< TXQDC (Bitfield-Mask: 0x1f) */ + #define R_CANFD_CFDTXQCC1_TXQFIE_Pos (16UL) /*!< TXQFIE (Bit 16) */ + #define R_CANFD_CFDTXQCC1_TXQFIE_Msk (0x10000UL) /*!< TXQFIE (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDTXQCC1_TXQOFRXIE_Pos (17UL) /*!< TXQOFRXIE (Bit 17) */ + #define R_CANFD_CFDTXQCC1_TXQOFRXIE_Msk (0x20000UL) /*!< TXQOFRXIE (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDTXQCC1_TXQOFTXIE_Pos (18UL) /*!< TXQOFTXIE (Bit 18) */ + #define R_CANFD_CFDTXQCC1_TXQOFTXIE_Msk (0x40000UL) /*!< TXQOFTXIE (Bitfield-Mask: 0x01) */ +/* ====================================================== CFDTXQSTS1 ======================================================= */ + #define R_CANFD_CFDTXQSTS1_TXQEMP_Pos (0UL) /*!< TXQEMP (Bit 0) */ + #define R_CANFD_CFDTXQSTS1_TXQEMP_Msk (0x1UL) /*!< TXQEMP (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDTXQSTS1_TXQFLL_Pos (1UL) /*!< TXQFLL (Bit 1) */ + #define R_CANFD_CFDTXQSTS1_TXQFLL_Msk (0x2UL) /*!< TXQFLL (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDTXQSTS1_TXQTXIF_Pos (2UL) /*!< TXQTXIF (Bit 2) */ + #define R_CANFD_CFDTXQSTS1_TXQTXIF_Msk (0x4UL) /*!< TXQTXIF (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDTXQSTS1_TXQMC_Pos (8UL) /*!< TXQMC (Bit 8) */ + #define R_CANFD_CFDTXQSTS1_TXQMC_Msk (0x3f00UL) /*!< TXQMC (Bitfield-Mask: 0x3f) */ + #define R_CANFD_CFDTXQSTS1_TXQFIF_Pos (16UL) /*!< TXQFIF (Bit 16) */ + #define R_CANFD_CFDTXQSTS1_TXQFIF_Msk (0x10000UL) /*!< TXQFIF (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDTXQSTS1_TXQOFRXIF_Pos (17UL) /*!< TXQOFRXIF (Bit 17) */ + #define R_CANFD_CFDTXQSTS1_TXQOFRXIF_Msk (0x20000UL) /*!< TXQOFRXIF (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDTXQSTS1_TXQOFTXIF_Pos (18UL) /*!< TXQOFTXIF (Bit 18) */ + #define R_CANFD_CFDTXQSTS1_TXQOFTXIF_Msk (0x40000UL) /*!< TXQOFTXIF (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDTXQSTS1_TXQMLT_Pos (19UL) /*!< TXQMLT (Bit 19) */ + #define R_CANFD_CFDTXQSTS1_TXQMLT_Msk (0x80000UL) /*!< TXQMLT (Bitfield-Mask: 0x01) */ +/* ====================================================== CFDTXQPCTR1 ====================================================== */ + #define R_CANFD_CFDTXQPCTR1_TXQPC_Pos (0UL) /*!< TXQPC (Bit 0) */ + #define R_CANFD_CFDTXQPCTR1_TXQPC_Msk (0xffUL) /*!< TXQPC (Bitfield-Mask: 0xff) */ +/* ======================================================= CFDTXQCC2 ======================================================= */ + #define R_CANFD_CFDTXQCC2_TXQE_Pos (0UL) /*!< TXQE (Bit 0) */ + #define R_CANFD_CFDTXQCC2_TXQE_Msk (0x1UL) /*!< TXQE (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDTXQCC2_TXQGWE_Pos (1UL) /*!< TXQGWE (Bit 1) */ + #define R_CANFD_CFDTXQCC2_TXQGWE_Msk (0x2UL) /*!< TXQGWE (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDTXQCC2_TXQTXIE_Pos (5UL) /*!< TXQTXIE (Bit 5) */ + #define R_CANFD_CFDTXQCC2_TXQTXIE_Msk (0x20UL) /*!< TXQTXIE (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDTXQCC2_TXQIM_Pos (7UL) /*!< TXQIM (Bit 7) */ + #define R_CANFD_CFDTXQCC2_TXQIM_Msk (0x80UL) /*!< TXQIM (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDTXQCC2_TXQDC_Pos (8UL) /*!< TXQDC (Bit 8) */ + #define R_CANFD_CFDTXQCC2_TXQDC_Msk (0x1f00UL) /*!< TXQDC (Bitfield-Mask: 0x1f) */ + #define R_CANFD_CFDTXQCC2_TXQFIE_Pos (16UL) /*!< TXQFIE (Bit 16) */ + #define R_CANFD_CFDTXQCC2_TXQFIE_Msk (0x10000UL) /*!< TXQFIE (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDTXQCC2_TXQOFRXIE_Pos (17UL) /*!< TXQOFRXIE (Bit 17) */ + #define R_CANFD_CFDTXQCC2_TXQOFRXIE_Msk (0x20000UL) /*!< TXQOFRXIE (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDTXQCC2_TXQOFTXIE_Pos (18UL) /*!< TXQOFTXIE (Bit 18) */ + #define R_CANFD_CFDTXQCC2_TXQOFTXIE_Msk (0x40000UL) /*!< TXQOFTXIE (Bitfield-Mask: 0x01) */ +/* ====================================================== CFDTXQSTS2 ======================================================= */ + #define R_CANFD_CFDTXQSTS2_TXQEMP_Pos (0UL) /*!< TXQEMP (Bit 0) */ + #define R_CANFD_CFDTXQSTS2_TXQEMP_Msk (0x1UL) /*!< TXQEMP (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDTXQSTS2_TXQFLL_Pos (1UL) /*!< TXQFLL (Bit 1) */ + #define R_CANFD_CFDTXQSTS2_TXQFLL_Msk (0x2UL) /*!< TXQFLL (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDTXQSTS2_TXQTXIF_Pos (2UL) /*!< TXQTXIF (Bit 2) */ + #define R_CANFD_CFDTXQSTS2_TXQTXIF_Msk (0x4UL) /*!< TXQTXIF (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDTXQSTS2_TXQMC_Pos (8UL) /*!< TXQMC (Bit 8) */ + #define R_CANFD_CFDTXQSTS2_TXQMC_Msk (0x3f00UL) /*!< TXQMC (Bitfield-Mask: 0x3f) */ + #define R_CANFD_CFDTXQSTS2_TXQFIF_Pos (16UL) /*!< TXQFIF (Bit 16) */ + #define R_CANFD_CFDTXQSTS2_TXQFIF_Msk (0x10000UL) /*!< TXQFIF (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDTXQSTS2_TXQOFRXIF_Pos (17UL) /*!< TXQOFRXIF (Bit 17) */ + #define R_CANFD_CFDTXQSTS2_TXQOFRXIF_Msk (0x20000UL) /*!< TXQOFRXIF (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDTXQSTS2_TXQOFTXIF_Pos (18UL) /*!< TXQOFTXIF (Bit 18) */ + #define R_CANFD_CFDTXQSTS2_TXQOFTXIF_Msk (0x40000UL) /*!< TXQOFTXIF (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDTXQSTS2_TXQMLT_Pos (19UL) /*!< TXQMLT (Bit 19) */ + #define R_CANFD_CFDTXQSTS2_TXQMLT_Msk (0x80000UL) /*!< TXQMLT (Bitfield-Mask: 0x01) */ +/* ====================================================== CFDTXQPCTR2 ====================================================== */ + #define R_CANFD_CFDTXQPCTR2_TXQPC_Pos (0UL) /*!< TXQPC (Bit 0) */ + #define R_CANFD_CFDTXQPCTR2_TXQPC_Msk (0xffUL) /*!< TXQPC (Bitfield-Mask: 0xff) */ +/* ======================================================= CFDTXQCC3 ======================================================= */ + #define R_CANFD_CFDTXQCC3_TXQE_Pos (0UL) /*!< TXQE (Bit 0) */ + #define R_CANFD_CFDTXQCC3_TXQE_Msk (0x1UL) /*!< TXQE (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDTXQCC3_TXQTXIE_Pos (5UL) /*!< TXQTXIE (Bit 5) */ + #define R_CANFD_CFDTXQCC3_TXQTXIE_Msk (0x20UL) /*!< TXQTXIE (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDTXQCC3_TXQIM_Pos (7UL) /*!< TXQIM (Bit 7) */ + #define R_CANFD_CFDTXQCC3_TXQIM_Msk (0x80UL) /*!< TXQIM (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDTXQCC3_TXQDC_Pos (8UL) /*!< TXQDC (Bit 8) */ + #define R_CANFD_CFDTXQCC3_TXQDC_Msk (0x1f00UL) /*!< TXQDC (Bitfield-Mask: 0x1f) */ + #define R_CANFD_CFDTXQCC3_TXQOFTXIE_Pos (18UL) /*!< TXQOFTXIE (Bit 18) */ + #define R_CANFD_CFDTXQCC3_TXQOFTXIE_Msk (0x40000UL) /*!< TXQOFTXIE (Bitfield-Mask: 0x01) */ +/* ====================================================== CFDTXQSTS3 ======================================================= */ + #define R_CANFD_CFDTXQSTS3_TXQEMP_Pos (0UL) /*!< TXQEMP (Bit 0) */ + #define R_CANFD_CFDTXQSTS3_TXQEMP_Msk (0x1UL) /*!< TXQEMP (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDTXQSTS3_TXQFLL_Pos (1UL) /*!< TXQFLL (Bit 1) */ + #define R_CANFD_CFDTXQSTS3_TXQFLL_Msk (0x2UL) /*!< TXQFLL (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDTXQSTS3_TXQTXIF_Pos (2UL) /*!< TXQTXIF (Bit 2) */ + #define R_CANFD_CFDTXQSTS3_TXQTXIF_Msk (0x4UL) /*!< TXQTXIF (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDTXQSTS3_TXQMC_Pos (8UL) /*!< TXQMC (Bit 8) */ + #define R_CANFD_CFDTXQSTS3_TXQMC_Msk (0x3f00UL) /*!< TXQMC (Bitfield-Mask: 0x3f) */ + #define R_CANFD_CFDTXQSTS3_TXQOFTXIF_Pos (18UL) /*!< TXQOFTXIF (Bit 18) */ + #define R_CANFD_CFDTXQSTS3_TXQOFTXIF_Msk (0x40000UL) /*!< TXQOFTXIF (Bitfield-Mask: 0x01) */ +/* ====================================================== CFDTXQPCTR3 ====================================================== */ + #define R_CANFD_CFDTXQPCTR3_TXQPC_Pos (0UL) /*!< TXQPC (Bit 0) */ + #define R_CANFD_CFDTXQPCTR3_TXQPC_Msk (0xffUL) /*!< TXQPC (Bitfield-Mask: 0xff) */ +/* ====================================================== CFDTXQESTS ======================================================= */ + #define R_CANFD_CFDTXQESTS_TXQxEMP_Pos (0UL) /*!< TXQxEMP (Bit 0) */ + #define R_CANFD_CFDTXQESTS_TXQxEMP_Msk (0xffUL) /*!< TXQxEMP (Bitfield-Mask: 0xff) */ +/* ====================================================== CFDTXQFISTS ====================================================== */ + #define R_CANFD_CFDTXQFISTS_TXQ0FULL_Pos (0UL) /*!< TXQ0FULL (Bit 0) */ + #define R_CANFD_CFDTXQFISTS_TXQ0FULL_Msk (0x7UL) /*!< TXQ0FULL (Bitfield-Mask: 0x07) */ + #define R_CANFD_CFDTXQFISTS_TXQ1FULL_Pos (4UL) /*!< TXQ1FULL (Bit 4) */ + #define R_CANFD_CFDTXQFISTS_TXQ1FULL_Msk (0x70UL) /*!< TXQ1FULL (Bitfield-Mask: 0x07) */ +/* ====================================================== CFDTXQMSTS ======================================================= */ + #define R_CANFD_CFDTXQMSTS_TXQ0ML_Pos (0UL) /*!< TXQ0ML (Bit 0) */ + #define R_CANFD_CFDTXQMSTS_TXQ0ML_Msk (0x7UL) /*!< TXQ0ML (Bitfield-Mask: 0x07) */ + #define R_CANFD_CFDTXQMSTS_TXQ1ML_Pos (4UL) /*!< TXQ1ML (Bit 4) */ + #define R_CANFD_CFDTXQMSTS_TXQ1ML_Msk (0x70UL) /*!< TXQ1ML (Bitfield-Mask: 0x07) */ +/* ====================================================== CFDTXQISTS ======================================================= */ + #define R_CANFD_CFDTXQISTS_TXQ0ISF_Pos (0UL) /*!< TXQ0ISF (Bit 0) */ + #define R_CANFD_CFDTXQISTS_TXQ0ISF_Msk (0xfUL) /*!< TXQ0ISF (Bitfield-Mask: 0x0f) */ + #define R_CANFD_CFDTXQISTS_TXQ1ISF_Pos (4UL) /*!< TXQ1ISF (Bit 4) */ + #define R_CANFD_CFDTXQISTS_TXQ1ISF_Msk (0xf0UL) /*!< TXQ1ISF (Bitfield-Mask: 0x0f) */ +/* ===================================================== CFDTXQOFTISTS ===================================================== */ + #define R_CANFD_CFDTXQOFTISTS_TXQ0OFTISF_Pos (0UL) /*!< TXQ0OFTISF (Bit 0) */ + #define R_CANFD_CFDTXQOFTISTS_TXQ0OFTISF_Msk (0xfUL) /*!< TXQ0OFTISF (Bitfield-Mask: 0x0f) */ + #define R_CANFD_CFDTXQOFTISTS_TXQ1OFTISF_Pos (4UL) /*!< TXQ1OFTISF (Bit 4) */ + #define R_CANFD_CFDTXQOFTISTS_TXQ1OFTISF_Msk (0xf0UL) /*!< TXQ1OFTISF (Bitfield-Mask: 0x0f) */ +/* ===================================================== CFDTXQOFRISTS ===================================================== */ + #define R_CANFD_CFDTXQOFRISTS_TXQ0OFRISF_Pos (0UL) /*!< TXQ0OFRISF (Bit 0) */ + #define R_CANFD_CFDTXQOFRISTS_TXQ0OFRISF_Msk (0x7UL) /*!< TXQ0OFRISF (Bitfield-Mask: 0x07) */ + #define R_CANFD_CFDTXQOFRISTS_TXQ1OFRISF_Pos (4UL) /*!< TXQ1OFRISF (Bit 4) */ + #define R_CANFD_CFDTXQOFRISTS_TXQ1OFRISF_Msk (0x70UL) /*!< TXQ1OFRISF (Bitfield-Mask: 0x07) */ +/* ====================================================== CFDTXQFSTS ======================================================= */ + #define R_CANFD_CFDTXQFSTS_TXQ0FSF_Pos (0UL) /*!< TXQ0FSF (Bit 0) */ + #define R_CANFD_CFDTXQFSTS_TXQ0FSF_Msk (0xfUL) /*!< TXQ0FSF (Bitfield-Mask: 0x0f) */ + #define R_CANFD_CFDTXQFSTS_TXQ1FSF_Pos (4UL) /*!< TXQ1FSF (Bit 4) */ + #define R_CANFD_CFDTXQFSTS_TXQ1FSF_Msk (0xf0UL) /*!< TXQ1FSF (Bitfield-Mask: 0x0f) */ +/* ======================================================= 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) */ + #define R_CANFD_CFDTHLCC_THLDGE_Pos (11UL) /*!< THLDGE (Bit 11) */ + #define R_CANFD_CFDTHLCC_THLDGE_Msk (0x800UL) /*!< THLDGE (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) */ + #define R_CANFD_CFDGTINTSTS0_TQOFIF0_Pos (5UL) /*!< TQOFIF0 (Bit 5) */ + #define R_CANFD_CFDGTINTSTS0_TQOFIF0_Msk (0x20UL) /*!< TQOFIF0 (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDGTINTSTS0_CFOTIF0_Pos (6UL) /*!< CFOTIF0 (Bit 6) */ + #define R_CANFD_CFDGTINTSTS0_CFOTIF0_Msk (0x40UL) /*!< CFOTIF0 (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDGTINTSTS0_TSIF1_Pos (8UL) /*!< TSIF1 (Bit 8) */ + #define R_CANFD_CFDGTINTSTS0_TSIF1_Msk (0x100UL) /*!< TSIF1 (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDGTINTSTS0_TAIF1_Pos (9UL) /*!< TAIF1 (Bit 9) */ + #define R_CANFD_CFDGTINTSTS0_TAIF1_Msk (0x200UL) /*!< TAIF1 (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDGTINTSTS0_TQIF1_Pos (10UL) /*!< TQIF1 (Bit 10) */ + #define R_CANFD_CFDGTINTSTS0_TQIF1_Msk (0x400UL) /*!< TQIF1 (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDGTINTSTS0_CFTIF1_Pos (11UL) /*!< CFTIF1 (Bit 11) */ + #define R_CANFD_CFDGTINTSTS0_CFTIF1_Msk (0x800UL) /*!< CFTIF1 (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDGTINTSTS0_THIF1_Pos (12UL) /*!< THIF1 (Bit 12) */ + #define R_CANFD_CFDGTINTSTS0_THIF1_Msk (0x1000UL) /*!< THIF1 (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDGTINTSTS0_TQOFIF1_Pos (13UL) /*!< TQOFIF1 (Bit 13) */ + #define R_CANFD_CFDGTINTSTS0_TQOFIF1_Msk (0x2000UL) /*!< TQOFIF1 (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDGTINTSTS0_CFOTIF1_Pos (14UL) /*!< CFOTIF1 (Bit 14) */ + #define R_CANFD_CFDGTINTSTS0_CFOTIF1_Msk (0x4000UL) /*!< CFOTIF1 (Bitfield-Mask: 0x01) */ +/* ====================================================== CFDGTSTCFG ======================================================= */ + #define R_CANFD_CFDGTSTCFG_ICBCE_Pos (0UL) /*!< ICBCE (Bit 0) */ + #define R_CANFD_CFDGTSTCFG_ICBCE_Msk (0x3UL) /*!< ICBCE (Bitfield-Mask: 0x03) */ + #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_ICBCTME_Pos (0UL) /*!< ICBCTME (Bit 0) */ + #define R_CANFD_CFDGTSTCTR_ICBCTME_Msk (0x1UL) /*!< ICBCTME (Bitfield-Mask: 0x01) */ + #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) */ +/* ====================================================== CFDGCRCCFG ======================================================= */ + #define R_CANFD_CFDGCRCCFG_NIE_Pos (0UL) /*!< NIE (Bit 0) */ + #define R_CANFD_CFDGCRCCFG_NIE_Msk (0x1UL) /*!< NIE (Bitfield-Mask: 0x01) */ +/* ======================================================= CFDGLOCKK ======================================================= */ + #define R_CANFD_CFDGLOCKK_LOCK_Pos (0UL) /*!< LOCK (Bit 0) */ + #define R_CANFD_CFDGLOCKK_LOCK_Msk (0xffffUL) /*!< LOCK (Bitfield-Mask: 0xffff) */ +/* ======================================================= CFDGLOTB ======================================================== */ + #define R_CANFD_CFDGLOTB_OTBFE_Pos (0UL) /*!< OTBFE (Bit 0) */ + #define R_CANFD_CFDGLOTB_OTBFE_Msk (0x1UL) /*!< OTBFE (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDGLOTB_OTBEMP_Pos (8UL) /*!< OTBEMP (Bit 8) */ + #define R_CANFD_CFDGLOTB_OTBEMP_Msk (0x100UL) /*!< OTBEMP (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDGLOTB_OTBFLL_Pos (9UL) /*!< OTBFLL (Bit 9) */ + #define R_CANFD_CFDGLOTB_OTBFLL_Msk (0x200UL) /*!< OTBFLL (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDGLOTB_OTBMLT_Pos (10UL) /*!< OTBMLT (Bit 10) */ + #define R_CANFD_CFDGLOTB_OTBMLT_Msk (0x400UL) /*!< OTBMLT (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDGLOTB_OTBMC_Pos (11UL) /*!< OTBMC (Bit 11) */ + #define R_CANFD_CFDGLOTB_OTBMC_Msk (0xf800UL) /*!< OTBMC (Bitfield-Mask: 0x1f) */ +/* ===================================================== CFDGAFLIGNENT ===================================================== */ + #define R_CANFD_CFDGAFLIGNENT_IRN_Pos (0UL) /*!< IRN (Bit 0) */ + #define R_CANFD_CFDGAFLIGNENT_IRN_Msk (0x1ffUL) /*!< IRN (Bitfield-Mask: 0x1ff) */ + #define R_CANFD_CFDGAFLIGNENT_ICN_Pos (16UL) /*!< ICN (Bit 16) */ + #define R_CANFD_CFDGAFLIGNENT_ICN_Msk (0x70000UL) /*!< ICN (Bitfield-Mask: 0x07) */ +/* ===================================================== 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_RFDMAE2_Pos (2UL) /*!< RFDMAE2 (Bit 2) */ + #define R_CANFD_CFDCDTCT_RFDMAE2_Msk (0x4UL) /*!< RFDMAE2 (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDCDTCT_RFDMAE3_Pos (3UL) /*!< RFDMAE3 (Bit 3) */ + #define R_CANFD_CFDCDTCT_RFDMAE3_Msk (0x8UL) /*!< RFDMAE3 (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDCDTCT_RFDMAE4_Pos (4UL) /*!< RFDMAE4 (Bit 4) */ + #define R_CANFD_CFDCDTCT_RFDMAE4_Msk (0x10UL) /*!< RFDMAE4 (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDCDTCT_RFDMAE5_Pos (5UL) /*!< RFDMAE5 (Bit 5) */ + #define R_CANFD_CFDCDTCT_RFDMAE5_Msk (0x20UL) /*!< RFDMAE5 (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDCDTCT_RFDMAE6_Pos (6UL) /*!< RFDMAE6 (Bit 6) */ + #define R_CANFD_CFDCDTCT_RFDMAE6_Msk (0x40UL) /*!< RFDMAE6 (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDCDTCT_RFDMAE7_Pos (7UL) /*!< RFDMAE7 (Bit 7) */ + #define R_CANFD_CFDCDTCT_RFDMAE7_Msk (0x80UL) /*!< RFDMAE7 (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDCDTCT_CFDMAE0_Pos (8UL) /*!< CFDMAE0 (Bit 8) */ + #define R_CANFD_CFDCDTCT_CFDMAE0_Msk (0x100UL) /*!< CFDMAE0 (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDCDTCT_CFDMAE1_Pos (9UL) /*!< CFDMAE1 (Bit 9) */ + #define R_CANFD_CFDCDTCT_CFDMAE1_Msk (0x200UL) /*!< CFDMAE1 (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_RFDMASTS2_Pos (2UL) /*!< RFDMASTS2 (Bit 2) */ + #define R_CANFD_CFDCDTSTS_RFDMASTS2_Msk (0x4UL) /*!< RFDMASTS2 (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDCDTSTS_RFDMASTS3_Pos (3UL) /*!< RFDMASTS3 (Bit 3) */ + #define R_CANFD_CFDCDTSTS_RFDMASTS3_Msk (0x8UL) /*!< RFDMASTS3 (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDCDTSTS_RFDMASTS4_Pos (4UL) /*!< RFDMASTS4 (Bit 4) */ + #define R_CANFD_CFDCDTSTS_RFDMASTS4_Msk (0x10UL) /*!< RFDMASTS4 (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDCDTSTS_RFDMASTS5_Pos (5UL) /*!< RFDMASTS5 (Bit 5) */ + #define R_CANFD_CFDCDTSTS_RFDMASTS5_Msk (0x20UL) /*!< RFDMASTS5 (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDCDTSTS_RFDMASTS6_Pos (6UL) /*!< RFDMASTS6 (Bit 6) */ + #define R_CANFD_CFDCDTSTS_RFDMASTS6_Msk (0x40UL) /*!< RFDMASTS6 (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDCDTSTS_RFDMASTS7_Pos (7UL) /*!< RFDMASTS7 (Bit 7) */ + #define R_CANFD_CFDCDTSTS_RFDMASTS7_Msk (0x80UL) /*!< RFDMASTS7 (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDCDTSTS_CFDMASTS0_Pos (8UL) /*!< CFDMASTS0 (Bit 8) */ + #define R_CANFD_CFDCDTSTS_CFDMASTS0_Msk (0x100UL) /*!< CFDMASTS0 (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDCDTSTS_CFDMASTS1_Pos (9UL) /*!< CFDMASTS1 (Bit 9) */ + #define R_CANFD_CFDCDTSTS_CFDMASTS1_Msk (0x200UL) /*!< CFDMASTS1 (Bitfield-Mask: 0x01) */ +/* ======================================================= CFDCDTTCT ======================================================= */ + #define R_CANFD_CFDCDTTCT_TQ0DMAE0_Pos (0UL) /*!< TQ0DMAE0 (Bit 0) */ + #define R_CANFD_CFDCDTTCT_TQ0DMAE0_Msk (0x1UL) /*!< TQ0DMAE0 (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDCDTTCT_TQ0DMAE1_Pos (1UL) /*!< TQ0DMAE1 (Bit 1) */ + #define R_CANFD_CFDCDTTCT_TQ0DMAE1_Msk (0x2UL) /*!< TQ0DMAE1 (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDCDTTCT_TQ3DMAE0_Pos (8UL) /*!< TQ3DMAE0 (Bit 8) */ + #define R_CANFD_CFDCDTTCT_TQ3DMAE0_Msk (0x100UL) /*!< TQ3DMAE0 (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDCDTTCT_TQ3DMAE1_Pos (9UL) /*!< TQ3DMAE1 (Bit 9) */ + #define R_CANFD_CFDCDTTCT_TQ3DMAE1_Msk (0x200UL) /*!< TQ3DMAE1 (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDCDTTCT_CFDMAE0_Pos (16UL) /*!< CFDMAE0 (Bit 16) */ + #define R_CANFD_CFDCDTTCT_CFDMAE0_Msk (0x10000UL) /*!< CFDMAE0 (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDCDTTCT_CFDMAE1_Pos (17UL) /*!< CFDMAE1 (Bit 17) */ + #define R_CANFD_CFDCDTTCT_CFDMAE1_Msk (0x20000UL) /*!< CFDMAE1 (Bitfield-Mask: 0x01) */ +/* ====================================================== CFDCDTTSTS ======================================================= */ + #define R_CANFD_CFDCDTTSTS_TQ0DMASTS0_Pos (0UL) /*!< TQ0DMASTS0 (Bit 0) */ + #define R_CANFD_CFDCDTTSTS_TQ0DMASTS0_Msk (0x1UL) /*!< TQ0DMASTS0 (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDCDTTSTS_TQ0DMASTS1_Pos (1UL) /*!< TQ0DMASTS1 (Bit 1) */ + #define R_CANFD_CFDCDTTSTS_TQ0DMASTS1_Msk (0x2UL) /*!< TQ0DMASTS1 (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDCDTTSTS_TQ3DMASTS0_Pos (8UL) /*!< TQ3DMASTS0 (Bit 8) */ + #define R_CANFD_CFDCDTTSTS_TQ3DMASTS0_Msk (0x100UL) /*!< TQ3DMASTS0 (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDCDTTSTS_TQ3DMASTS1_Pos (9UL) /*!< TQ3DMASTS1 (Bit 9) */ + #define R_CANFD_CFDCDTTSTS_TQ3DMASTS1_Msk (0x200UL) /*!< TQ3DMASTS1 (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDCDTTSTS_CFDMASTS0_Pos (16UL) /*!< CFDMASTS0 (Bit 16) */ + #define R_CANFD_CFDCDTTSTS_CFDMASTS0_Msk (0x10000UL) /*!< CFDMASTS0 (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDCDTTSTS_CFDMASTS1_Pos (17UL) /*!< CFDMASTS1 (Bit 17) */ + #define R_CANFD_CFDCDTTSTS_CFDMASTS1_Msk (0x20000UL) /*!< CFDMASTS1 (Bitfield-Mask: 0x01) */ +/* ====================================================== CFDGRINTSTS ====================================================== */ + #define R_CANFD_CFDGRINTSTS_QFIF_Pos (0UL) /*!< QFIF (Bit 0) */ + #define R_CANFD_CFDGRINTSTS_QFIF_Msk (0x7UL) /*!< QFIF (Bitfield-Mask: 0x07) */ + #define R_CANFD_CFDGRINTSTS_QOFRIF_Pos (8UL) /*!< QOFRIF (Bit 8) */ + #define R_CANFD_CFDGRINTSTS_QOFRIF_Msk (0x700UL) /*!< QOFRIF (Bitfield-Mask: 0x07) */ + #define R_CANFD_CFDGRINTSTS_CFRIF_Pos (16UL) /*!< CFRIF (Bit 16) */ + #define R_CANFD_CFDGRINTSTS_CFRIF_Msk (0x70000UL) /*!< CFRIF (Bitfield-Mask: 0x07) */ + #define R_CANFD_CFDGRINTSTS_CFRFIF_Pos (24UL) /*!< CFRFIF (Bit 24) */ + #define R_CANFD_CFDGRINTSTS_CFRFIF_Msk (0x7000000UL) /*!< CFRFIF (Bitfield-Mask: 0x07) */ + #define R_CANFD_CFDGRINTSTS_CFOFRIF_Pos (28UL) /*!< CFOFRIF (Bit 28) */ + #define R_CANFD_CFDGRINTSTS_CFOFRIF_Msk (0x70000000UL) /*!< CFOFRIF (Bitfield-Mask: 0x07) */ +/* ======================================================= 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_CANFDL ================ */ +/* =========================================================================================================================== */ + +/* ======================================================== CFDGCFG ======================================================== */ + #define R_CANFDL_CFDGCFG_TPRI_Pos (0UL) /*!< TPRI (Bit 0) */ + #define R_CANFDL_CFDGCFG_TPRI_Msk (0x1UL) /*!< TPRI (Bitfield-Mask: 0x01) */ + #define R_CANFDL_CFDGCFG_DCE_Pos (1UL) /*!< DCE (Bit 1) */ + #define R_CANFDL_CFDGCFG_DCE_Msk (0x2UL) /*!< DCE (Bitfield-Mask: 0x01) */ + #define R_CANFDL_CFDGCFG_DRE_Pos (2UL) /*!< DRE (Bit 2) */ + #define R_CANFDL_CFDGCFG_DRE_Msk (0x4UL) /*!< DRE (Bitfield-Mask: 0x01) */ + #define R_CANFDL_CFDGCFG_MME_Pos (3UL) /*!< MME (Bit 3) */ + #define R_CANFDL_CFDGCFG_MME_Msk (0x8UL) /*!< MME (Bitfield-Mask: 0x01) */ + #define R_CANFDL_CFDGCFG_DCS_Pos (4UL) /*!< DCS (Bit 4) */ + #define R_CANFDL_CFDGCFG_DCS_Msk (0x10UL) /*!< DCS (Bitfield-Mask: 0x01) */ + #define R_CANFDL_CFDGCFG_CMPOC_Pos (5UL) /*!< CMPOC (Bit 5) */ + #define R_CANFDL_CFDGCFG_CMPOC_Msk (0x20UL) /*!< CMPOC (Bitfield-Mask: 0x01) */ + #define R_CANFDL_CFDGCFG_TSP_Pos (8UL) /*!< TSP (Bit 8) */ + #define R_CANFDL_CFDGCFG_TSP_Msk (0xf00UL) /*!< TSP (Bitfield-Mask: 0x0f) */ + #define R_CANFDL_CFDGCFG_TSSS_Pos (12UL) /*!< TSSS (Bit 12) */ + #define R_CANFDL_CFDGCFG_TSSS_Msk (0x1000UL) /*!< TSSS (Bitfield-Mask: 0x01) */ + #define R_CANFDL_CFDGCFG_ITRCP_Pos (16UL) /*!< ITRCP (Bit 16) */ + #define R_CANFDL_CFDGCFG_ITRCP_Msk (0xffff0000UL) /*!< ITRCP (Bitfield-Mask: 0xffff) */ +/* ======================================================== CFDGCTR ======================================================== */ + #define R_CANFDL_CFDGCTR_GMDC_Pos (0UL) /*!< GMDC (Bit 0) */ + #define R_CANFDL_CFDGCTR_GMDC_Msk (0x3UL) /*!< GMDC (Bitfield-Mask: 0x03) */ + #define R_CANFDL_CFDGCTR_GSLPR_Pos (2UL) /*!< GSLPR (Bit 2) */ + #define R_CANFDL_CFDGCTR_GSLPR_Msk (0x4UL) /*!< GSLPR (Bitfield-Mask: 0x01) */ + #define R_CANFDL_CFDGCTR_DEIE_Pos (8UL) /*!< DEIE (Bit 8) */ + #define R_CANFDL_CFDGCTR_DEIE_Msk (0x100UL) /*!< DEIE (Bitfield-Mask: 0x01) */ + #define R_CANFDL_CFDGCTR_MEIE_Pos (9UL) /*!< MEIE (Bit 9) */ + #define R_CANFDL_CFDGCTR_MEIE_Msk (0x200UL) /*!< MEIE (Bitfield-Mask: 0x01) */ + #define R_CANFDL_CFDGCTR_THLEIE_Pos (10UL) /*!< THLEIE (Bit 10) */ + #define R_CANFDL_CFDGCTR_THLEIE_Msk (0x400UL) /*!< THLEIE (Bitfield-Mask: 0x01) */ + #define R_CANFDL_CFDGCTR_CMPOFIE_Pos (11UL) /*!< CMPOFIE (Bit 11) */ + #define R_CANFDL_CFDGCTR_CMPOFIE_Msk (0x800UL) /*!< CMPOFIE (Bitfield-Mask: 0x01) */ + #define R_CANFDL_CFDGCTR_TSRST_Pos (16UL) /*!< TSRST (Bit 16) */ + #define R_CANFDL_CFDGCTR_TSRST_Msk (0x10000UL) /*!< TSRST (Bitfield-Mask: 0x01) */ +/* ======================================================== CFDGSTS ======================================================== */ + #define R_CANFDL_CFDGSTS_GRSTSTS_Pos (0UL) /*!< GRSTSTS (Bit 0) */ + #define R_CANFDL_CFDGSTS_GRSTSTS_Msk (0x1UL) /*!< GRSTSTS (Bitfield-Mask: 0x01) */ + #define R_CANFDL_CFDGSTS_GHLTSTS_Pos (1UL) /*!< GHLTSTS (Bit 1) */ + #define R_CANFDL_CFDGSTS_GHLTSTS_Msk (0x2UL) /*!< GHLTSTS (Bitfield-Mask: 0x01) */ + #define R_CANFDL_CFDGSTS_GSLPSTS_Pos (2UL) /*!< GSLPSTS (Bit 2) */ + #define R_CANFDL_CFDGSTS_GSLPSTS_Msk (0x4UL) /*!< GSLPSTS (Bitfield-Mask: 0x01) */ + #define R_CANFDL_CFDGSTS_GRAMINIT_Pos (3UL) /*!< GRAMINIT (Bit 3) */ + #define R_CANFDL_CFDGSTS_GRAMINIT_Msk (0x8UL) /*!< GRAMINIT (Bitfield-Mask: 0x01) */ +/* ======================================================= CFDGERFL ======================================================== */ + #define R_CANFDL_CFDGERFL_DEF_Pos (0UL) /*!< DEF (Bit 0) */ + #define R_CANFDL_CFDGERFL_DEF_Msk (0x1UL) /*!< DEF (Bitfield-Mask: 0x01) */ + #define R_CANFDL_CFDGERFL_MES_Pos (1UL) /*!< MES (Bit 1) */ + #define R_CANFDL_CFDGERFL_MES_Msk (0x2UL) /*!< MES (Bitfield-Mask: 0x01) */ + #define R_CANFDL_CFDGERFL_THLES_Pos (2UL) /*!< THLES (Bit 2) */ + #define R_CANFDL_CFDGERFL_THLES_Msk (0x4UL) /*!< THLES (Bitfield-Mask: 0x01) */ + #define R_CANFDL_CFDGERFL_CMPOF_Pos (3UL) /*!< CMPOF (Bit 3) */ + #define R_CANFDL_CFDGERFL_CMPOF_Msk (0x8UL) /*!< CMPOF (Bitfield-Mask: 0x01) */ + #define R_CANFDL_CFDGERFL_EEF0_Pos (16UL) /*!< EEF0 (Bit 16) */ + #define R_CANFDL_CFDGERFL_EEF0_Msk (0x10000UL) /*!< EEF0 (Bitfield-Mask: 0x01) */ +/* ======================================================== CFDGTSC ======================================================== */ + #define R_CANFDL_CFDGTSC_TS_Pos (0UL) /*!< TS (Bit 0) */ + #define R_CANFDL_CFDGTSC_TS_Msk (0xffffUL) /*!< TS (Bitfield-Mask: 0xffff) */ +/* ====================================================== CFDGAFLECTR ====================================================== */ + #define R_CANFDL_CFDGAFLECTR_AFLPN_Pos (0UL) /*!< AFLPN (Bit 0) */ + #define R_CANFDL_CFDGAFLECTR_AFLPN_Msk (0xfUL) /*!< AFLPN (Bitfield-Mask: 0x0f) */ + #define R_CANFDL_CFDGAFLECTR_AFLDAE_Pos (8UL) /*!< AFLDAE (Bit 8) */ + #define R_CANFDL_CFDGAFLECTR_AFLDAE_Msk (0x100UL) /*!< AFLDAE (Bitfield-Mask: 0x01) */ +/* ====================================================== CFDGAFLCFG0 ====================================================== */ + #define R_CANFDL_CFDGAFLCFG0_RNC1_Pos (0UL) /*!< RNC1 (Bit 0) */ + #define R_CANFDL_CFDGAFLCFG0_RNC1_Msk (0x1ffUL) /*!< RNC1 (Bitfield-Mask: 0x1ff) */ + #define R_CANFDL_CFDGAFLCFG0_RNC0_Pos (16UL) /*!< RNC0 (Bit 16) */ + #define R_CANFDL_CFDGAFLCFG0_RNC0_Msk (0x1ff0000UL) /*!< RNC0 (Bitfield-Mask: 0x1ff) */ +/* ======================================================== CFDRMNB ======================================================== */ + #define R_CANFDL_CFDRMNB_NRXMB_Pos (0UL) /*!< NRXMB (Bit 0) */ + #define R_CANFDL_CFDRMNB_NRXMB_Msk (0xffUL) /*!< NRXMB (Bitfield-Mask: 0xff) */ + #define R_CANFDL_CFDRMNB_RMPLS_Pos (8UL) /*!< RMPLS (Bit 8) */ + #define R_CANFDL_CFDRMNB_RMPLS_Msk (0x700UL) /*!< RMPLS (Bitfield-Mask: 0x07) */ +/* ======================================================= CFDRMND0 ======================================================== */ + #define R_CANFDL_CFDRMND0_RMNSu_Pos (0UL) /*!< RMNSu (Bit 0) */ + #define R_CANFDL_CFDRMND0_RMNSu_Msk (0xffffffffUL) /*!< RMNSu (Bitfield-Mask: 0xffffffff) */ +/* ======================================================= CFDRMIEC ======================================================== */ + #define R_CANFDL_CFDRMIEC_RMIE_Pos (0UL) /*!< RMIE (Bit 0) */ + #define R_CANFDL_CFDRMIEC_RMIE_Msk (0xffffffffUL) /*!< RMIE (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== CFDRFCC ======================================================== */ + #define R_CANFDL_CFDRFCC_RFE_Pos (0UL) /*!< RFE (Bit 0) */ + #define R_CANFDL_CFDRFCC_RFE_Msk (0x1UL) /*!< RFE (Bitfield-Mask: 0x01) */ + #define R_CANFDL_CFDRFCC_RFIE_Pos (1UL) /*!< RFIE (Bit 1) */ + #define R_CANFDL_CFDRFCC_RFIE_Msk (0x2UL) /*!< RFIE (Bitfield-Mask: 0x01) */ + #define R_CANFDL_CFDRFCC_RFPLS_Pos (4UL) /*!< RFPLS (Bit 4) */ + #define R_CANFDL_CFDRFCC_RFPLS_Msk (0x70UL) /*!< RFPLS (Bitfield-Mask: 0x07) */ + #define R_CANFDL_CFDRFCC_RFDC_Pos (8UL) /*!< RFDC (Bit 8) */ + #define R_CANFDL_CFDRFCC_RFDC_Msk (0x700UL) /*!< RFDC (Bitfield-Mask: 0x07) */ + #define R_CANFDL_CFDRFCC_RFIM_Pos (12UL) /*!< RFIM (Bit 12) */ + #define R_CANFDL_CFDRFCC_RFIM_Msk (0x1000UL) /*!< RFIM (Bitfield-Mask: 0x01) */ + #define R_CANFDL_CFDRFCC_RFIGCV_Pos (13UL) /*!< RFIGCV (Bit 13) */ + #define R_CANFDL_CFDRFCC_RFIGCV_Msk (0xe000UL) /*!< RFIGCV (Bitfield-Mask: 0x07) */ +/* ======================================================= CFDRFSTS ======================================================== */ + #define R_CANFDL_CFDRFSTS_RFEMP_Pos (0UL) /*!< RFEMP (Bit 0) */ + #define R_CANFDL_CFDRFSTS_RFEMP_Msk (0x1UL) /*!< RFEMP (Bitfield-Mask: 0x01) */ + #define R_CANFDL_CFDRFSTS_RFFLL_Pos (1UL) /*!< RFFLL (Bit 1) */ + #define R_CANFDL_CFDRFSTS_RFFLL_Msk (0x2UL) /*!< RFFLL (Bitfield-Mask: 0x01) */ + #define R_CANFDL_CFDRFSTS_RFMLT_Pos (2UL) /*!< RFMLT (Bit 2) */ + #define R_CANFDL_CFDRFSTS_RFMLT_Msk (0x4UL) /*!< RFMLT (Bitfield-Mask: 0x01) */ + #define R_CANFDL_CFDRFSTS_RFIF_Pos (3UL) /*!< RFIF (Bit 3) */ + #define R_CANFDL_CFDRFSTS_RFIF_Msk (0x8UL) /*!< RFIF (Bitfield-Mask: 0x01) */ + #define R_CANFDL_CFDRFSTS_RFMC_Pos (8UL) /*!< RFMC (Bit 8) */ + #define R_CANFDL_CFDRFSTS_RFMC_Msk (0xff00UL) /*!< RFMC (Bitfield-Mask: 0xff) */ +/* ======================================================= CFDRFPCTR ======================================================= */ + #define R_CANFDL_CFDRFPCTR_RFPC_Pos (0UL) /*!< RFPC (Bit 0) */ + #define R_CANFDL_CFDRFPCTR_RFPC_Msk (0xffUL) /*!< RFPC (Bitfield-Mask: 0xff) */ +/* ======================================================== CFDCFCC ======================================================== */ + #define R_CANFDL_CFDCFCC_CFE_Pos (0UL) /*!< CFE (Bit 0) */ + #define R_CANFDL_CFDCFCC_CFE_Msk (0x1UL) /*!< CFE (Bitfield-Mask: 0x01) */ + #define R_CANFDL_CFDCFCC_CFRXIE_Pos (1UL) /*!< CFRXIE (Bit 1) */ + #define R_CANFDL_CFDCFCC_CFRXIE_Msk (0x2UL) /*!< CFRXIE (Bitfield-Mask: 0x01) */ + #define R_CANFDL_CFDCFCC_CFTXIE_Pos (2UL) /*!< CFTXIE (Bit 2) */ + #define R_CANFDL_CFDCFCC_CFTXIE_Msk (0x4UL) /*!< CFTXIE (Bitfield-Mask: 0x01) */ + #define R_CANFDL_CFDCFCC_CFPLS_Pos (4UL) /*!< CFPLS (Bit 4) */ + #define R_CANFDL_CFDCFCC_CFPLS_Msk (0x70UL) /*!< CFPLS (Bitfield-Mask: 0x07) */ + #define R_CANFDL_CFDCFCC_CFM_Pos (8UL) /*!< CFM (Bit 8) */ + #define R_CANFDL_CFDCFCC_CFM_Msk (0x300UL) /*!< CFM (Bitfield-Mask: 0x03) */ + #define R_CANFDL_CFDCFCC_CFITSS_Pos (10UL) /*!< CFITSS (Bit 10) */ + #define R_CANFDL_CFDCFCC_CFITSS_Msk (0x400UL) /*!< CFITSS (Bitfield-Mask: 0x01) */ + #define R_CANFDL_CFDCFCC_CFITR_Pos (11UL) /*!< CFITR (Bit 11) */ + #define R_CANFDL_CFDCFCC_CFITR_Msk (0x800UL) /*!< CFITR (Bitfield-Mask: 0x01) */ + #define R_CANFDL_CFDCFCC_CFIM_Pos (12UL) /*!< CFIM (Bit 12) */ + #define R_CANFDL_CFDCFCC_CFIM_Msk (0x1000UL) /*!< CFIM (Bitfield-Mask: 0x01) */ + #define R_CANFDL_CFDCFCC_CFIGCV_Pos (13UL) /*!< CFIGCV (Bit 13) */ + #define R_CANFDL_CFDCFCC_CFIGCV_Msk (0xe000UL) /*!< CFIGCV (Bitfield-Mask: 0x07) */ + #define R_CANFDL_CFDCFCC_CFTML_Pos (16UL) /*!< CFTML (Bit 16) */ + #define R_CANFDL_CFDCFCC_CFTML_Msk (0x1f0000UL) /*!< CFTML (Bitfield-Mask: 0x1f) */ + #define R_CANFDL_CFDCFCC_CFDC_Pos (21UL) /*!< CFDC (Bit 21) */ + #define R_CANFDL_CFDCFCC_CFDC_Msk (0xe00000UL) /*!< CFDC (Bitfield-Mask: 0x07) */ + #define R_CANFDL_CFDCFCC_CFITT_Pos (24UL) /*!< CFITT (Bit 24) */ + #define R_CANFDL_CFDCFCC_CFITT_Msk (0xff000000UL) /*!< CFITT (Bitfield-Mask: 0xff) */ +/* ======================================================= CFDCFSTS ======================================================== */ + #define R_CANFDL_CFDCFSTS_CFEMP_Pos (0UL) /*!< CFEMP (Bit 0) */ + #define R_CANFDL_CFDCFSTS_CFEMP_Msk (0x1UL) /*!< CFEMP (Bitfield-Mask: 0x01) */ + #define R_CANFDL_CFDCFSTS_CFFLL_Pos (1UL) /*!< CFFLL (Bit 1) */ + #define R_CANFDL_CFDCFSTS_CFFLL_Msk (0x2UL) /*!< CFFLL (Bitfield-Mask: 0x01) */ + #define R_CANFDL_CFDCFSTS_CFMLT_Pos (2UL) /*!< CFMLT (Bit 2) */ + #define R_CANFDL_CFDCFSTS_CFMLT_Msk (0x4UL) /*!< CFMLT (Bitfield-Mask: 0x01) */ + #define R_CANFDL_CFDCFSTS_CFRXIF_Pos (3UL) /*!< CFRXIF (Bit 3) */ + #define R_CANFDL_CFDCFSTS_CFRXIF_Msk (0x8UL) /*!< CFRXIF (Bitfield-Mask: 0x01) */ + #define R_CANFDL_CFDCFSTS_CFTXIF_Pos (4UL) /*!< CFTXIF (Bit 4) */ + #define R_CANFDL_CFDCFSTS_CFTXIF_Msk (0x10UL) /*!< CFTXIF (Bitfield-Mask: 0x01) */ + #define R_CANFDL_CFDCFSTS_CFMC_Pos (8UL) /*!< CFMC (Bit 8) */ + #define R_CANFDL_CFDCFSTS_CFMC_Msk (0xff00UL) /*!< CFMC (Bitfield-Mask: 0xff) */ +/* ======================================================= CFDCFPCTR ======================================================= */ + #define R_CANFDL_CFDCFPCTR_CFPC_Pos (0UL) /*!< CFPC (Bit 0) */ + #define R_CANFDL_CFDCFPCTR_CFPC_Msk (0xffUL) /*!< CFPC (Bitfield-Mask: 0xff) */ +/* ======================================================= CFDFESTS ======================================================== */ + #define R_CANFDL_CFDFESTS_RFXEMP_Pos (0UL) /*!< RFXEMP (Bit 0) */ + #define R_CANFDL_CFDFESTS_RFXEMP_Msk (0x3UL) /*!< RFXEMP (Bitfield-Mask: 0x03) */ + #define R_CANFDL_CFDFESTS_CFXEMP_Pos (8UL) /*!< CFXEMP (Bit 8) */ + #define R_CANFDL_CFDFESTS_CFXEMP_Msk (0x100UL) /*!< CFXEMP (Bitfield-Mask: 0x01) */ +/* ======================================================= CFDFFSTS ======================================================== */ + #define R_CANFDL_CFDFFSTS_RFXFLL_Pos (0UL) /*!< RFXFLL (Bit 0) */ + #define R_CANFDL_CFDFFSTS_RFXFLL_Msk (0x3UL) /*!< RFXFLL (Bitfield-Mask: 0x03) */ + #define R_CANFDL_CFDFFSTS_CFXFLL_Pos (8UL) /*!< CFXFLL (Bit 8) */ + #define R_CANFDL_CFDFFSTS_CFXFLL_Msk (0x100UL) /*!< CFXFLL (Bitfield-Mask: 0x01) */ +/* ======================================================= CFDFMSTS ======================================================== */ + #define R_CANFDL_CFDFMSTS_RFXMLT_Pos (0UL) /*!< RFXMLT (Bit 0) */ + #define R_CANFDL_CFDFMSTS_RFXMLT_Msk (0x3UL) /*!< RFXMLT (Bitfield-Mask: 0x03) */ + #define R_CANFDL_CFDFMSTS_CFXMLT_Pos (8UL) /*!< CFXMLT (Bit 8) */ + #define R_CANFDL_CFDFMSTS_CFXMLT_Msk (0x100UL) /*!< CFXMLT (Bitfield-Mask: 0x01) */ +/* ======================================================= CFDRFISTS ======================================================= */ + #define R_CANFDL_CFDRFISTS_RFXIF_Pos (0UL) /*!< RFXIF (Bit 0) */ + #define R_CANFDL_CFDRFISTS_RFXIF_Msk (0x1UL) /*!< RFXIF (Bitfield-Mask: 0x01) */ +/* ======================================================== CFDTMC ========================================================= */ + #define R_CANFDL_CFDTMC_TMTR_Pos (0UL) /*!< TMTR (Bit 0) */ + #define R_CANFDL_CFDTMC_TMTR_Msk (0x1UL) /*!< TMTR (Bitfield-Mask: 0x01) */ + #define R_CANFDL_CFDTMC_TMTAR_Pos (1UL) /*!< TMTAR (Bit 1) */ + #define R_CANFDL_CFDTMC_TMTAR_Msk (0x2UL) /*!< TMTAR (Bitfield-Mask: 0x01) */ + #define R_CANFDL_CFDTMC_TMOM_Pos (2UL) /*!< TMOM (Bit 2) */ + #define R_CANFDL_CFDTMC_TMOM_Msk (0x4UL) /*!< TMOM (Bitfield-Mask: 0x01) */ +/* ======================================================= CFDTMSTS ======================================================== */ + #define R_CANFDL_CFDTMSTS_TMTSTS_Pos (0UL) /*!< TMTSTS (Bit 0) */ + #define R_CANFDL_CFDTMSTS_TMTSTS_Msk (0x1UL) /*!< TMTSTS (Bitfield-Mask: 0x01) */ + #define R_CANFDL_CFDTMSTS_TMTRF_Pos (1UL) /*!< TMTRF (Bit 1) */ + #define R_CANFDL_CFDTMSTS_TMTRF_Msk (0x6UL) /*!< TMTRF (Bitfield-Mask: 0x03) */ + #define R_CANFDL_CFDTMSTS_TMTRM_Pos (3UL) /*!< TMTRM (Bit 3) */ + #define R_CANFDL_CFDTMSTS_TMTRM_Msk (0x8UL) /*!< TMTRM (Bitfield-Mask: 0x01) */ + #define R_CANFDL_CFDTMSTS_TMTARM_Pos (4UL) /*!< TMTARM (Bit 4) */ + #define R_CANFDL_CFDTMSTS_TMTARM_Msk (0x10UL) /*!< TMTARM (Bitfield-Mask: 0x01) */ +/* ====================================================== CFDTMTRSTS ======================================================= */ + #define R_CANFDL_CFDTMTRSTS_CFDTMTRSTSg_Pos (0UL) /*!< CFDTMTRSTSg (Bit 0) */ + #define R_CANFDL_CFDTMTRSTS_CFDTMTRSTSg_Msk (0xfUL) /*!< CFDTMTRSTSg (Bitfield-Mask: 0x0f) */ +/* ====================================================== CFDTMTARSTS ====================================================== */ + #define R_CANFDL_CFDTMTARSTS_CFDTMTARSTSg_Pos (0UL) /*!< CFDTMTARSTSg (Bit 0) */ + #define R_CANFDL_CFDTMTARSTS_CFDTMTARSTSg_Msk (0xfUL) /*!< CFDTMTARSTSg (Bitfield-Mask: 0x0f) */ +/* ====================================================== CFDTMTCSTS ======================================================= */ + #define R_CANFDL_CFDTMTCSTS_CFDTMTCSTSg_Pos (0UL) /*!< CFDTMTCSTSg (Bit 0) */ + #define R_CANFDL_CFDTMTCSTS_CFDTMTCSTSg_Msk (0xfUL) /*!< CFDTMTCSTSg (Bitfield-Mask: 0x0f) */ +/* ====================================================== CFDTMTASTS ======================================================= */ + #define R_CANFDL_CFDTMTASTS_CFDTMTASTSg_Pos (0UL) /*!< CFDTMTASTSg (Bit 0) */ + #define R_CANFDL_CFDTMTASTS_CFDTMTASTSg_Msk (0xfUL) /*!< CFDTMTASTSg (Bitfield-Mask: 0x0f) */ +/* ======================================================= CFDTMIEC ======================================================== */ + #define R_CANFDL_CFDTMIEC_TMIEg_Pos (0UL) /*!< TMIEg (Bit 0) */ + #define R_CANFDL_CFDTMIEC_TMIEg_Msk (0xfUL) /*!< TMIEg (Bitfield-Mask: 0x0f) */ +/* ======================================================= CFDTXQCC0 ======================================================= */ + #define R_CANFDL_CFDTXQCC0_TXQE_Pos (0UL) /*!< TXQE (Bit 0) */ + #define R_CANFDL_CFDTXQCC0_TXQE_Msk (0x1UL) /*!< TXQE (Bitfield-Mask: 0x01) */ + #define R_CANFDL_CFDTXQCC0_TXQTXIE_Pos (5UL) /*!< TXQTXIE (Bit 5) */ + #define R_CANFDL_CFDTXQCC0_TXQTXIE_Msk (0x20UL) /*!< TXQTXIE (Bitfield-Mask: 0x01) */ + #define R_CANFDL_CFDTXQCC0_TXQIM_Pos (7UL) /*!< TXQIM (Bit 7) */ + #define R_CANFDL_CFDTXQCC0_TXQIM_Msk (0x80UL) /*!< TXQIM (Bitfield-Mask: 0x01) */ + #define R_CANFDL_CFDTXQCC0_TXQDC_Pos (8UL) /*!< TXQDC (Bit 8) */ + #define R_CANFDL_CFDTXQCC0_TXQDC_Msk (0x300UL) /*!< TXQDC (Bitfield-Mask: 0x03) */ +/* ====================================================== CFDTXQSTS0 ======================================================= */ + #define R_CANFDL_CFDTXQSTS0_TXQEMP_Pos (0UL) /*!< TXQEMP (Bit 0) */ + #define R_CANFDL_CFDTXQSTS0_TXQEMP_Msk (0x1UL) /*!< TXQEMP (Bitfield-Mask: 0x01) */ + #define R_CANFDL_CFDTXQSTS0_TXQFLL_Pos (1UL) /*!< TXQFLL (Bit 1) */ + #define R_CANFDL_CFDTXQSTS0_TXQFLL_Msk (0x2UL) /*!< TXQFLL (Bitfield-Mask: 0x01) */ + #define R_CANFDL_CFDTXQSTS0_TXQTXIF_Pos (2UL) /*!< TXQTXIF (Bit 2) */ + #define R_CANFDL_CFDTXQSTS0_TXQTXIF_Msk (0x4UL) /*!< TXQTXIF (Bitfield-Mask: 0x01) */ + #define R_CANFDL_CFDTXQSTS0_TXQMC_Pos (8UL) /*!< TXQMC (Bit 8) */ + #define R_CANFDL_CFDTXQSTS0_TXQMC_Msk (0x3f00UL) /*!< TXQMC (Bitfield-Mask: 0x3f) */ +/* ====================================================== CFDTXQPCTR0 ====================================================== */ + #define R_CANFDL_CFDTXQPCTR0_TXQPC_Pos (0UL) /*!< TXQPC (Bit 0) */ + #define R_CANFDL_CFDTXQPCTR0_TXQPC_Msk (0xffUL) /*!< TXQPC (Bitfield-Mask: 0xff) */ +/* ======================================================= CFDTHLCC ======================================================== */ + #define R_CANFDL_CFDTHLCC_THLE_Pos (0UL) /*!< THLE (Bit 0) */ + #define R_CANFDL_CFDTHLCC_THLE_Msk (0x1UL) /*!< THLE (Bitfield-Mask: 0x01) */ + #define R_CANFDL_CFDTHLCC_THLIE_Pos (8UL) /*!< THLIE (Bit 8) */ + #define R_CANFDL_CFDTHLCC_THLIE_Msk (0x100UL) /*!< THLIE (Bitfield-Mask: 0x01) */ + #define R_CANFDL_CFDTHLCC_THLIM_Pos (9UL) /*!< THLIM (Bit 9) */ + #define R_CANFDL_CFDTHLCC_THLIM_Msk (0x200UL) /*!< THLIM (Bitfield-Mask: 0x01) */ + #define R_CANFDL_CFDTHLCC_THLDTE_Pos (10UL) /*!< THLDTE (Bit 10) */ + #define R_CANFDL_CFDTHLCC_THLDTE_Msk (0x400UL) /*!< THLDTE (Bitfield-Mask: 0x01) */ +/* ======================================================= CFDTHLSTS ======================================================= */ + #define R_CANFDL_CFDTHLSTS_THLEMP_Pos (0UL) /*!< THLEMP (Bit 0) */ + #define R_CANFDL_CFDTHLSTS_THLEMP_Msk (0x1UL) /*!< THLEMP (Bitfield-Mask: 0x01) */ + #define R_CANFDL_CFDTHLSTS_THLFLL_Pos (1UL) /*!< THLFLL (Bit 1) */ + #define R_CANFDL_CFDTHLSTS_THLFLL_Msk (0x2UL) /*!< THLFLL (Bitfield-Mask: 0x01) */ + #define R_CANFDL_CFDTHLSTS_THLELT_Pos (2UL) /*!< THLELT (Bit 2) */ + #define R_CANFDL_CFDTHLSTS_THLELT_Msk (0x4UL) /*!< THLELT (Bitfield-Mask: 0x01) */ + #define R_CANFDL_CFDTHLSTS_THLIF_Pos (3UL) /*!< THLIF (Bit 3) */ + #define R_CANFDL_CFDTHLSTS_THLIF_Msk (0x8UL) /*!< THLIF (Bitfield-Mask: 0x01) */ + #define R_CANFDL_CFDTHLSTS_THLMC_Pos (8UL) /*!< THLMC (Bit 8) */ + #define R_CANFDL_CFDTHLSTS_THLMC_Msk (0x3f00UL) /*!< THLMC (Bitfield-Mask: 0x3f) */ +/* ====================================================== CFDTHLPCTR ======================================================= */ + #define R_CANFDL_CFDTHLPCTR_THLPC_Pos (0UL) /*!< THLPC (Bit 0) */ + #define R_CANFDL_CFDTHLPCTR_THLPC_Msk (0xffUL) /*!< THLPC (Bitfield-Mask: 0xff) */ +/* ===================================================== CFDGTINTSTS0 ====================================================== */ + #define R_CANFDL_CFDGTINTSTS0_TSIF0_Pos (0UL) /*!< TSIF0 (Bit 0) */ + #define R_CANFDL_CFDGTINTSTS0_TSIF0_Msk (0x1UL) /*!< TSIF0 (Bitfield-Mask: 0x01) */ + #define R_CANFDL_CFDGTINTSTS0_TAIF0_Pos (1UL) /*!< TAIF0 (Bit 1) */ + #define R_CANFDL_CFDGTINTSTS0_TAIF0_Msk (0x2UL) /*!< TAIF0 (Bitfield-Mask: 0x01) */ + #define R_CANFDL_CFDGTINTSTS0_TQIF0_Pos (2UL) /*!< TQIF0 (Bit 2) */ + #define R_CANFDL_CFDGTINTSTS0_TQIF0_Msk (0x4UL) /*!< TQIF0 (Bitfield-Mask: 0x01) */ + #define R_CANFDL_CFDGTINTSTS0_CFTIF0_Pos (3UL) /*!< CFTIF0 (Bit 3) */ + #define R_CANFDL_CFDGTINTSTS0_CFTIF0_Msk (0x8UL) /*!< CFTIF0 (Bitfield-Mask: 0x01) */ + #define R_CANFDL_CFDGTINTSTS0_THIF0_Pos (4UL) /*!< THIF0 (Bit 4) */ + #define R_CANFDL_CFDGTINTSTS0_THIF0_Msk (0x10UL) /*!< THIF0 (Bitfield-Mask: 0x01) */ +/* ====================================================== CFDGTSTCFG ======================================================= */ + #define R_CANFDL_CFDGTSTCFG_RTMPS_Pos (16UL) /*!< RTMPS (Bit 16) */ + #define R_CANFDL_CFDGTSTCFG_RTMPS_Msk (0x3ff0000UL) /*!< RTMPS (Bitfield-Mask: 0x3ff) */ +/* ====================================================== CFDGTSTCTR ======================================================= */ + #define R_CANFDL_CFDGTSTCTR_RTME_Pos (2UL) /*!< RTME (Bit 2) */ + #define R_CANFDL_CFDGTSTCTR_RTME_Msk (0x4UL) /*!< RTME (Bitfield-Mask: 0x01) */ +/* ======================================================= CFDGFDCFG ======================================================= */ + #define R_CANFDL_CFDGFDCFG_RPED_Pos (0UL) /*!< RPED (Bit 0) */ + #define R_CANFDL_CFDGFDCFG_RPED_Msk (0x1UL) /*!< RPED (Bitfield-Mask: 0x01) */ + #define R_CANFDL_CFDGFDCFG_TSCCFG_Pos (8UL) /*!< TSCCFG (Bit 8) */ + #define R_CANFDL_CFDGFDCFG_TSCCFG_Msk (0x300UL) /*!< TSCCFG (Bitfield-Mask: 0x03) */ +/* ======================================================= CFDGLOCKK ======================================================= */ + #define R_CANFDL_CFDGLOCKK_LOCK_Pos (0UL) /*!< LOCK (Bit 0) */ + #define R_CANFDL_CFDGLOCKK_LOCK_Msk (0xffffUL) /*!< LOCK (Bitfield-Mask: 0xffff) */ +/* ===================================================== CFDGAFLIGNENT ===================================================== */ + #define R_CANFDL_CFDGAFLIGNENT_IRN_Pos (0UL) /*!< IRN (Bit 0) */ + #define R_CANFDL_CFDGAFLIGNENT_IRN_Msk (0x1fUL) /*!< IRN (Bitfield-Mask: 0x1f) */ +/* ===================================================== CFDGAFLIGNCTR ===================================================== */ + #define R_CANFDL_CFDGAFLIGNCTR_IREN_Pos (0UL) /*!< IREN (Bit 0) */ + #define R_CANFDL_CFDGAFLIGNCTR_IREN_Msk (0x1UL) /*!< IREN (Bitfield-Mask: 0x01) */ + #define R_CANFDL_CFDGAFLIGNCTR_KEY_Pos (8UL) /*!< KEY (Bit 8) */ + #define R_CANFDL_CFDGAFLIGNCTR_KEY_Msk (0xff00UL) /*!< KEY (Bitfield-Mask: 0xff) */ +/* ======================================================= CFDCDTCT ======================================================== */ + #define R_CANFDL_CFDCDTCT_RFDMAE0_Pos (0UL) /*!< RFDMAE0 (Bit 0) */ + #define R_CANFDL_CFDCDTCT_RFDMAE0_Msk (0x1UL) /*!< RFDMAE0 (Bitfield-Mask: 0x01) */ + #define R_CANFDL_CFDCDTCT_RFDMAE1_Pos (1UL) /*!< RFDMAE1 (Bit 1) */ + #define R_CANFDL_CFDCDTCT_RFDMAE1_Msk (0x2UL) /*!< RFDMAE1 (Bitfield-Mask: 0x01) */ + #define R_CANFDL_CFDCDTCT_CFDMAE0_Pos (8UL) /*!< CFDMAE0 (Bit 8) */ + #define R_CANFDL_CFDCDTCT_CFDMAE0_Msk (0x100UL) /*!< CFDMAE0 (Bitfield-Mask: 0x01) */ +/* ======================================================= CFDCDTSTS ======================================================= */ + #define R_CANFDL_CFDCDTSTS_RFDMASTS0_Pos (0UL) /*!< RFDMASTS0 (Bit 0) */ + #define R_CANFDL_CFDCDTSTS_RFDMASTS0_Msk (0x1UL) /*!< RFDMASTS0 (Bitfield-Mask: 0x01) */ + #define R_CANFDL_CFDCDTSTS_RFDMASTS1_Pos (1UL) /*!< RFDMASTS1 (Bit 1) */ + #define R_CANFDL_CFDCDTSTS_RFDMASTS1_Msk (0x2UL) /*!< RFDMASTS1 (Bitfield-Mask: 0x01) */ + #define R_CANFDL_CFDCDTSTS_CFDMASTS0_Pos (8UL) /*!< CFDMASTS0 (Bit 8) */ + #define R_CANFDL_CFDCDTSTS_CFDMASTS0_Msk (0x100UL) /*!< CFDMASTS0 (Bitfield-Mask: 0x01) */ +/* ======================================================= CFDGRSTC ======================================================== */ + #define R_CANFDL_CFDGRSTC_SRST_Pos (0UL) /*!< SRST (Bit 0) */ + #define R_CANFDL_CFDGRSTC_SRST_Msk (0x1UL) /*!< SRST (Bitfield-Mask: 0x01) */ + #define R_CANFDL_CFDGRSTC_KEY_Pos (8UL) /*!< KEY (Bit 8) */ + #define R_CANFDL_CFDGRSTC_KEY_Msk (0xff00UL) /*!< KEY (Bitfield-Mask: 0xff) */ +/* ======================================================= CFDRPGACC ======================================================= */ + #define R_CANFDL_CFDRPGACC_RDTA_Pos (0UL) /*!< RDTA (Bit 0) */ + #define R_CANFDL_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_CTSU ================ */ +/* =========================================================================================================================== */ + +/* ======================================================== CTSUCR0 ======================================================== */ + #define R_CTSU_CTSUCR0_CTSUTXVSEL_Pos (7UL) /*!< CTSUTXVSEL (Bit 7) */ + #define R_CTSU_CTSUCR0_CTSUTXVSEL_Msk (0x80UL) /*!< CTSUTXVSEL (Bitfield-Mask: 0x01) */ + #define R_CTSU_CTSUCR0_CTSUINIT_Pos (4UL) /*!< CTSUINIT (Bit 4) */ + #define R_CTSU_CTSUCR0_CTSUINIT_Msk (0x10UL) /*!< CTSUINIT (Bitfield-Mask: 0x01) */ + #define R_CTSU_CTSUCR0_CTSUIOC_Pos (3UL) /*!< CTSUIOC (Bit 3) */ + #define R_CTSU_CTSUCR0_CTSUIOC_Msk (0x8UL) /*!< CTSUIOC (Bitfield-Mask: 0x01) */ + #define R_CTSU_CTSUCR0_CTSUSNZ_Pos (2UL) /*!< CTSUSNZ (Bit 2) */ + #define R_CTSU_CTSUCR0_CTSUSNZ_Msk (0x4UL) /*!< CTSUSNZ (Bitfield-Mask: 0x01) */ + #define R_CTSU_CTSUCR0_CTSUCAP_Pos (1UL) /*!< CTSUCAP (Bit 1) */ + #define R_CTSU_CTSUCR0_CTSUCAP_Msk (0x2UL) /*!< CTSUCAP (Bitfield-Mask: 0x01) */ + #define R_CTSU_CTSUCR0_CTSUSTRT_Pos (0UL) /*!< CTSUSTRT (Bit 0) */ + #define R_CTSU_CTSUCR0_CTSUSTRT_Msk (0x1UL) /*!< CTSUSTRT (Bitfield-Mask: 0x01) */ +/* ======================================================== CTSUCR1 ======================================================== */ + #define R_CTSU_CTSUCR1_CTSUMD_Pos (6UL) /*!< CTSUMD (Bit 6) */ + #define R_CTSU_CTSUCR1_CTSUMD_Msk (0xc0UL) /*!< CTSUMD (Bitfield-Mask: 0x03) */ + #define R_CTSU_CTSUCR1_CTSUCLK_Pos (4UL) /*!< CTSUCLK (Bit 4) */ + #define R_CTSU_CTSUCR1_CTSUCLK_Msk (0x30UL) /*!< CTSUCLK (Bitfield-Mask: 0x03) */ + #define R_CTSU_CTSUCR1_CTSUATUNE1_Pos (3UL) /*!< CTSUATUNE1 (Bit 3) */ + #define R_CTSU_CTSUCR1_CTSUATUNE1_Msk (0x8UL) /*!< CTSUATUNE1 (Bitfield-Mask: 0x01) */ + #define R_CTSU_CTSUCR1_CTSUATUNE0_Pos (2UL) /*!< CTSUATUNE0 (Bit 2) */ + #define R_CTSU_CTSUCR1_CTSUATUNE0_Msk (0x4UL) /*!< CTSUATUNE0 (Bitfield-Mask: 0x01) */ + #define R_CTSU_CTSUCR1_CTSUCSW_Pos (1UL) /*!< CTSUCSW (Bit 1) */ + #define R_CTSU_CTSUCR1_CTSUCSW_Msk (0x2UL) /*!< CTSUCSW (Bitfield-Mask: 0x01) */ + #define R_CTSU_CTSUCR1_CTSUPON_Pos (0UL) /*!< CTSUPON (Bit 0) */ + #define R_CTSU_CTSUCR1_CTSUPON_Msk (0x1UL) /*!< CTSUPON (Bitfield-Mask: 0x01) */ +/* ======================================================= CTSUSDPRS ======================================================= */ + #define R_CTSU_CTSUSDPRS_CTSUSOFF_Pos (6UL) /*!< CTSUSOFF (Bit 6) */ + #define R_CTSU_CTSUSDPRS_CTSUSOFF_Msk (0x40UL) /*!< CTSUSOFF (Bitfield-Mask: 0x01) */ + #define R_CTSU_CTSUSDPRS_CTSUPRMODE_Pos (4UL) /*!< CTSUPRMODE (Bit 4) */ + #define R_CTSU_CTSUSDPRS_CTSUPRMODE_Msk (0x30UL) /*!< CTSUPRMODE (Bitfield-Mask: 0x03) */ + #define R_CTSU_CTSUSDPRS_CTSUPRRATIO_Pos (0UL) /*!< CTSUPRRATIO (Bit 0) */ + #define R_CTSU_CTSUSDPRS_CTSUPRRATIO_Msk (0xfUL) /*!< CTSUPRRATIO (Bitfield-Mask: 0x0f) */ +/* ======================================================== CTSUSST ======================================================== */ + #define R_CTSU_CTSUSST_CTSUSST_Pos (0UL) /*!< CTSUSST (Bit 0) */ + #define R_CTSU_CTSUSST_CTSUSST_Msk (0xffUL) /*!< CTSUSST (Bitfield-Mask: 0xff) */ +/* ======================================================= CTSUMCH0 ======================================================== */ + #define R_CTSU_CTSUMCH0_CTSUMCH0_Pos (0UL) /*!< CTSUMCH0 (Bit 0) */ + #define R_CTSU_CTSUMCH0_CTSUMCH0_Msk (0x3fUL) /*!< CTSUMCH0 (Bitfield-Mask: 0x3f) */ +/* ======================================================= CTSUMCH1 ======================================================== */ + #define R_CTSU_CTSUMCH1_CTSUMCH1_Pos (0UL) /*!< CTSUMCH1 (Bit 0) */ + #define R_CTSU_CTSUMCH1_CTSUMCH1_Msk (0x3fUL) /*!< CTSUMCH1 (Bitfield-Mask: 0x3f) */ +/* ======================================================= CTSUCHAC ======================================================== */ + #define R_CTSU_CTSUCHAC_TS_Pos (0UL) /*!< TS (Bit 0) */ + #define R_CTSU_CTSUCHAC_TS_Msk (0x1UL) /*!< TS (Bitfield-Mask: 0x01) */ +/* ======================================================= CTSUCHTRC ======================================================= */ + #define R_CTSU_CTSUCHTRC_TS_Pos (0UL) /*!< TS (Bit 0) */ + #define R_CTSU_CTSUCHTRC_TS_Msk (0x1UL) /*!< TS (Bitfield-Mask: 0x01) */ +/* ======================================================= CTSUDCLKC ======================================================= */ + #define R_CTSU_CTSUDCLKC_CTSUSSCNT_Pos (4UL) /*!< CTSUSSCNT (Bit 4) */ + #define R_CTSU_CTSUDCLKC_CTSUSSCNT_Msk (0x30UL) /*!< CTSUSSCNT (Bitfield-Mask: 0x03) */ + #define R_CTSU_CTSUDCLKC_CTSUSSMOD_Pos (0UL) /*!< CTSUSSMOD (Bit 0) */ + #define R_CTSU_CTSUDCLKC_CTSUSSMOD_Msk (0x3UL) /*!< CTSUSSMOD (Bitfield-Mask: 0x03) */ +/* ======================================================== CTSUST ========================================================= */ + #define R_CTSU_CTSUST_CTSUPS_Pos (7UL) /*!< CTSUPS (Bit 7) */ + #define R_CTSU_CTSUST_CTSUPS_Msk (0x80UL) /*!< CTSUPS (Bitfield-Mask: 0x01) */ + #define R_CTSU_CTSUST_CTSUROVF_Pos (6UL) /*!< CTSUROVF (Bit 6) */ + #define R_CTSU_CTSUST_CTSUROVF_Msk (0x40UL) /*!< CTSUROVF (Bitfield-Mask: 0x01) */ + #define R_CTSU_CTSUST_CTSUSOVF_Pos (5UL) /*!< CTSUSOVF (Bit 5) */ + #define R_CTSU_CTSUST_CTSUSOVF_Msk (0x20UL) /*!< CTSUSOVF (Bitfield-Mask: 0x01) */ + #define R_CTSU_CTSUST_CTSUDTSR_Pos (4UL) /*!< CTSUDTSR (Bit 4) */ + #define R_CTSU_CTSUST_CTSUDTSR_Msk (0x10UL) /*!< CTSUDTSR (Bitfield-Mask: 0x01) */ + #define R_CTSU_CTSUST_CTSUSTC_Pos (0UL) /*!< CTSUSTC (Bit 0) */ + #define R_CTSU_CTSUST_CTSUSTC_Msk (0x7UL) /*!< CTSUSTC (Bitfield-Mask: 0x07) */ +/* ======================================================== CTSUSSC ======================================================== */ + #define R_CTSU_CTSUSSC_CTSUSSDIV_Pos (8UL) /*!< CTSUSSDIV (Bit 8) */ + #define R_CTSU_CTSUSSC_CTSUSSDIV_Msk (0xf00UL) /*!< CTSUSSDIV (Bitfield-Mask: 0x0f) */ +/* ======================================================== CTSUSO0 ======================================================== */ + #define R_CTSU_CTSUSO0_CTSUSNUM_Pos (10UL) /*!< CTSUSNUM (Bit 10) */ + #define R_CTSU_CTSUSO0_CTSUSNUM_Msk (0xfc00UL) /*!< CTSUSNUM (Bitfield-Mask: 0x3f) */ + #define R_CTSU_CTSUSO0_CTSUSO_Pos (0UL) /*!< CTSUSO (Bit 0) */ + #define R_CTSU_CTSUSO0_CTSUSO_Msk (0x3ffUL) /*!< CTSUSO (Bitfield-Mask: 0x3ff) */ +/* ======================================================== CTSUSO1 ======================================================== */ + #define R_CTSU_CTSUSO1_CTSUICOG_Pos (13UL) /*!< CTSUICOG (Bit 13) */ + #define R_CTSU_CTSUSO1_CTSUICOG_Msk (0x6000UL) /*!< CTSUICOG (Bitfield-Mask: 0x03) */ + #define R_CTSU_CTSUSO1_CTSUSDPA_Pos (8UL) /*!< CTSUSDPA (Bit 8) */ + #define R_CTSU_CTSUSO1_CTSUSDPA_Msk (0x1f00UL) /*!< CTSUSDPA (Bitfield-Mask: 0x1f) */ + #define R_CTSU_CTSUSO1_CTSURICOA_Pos (0UL) /*!< CTSURICOA (Bit 0) */ + #define R_CTSU_CTSUSO1_CTSURICOA_Msk (0xffUL) /*!< CTSURICOA (Bitfield-Mask: 0xff) */ +/* ======================================================== CTSUSC ========================================================= */ + #define R_CTSU_CTSUSC_CTSUSC_Pos (0UL) /*!< CTSUSC (Bit 0) */ + #define R_CTSU_CTSUSC_CTSUSC_Msk (0xffffUL) /*!< CTSUSC (Bitfield-Mask: 0xffff) */ +/* ======================================================== CTSURC ========================================================= */ + #define R_CTSU_CTSURC_CTSURC_Pos (0UL) /*!< CTSURC (Bit 0) */ + #define R_CTSU_CTSURC_CTSURC_Msk (0xffffUL) /*!< CTSURC (Bitfield-Mask: 0xffff) */ +/* ======================================================= CTSUERRS ======================================================== */ + #define R_CTSU_CTSUERRS_CTSUICOMP_Pos (15UL) /*!< CTSUICOMP (Bit 15) */ + #define R_CTSU_CTSUERRS_CTSUICOMP_Msk (0x8000UL) /*!< CTSUICOMP (Bitfield-Mask: 0x01) */ + #define R_CTSU_CTSUERRS_CTSUSPMD_Pos (0UL) /*!< CTSUSPMD (Bit 0) */ + #define R_CTSU_CTSUERRS_CTSUSPMD_Msk (0x3UL) /*!< CTSUSPMD (Bitfield-Mask: 0x03) */ + #define R_CTSU_CTSUERRS_CTSUTSOD_Pos (2UL) /*!< CTSUTSOD (Bit 2) */ + #define R_CTSU_CTSUERRS_CTSUTSOD_Msk (0x4UL) /*!< CTSUTSOD (Bitfield-Mask: 0x01) */ + #define R_CTSU_CTSUERRS_CTSUDRV_Pos (3UL) /*!< CTSUDRV (Bit 3) */ + #define R_CTSU_CTSUERRS_CTSUDRV_Msk (0x8UL) /*!< CTSUDRV (Bitfield-Mask: 0x01) */ + #define R_CTSU_CTSUERRS_CTSUCLKSEL1_Pos (6UL) /*!< CTSUCLKSEL1 (Bit 6) */ + #define R_CTSU_CTSUERRS_CTSUCLKSEL1_Msk (0x40UL) /*!< CTSUCLKSEL1 (Bitfield-Mask: 0x01) */ + #define R_CTSU_CTSUERRS_CTSUTSOC_Pos (7UL) /*!< CTSUTSOC (Bit 7) */ + #define R_CTSU_CTSUERRS_CTSUTSOC_Msk (0x80UL) /*!< CTSUTSOC (Bitfield-Mask: 0x01) */ +/* ======================================================= CTSUTRMR ======================================================== */ + +/* =========================================================================================================================== */ +/* ================ R_CTSU2 ================ */ +/* =========================================================================================================================== */ + +/* ======================================================== CTSUCRA ======================================================== */ + #define R_CTSU2_CTSUCRA_STRT_Pos (0UL) /*!< STRT (Bit 0) */ + #define R_CTSU2_CTSUCRA_STRT_Msk (0x1UL) /*!< STRT (Bitfield-Mask: 0x01) */ + #define R_CTSU2_CTSUCRA_CAP_Pos (1UL) /*!< CAP (Bit 1) */ + #define R_CTSU2_CTSUCRA_CAP_Msk (0x2UL) /*!< CAP (Bitfield-Mask: 0x01) */ + #define R_CTSU2_CTSUCRA_SNZ_Pos (2UL) /*!< SNZ (Bit 2) */ + #define R_CTSU2_CTSUCRA_SNZ_Msk (0x4UL) /*!< SNZ (Bitfield-Mask: 0x01) */ + #define R_CTSU2_CTSUCRA_CFCON_Pos (3UL) /*!< CFCON (Bit 3) */ + #define R_CTSU2_CTSUCRA_CFCON_Msk (0x8UL) /*!< CFCON (Bitfield-Mask: 0x01) */ + #define R_CTSU2_CTSUCRA_INIT_Pos (4UL) /*!< INIT (Bit 4) */ + #define R_CTSU2_CTSUCRA_INIT_Msk (0x10UL) /*!< INIT (Bitfield-Mask: 0x01) */ + #define R_CTSU2_CTSUCRA_PUMPON_Pos (5UL) /*!< PUMPON (Bit 5) */ + #define R_CTSU2_CTSUCRA_PUMPON_Msk (0x20UL) /*!< PUMPON (Bitfield-Mask: 0x01) */ + #define R_CTSU2_CTSUCRA_TXVSEL_Pos (6UL) /*!< TXVSEL (Bit 6) */ + #define R_CTSU2_CTSUCRA_TXVSEL_Msk (0xc0UL) /*!< TXVSEL (Bitfield-Mask: 0x03) */ + #define R_CTSU2_CTSUCRA_PON_Pos (8UL) /*!< PON (Bit 8) */ + #define R_CTSU2_CTSUCRA_PON_Msk (0x100UL) /*!< PON (Bitfield-Mask: 0x01) */ + #define R_CTSU2_CTSUCRA_CSW_Pos (9UL) /*!< CSW (Bit 9) */ + #define R_CTSU2_CTSUCRA_CSW_Msk (0x200UL) /*!< CSW (Bitfield-Mask: 0x01) */ + #define R_CTSU2_CTSUCRA_ATUNE0_Pos (10UL) /*!< ATUNE0 (Bit 10) */ + #define R_CTSU2_CTSUCRA_ATUNE0_Msk (0x400UL) /*!< ATUNE0 (Bitfield-Mask: 0x01) */ + #define R_CTSU2_CTSUCRA_ATUNE1_Pos (11UL) /*!< ATUNE1 (Bit 11) */ + #define R_CTSU2_CTSUCRA_ATUNE1_Msk (0x800UL) /*!< ATUNE1 (Bitfield-Mask: 0x01) */ + #define R_CTSU2_CTSUCRA_CLK_Pos (12UL) /*!< CLK (Bit 12) */ + #define R_CTSU2_CTSUCRA_CLK_Msk (0x3000UL) /*!< CLK (Bitfield-Mask: 0x03) */ + #define R_CTSU2_CTSUCRA_MD0_Pos (14UL) /*!< MD0 (Bit 14) */ + #define R_CTSU2_CTSUCRA_MD0_Msk (0x4000UL) /*!< MD0 (Bitfield-Mask: 0x01) */ + #define R_CTSU2_CTSUCRA_MD1_Pos (15UL) /*!< MD1 (Bit 15) */ + #define R_CTSU2_CTSUCRA_MD1_Msk (0x8000UL) /*!< MD1 (Bitfield-Mask: 0x01) */ + #define R_CTSU2_CTSUCRA_MD2_Pos (16UL) /*!< MD2 (Bit 16) */ + #define R_CTSU2_CTSUCRA_MD2_Msk (0x10000UL) /*!< MD2 (Bitfield-Mask: 0x01) */ + #define R_CTSU2_CTSUCRA_ATUNE2_Pos (17UL) /*!< ATUNE2 (Bit 17) */ + #define R_CTSU2_CTSUCRA_ATUNE2_Msk (0x20000UL) /*!< ATUNE2 (Bitfield-Mask: 0x01) */ + #define R_CTSU2_CTSUCRA_LOAD_Pos (18UL) /*!< LOAD (Bit 18) */ + #define R_CTSU2_CTSUCRA_LOAD_Msk (0xc0000UL) /*!< LOAD (Bitfield-Mask: 0x03) */ + #define R_CTSU2_CTSUCRA_POSEL_Pos (20UL) /*!< POSEL (Bit 20) */ + #define R_CTSU2_CTSUCRA_POSEL_Msk (0x300000UL) /*!< POSEL (Bitfield-Mask: 0x03) */ + #define R_CTSU2_CTSUCRA_SDPSEL_Pos (22UL) /*!< SDPSEL (Bit 22) */ + #define R_CTSU2_CTSUCRA_SDPSEL_Msk (0x400000UL) /*!< SDPSEL (Bitfield-Mask: 0x01) */ + #define R_CTSU2_CTSUCRA_PCSEL_Pos (23UL) /*!< PCSEL (Bit 23) */ + #define R_CTSU2_CTSUCRA_PCSEL_Msk (0x800000UL) /*!< PCSEL (Bitfield-Mask: 0x01) */ + #define R_CTSU2_CTSUCRA_STCLK_Pos (24UL) /*!< STCLK (Bit 24) */ + #define R_CTSU2_CTSUCRA_STCLK_Msk (0x3f000000UL) /*!< STCLK (Bitfield-Mask: 0x3f) */ + #define R_CTSU2_CTSUCRA_DCMODE_Pos (30UL) /*!< DCMODE (Bit 30) */ + #define R_CTSU2_CTSUCRA_DCMODE_Msk (0x40000000UL) /*!< DCMODE (Bitfield-Mask: 0x01) */ + #define R_CTSU2_CTSUCRA_DCBACK_Pos (31UL) /*!< DCBACK (Bit 31) */ + #define R_CTSU2_CTSUCRA_DCBACK_Msk (0x80000000UL) /*!< DCBACK (Bitfield-Mask: 0x01) */ +/* ======================================================= CTSUCRAL ======================================================== */ +/* ======================================================== CTSUCR0 ======================================================== */ +/* ======================================================== CTSUCR1 ======================================================== */ +/* ======================================================= CTSUCRAH ======================================================== */ +/* ======================================================== CTSUCR2 ======================================================== */ +/* ======================================================== CTSUCR3 ======================================================== */ +/* ======================================================== CTSUCRB ======================================================== */ + #define R_CTSU2_CTSUCRB_PRRATIO_Pos (0UL) /*!< PRRATIO (Bit 0) */ + #define R_CTSU2_CTSUCRB_PRRATIO_Msk (0xfUL) /*!< PRRATIO (Bitfield-Mask: 0x0f) */ + #define R_CTSU2_CTSUCRB_PRMODE_Pos (4UL) /*!< PRMODE (Bit 4) */ + #define R_CTSU2_CTSUCRB_PRMODE_Msk (0x30UL) /*!< PRMODE (Bitfield-Mask: 0x03) */ + #define R_CTSU2_CTSUCRB_SOFF_Pos (6UL) /*!< SOFF (Bit 6) */ + #define R_CTSU2_CTSUCRB_SOFF_Msk (0x40UL) /*!< SOFF (Bitfield-Mask: 0x01) */ + #define R_CTSU2_CTSUCRB_PROFF_Pos (7UL) /*!< PROFF (Bit 7) */ + #define R_CTSU2_CTSUCRB_PROFF_Msk (0x80UL) /*!< PROFF (Bitfield-Mask: 0x01) */ + #define R_CTSU2_CTSUCRB_SST_Pos (8UL) /*!< SST (Bit 8) */ + #define R_CTSU2_CTSUCRB_SST_Msk (0xff00UL) /*!< SST (Bitfield-Mask: 0xff) */ + #define R_CTSU2_CTSUCRB_SSMOD_Pos (24UL) /*!< SSMOD (Bit 24) */ + #define R_CTSU2_CTSUCRB_SSMOD_Msk (0x7000000UL) /*!< SSMOD (Bitfield-Mask: 0x07) */ + #define R_CTSU2_CTSUCRB_SSCNT_Pos (28UL) /*!< SSCNT (Bit 28) */ + #define R_CTSU2_CTSUCRB_SSCNT_Msk (0x30000000UL) /*!< SSCNT (Bitfield-Mask: 0x03) */ +/* ======================================================= CTSUCRBL ======================================================== */ +/* ======================================================= CTSUSDPRS ======================================================= */ +/* ======================================================== CTSUSST ======================================================== */ +/* ======================================================= CTSUCRBH ======================================================== */ +/* ======================================================= CTSUDCLKC ======================================================= */ +/* ======================================================== CTSUMCH ======================================================== */ + #define R_CTSU2_CTSUMCH_MCH0_Pos (0UL) /*!< MCH0 (Bit 0) */ + #define R_CTSU2_CTSUMCH_MCH0_Msk (0x3fUL) /*!< MCH0 (Bitfield-Mask: 0x3f) */ + #define R_CTSU2_CTSUMCH_MCH1_Pos (8UL) /*!< MCH1 (Bit 8) */ + #define R_CTSU2_CTSUMCH_MCH1_Msk (0x3f00UL) /*!< MCH1 (Bitfield-Mask: 0x3f) */ + #define R_CTSU2_CTSUMCH_MCA0_Pos (16UL) /*!< MCA0 (Bit 16) */ + #define R_CTSU2_CTSUMCH_MCA0_Msk (0x10000UL) /*!< MCA0 (Bitfield-Mask: 0x01) */ + #define R_CTSU2_CTSUMCH_MCA1_Pos (17UL) /*!< MCA1 (Bit 17) */ + #define R_CTSU2_CTSUMCH_MCA1_Msk (0x20000UL) /*!< MCA1 (Bitfield-Mask: 0x01) */ + #define R_CTSU2_CTSUMCH_MCA2_Pos (18UL) /*!< MCA2 (Bit 18) */ + #define R_CTSU2_CTSUMCH_MCA2_Msk (0x40000UL) /*!< MCA2 (Bitfield-Mask: 0x01) */ + #define R_CTSU2_CTSUMCH_MCA3_Pos (19UL) /*!< MCA3 (Bit 19) */ + #define R_CTSU2_CTSUMCH_MCA3_Msk (0x80000UL) /*!< MCA3 (Bitfield-Mask: 0x01) */ +/* ======================================================= CTSUMCHL ======================================================== */ +/* ======================================================= CTSUMCH0 ======================================================== */ +/* ======================================================= CTSUMCH1 ======================================================== */ +/* ======================================================= CTSUMCHH ======================================================== */ +/* ======================================================= CTSUMFAF ======================================================== */ +/* ======================================================= CTSUCHACA ======================================================= */ + #define R_CTSU2_CTSUCHACA_CHAC00_Pos (0UL) /*!< CHAC00 (Bit 0) */ + #define R_CTSU2_CTSUCHACA_CHAC00_Msk (0x1UL) /*!< CHAC00 (Bitfield-Mask: 0x01) */ + #define R_CTSU2_CTSUCHACA_CHAC02_Pos (2UL) /*!< CHAC02 (Bit 2) */ + #define R_CTSU2_CTSUCHACA_CHAC02_Msk (0x4UL) /*!< CHAC02 (Bitfield-Mask: 0x01) */ + #define R_CTSU2_CTSUCHACA_CHAC04_Pos (4UL) /*!< CHAC04 (Bit 4) */ + #define R_CTSU2_CTSUCHACA_CHAC04_Msk (0x10UL) /*!< CHAC04 (Bitfield-Mask: 0x01) */ + #define R_CTSU2_CTSUCHACA_CHAC05_Pos (5UL) /*!< CHAC05 (Bit 5) */ + #define R_CTSU2_CTSUCHACA_CHAC05_Msk (0x20UL) /*!< CHAC05 (Bitfield-Mask: 0x01) */ + #define R_CTSU2_CTSUCHACA_CHAC06_Pos (6UL) /*!< CHAC06 (Bit 6) */ + #define R_CTSU2_CTSUCHACA_CHAC06_Msk (0x40UL) /*!< CHAC06 (Bitfield-Mask: 0x01) */ + #define R_CTSU2_CTSUCHACA_CHAC07_Pos (7UL) /*!< CHAC07 (Bit 7) */ + #define R_CTSU2_CTSUCHACA_CHAC07_Msk (0x80UL) /*!< CHAC07 (Bitfield-Mask: 0x01) */ + #define R_CTSU2_CTSUCHACA_CHAC08_Pos (8UL) /*!< CHAC08 (Bit 8) */ + #define R_CTSU2_CTSUCHACA_CHAC08_Msk (0x100UL) /*!< CHAC08 (Bitfield-Mask: 0x01) */ + #define R_CTSU2_CTSUCHACA_CHAC09_Pos (9UL) /*!< CHAC09 (Bit 9) */ + #define R_CTSU2_CTSUCHACA_CHAC09_Msk (0x200UL) /*!< CHAC09 (Bitfield-Mask: 0x01) */ + #define R_CTSU2_CTSUCHACA_CHAC10_Pos (10UL) /*!< CHAC10 (Bit 10) */ + #define R_CTSU2_CTSUCHACA_CHAC10_Msk (0x400UL) /*!< CHAC10 (Bitfield-Mask: 0x01) */ + #define R_CTSU2_CTSUCHACA_CHAC11_Pos (11UL) /*!< CHAC11 (Bit 11) */ + #define R_CTSU2_CTSUCHACA_CHAC11_Msk (0x800UL) /*!< CHAC11 (Bitfield-Mask: 0x01) */ + #define R_CTSU2_CTSUCHACA_CHAC12_Pos (12UL) /*!< CHAC12 (Bit 12) */ + #define R_CTSU2_CTSUCHACA_CHAC12_Msk (0x1000UL) /*!< CHAC12 (Bitfield-Mask: 0x01) */ + #define R_CTSU2_CTSUCHACA_CHAC13_Pos (13UL) /*!< CHAC13 (Bit 13) */ + #define R_CTSU2_CTSUCHACA_CHAC13_Msk (0x2000UL) /*!< CHAC13 (Bitfield-Mask: 0x01) */ + #define R_CTSU2_CTSUCHACA_CHAC14_Pos (14UL) /*!< CHAC14 (Bit 14) */ + #define R_CTSU2_CTSUCHACA_CHAC14_Msk (0x4000UL) /*!< CHAC14 (Bitfield-Mask: 0x01) */ + #define R_CTSU2_CTSUCHACA_CHAC15_Pos (15UL) /*!< CHAC15 (Bit 15) */ + #define R_CTSU2_CTSUCHACA_CHAC15_Msk (0x8000UL) /*!< CHAC15 (Bitfield-Mask: 0x01) */ + #define R_CTSU2_CTSUCHACA_CHAC16_Pos (16UL) /*!< CHAC16 (Bit 16) */ + #define R_CTSU2_CTSUCHACA_CHAC16_Msk (0x10000UL) /*!< CHAC16 (Bitfield-Mask: 0x01) */ + #define R_CTSU2_CTSUCHACA_CHAC17_Pos (17UL) /*!< CHAC17 (Bit 17) */ + #define R_CTSU2_CTSUCHACA_CHAC17_Msk (0x20000UL) /*!< CHAC17 (Bitfield-Mask: 0x01) */ + #define R_CTSU2_CTSUCHACA_CHAC18_Pos (18UL) /*!< CHAC18 (Bit 18) */ + #define R_CTSU2_CTSUCHACA_CHAC18_Msk (0x40000UL) /*!< CHAC18 (Bitfield-Mask: 0x01) */ + #define R_CTSU2_CTSUCHACA_CHAC21_Pos (21UL) /*!< CHAC21 (Bit 21) */ + #define R_CTSU2_CTSUCHACA_CHAC21_Msk (0x200000UL) /*!< CHAC21 (Bitfield-Mask: 0x01) */ + #define R_CTSU2_CTSUCHACA_CHAC22_Pos (22UL) /*!< CHAC22 (Bit 22) */ + #define R_CTSU2_CTSUCHACA_CHAC22_Msk (0x400000UL) /*!< CHAC22 (Bitfield-Mask: 0x01) */ + #define R_CTSU2_CTSUCHACA_CHAC23_Pos (23UL) /*!< CHAC23 (Bit 23) */ + #define R_CTSU2_CTSUCHACA_CHAC23_Msk (0x800000UL) /*!< CHAC23 (Bitfield-Mask: 0x01) */ + #define R_CTSU2_CTSUCHACA_CHAC24_Pos (24UL) /*!< CHAC24 (Bit 24) */ + #define R_CTSU2_CTSUCHACA_CHAC24_Msk (0x1000000UL) /*!< CHAC24 (Bitfield-Mask: 0x01) */ + #define R_CTSU2_CTSUCHACA_CHAC25_Pos (25UL) /*!< CHAC25 (Bit 25) */ + #define R_CTSU2_CTSUCHACA_CHAC25_Msk (0x2000000UL) /*!< CHAC25 (Bitfield-Mask: 0x01) */ + #define R_CTSU2_CTSUCHACA_CHAC26_Pos (26UL) /*!< CHAC26 (Bit 26) */ + #define R_CTSU2_CTSUCHACA_CHAC26_Msk (0x4000000UL) /*!< CHAC26 (Bitfield-Mask: 0x01) */ + #define R_CTSU2_CTSUCHACA_CHAC27_Pos (27UL) /*!< CHAC27 (Bit 27) */ + #define R_CTSU2_CTSUCHACA_CHAC27_Msk (0x8000000UL) /*!< CHAC27 (Bitfield-Mask: 0x01) */ + #define R_CTSU2_CTSUCHACA_CHAC28_Pos (28UL) /*!< CHAC28 (Bit 28) */ + #define R_CTSU2_CTSUCHACA_CHAC28_Msk (0x10000000UL) /*!< CHAC28 (Bitfield-Mask: 0x01) */ + #define R_CTSU2_CTSUCHACA_CHAC29_Pos (29UL) /*!< CHAC29 (Bit 29) */ + #define R_CTSU2_CTSUCHACA_CHAC29_Msk (0x20000000UL) /*!< CHAC29 (Bitfield-Mask: 0x01) */ + #define R_CTSU2_CTSUCHACA_CHAC30_Pos (30UL) /*!< CHAC30 (Bit 30) */ + #define R_CTSU2_CTSUCHACA_CHAC30_Msk (0x40000000UL) /*!< CHAC30 (Bitfield-Mask: 0x01) */ + #define R_CTSU2_CTSUCHACA_CHAC31_Pos (31UL) /*!< CHAC31 (Bit 31) */ + #define R_CTSU2_CTSUCHACA_CHAC31_Msk (0x80000000UL) /*!< CHAC31 (Bitfield-Mask: 0x01) */ +/* ====================================================== CTSUCHACAL ======================================================= */ +/* ======================================================= CTSUCHAC0 ======================================================= */ +/* ======================================================= CTSUCHAC1 ======================================================= */ +/* ====================================================== CTSUCHACAH ======================================================= */ +/* ======================================================= CTSUCHAC2 ======================================================= */ +/* ======================================================= CTSUCHAC3 ======================================================= */ +/* ======================================================= CTSUCHACB ======================================================= */ + #define R_CTSU2_CTSUCHACB_CHAC32_Pos (0UL) /*!< CHAC32 (Bit 0) */ + #define R_CTSU2_CTSUCHACB_CHAC32_Msk (0x1UL) /*!< CHAC32 (Bitfield-Mask: 0x01) */ + #define R_CTSU2_CTSUCHACB_CHAC33_Pos (1UL) /*!< CHAC33 (Bit 1) */ + #define R_CTSU2_CTSUCHACB_CHAC33_Msk (0x2UL) /*!< CHAC33 (Bitfield-Mask: 0x01) */ + #define R_CTSU2_CTSUCHACB_CHAC34_Pos (2UL) /*!< CHAC34 (Bit 2) */ + #define R_CTSU2_CTSUCHACB_CHAC34_Msk (0x4UL) /*!< CHAC34 (Bitfield-Mask: 0x01) */ + #define R_CTSU2_CTSUCHACB_CHAC35_Pos (3UL) /*!< CHAC35 (Bit 3) */ + #define R_CTSU2_CTSUCHACB_CHAC35_Msk (0x8UL) /*!< CHAC35 (Bitfield-Mask: 0x01) */ +/* ====================================================== CTSUCHACBL ======================================================= */ +/* ======================================================= CTSUCHAC4 ======================================================= */ +/* ====================================================== CTSUCHTRCA ======================================================= */ + #define R_CTSU2_CTSUCHTRCA_CHTRC_Pos (0UL) /*!< CHTRC (Bit 0) */ + #define R_CTSU2_CTSUCHTRCA_CHTRC_Msk (0x1UL) /*!< CHTRC (Bitfield-Mask: 0x01) */ + #define R_CTSU2_CTSUCHTRCA_CHTRC02_Pos (2UL) /*!< CHTRC02 (Bit 2) */ + #define R_CTSU2_CTSUCHTRCA_CHTRC02_Msk (0x4UL) /*!< CHTRC02 (Bitfield-Mask: 0x01) */ + #define R_CTSU2_CTSUCHTRCA_CHTRC04_Pos (4UL) /*!< CHTRC04 (Bit 4) */ + #define R_CTSU2_CTSUCHTRCA_CHTRC04_Msk (0x10UL) /*!< CHTRC04 (Bitfield-Mask: 0x01) */ + #define R_CTSU2_CTSUCHTRCA_CHTRC05_Pos (5UL) /*!< CHTRC05 (Bit 5) */ + #define R_CTSU2_CTSUCHTRCA_CHTRC05_Msk (0x20UL) /*!< CHTRC05 (Bitfield-Mask: 0x01) */ + #define R_CTSU2_CTSUCHTRCA_CHTRC06_Pos (6UL) /*!< CHTRC06 (Bit 6) */ + #define R_CTSU2_CTSUCHTRCA_CHTRC06_Msk (0x40UL) /*!< CHTRC06 (Bitfield-Mask: 0x01) */ + #define R_CTSU2_CTSUCHTRCA_CHTRC07_Pos (7UL) /*!< CHTRC07 (Bit 7) */ + #define R_CTSU2_CTSUCHTRCA_CHTRC07_Msk (0x80UL) /*!< CHTRC07 (Bitfield-Mask: 0x01) */ + #define R_CTSU2_CTSUCHTRCA_CHTRC08_Pos (8UL) /*!< CHTRC08 (Bit 8) */ + #define R_CTSU2_CTSUCHTRCA_CHTRC08_Msk (0x100UL) /*!< CHTRC08 (Bitfield-Mask: 0x01) */ + #define R_CTSU2_CTSUCHTRCA_CHTRC09_Pos (9UL) /*!< CHTRC09 (Bit 9) */ + #define R_CTSU2_CTSUCHTRCA_CHTRC09_Msk (0x200UL) /*!< CHTRC09 (Bitfield-Mask: 0x01) */ + #define R_CTSU2_CTSUCHTRCA_CHTRC10_Pos (10UL) /*!< CHTRC10 (Bit 10) */ + #define R_CTSU2_CTSUCHTRCA_CHTRC10_Msk (0x400UL) /*!< CHTRC10 (Bitfield-Mask: 0x01) */ + #define R_CTSU2_CTSUCHTRCA_CHTRC11_Pos (11UL) /*!< CHTRC11 (Bit 11) */ + #define R_CTSU2_CTSUCHTRCA_CHTRC11_Msk (0x800UL) /*!< CHTRC11 (Bitfield-Mask: 0x01) */ + #define R_CTSU2_CTSUCHTRCA_CHTRC12_Pos (12UL) /*!< CHTRC12 (Bit 12) */ + #define R_CTSU2_CTSUCHTRCA_CHTRC12_Msk (0x1000UL) /*!< CHTRC12 (Bitfield-Mask: 0x01) */ + #define R_CTSU2_CTSUCHTRCA_CHTRC13_Pos (13UL) /*!< CHTRC13 (Bit 13) */ + #define R_CTSU2_CTSUCHTRCA_CHTRC13_Msk (0x2000UL) /*!< CHTRC13 (Bitfield-Mask: 0x01) */ + #define R_CTSU2_CTSUCHTRCA_CHTRC14_Pos (14UL) /*!< CHTRC14 (Bit 14) */ + #define R_CTSU2_CTSUCHTRCA_CHTRC14_Msk (0x4000UL) /*!< CHTRC14 (Bitfield-Mask: 0x01) */ + #define R_CTSU2_CTSUCHTRCA_CHTRC15_Pos (15UL) /*!< CHTRC15 (Bit 15) */ + #define R_CTSU2_CTSUCHTRCA_CHTRC15_Msk (0x8000UL) /*!< CHTRC15 (Bitfield-Mask: 0x01) */ + #define R_CTSU2_CTSUCHTRCA_CHTRC16_Pos (16UL) /*!< CHTRC16 (Bit 16) */ + #define R_CTSU2_CTSUCHTRCA_CHTRC16_Msk (0x10000UL) /*!< CHTRC16 (Bitfield-Mask: 0x01) */ + #define R_CTSU2_CTSUCHTRCA_CHTRC17_Pos (17UL) /*!< CHTRC17 (Bit 17) */ + #define R_CTSU2_CTSUCHTRCA_CHTRC17_Msk (0x20000UL) /*!< CHTRC17 (Bitfield-Mask: 0x01) */ + #define R_CTSU2_CTSUCHTRCA_CHTRC18_Pos (18UL) /*!< CHTRC18 (Bit 18) */ + #define R_CTSU2_CTSUCHTRCA_CHTRC18_Msk (0x40000UL) /*!< CHTRC18 (Bitfield-Mask: 0x01) */ + #define R_CTSU2_CTSUCHTRCA_CHTRC21_Pos (21UL) /*!< CHTRC21 (Bit 21) */ + #define R_CTSU2_CTSUCHTRCA_CHTRC21_Msk (0x200000UL) /*!< CHTRC21 (Bitfield-Mask: 0x01) */ + #define R_CTSU2_CTSUCHTRCA_CHTRC22_Pos (22UL) /*!< CHTRC22 (Bit 22) */ + #define R_CTSU2_CTSUCHTRCA_CHTRC22_Msk (0x400000UL) /*!< CHTRC22 (Bitfield-Mask: 0x01) */ + #define R_CTSU2_CTSUCHTRCA_CHTRC23_Pos (23UL) /*!< CHTRC23 (Bit 23) */ + #define R_CTSU2_CTSUCHTRCA_CHTRC23_Msk (0x800000UL) /*!< CHTRC23 (Bitfield-Mask: 0x01) */ + #define R_CTSU2_CTSUCHTRCA_CHTRC24_Pos (24UL) /*!< CHTRC24 (Bit 24) */ + #define R_CTSU2_CTSUCHTRCA_CHTRC24_Msk (0x1000000UL) /*!< CHTRC24 (Bitfield-Mask: 0x01) */ + #define R_CTSU2_CTSUCHTRCA_CHTRC25_Pos (25UL) /*!< CHTRC25 (Bit 25) */ + #define R_CTSU2_CTSUCHTRCA_CHTRC25_Msk (0x2000000UL) /*!< CHTRC25 (Bitfield-Mask: 0x01) */ + #define R_CTSU2_CTSUCHTRCA_CHTRC26_Pos (26UL) /*!< CHTRC26 (Bit 26) */ + #define R_CTSU2_CTSUCHTRCA_CHTRC26_Msk (0x4000000UL) /*!< CHTRC26 (Bitfield-Mask: 0x01) */ + #define R_CTSU2_CTSUCHTRCA_CHTRC27_Pos (27UL) /*!< CHTRC27 (Bit 27) */ + #define R_CTSU2_CTSUCHTRCA_CHTRC27_Msk (0x8000000UL) /*!< CHTRC27 (Bitfield-Mask: 0x01) */ + #define R_CTSU2_CTSUCHTRCA_CHTRC28_Pos (28UL) /*!< CHTRC28 (Bit 28) */ + #define R_CTSU2_CTSUCHTRCA_CHTRC28_Msk (0x10000000UL) /*!< CHTRC28 (Bitfield-Mask: 0x01) */ + #define R_CTSU2_CTSUCHTRCA_CHTRC29_Pos (29UL) /*!< CHTRC29 (Bit 29) */ + #define R_CTSU2_CTSUCHTRCA_CHTRC29_Msk (0x20000000UL) /*!< CHTRC29 (Bitfield-Mask: 0x01) */ + #define R_CTSU2_CTSUCHTRCA_CHTRC30_Pos (30UL) /*!< CHTRC30 (Bit 30) */ + #define R_CTSU2_CTSUCHTRCA_CHTRC30_Msk (0x40000000UL) /*!< CHTRC30 (Bitfield-Mask: 0x01) */ + #define R_CTSU2_CTSUCHTRCA_CHTRC31_Pos (31UL) /*!< CHTRC31 (Bit 31) */ + #define R_CTSU2_CTSUCHTRCA_CHTRC31_Msk (0x80000000UL) /*!< CHTRC31 (Bitfield-Mask: 0x01) */ +/* ====================================================== CTSUCHTRCAL ====================================================== */ +/* ====================================================== CTSUCHTRC0 ======================================================= */ +/* ====================================================== CTSUCHTRC1 ======================================================= */ +/* ====================================================== CTSUCHTRCAH ====================================================== */ +/* ====================================================== CTSUCHTRC2 ======================================================= */ +/* ====================================================== CTSUCHTRC3 ======================================================= */ +/* ====================================================== CTSUCHTRCB ======================================================= */ + #define R_CTSU2_CTSUCHTRCB_CHTRC32_Pos (0UL) /*!< CHTRC32 (Bit 0) */ + #define R_CTSU2_CTSUCHTRCB_CHTRC32_Msk (0x1UL) /*!< CHTRC32 (Bitfield-Mask: 0x01) */ + #define R_CTSU2_CTSUCHTRCB_CHTRC33_Pos (1UL) /*!< CHTRC33 (Bit 1) */ + #define R_CTSU2_CTSUCHTRCB_CHTRC33_Msk (0x2UL) /*!< CHTRC33 (Bitfield-Mask: 0x01) */ + #define R_CTSU2_CTSUCHTRCB_CHTRC34_Pos (2UL) /*!< CHTRC34 (Bit 2) */ + #define R_CTSU2_CTSUCHTRCB_CHTRC34_Msk (0x4UL) /*!< CHTRC34 (Bitfield-Mask: 0x01) */ + #define R_CTSU2_CTSUCHTRCB_CHTRC35_Pos (3UL) /*!< CHTRC35 (Bit 3) */ + #define R_CTSU2_CTSUCHTRCB_CHTRC35_Msk (0x8UL) /*!< CHTRC35 (Bitfield-Mask: 0x01) */ +/* ====================================================== CTSUCHTRCBL ====================================================== */ +/* ====================================================== CTSUCHTRC4 ======================================================= */ +/* ======================================================== CTSUSR ========================================================= */ + #define R_CTSU2_CTSUSR_MFC_Pos (0UL) /*!< MFC (Bit 0) */ + #define R_CTSU2_CTSUSR_MFC_Msk (0x3UL) /*!< MFC (Bitfield-Mask: 0x03) */ + #define R_CTSU2_CTSUSR_ICOMPRST_Pos (5UL) /*!< ICOMPRST (Bit 5) */ + #define R_CTSU2_CTSUSR_ICOMPRST_Msk (0x20UL) /*!< ICOMPRST (Bitfield-Mask: 0x01) */ + #define R_CTSU2_CTSUSR_ICOMP1_Pos (6UL) /*!< ICOMP1 (Bit 6) */ + #define R_CTSU2_CTSUSR_ICOMP1_Msk (0x40UL) /*!< ICOMP1 (Bitfield-Mask: 0x01) */ + #define R_CTSU2_CTSUSR_ICOMP0_Pos (7UL) /*!< ICOMP0 (Bit 7) */ + #define R_CTSU2_CTSUSR_ICOMP0_Msk (0x80UL) /*!< ICOMP0 (Bitfield-Mask: 0x01) */ + #define R_CTSU2_CTSUSR_STC_Pos (8UL) /*!< STC (Bit 8) */ + #define R_CTSU2_CTSUSR_STC_Msk (0x700UL) /*!< STC (Bitfield-Mask: 0x07) */ + #define R_CTSU2_CTSUSR_DTSR_Pos (12UL) /*!< DTSR (Bit 12) */ + #define R_CTSU2_CTSUSR_DTSR_Msk (0x1000UL) /*!< DTSR (Bitfield-Mask: 0x01) */ + #define R_CTSU2_CTSUSR_SENSOVF_Pos (13UL) /*!< SENSOVF (Bit 13) */ + #define R_CTSU2_CTSUSR_SENSOVF_Msk (0x2000UL) /*!< SENSOVF (Bitfield-Mask: 0x01) */ + #define R_CTSU2_CTSUSR_SUOVF_Pos (14UL) /*!< SUOVF (Bit 14) */ + #define R_CTSU2_CTSUSR_SUOVF_Msk (0x4000UL) /*!< SUOVF (Bitfield-Mask: 0x01) */ + #define R_CTSU2_CTSUSR_PS_Pos (15UL) /*!< PS (Bit 15) */ + #define R_CTSU2_CTSUSR_PS_Msk (0x8000UL) /*!< PS (Bitfield-Mask: 0x01) */ + #define R_CTSU2_CTSUSR_CFCRDCH_Pos (16UL) /*!< CFCRDCH (Bit 16) */ + #define R_CTSU2_CTSUSR_CFCRDCH_Msk (0x3f0000UL) /*!< CFCRDCH (Bitfield-Mask: 0x3f) */ +/* ======================================================== CTSUSRL ======================================================== */ +/* ======================================================== CTSUSR0 ======================================================== */ +/* ======================================================== CTSUST ========================================================= */ +/* ======================================================== CTSUSRH ======================================================== */ +/* ======================================================== CTSUSR2 ======================================================== */ +/* ======================================================== CTSUSO ========================================================= */ + #define R_CTSU2_CTSUSO_SO_Pos (0UL) /*!< SO (Bit 0) */ + #define R_CTSU2_CTSUSO_SO_Msk (0x3ffUL) /*!< SO (Bitfield-Mask: 0x3ff) */ + #define R_CTSU2_CTSUSO_SNUM_Pos (10UL) /*!< SNUM (Bit 10) */ + #define R_CTSU2_CTSUSO_SNUM_Msk (0x3fc00UL) /*!< SNUM (Bitfield-Mask: 0xff) */ + #define R_CTSU2_CTSUSO_SSDIV_Pos (20UL) /*!< SSDIV (Bit 20) */ + #define R_CTSU2_CTSUSO_SSDIV_Msk (0xf00000UL) /*!< SSDIV (Bitfield-Mask: 0x0f) */ + #define R_CTSU2_CTSUSO_SDPA_Pos (24UL) /*!< SDPA (Bit 24) */ + #define R_CTSU2_CTSUSO_SDPA_Msk (0xff000000UL) /*!< SDPA (Bitfield-Mask: 0xff) */ +/* ======================================================== CTSUSO0 ======================================================== */ +/* ======================================================== CTSUSO1 ======================================================== */ +/* ======================================================= CTSUSCNT ======================================================== */ + #define R_CTSU2_CTSUSCNT_SENSCNT_Pos (0UL) /*!< SENSCNT (Bit 0) */ + #define R_CTSU2_CTSUSCNT_SENSCNT_Msk (0xffffUL) /*!< SENSCNT (Bitfield-Mask: 0xffff) */ + #define R_CTSU2_CTSUSCNT_SUCKCNT_Pos (16UL) /*!< SUCKCNT (Bit 16) */ + #define R_CTSU2_CTSUSCNT_SUCKCNT_Msk (0xffff0000UL) /*!< SUCKCNT (Bitfield-Mask: 0xffff) */ +/* ======================================================== CTSUSC ========================================================= */ +/* ======================================================= CTSUCALIB ======================================================= */ + #define R_CTSU2_CTSUCALIB_TSOD_Pos (2UL) /*!< TSOD (Bit 2) */ + #define R_CTSU2_CTSUCALIB_TSOD_Msk (0x4UL) /*!< TSOD (Bitfield-Mask: 0x01) */ + #define R_CTSU2_CTSUCALIB_DRV_Pos (3UL) /*!< DRV (Bit 3) */ + #define R_CTSU2_CTSUCALIB_DRV_Msk (0x8UL) /*!< DRV (Bitfield-Mask: 0x01) */ + #define R_CTSU2_CTSUCALIB_CLKSEL_Pos (4UL) /*!< CLKSEL (Bit 4) */ + #define R_CTSU2_CTSUCALIB_CLKSEL_Msk (0x30UL) /*!< CLKSEL (Bitfield-Mask: 0x03) */ + #define R_CTSU2_CTSUCALIB_SUCLKEN_Pos (6UL) /*!< SUCLKEN (Bit 6) */ + #define R_CTSU2_CTSUCALIB_SUCLKEN_Msk (0x40UL) /*!< SUCLKEN (Bitfield-Mask: 0x01) */ + #define R_CTSU2_CTSUCALIB_TSOC_Pos (7UL) /*!< TSOC (Bit 7) */ + #define R_CTSU2_CTSUCALIB_TSOC_Msk (0x80UL) /*!< TSOC (Bitfield-Mask: 0x01) */ + #define R_CTSU2_CTSUCALIB_CNTRDSEL_Pos (8UL) /*!< CNTRDSEL (Bit 8) */ + #define R_CTSU2_CTSUCALIB_CNTRDSEL_Msk (0x100UL) /*!< CNTRDSEL (Bitfield-Mask: 0x01) */ + #define R_CTSU2_CTSUCALIB_IOC_Pos (9UL) /*!< IOC (Bit 9) */ + #define R_CTSU2_CTSUCALIB_IOC_Msk (0x200UL) /*!< IOC (Bitfield-Mask: 0x01) */ + #define R_CTSU2_CTSUCALIB_CFCRDMD_Pos (10UL) /*!< CFCRDMD (Bit 10) */ + #define R_CTSU2_CTSUCALIB_CFCRDMD_Msk (0x400UL) /*!< CFCRDMD (Bitfield-Mask: 0x01) */ + #define R_CTSU2_CTSUCALIB_DCOFF_Pos (11UL) /*!< DCOFF (Bit 11) */ + #define R_CTSU2_CTSUCALIB_DCOFF_Msk (0x800UL) /*!< DCOFF (Bitfield-Mask: 0x01) */ + #define R_CTSU2_CTSUCALIB_CFCSEL_Pos (16UL) /*!< CFCSEL (Bit 16) */ + #define R_CTSU2_CTSUCALIB_CFCSEL_Msk (0x3f0000UL) /*!< CFCSEL (Bitfield-Mask: 0x3f) */ + #define R_CTSU2_CTSUCALIB_CFCMODE_Pos (22UL) /*!< CFCMODE (Bit 22) */ + #define R_CTSU2_CTSUCALIB_CFCMODE_Msk (0x400000UL) /*!< CFCMODE (Bitfield-Mask: 0x01) */ + #define R_CTSU2_CTSUCALIB_DACMSEL_Pos (24UL) /*!< DACMSEL (Bit 24) */ + #define R_CTSU2_CTSUCALIB_DACMSEL_Msk (0x1000000UL) /*!< DACMSEL (Bitfield-Mask: 0x01) */ + #define R_CTSU2_CTSUCALIB_DACCARRY_Pos (25UL) /*!< DACCARRY (Bit 25) */ + #define R_CTSU2_CTSUCALIB_DACCARRY_Msk (0x2000000UL) /*!< DACCARRY (Bitfield-Mask: 0x01) */ + #define R_CTSU2_CTSUCALIB_SUMSEL_Pos (26UL) /*!< SUMSEL (Bit 26) */ + #define R_CTSU2_CTSUCALIB_SUMSEL_Msk (0x4000000UL) /*!< SUMSEL (Bitfield-Mask: 0x01) */ + #define R_CTSU2_CTSUCALIB_SUCARRY_Pos (27UL) /*!< SUCARRY (Bit 27) */ + #define R_CTSU2_CTSUCALIB_SUCARRY_Msk (0x8000000UL) /*!< SUCARRY (Bitfield-Mask: 0x01) */ + #define R_CTSU2_CTSUCALIB_DACCLK_Pos (28UL) /*!< DACCLK (Bit 28) */ + #define R_CTSU2_CTSUCALIB_DACCLK_Msk (0x10000000UL) /*!< DACCLK (Bitfield-Mask: 0x01) */ + #define R_CTSU2_CTSUCALIB_CCOCLK_Pos (29UL) /*!< CCOCLK (Bit 29) */ + #define R_CTSU2_CTSUCALIB_CCOCLK_Msk (0x20000000UL) /*!< CCOCLK (Bitfield-Mask: 0x01) */ + #define R_CTSU2_CTSUCALIB_CCOCALIB_Pos (30UL) /*!< CCOCALIB (Bit 30) */ + #define R_CTSU2_CTSUCALIB_CCOCALIB_Msk (0x40000000UL) /*!< CCOCALIB (Bitfield-Mask: 0x01) */ + #define R_CTSU2_CTSUCALIB_TXREV_Pos (31UL) /*!< TXREV (Bit 31) */ + #define R_CTSU2_CTSUCALIB_TXREV_Msk (0x80000000UL) /*!< TXREV (Bitfield-Mask: 0x01) */ +/* ======================================================= CTSUDBGR0 ======================================================= */ +/* ======================================================= CTSUDBGR1 ======================================================= */ +/* ====================================================== CTSUSUCLKA ======================================================= */ + #define R_CTSU2_CTSUSUCLKA_SUADJ0_Pos (0UL) /*!< SUADJ0 (Bit 0) */ + #define R_CTSU2_CTSUSUCLKA_SUADJ0_Msk (0xffUL) /*!< SUADJ0 (Bitfield-Mask: 0xff) */ + #define R_CTSU2_CTSUSUCLKA_SUMULTI0_Pos (8UL) /*!< SUMULTI0 (Bit 8) */ + #define R_CTSU2_CTSUSUCLKA_SUMULTI0_Msk (0xff00UL) /*!< SUMULTI0 (Bitfield-Mask: 0xff) */ + #define R_CTSU2_CTSUSUCLKA_SUADJ1_Pos (16UL) /*!< SUADJ1 (Bit 16) */ + #define R_CTSU2_CTSUSUCLKA_SUADJ1_Msk (0xff0000UL) /*!< SUADJ1 (Bitfield-Mask: 0xff) */ + #define R_CTSU2_CTSUSUCLKA_SUMULTI1_Pos (24UL) /*!< SUMULTI1 (Bit 24) */ + #define R_CTSU2_CTSUSUCLKA_SUMULTI1_Msk (0xff000000UL) /*!< SUMULTI1 (Bitfield-Mask: 0xff) */ +/* ====================================================== CTSUSUCLK0 ======================================================= */ +/* ====================================================== CTSUSUCLK1 ======================================================= */ +/* ====================================================== CTSUSUCLKB ======================================================= */ + #define R_CTSU2_CTSUSUCLKB_SUADJ2_Pos (0UL) /*!< SUADJ2 (Bit 0) */ + #define R_CTSU2_CTSUSUCLKB_SUADJ2_Msk (0xffUL) /*!< SUADJ2 (Bitfield-Mask: 0xff) */ + #define R_CTSU2_CTSUSUCLKB_SUMULTI2_Pos (8UL) /*!< SUMULTI2 (Bit 8) */ + #define R_CTSU2_CTSUSUCLKB_SUMULTI2_Msk (0xff00UL) /*!< SUMULTI2 (Bitfield-Mask: 0xff) */ + #define R_CTSU2_CTSUSUCLKB_SUADJ3_Pos (16UL) /*!< SUADJ3 (Bit 16) */ + #define R_CTSU2_CTSUSUCLKB_SUADJ3_Msk (0xff0000UL) /*!< SUADJ3 (Bitfield-Mask: 0xff) */ + #define R_CTSU2_CTSUSUCLKB_SUMULTI3_Pos (24UL) /*!< SUMULTI3 (Bit 24) */ + #define R_CTSU2_CTSUSUCLKB_SUMULTI3_Msk (0xff000000UL) /*!< SUMULTI3 (Bitfield-Mask: 0xff) */ +/* ====================================================== CTSUSUCLK2 ======================================================= */ +/* ====================================================== CTSUSUCLK3 ======================================================= */ +/* ====================================================== CTSUCFCCNT ======================================================= */ + #define R_CTSU2_CTSUCFCCNT_CFCCNT_Pos (0UL) /*!< CFCCNT (Bit 0) */ + #define R_CTSU2_CTSUCFCCNT_CFCCNT_Msk (0xffffUL) /*!< CFCCNT (Bitfield-Mask: 0xffff) */ +/* ====================================================== CTSUCFCCNTL ====================================================== */ + +/* =========================================================================================================================== */ +/* ================ 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_AMADSEL1_Pos (6UL) /*!< AMADSEL1 (Bit 6) */ + #define R_DAC_DAADUSR_AMADSEL1_Msk (0x40UL) /*!< AMADSEL1 (Bitfield-Mask: 0x01) */ + +/* =========================================================================================================================== */ +/* ================ R_DAC8 ================ */ +/* =========================================================================================================================== */ + +/* ========================================================== DAM ========================================================== */ + #define R_DAC8_DAM_DACE1_Pos (5UL) /*!< DACE1 (Bit 5) */ + #define R_DAC8_DAM_DACE1_Msk (0x20UL) /*!< DACE1 (Bitfield-Mask: 0x01) */ + #define R_DAC8_DAM_DACE0_Pos (4UL) /*!< DACE0 (Bit 4) */ + #define R_DAC8_DAM_DACE0_Msk (0x10UL) /*!< DACE0 (Bitfield-Mask: 0x01) */ + #define R_DAC8_DAM_DAMD1_Pos (1UL) /*!< DAMD1 (Bit 1) */ + #define R_DAC8_DAM_DAMD1_Msk (0x2UL) /*!< DAMD1 (Bitfield-Mask: 0x01) */ + #define R_DAC8_DAM_DAMD0_Pos (0UL) /*!< DAMD0 (Bit 0) */ + #define R_DAC8_DAM_DAMD0_Msk (0x1UL) /*!< DAMD0 (Bitfield-Mask: 0x01) */ +/* ========================================================= DACS ========================================================== */ + #define R_DAC8_DACS_DACS_Pos (0UL) /*!< DACS (Bit 0) */ + #define R_DAC8_DACS_DACS_Msk (0xffUL) /*!< DACS (Bitfield-Mask: 0xff) */ +/* ======================================================= DACADSCR ======================================================== */ + #define R_DAC8_DACADSCR_DACADST_Pos (0UL) /*!< DACADST (Bit 0) */ + #define R_DAC8_DACADSCR_DACADST_Msk (0x1UL) /*!< DACADST (Bitfield-Mask: 0x01) */ +/* ========================================================= DACPC ========================================================= */ + #define R_DAC8_DACPC_PUMPEN_Pos (0UL) /*!< PUMPEN (Bit 0) */ + #define R_DAC8_DACPC_PUMPEN_Msk (0x1UL) /*!< PUMPEN (Bitfield-Mask: 0x01) */ + +/* =========================================================================================================================== */ +/* ================ R_DALI0 ================ */ +/* =========================================================================================================================== */ + +/* ======================================================== BTVTHR1 ======================================================== */ + #define R_DALI0_BTVTHR1_BTV2_Pos (8UL) /*!< BTV2 (Bit 8) */ + #define R_DALI0_BTVTHR1_BTV2_Msk (0xff00UL) /*!< BTV2 (Bitfield-Mask: 0xff) */ + #define R_DALI0_BTVTHR1_BTV1_Pos (0UL) /*!< BTV1 (Bit 0) */ + #define R_DALI0_BTVTHR1_BTV1_Msk (0x7fUL) /*!< BTV1 (Bitfield-Mask: 0x7f) */ +/* ======================================================== BTVTHR2 ======================================================== */ + #define R_DALI0_BTVTHR2_BTV4_Pos (8UL) /*!< BTV4 (Bit 8) */ + #define R_DALI0_BTVTHR2_BTV4_Msk (0xff00UL) /*!< BTV4 (Bitfield-Mask: 0xff) */ + #define R_DALI0_BTVTHR2_BTV3_Pos (0UL) /*!< BTV3 (Bit 0) */ + #define R_DALI0_BTVTHR2_BTV3_Msk (0xffUL) /*!< BTV3 (Bitfield-Mask: 0xff) */ +/* ======================================================== BTVTHR3 ======================================================== */ + #define R_DALI0_BTVTHR3_BTV5_Pos (0UL) /*!< BTV5 (Bit 0) */ + #define R_DALI0_BTVTHR3_BTV5_Msk (0xffUL) /*!< BTV5 (Bitfield-Mask: 0xff) */ +/* ======================================================== BTVTHR4 ======================================================== */ + #define R_DALI0_BTVTHR4_BTV6_Pos (0UL) /*!< BTV6 (Bit 0) */ + #define R_DALI0_BTVTHR4_BTV6_Msk (0x1ffUL) /*!< BTV6 (Bitfield-Mask: 0x1ff) */ +/* ======================================================== COLTHR1 ======================================================== */ + #define R_DALI0_COLTHR1_COL2_Pos (8UL) /*!< COL2 (Bit 8) */ + #define R_DALI0_COLTHR1_COL2_Msk (0x3f00UL) /*!< COL2 (Bitfield-Mask: 0x3f) */ + #define R_DALI0_COLTHR1_COL1_Pos (0UL) /*!< COL1 (Bit 0) */ + #define R_DALI0_COLTHR1_COL1_Msk (0x3fUL) /*!< COL1 (Bitfield-Mask: 0x3f) */ +/* ======================================================== COLTHR2 ======================================================== */ + #define R_DALI0_COLTHR2_COL4_Pos (8UL) /*!< COL4 (Bit 8) */ + #define R_DALI0_COLTHR2_COL4_Msk (0x7f00UL) /*!< COL4 (Bitfield-Mask: 0x7f) */ + #define R_DALI0_COLTHR2_COL3_Pos (0UL) /*!< COL3 (Bit 0) */ + #define R_DALI0_COLTHR2_COL3_Msk (0x7fUL) /*!< COL3 (Bitfield-Mask: 0x7f) */ +/* ======================================================== COLTHR3 ======================================================== */ + #define R_DALI0_COLTHR3_COL6_Pos (8UL) /*!< COL6 (Bit 8) */ + #define R_DALI0_COLTHR3_COL6_Msk (0x7f00UL) /*!< COL6 (Bitfield-Mask: 0x7f) */ + #define R_DALI0_COLTHR3_COL5_Pos (0UL) /*!< COL5 (Bit 0) */ + #define R_DALI0_COLTHR3_COL5_Msk (0x7fUL) /*!< COL5 (Bitfield-Mask: 0x7f) */ +/* ======================================================== COLTHR4 ======================================================== */ + #define R_DALI0_COLTHR4_COL8_Pos (8UL) /*!< COL8 (Bit 8) */ + #define R_DALI0_COLTHR4_COL8_Msk (0xff00UL) /*!< COL8 (Bitfield-Mask: 0xff) */ + #define R_DALI0_COLTHR4_COL7_Pos (0UL) /*!< COL7 (Bit 0) */ + #define R_DALI0_COLTHR4_COL7_Msk (0xffUL) /*!< COL7 (Bitfield-Mask: 0xff) */ +/* ======================================================== COLTHR5 ======================================================== */ + #define R_DALI0_COLTHR5_COL9_Pos (0UL) /*!< COL9 (Bit 0) */ + #define R_DALI0_COLTHR5_COL9_Msk (0xffUL) /*!< COL9 (Bitfield-Mask: 0xff) */ +/* ========================================================= CNFR1 ========================================================= */ + #define R_DALI0_CNFR1_CHL_Pos (12UL) /*!< CHL (Bit 12) */ + #define R_DALI0_CNFR1_CHL_Msk (0x7000UL) /*!< CHL (Bitfield-Mask: 0x07) */ + #define R_DALI0_CNFR1_CKS_Pos (8UL) /*!< CKS (Bit 8) */ + #define R_DALI0_CNFR1_CKS_Msk (0x300UL) /*!< CKS (Bitfield-Mask: 0x03) */ + #define R_DALI0_CNFR1_BR_Pos (0UL) /*!< BR (Bit 0) */ + #define R_DALI0_CNFR1_BR_Msk (0xffUL) /*!< BR (Bitfield-Mask: 0xff) */ +/* ========================================================= CNFR2 ========================================================= */ + #define R_DALI0_CNFR2_CDM0_Pos (5UL) /*!< CDM0 (Bit 5) */ + #define R_DALI0_CNFR2_CDM0_Msk (0x20UL) /*!< CDM0 (Bitfield-Mask: 0x01) */ + #define R_DALI0_CNFR2_CDE_Pos (4UL) /*!< CDE (Bit 4) */ + #define R_DALI0_CNFR2_CDE_Msk (0x10UL) /*!< CDE (Bitfield-Mask: 0x01) */ + #define R_DALI0_CNFR2_TXWE_Pos (3UL) /*!< TXWE (Bit 3) */ + #define R_DALI0_CNFR2_TXWE_Msk (0x8UL) /*!< TXWE (Bitfield-Mask: 0x01) */ + #define R_DALI0_CNFR2_SGA_Pos (2UL) /*!< SGA (Bit 2) */ + #define R_DALI0_CNFR2_SGA_Msk (0x4UL) /*!< SGA (Bitfield-Mask: 0x01) */ + #define R_DALI0_CNFR2_BTVM_Pos (1UL) /*!< BTVM (Bit 1) */ + #define R_DALI0_CNFR2_BTVM_Msk (0x2UL) /*!< BTVM (Bitfield-Mask: 0x01) */ + #define R_DALI0_CNFR2_BTVE_Pos (0UL) /*!< BTVE (Bit 0) */ + #define R_DALI0_CNFR2_BTVE_Msk (0x1UL) /*!< BTVE (Bitfield-Mask: 0x01) */ +/* ========================================================= TXWR1 ========================================================= */ + #define R_DALI0_TXWR1_TXLW_Pos (0UL) /*!< TXLW (Bit 0) */ + #define R_DALI0_TXWR1_TXLW_Msk (0x7fUL) /*!< TXLW (Bitfield-Mask: 0x7f) */ +/* ========================================================= TDR1H ========================================================= */ + #define R_DALI0_TDR1H_DTDR_Pos (0UL) /*!< DTDR (Bit 0) */ + #define R_DALI0_TDR1H_DTDR_Msk (0xffffUL) /*!< DTDR (Bitfield-Mask: 0xffff) */ +/* ========================================================= TDR1L ========================================================= */ + #define R_DALI0_TDR1L_DTDR_Pos (0UL) /*!< DTDR (Bit 0) */ + #define R_DALI0_TDR1L_DTDR_Msk (0xffffUL) /*!< DTDR (Bitfield-Mask: 0xffff) */ +/* ======================================================== TRSTR1 ========================================================= */ + #define R_DALI0_TRSTR1_TRST_Pos (0UL) /*!< TRST (Bit 0) */ + #define R_DALI0_TRSTR1_TRST_Msk (0x1UL) /*!< TRST (Bitfield-Mask: 0x01) */ +/* ========================================================= CTR1 ========================================================== */ + #define R_DALI0_CTR1_FEIE_Pos (12UL) /*!< FEIE (Bit 12) */ + #define R_DALI0_CTR1_FEIE_Msk (0x1000UL) /*!< FEIE (Bitfield-Mask: 0x01) */ + #define R_DALI0_CTR1_BPIE_Pos (11UL) /*!< BPIE (Bit 11) */ + #define R_DALI0_CTR1_BPIE_Msk (0x800UL) /*!< BPIE (Bitfield-Mask: 0x01) */ + #define R_DALI0_CTR1_CLIE_Pos (10UL) /*!< CLIE (Bit 10) */ + #define R_DALI0_CTR1_CLIE_Msk (0x400UL) /*!< CLIE (Bitfield-Mask: 0x01) */ + #define R_DALI0_CTR1_DEIE_Pos (9UL) /*!< DEIE (Bit 9) */ + #define R_DALI0_CTR1_DEIE_Msk (0x200UL) /*!< DEIE (Bitfield-Mask: 0x01) */ + #define R_DALI0_CTR1_SDIE_Pos (8UL) /*!< SDIE (Bit 8) */ + #define R_DALI0_CTR1_SDIE_Msk (0x100UL) /*!< SDIE (Bitfield-Mask: 0x01) */ + #define R_DALI0_CTR1_RE_Pos (1UL) /*!< RE (Bit 1) */ + #define R_DALI0_CTR1_RE_Msk (0x2UL) /*!< RE (Bitfield-Mask: 0x01) */ + #define R_DALI0_CTR1_TE_Pos (0UL) /*!< TE (Bit 0) */ + #define R_DALI0_CTR1_TE_Msk (0x1UL) /*!< TE (Bitfield-Mask: 0x01) */ +/* ======================================================== TXDCTR1 ======================================================== */ + #define R_DALI0_TXDCTR1_TXASE_Pos (1UL) /*!< TXASE (Bit 1) */ + #define R_DALI0_TXDCTR1_TXASE_Msk (0x2UL) /*!< TXASE (Bitfield-Mask: 0x01) */ + #define R_DALI0_TXDCTR1_TXAS_Pos (0UL) /*!< TXAS (Bit 0) */ + #define R_DALI0_TXDCTR1_TXAS_Msk (0x1UL) /*!< TXAS (Bitfield-Mask: 0x01) */ +/* ========================================================= RDR1H ========================================================= */ + #define R_DALI0_RDR1H_DRDR_Pos (0UL) /*!< DRDR (Bit 0) */ + #define R_DALI0_RDR1H_DRDR_Msk (0xffffUL) /*!< DRDR (Bitfield-Mask: 0xffff) */ +/* ========================================================= RDR1L ========================================================= */ + #define R_DALI0_RDR1L_DRDR_Pos (0UL) /*!< DRDR (Bit 0) */ + #define R_DALI0_RDR1L_DRDR_Msk (0xffffUL) /*!< DRDR (Bitfield-Mask: 0xffff) */ +/* ========================================================= STR1 ========================================================== */ + #define R_DALI0_STR1_RDBL_Pos (10UL) /*!< RDBL (Bit 10) */ + #define R_DALI0_STR1_RDBL_Msk (0xfc00UL) /*!< RDBL (Bitfield-Mask: 0x3f) */ + #define R_DALI0_STR1_DAF_Pos (9UL) /*!< DAF (Bit 9) */ + #define R_DALI0_STR1_DAF_Msk (0x200UL) /*!< DAF (Bitfield-Mask: 0x01) */ + #define R_DALI0_STR1_CDF_Pos (8UL) /*!< CDF (Bit 8) */ + #define R_DALI0_STR1_CDF_Msk (0x100UL) /*!< CDF (Bitfield-Mask: 0x01) */ + #define R_DALI0_STR1_O32F_Pos (7UL) /*!< O32F (Bit 7) */ + #define R_DALI0_STR1_O32F_Msk (0x80UL) /*!< O32F (Bitfield-Mask: 0x01) */ + #define R_DALI0_STR1_BPDF_Pos (6UL) /*!< BPDF (Bit 6) */ + #define R_DALI0_STR1_BPDF_Msk (0x40UL) /*!< BPDF (Bitfield-Mask: 0x01) */ + #define R_DALI0_STR1_BBF_Pos (5UL) /*!< BBF (Bit 5) */ + #define R_DALI0_STR1_BBF_Msk (0x20UL) /*!< BBF (Bitfield-Mask: 0x01) */ + #define R_DALI0_STR1_TENDF_Pos (4UL) /*!< TENDF (Bit 4) */ + #define R_DALI0_STR1_TENDF_Msk (0x10UL) /*!< TENDF (Bitfield-Mask: 0x01) */ + #define R_DALI0_STR1_RDRF_Pos (3UL) /*!< RDRF (Bit 3) */ + #define R_DALI0_STR1_RDRF_Msk (0x8UL) /*!< RDRF (Bitfield-Mask: 0x01) */ + #define R_DALI0_STR1_BTVF_Pos (2UL) /*!< BTVF (Bit 2) */ + #define R_DALI0_STR1_BTVF_Msk (0x4UL) /*!< BTVF (Bitfield-Mask: 0x01) */ + #define R_DALI0_STR1_OVF_Pos (1UL) /*!< OVF (Bit 1) */ + #define R_DALI0_STR1_OVF_Msk (0x2UL) /*!< OVF (Bitfield-Mask: 0x01) */ + #define R_DALI0_STR1_MFEF_Pos (0UL) /*!< MFEF (Bit 0) */ + #define R_DALI0_STR1_MFEF_Msk (0x1UL) /*!< MFEF (Bitfield-Mask: 0x01) */ +/* ========================================================= COLR1 ========================================================= */ + #define R_DALI0_COLR1_TXDCV_Pos (13UL) /*!< TXDCV (Bit 13) */ + #define R_DALI0_COLR1_TXDCV_Msk (0x2000UL) /*!< TXDCV (Bitfield-Mask: 0x01) */ + #define R_DALI0_COLR1_RXDCEG_Pos (12UL) /*!< RXDCEG (Bit 12) */ + #define R_DALI0_COLR1_RXDCEG_Msk (0x1000UL) /*!< RXDCEG (Bitfield-Mask: 0x01) */ + #define R_DALI0_COLR1_RXDMON_Pos (11UL) /*!< RXDMON (Bit 11) */ + #define R_DALI0_COLR1_RXDMON_Msk (0x800UL) /*!< RXDMON (Bitfield-Mask: 0x01) */ + #define R_DALI0_COLR1_CLDAF_Pos (10UL) /*!< CLDAF (Bit 10) */ + #define R_DALI0_COLR1_CLDAF_Msk (0x400UL) /*!< CLDAF (Bitfield-Mask: 0x01) */ + #define R_DALI0_COLR1_CDTF1_Pos (4UL) /*!< CDTF1 (Bit 4) */ + #define R_DALI0_COLR1_CDTF1_Msk (0x10UL) /*!< CDTF1 (Bitfield-Mask: 0x01) */ + #define R_DALI0_COLR1_CFTF2_Pos (0UL) /*!< CFTF2 (Bit 0) */ + #define R_DALI0_COLR1_CFTF2_Msk (0xfUL) /*!< CFTF2 (Bitfield-Mask: 0x0f) */ +/* ========================================================= FECR1 ========================================================= */ + #define R_DALI0_FECR1_DAFC_Pos (9UL) /*!< DAFC (Bit 9) */ + #define R_DALI0_FECR1_DAFC_Msk (0x200UL) /*!< DAFC (Bitfield-Mask: 0x01) */ + #define R_DALI0_FECR1_CDFC_Pos (8UL) /*!< CDFC (Bit 8) */ + #define R_DALI0_FECR1_CDFC_Msk (0x100UL) /*!< CDFC (Bitfield-Mask: 0x01) */ + #define R_DALI0_FECR1_O32FC_Pos (7UL) /*!< O32FC (Bit 7) */ + #define R_DALI0_FECR1_O32FC_Msk (0x80UL) /*!< O32FC (Bitfield-Mask: 0x01) */ + #define R_DALI0_FECR1_BPDFC_Pos (6UL) /*!< BPDFC (Bit 6) */ + #define R_DALI0_FECR1_BPDFC_Msk (0x40UL) /*!< BPDFC (Bitfield-Mask: 0x01) */ + #define R_DALI0_FECR1_BBFC_Pos (5UL) /*!< BBFC (Bit 5) */ + #define R_DALI0_FECR1_BBFC_Msk (0x20UL) /*!< BBFC (Bitfield-Mask: 0x01) */ + #define R_DALI0_FECR1_TENDFC_Pos (4UL) /*!< TENDFC (Bit 4) */ + #define R_DALI0_FECR1_TENDFC_Msk (0x10UL) /*!< TENDFC (Bitfield-Mask: 0x01) */ + #define R_DALI0_FECR1_RDRFC_Pos (3UL) /*!< RDRFC (Bit 3) */ + #define R_DALI0_FECR1_RDRFC_Msk (0x8UL) /*!< RDRFC (Bitfield-Mask: 0x01) */ + #define R_DALI0_FECR1_BTVFC_Pos (2UL) /*!< BTVFC (Bit 2) */ + #define R_DALI0_FECR1_BTVFC_Msk (0x4UL) /*!< BTVFC (Bitfield-Mask: 0x01) */ + #define R_DALI0_FECR1_OVFC_Pos (1UL) /*!< OVFC (Bit 1) */ + #define R_DALI0_FECR1_OVFC_Msk (0x2UL) /*!< OVFC (Bitfield-Mask: 0x01) */ + #define R_DALI0_FECR1_MFEFC_Pos (0UL) /*!< MFEFC (Bit 0) */ + #define R_DALI0_FECR1_MFEFC_Msk (0x1UL) /*!< MFEFC (Bitfield-Mask: 0x01) */ +/* ========================================================= SWRR1 ========================================================= */ + #define R_DALI0_SWRR1_SWR_Pos (0UL) /*!< SWR (Bit 0) */ + #define R_DALI0_SWRR1_SWR_Msk (0x1UL) /*!< SWR (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) */ + +/* =========================================================================================================================== */ +/* ================ 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) */ + +/* =========================================================================================================================== */ +/* ================ 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_DMCRB_Pos (0UL) /*!< DMCRB (Bit 0) */ + #define R_DMAC0_DMCRB_DMCRB_Msk (0xffffUL) /*!< DMCRB (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_ELSR0_Pos (0UL) /*!< ELSR0 (Bit 0) */ + #define R_ELC_ELCSARB_ELSR0_Msk (0x1UL) /*!< ELSR0 (Bitfield-Mask: 0x01) */ + #define R_ELC_ELCSARB_ELSR1_Pos (1UL) /*!< ELSR1 (Bit 1) */ + #define R_ELC_ELCSARB_ELSR1_Msk (0x2UL) /*!< ELSR1 (Bitfield-Mask: 0x01) */ + #define R_ELC_ELCSARB_ELSR2_Pos (2UL) /*!< ELSR2 (Bit 2) */ + #define R_ELC_ELCSARB_ELSR2_Msk (0x4UL) /*!< ELSR2 (Bitfield-Mask: 0x01) */ + #define R_ELC_ELCSARB_ELSR3_Pos (3UL) /*!< ELSR3 (Bit 3) */ + #define R_ELC_ELCSARB_ELSR3_Msk (0x8UL) /*!< ELSR3 (Bitfield-Mask: 0x01) */ + #define R_ELC_ELCSARB_ELSR4_Pos (4UL) /*!< ELSR4 (Bit 4) */ + #define R_ELC_ELCSARB_ELSR4_Msk (0x10UL) /*!< ELSR4 (Bitfield-Mask: 0x01) */ + #define R_ELC_ELCSARB_ELSR5_Pos (5UL) /*!< ELSR5 (Bit 5) */ + #define R_ELC_ELCSARB_ELSR5_Msk (0x20UL) /*!< ELSR5 (Bitfield-Mask: 0x01) */ + #define R_ELC_ELCSARB_ELSR6_Pos (6UL) /*!< ELSR6 (Bit 6) */ + #define R_ELC_ELCSARB_ELSR6_Msk (0x40UL) /*!< ELSR6 (Bitfield-Mask: 0x01) */ + #define R_ELC_ELCSARB_ELSR7_Pos (7UL) /*!< ELSR7 (Bit 7) */ + #define R_ELC_ELCSARB_ELSR7_Msk (0x80UL) /*!< ELSR7 (Bitfield-Mask: 0x01) */ + #define R_ELC_ELCSARB_ELSR8_Pos (8UL) /*!< ELSR8 (Bit 8) */ + #define R_ELC_ELCSARB_ELSR8_Msk (0x100UL) /*!< ELSR8 (Bitfield-Mask: 0x01) */ + #define R_ELC_ELCSARB_ELSR9_Pos (9UL) /*!< ELSR9 (Bit 9) */ + #define R_ELC_ELCSARB_ELSR9_Msk (0x200UL) /*!< ELSR9 (Bitfield-Mask: 0x01) */ + #define R_ELC_ELCSARB_ELSR10_Pos (10UL) /*!< ELSR10 (Bit 10) */ + #define R_ELC_ELCSARB_ELSR10_Msk (0x400UL) /*!< ELSR10 (Bitfield-Mask: 0x01) */ + #define R_ELC_ELCSARB_ELSR11_Pos (11UL) /*!< ELSR11 (Bit 11) */ + #define R_ELC_ELCSARB_ELSR11_Msk (0x800UL) /*!< ELSR11 (Bitfield-Mask: 0x01) */ + #define R_ELC_ELCSARB_ELSR12_Pos (12UL) /*!< ELSR12 (Bit 12) */ + #define R_ELC_ELCSARB_ELSR12_Msk (0x1000UL) /*!< ELSR12 (Bitfield-Mask: 0x01) */ + #define R_ELC_ELCSARB_ELSR13_Pos (13UL) /*!< ELSR13 (Bit 13) */ + #define R_ELC_ELCSARB_ELSR13_Msk (0x2000UL) /*!< ELSR13 (Bitfield-Mask: 0x01) */ + #define R_ELC_ELCSARB_ELSR14_Pos (14UL) /*!< ELSR14 (Bit 14) */ + #define R_ELC_ELCSARB_ELSR14_Msk (0x4000UL) /*!< ELSR14 (Bitfield-Mask: 0x01) */ + #define R_ELC_ELCSARB_ELSR15_Pos (15UL) /*!< ELSR15 (Bit 15) */ + #define R_ELC_ELCSARB_ELSR15_Msk (0x8000UL) /*!< ELSR15 (Bitfield-Mask: 0x01) */ +/* ======================================================== ELCSARC ======================================================== */ + #define R_ELC_ELCSARC_ELSR16_Pos (0UL) /*!< ELSR16 (Bit 0) */ + #define R_ELC_ELCSARC_ELSR16_Msk (0x1UL) /*!< ELSR16 (Bitfield-Mask: 0x01) */ + #define R_ELC_ELCSARC_ELSR17_Pos (1UL) /*!< ELSR17 (Bit 1) */ + #define R_ELC_ELCSARC_ELSR17_Msk (0x2UL) /*!< ELSR17 (Bitfield-Mask: 0x01) */ + #define R_ELC_ELCSARC_ELSR18_Pos (2UL) /*!< ELSR18 (Bit 2) */ + #define R_ELC_ELCSARC_ELSR18_Msk (0x4UL) /*!< ELSR18 (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_ETHERC_EPTPC ================ */ +/* =========================================================================================================================== */ + +/* ========================================================= SYSR ========================================================== */ + #define R_ETHERC_EPTPC_SYSR_GENDN_Pos (17UL) /*!< GENDN (Bit 17) */ + #define R_ETHERC_EPTPC_SYSR_GENDN_Msk (0x20000UL) /*!< GENDN (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_SYSR_RESDN_Pos (16UL) /*!< RESDN (Bit 16) */ + #define R_ETHERC_EPTPC_SYSR_RESDN_Msk (0x10000UL) /*!< RESDN (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_SYSR_INFABT_Pos (14UL) /*!< INFABT (Bit 14) */ + #define R_ETHERC_EPTPC_SYSR_INFABT_Msk (0x4000UL) /*!< INFABT (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_SYSR_RECLP_Pos (12UL) /*!< RECLP (Bit 12) */ + #define R_ETHERC_EPTPC_SYSR_RECLP_Msk (0x1000UL) /*!< RECLP (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_SYSR_DRQOVR_Pos (6UL) /*!< DRQOVR (Bit 6) */ + #define R_ETHERC_EPTPC_SYSR_DRQOVR_Msk (0x40UL) /*!< DRQOVR (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_SYSR_INTDEV_Pos (5UL) /*!< INTDEV (Bit 5) */ + #define R_ETHERC_EPTPC_SYSR_INTDEV_Msk (0x20UL) /*!< INTDEV (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_SYSR_DRPTO_Pos (4UL) /*!< DRPTO (Bit 4) */ + #define R_ETHERC_EPTPC_SYSR_DRPTO_Msk (0x10UL) /*!< DRPTO (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_SYSR_MPDUD_Pos (2UL) /*!< MPDUD (Bit 2) */ + #define R_ETHERC_EPTPC_SYSR_MPDUD_Msk (0x4UL) /*!< MPDUD (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_SYSR_INTCHG_Pos (1UL) /*!< INTCHG (Bit 1) */ + #define R_ETHERC_EPTPC_SYSR_INTCHG_Msk (0x2UL) /*!< INTCHG (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_SYSR_OFMUD_Pos (0UL) /*!< OFMUD (Bit 0) */ + #define R_ETHERC_EPTPC_SYSR_OFMUD_Msk (0x1UL) /*!< OFMUD (Bitfield-Mask: 0x01) */ +/* ========================================================= SYIPR ========================================================= */ + #define R_ETHERC_EPTPC_SYIPR_GENDN_Pos (17UL) /*!< GENDN (Bit 17) */ + #define R_ETHERC_EPTPC_SYIPR_GENDN_Msk (0x20000UL) /*!< GENDN (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_SYIPR_RESDN_Pos (16UL) /*!< RESDN (Bit 16) */ + #define R_ETHERC_EPTPC_SYIPR_RESDN_Msk (0x10000UL) /*!< RESDN (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_SYIPR_INFABT_Pos (14UL) /*!< INFABT (Bit 14) */ + #define R_ETHERC_EPTPC_SYIPR_INFABT_Msk (0x4000UL) /*!< INFABT (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_SYIPR_RECLP_Pos (12UL) /*!< RECLP (Bit 12) */ + #define R_ETHERC_EPTPC_SYIPR_RECLP_Msk (0x1000UL) /*!< RECLP (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_SYIPR_DRQOVR_Pos (6UL) /*!< DRQOVR (Bit 6) */ + #define R_ETHERC_EPTPC_SYIPR_DRQOVR_Msk (0x40UL) /*!< DRQOVR (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_SYIPR_INTDEV_Pos (5UL) /*!< INTDEV (Bit 5) */ + #define R_ETHERC_EPTPC_SYIPR_INTDEV_Msk (0x20UL) /*!< INTDEV (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_SYIPR_DRPTO_Pos (4UL) /*!< DRPTO (Bit 4) */ + #define R_ETHERC_EPTPC_SYIPR_DRPTO_Msk (0x10UL) /*!< DRPTO (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_SYIPR_MPDUD_Pos (2UL) /*!< MPDUD (Bit 2) */ + #define R_ETHERC_EPTPC_SYIPR_MPDUD_Msk (0x4UL) /*!< MPDUD (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_SYIPR_INTCHG_Pos (1UL) /*!< INTCHG (Bit 1) */ + #define R_ETHERC_EPTPC_SYIPR_INTCHG_Msk (0x2UL) /*!< INTCHG (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_SYIPR_OFMUD_Pos (0UL) /*!< OFMUD (Bit 0) */ + #define R_ETHERC_EPTPC_SYIPR_OFMUD_Msk (0x1UL) /*!< OFMUD (Bitfield-Mask: 0x01) */ +/* ======================================================== SYMACRU ======================================================== */ + #define R_ETHERC_EPTPC_SYMACRU_SYMACRU_Pos (0UL) /*!< SYMACRU (Bit 0) */ + #define R_ETHERC_EPTPC_SYMACRU_SYMACRU_Msk (0xffffffUL) /*!< SYMACRU (Bitfield-Mask: 0xffffff) */ +/* ======================================================== SYMACRL ======================================================== */ + #define R_ETHERC_EPTPC_SYMACRL_SYMACRL_Pos (0UL) /*!< SYMACRL (Bit 0) */ + #define R_ETHERC_EPTPC_SYMACRL_SYMACRL_Msk (0xffffffUL) /*!< SYMACRL (Bitfield-Mask: 0xffffff) */ +/* ======================================================= SYLLCCTLR ======================================================= */ + #define R_ETHERC_EPTPC_SYLLCCTLR_CTL_Pos (0UL) /*!< CTL (Bit 0) */ + #define R_ETHERC_EPTPC_SYLLCCTLR_CTL_Msk (0xffUL) /*!< CTL (Bitfield-Mask: 0xff) */ +/* ======================================================= SYIPADDRR ======================================================= */ + #define R_ETHERC_EPTPC_SYIPADDRR_SYIPADDRR_Pos (0UL) /*!< SYIPADDRR (Bit 0) */ + #define R_ETHERC_EPTPC_SYIPADDRR_SYIPADDRR_Msk (0xffffffffUL) /*!< SYIPADDRR (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== SYSPVRR ======================================================== */ + #define R_ETHERC_EPTPC_SYSPVRR_TRSP_Pos (4UL) /*!< TRSP (Bit 4) */ + #define R_ETHERC_EPTPC_SYSPVRR_TRSP_Msk (0xf0UL) /*!< TRSP (Bitfield-Mask: 0x0f) */ + #define R_ETHERC_EPTPC_SYSPVRR_VER_Pos (0UL) /*!< VER (Bit 0) */ + #define R_ETHERC_EPTPC_SYSPVRR_VER_Msk (0xfUL) /*!< VER (Bitfield-Mask: 0x0f) */ +/* ======================================================== SYDOMR ========================================================= */ + #define R_ETHERC_EPTPC_SYDOMR_DNUM_Pos (0UL) /*!< DNUM (Bit 0) */ + #define R_ETHERC_EPTPC_SYDOMR_DNUM_Msk (0xffUL) /*!< DNUM (Bitfield-Mask: 0xff) */ +/* ========================================================= ANFR ========================================================== */ + #define R_ETHERC_EPTPC_ANFR_FLAG14_Pos (14UL) /*!< FLAG14 (Bit 14) */ + #define R_ETHERC_EPTPC_ANFR_FLAG14_Msk (0x4000UL) /*!< FLAG14 (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_ANFR_FLAG13_Pos (13UL) /*!< FLAG13 (Bit 13) */ + #define R_ETHERC_EPTPC_ANFR_FLAG13_Msk (0x2000UL) /*!< FLAG13 (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_ANFR_FLAG10_Pos (10UL) /*!< FLAG10 (Bit 10) */ + #define R_ETHERC_EPTPC_ANFR_FLAG10_Msk (0x400UL) /*!< FLAG10 (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_ANFR_FLAG8_Pos (8UL) /*!< FLAG8 (Bit 8) */ + #define R_ETHERC_EPTPC_ANFR_FLAG8_Msk (0x100UL) /*!< FLAG8 (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_ANFR_FLAG5_Pos (5UL) /*!< FLAG5 (Bit 5) */ + #define R_ETHERC_EPTPC_ANFR_FLAG5_Msk (0x20UL) /*!< FLAG5 (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_ANFR_FLAG4_Pos (4UL) /*!< FLAG4 (Bit 4) */ + #define R_ETHERC_EPTPC_ANFR_FLAG4_Msk (0x10UL) /*!< FLAG4 (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_ANFR_FLAG3_Pos (3UL) /*!< FLAG3 (Bit 3) */ + #define R_ETHERC_EPTPC_ANFR_FLAG3_Msk (0x8UL) /*!< FLAG3 (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_ANFR_FLAG2_Pos (2UL) /*!< FLAG2 (Bit 2) */ + #define R_ETHERC_EPTPC_ANFR_FLAG2_Msk (0x4UL) /*!< FLAG2 (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_ANFR_FLAG1_Pos (1UL) /*!< FLAG1 (Bit 1) */ + #define R_ETHERC_EPTPC_ANFR_FLAG1_Msk (0x2UL) /*!< FLAG1 (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_ANFR_FLAG0_Pos (0UL) /*!< FLAG0 (Bit 0) */ + #define R_ETHERC_EPTPC_ANFR_FLAG0_Msk (0x1UL) /*!< FLAG0 (Bitfield-Mask: 0x01) */ +/* ========================================================= SYNFR ========================================================= */ + #define R_ETHERC_EPTPC_SYNFR_FLAG14_Pos (14UL) /*!< FLAG14 (Bit 14) */ + #define R_ETHERC_EPTPC_SYNFR_FLAG14_Msk (0x4000UL) /*!< FLAG14 (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_SYNFR_FLAG13_Pos (13UL) /*!< FLAG13 (Bit 13) */ + #define R_ETHERC_EPTPC_SYNFR_FLAG13_Msk (0x2000UL) /*!< FLAG13 (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_SYNFR_FLAG10_Pos (10UL) /*!< FLAG10 (Bit 10) */ + #define R_ETHERC_EPTPC_SYNFR_FLAG10_Msk (0x400UL) /*!< FLAG10 (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_SYNFR_FLAG9_Pos (9UL) /*!< FLAG9 (Bit 9) */ + #define R_ETHERC_EPTPC_SYNFR_FLAG9_Msk (0x200UL) /*!< FLAG9 (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_SYNFR_FLAG8_Pos (8UL) /*!< FLAG8 (Bit 8) */ + #define R_ETHERC_EPTPC_SYNFR_FLAG8_Msk (0x100UL) /*!< FLAG8 (Bitfield-Mask: 0x01) */ +/* ======================================================== DYRQFR ========================================================= */ + #define R_ETHERC_EPTPC_DYRQFR_FLAG14_Pos (14UL) /*!< FLAG14 (Bit 14) */ + #define R_ETHERC_EPTPC_DYRQFR_FLAG14_Msk (0x4000UL) /*!< FLAG14 (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_DYRQFR_FLAG13_Pos (13UL) /*!< FLAG13 (Bit 13) */ + #define R_ETHERC_EPTPC_DYRQFR_FLAG13_Msk (0x2000UL) /*!< FLAG13 (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_DYRQFR_FLAG10_Pos (10UL) /*!< FLAG10 (Bit 10) */ + #define R_ETHERC_EPTPC_DYRQFR_FLAG10_Msk (0x400UL) /*!< FLAG10 (Bitfield-Mask: 0x01) */ +/* ======================================================== DYRPFR ========================================================= */ + #define R_ETHERC_EPTPC_DYRPFR_FLAG14_Pos (14UL) /*!< FLAG14 (Bit 14) */ + #define R_ETHERC_EPTPC_DYRPFR_FLAG14_Msk (0x4000UL) /*!< FLAG14 (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_DYRPFR_FLAG13_Pos (13UL) /*!< FLAG13 (Bit 13) */ + #define R_ETHERC_EPTPC_DYRPFR_FLAG13_Msk (0x2000UL) /*!< FLAG13 (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_DYRPFR_FLAG10_Pos (10UL) /*!< FLAG10 (Bit 10) */ + #define R_ETHERC_EPTPC_DYRPFR_FLAG10_Msk (0x400UL) /*!< FLAG10 (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_DYRPFR_FLAG9_Pos (9UL) /*!< FLAG9 (Bit 9) */ + #define R_ETHERC_EPTPC_DYRPFR_FLAG9_Msk (0x200UL) /*!< FLAG9 (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_DYRPFR_FLAG8_Pos (8UL) /*!< FLAG8 (Bit 8) */ + #define R_ETHERC_EPTPC_DYRPFR_FLAG8_Msk (0x100UL) /*!< FLAG8 (Bitfield-Mask: 0x01) */ +/* ======================================================== SYCIDRU ======================================================== */ + #define R_ETHERC_EPTPC_SYCIDRU_SYCIDRU_Pos (0UL) /*!< SYCIDRU (Bit 0) */ + #define R_ETHERC_EPTPC_SYCIDRU_SYCIDRU_Msk (0xffffffffUL) /*!< SYCIDRU (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== SYCIDRL ======================================================== */ + #define R_ETHERC_EPTPC_SYCIDRL_SYCIDRL_Pos (0UL) /*!< SYCIDRL (Bit 0) */ + #define R_ETHERC_EPTPC_SYCIDRL_SYCIDRL_Msk (0xffffffffUL) /*!< SYCIDRL (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== SYPNUMR ======================================================== */ + #define R_ETHERC_EPTPC_SYPNUMR_PNUM_Pos (0UL) /*!< PNUM (Bit 0) */ + #define R_ETHERC_EPTPC_SYPNUMR_PNUM_Msk (0xffffUL) /*!< PNUM (Bitfield-Mask: 0xffff) */ +/* ======================================================== SYRVLDR ======================================================== */ + #define R_ETHERC_EPTPC_SYRVLDR_ANUP_Pos (2UL) /*!< ANUP (Bit 2) */ + #define R_ETHERC_EPTPC_SYRVLDR_ANUP_Msk (0x4UL) /*!< ANUP (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_SYRVLDR_STUP_Pos (1UL) /*!< STUP (Bit 1) */ + #define R_ETHERC_EPTPC_SYRVLDR_STUP_Msk (0x2UL) /*!< STUP (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_SYRVLDR_BMUP_Pos (0UL) /*!< BMUP (Bit 0) */ + #define R_ETHERC_EPTPC_SYRVLDR_BMUP_Msk (0x1UL) /*!< BMUP (Bitfield-Mask: 0x01) */ +/* ======================================================== SYRFL1R ======================================================== */ + #define R_ETHERC_EPTPC_SYRFL1R_PDFUP2_Pos (30UL) /*!< PDFUP2 (Bit 30) */ + #define R_ETHERC_EPTPC_SYRFL1R_PDFUP2_Msk (0x40000000UL) /*!< PDFUP2 (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_SYRFL1R_PDFUP1_Pos (29UL) /*!< PDFUP1 (Bit 29) */ + #define R_ETHERC_EPTPC_SYRFL1R_PDFUP1_Msk (0x20000000UL) /*!< PDFUP1 (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_SYRFL1R_PDFUP0_Pos (28UL) /*!< PDFUP0 (Bit 28) */ + #define R_ETHERC_EPTPC_SYRFL1R_PDFUP0_Msk (0x10000000UL) /*!< PDFUP0 (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_SYRFL1R_PDRP2_Pos (26UL) /*!< PDRP2 (Bit 26) */ + #define R_ETHERC_EPTPC_SYRFL1R_PDRP2_Msk (0x4000000UL) /*!< PDRP2 (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_SYRFL1R_PDRP1_Pos (25UL) /*!< PDRP1 (Bit 25) */ + #define R_ETHERC_EPTPC_SYRFL1R_PDRP1_Msk (0x2000000UL) /*!< PDRP1 (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_SYRFL1R_PDRP0_Pos (24UL) /*!< PDRP0 (Bit 24) */ + #define R_ETHERC_EPTPC_SYRFL1R_PDRP0_Msk (0x1000000UL) /*!< PDRP0 (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_SYRFL1R_PDRQ2_Pos (22UL) /*!< PDRQ2 (Bit 22) */ + #define R_ETHERC_EPTPC_SYRFL1R_PDRQ2_Msk (0x400000UL) /*!< PDRQ2 (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_SYRFL1R_PDRQ1_Pos (21UL) /*!< PDRQ1 (Bit 21) */ + #define R_ETHERC_EPTPC_SYRFL1R_PDRQ1_Msk (0x200000UL) /*!< PDRQ1 (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_SYRFL1R_PDRQ0_Pos (20UL) /*!< PDRQ0 (Bit 20) */ + #define R_ETHERC_EPTPC_SYRFL1R_PDRQ0_Msk (0x100000UL) /*!< PDRQ0 (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_SYRFL1R_DRP2_Pos (18UL) /*!< DRP2 (Bit 18) */ + #define R_ETHERC_EPTPC_SYRFL1R_DRP2_Msk (0x40000UL) /*!< DRP2 (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_SYRFL1R_DRP1_Pos (17UL) /*!< DRP1 (Bit 17) */ + #define R_ETHERC_EPTPC_SYRFL1R_DRP1_Msk (0x20000UL) /*!< DRP1 (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_SYRFL1R_DRP0_Pos (16UL) /*!< DRP0 (Bit 16) */ + #define R_ETHERC_EPTPC_SYRFL1R_DRP0_Msk (0x10000UL) /*!< DRP0 (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_SYRFL1R_DRQ2_Pos (14UL) /*!< DRQ2 (Bit 14) */ + #define R_ETHERC_EPTPC_SYRFL1R_DRQ2_Msk (0x4000UL) /*!< DRQ2 (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_SYRFL1R_DRQ1_Pos (13UL) /*!< DRQ1 (Bit 13) */ + #define R_ETHERC_EPTPC_SYRFL1R_DRQ1_Msk (0x2000UL) /*!< DRQ1 (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_SYRFL1R_DRQ0_Pos (12UL) /*!< DRQ0 (Bit 12) */ + #define R_ETHERC_EPTPC_SYRFL1R_DRQ0_Msk (0x1000UL) /*!< DRQ0 (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_SYRFL1R_FUP2_Pos (10UL) /*!< FUP2 (Bit 10) */ + #define R_ETHERC_EPTPC_SYRFL1R_FUP2_Msk (0x400UL) /*!< FUP2 (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_SYRFL1R_FUP1_Pos (9UL) /*!< FUP1 (Bit 9) */ + #define R_ETHERC_EPTPC_SYRFL1R_FUP1_Msk (0x200UL) /*!< FUP1 (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_SYRFL1R_FUP0_Pos (8UL) /*!< FUP0 (Bit 8) */ + #define R_ETHERC_EPTPC_SYRFL1R_FUP0_Msk (0x100UL) /*!< FUP0 (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_SYRFL1R_SYNC2_Pos (6UL) /*!< SYNC2 (Bit 6) */ + #define R_ETHERC_EPTPC_SYRFL1R_SYNC2_Msk (0x40UL) /*!< SYNC2 (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_SYRFL1R_SYNC1_Pos (5UL) /*!< SYNC1 (Bit 5) */ + #define R_ETHERC_EPTPC_SYRFL1R_SYNC1_Msk (0x20UL) /*!< SYNC1 (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_SYRFL1R_SYNC0_Pos (4UL) /*!< SYNC0 (Bit 4) */ + #define R_ETHERC_EPTPC_SYRFL1R_SYNC0_Msk (0x10UL) /*!< SYNC0 (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_SYRFL1R_ANCE1_Pos (1UL) /*!< ANCE1 (Bit 1) */ + #define R_ETHERC_EPTPC_SYRFL1R_ANCE1_Msk (0x2UL) /*!< ANCE1 (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_SYRFL1R_ANCE0_Pos (0UL) /*!< ANCE0 (Bit 0) */ + #define R_ETHERC_EPTPC_SYRFL1R_ANCE0_Msk (0x1UL) /*!< ANCE0 (Bitfield-Mask: 0x01) */ +/* ======================================================== SYRFL2R ======================================================== */ + #define R_ETHERC_EPTPC_SYRFL2R_ILL1_Pos (29UL) /*!< ILL1 (Bit 29) */ + #define R_ETHERC_EPTPC_SYRFL2R_ILL1_Msk (0x20000000UL) /*!< ILL1 (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_SYRFL2R_ILL0_Pos (28UL) /*!< ILL0 (Bit 28) */ + #define R_ETHERC_EPTPC_SYRFL2R_ILL0_Msk (0x10000000UL) /*!< ILL0 (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_SYRFL2R_SIG1_Pos (5UL) /*!< SIG1 (Bit 5) */ + #define R_ETHERC_EPTPC_SYRFL2R_SIG1_Msk (0x20UL) /*!< SIG1 (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_SYRFL2R_SIG0_Pos (4UL) /*!< SIG0 (Bit 4) */ + #define R_ETHERC_EPTPC_SYRFL2R_SIG0_Msk (0x10UL) /*!< SIG0 (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_SYRFL2R_MAN1_Pos (1UL) /*!< MAN1 (Bit 1) */ + #define R_ETHERC_EPTPC_SYRFL2R_MAN1_Msk (0x2UL) /*!< MAN1 (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_SYRFL2R_MAN0_Pos (0UL) /*!< MAN0 (Bit 0) */ + #define R_ETHERC_EPTPC_SYRFL2R_MAN0_Msk (0x1UL) /*!< MAN0 (Bitfield-Mask: 0x01) */ +/* ======================================================== SYTRENR ======================================================== */ + #define R_ETHERC_EPTPC_SYTRENR_PDRQ_Pos (12UL) /*!< PDRQ (Bit 12) */ + #define R_ETHERC_EPTPC_SYTRENR_PDRQ_Msk (0x1000UL) /*!< PDRQ (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_SYTRENR_DRQ_Pos (8UL) /*!< DRQ (Bit 8) */ + #define R_ETHERC_EPTPC_SYTRENR_DRQ_Msk (0x100UL) /*!< DRQ (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_SYTRENR_SYNC_Pos (4UL) /*!< SYNC (Bit 4) */ + #define R_ETHERC_EPTPC_SYTRENR_SYNC_Msk (0x10UL) /*!< SYNC (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_SYTRENR_ANCE_Pos (0UL) /*!< ANCE (Bit 0) */ + #define R_ETHERC_EPTPC_SYTRENR_ANCE_Msk (0x1UL) /*!< ANCE (Bitfield-Mask: 0x01) */ +/* ======================================================== MTCIDU ========================================================= */ + #define R_ETHERC_EPTPC_MTCIDU_MTCIDU_Pos (0UL) /*!< MTCIDU (Bit 0) */ + #define R_ETHERC_EPTPC_MTCIDU_MTCIDU_Msk (0xffffffffUL) /*!< MTCIDU (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== MTCIDL ========================================================= */ + #define R_ETHERC_EPTPC_MTCIDL_MTCIDL_Pos (0UL) /*!< MTCIDL (Bit 0) */ + #define R_ETHERC_EPTPC_MTCIDL_MTCIDL_Msk (0xffffffffUL) /*!< MTCIDL (Bitfield-Mask: 0xffffffff) */ +/* ========================================================= MTPID ========================================================= */ + #define R_ETHERC_EPTPC_MTPID_PNUM_Pos (0UL) /*!< PNUM (Bit 0) */ + #define R_ETHERC_EPTPC_MTPID_PNUM_Msk (0xffffUL) /*!< PNUM (Bitfield-Mask: 0xffff) */ +/* ======================================================== SYTLIR ========================================================= */ + #define R_ETHERC_EPTPC_SYTLIR_DREQ_Pos (16UL) /*!< DREQ (Bit 16) */ + #define R_ETHERC_EPTPC_SYTLIR_DREQ_Msk (0xff0000UL) /*!< DREQ (Bitfield-Mask: 0xff) */ + #define R_ETHERC_EPTPC_SYTLIR_SYNC_Pos (8UL) /*!< SYNC (Bit 8) */ + #define R_ETHERC_EPTPC_SYTLIR_SYNC_Msk (0xff00UL) /*!< SYNC (Bitfield-Mask: 0xff) */ + #define R_ETHERC_EPTPC_SYTLIR_ANCE_Pos (0UL) /*!< ANCE (Bit 0) */ + #define R_ETHERC_EPTPC_SYTLIR_ANCE_Msk (0xffUL) /*!< ANCE (Bitfield-Mask: 0xff) */ +/* ======================================================== SYRLIR ========================================================= */ + #define R_ETHERC_EPTPC_SYRLIR_DRESP_Pos (16UL) /*!< DRESP (Bit 16) */ + #define R_ETHERC_EPTPC_SYRLIR_DRESP_Msk (0xff0000UL) /*!< DRESP (Bitfield-Mask: 0xff) */ + #define R_ETHERC_EPTPC_SYRLIR_SYNC_Pos (8UL) /*!< SYNC (Bit 8) */ + #define R_ETHERC_EPTPC_SYRLIR_SYNC_Msk (0xff00UL) /*!< SYNC (Bitfield-Mask: 0xff) */ + #define R_ETHERC_EPTPC_SYRLIR_ANCE_Pos (0UL) /*!< ANCE (Bit 0) */ + #define R_ETHERC_EPTPC_SYRLIR_ANCE_Msk (0xffUL) /*!< ANCE (Bitfield-Mask: 0xff) */ +/* ========================================================= OFMRU ========================================================= */ + #define R_ETHERC_EPTPC_OFMRU_OFMRU_Pos (0UL) /*!< OFMRU (Bit 0) */ + #define R_ETHERC_EPTPC_OFMRU_OFMRU_Msk (0xffffffffUL) /*!< OFMRU (Bitfield-Mask: 0xffffffff) */ +/* ========================================================= OFMRL ========================================================= */ + #define R_ETHERC_EPTPC_OFMRL_OFMRL_Pos (0UL) /*!< OFMRL (Bit 0) */ + #define R_ETHERC_EPTPC_OFMRL_OFMRL_Msk (0xffffffffUL) /*!< OFMRL (Bitfield-Mask: 0xffffffff) */ +/* ========================================================= MPDRU ========================================================= */ + #define R_ETHERC_EPTPC_MPDRU_MPDRU_Pos (0UL) /*!< MPDRU (Bit 0) */ + #define R_ETHERC_EPTPC_MPDRU_MPDRU_Msk (0xffffffffUL) /*!< MPDRU (Bitfield-Mask: 0xffffffff) */ +/* ========================================================= MPDRL ========================================================= */ + #define R_ETHERC_EPTPC_MPDRL_MPDRL_Pos (0UL) /*!< MPDRL (Bit 0) */ + #define R_ETHERC_EPTPC_MPDRL_MPDRL_Msk (0xffffffffUL) /*!< MPDRL (Bitfield-Mask: 0xffffffff) */ +/* ========================================================= GMPR ========================================================== */ + #define R_ETHERC_EPTPC_GMPR_GMPR1_Pos (16UL) /*!< GMPR1 (Bit 16) */ + #define R_ETHERC_EPTPC_GMPR_GMPR1_Msk (0xff0000UL) /*!< GMPR1 (Bitfield-Mask: 0xff) */ + #define R_ETHERC_EPTPC_GMPR_GMPR2_Pos (0UL) /*!< GMPR2 (Bit 0) */ + #define R_ETHERC_EPTPC_GMPR_GMPR2_Msk (0xffUL) /*!< GMPR2 (Bitfield-Mask: 0xff) */ +/* ========================================================= GMCQR ========================================================= */ + #define R_ETHERC_EPTPC_GMCQR_GMCQR_Pos (0UL) /*!< GMCQR (Bit 0) */ + #define R_ETHERC_EPTPC_GMCQR_GMCQR_Msk (0xffffffffUL) /*!< GMCQR (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== GMIDRU ========================================================= */ + #define R_ETHERC_EPTPC_GMIDRU_GMIDRU_Pos (0UL) /*!< GMIDRU (Bit 0) */ + #define R_ETHERC_EPTPC_GMIDRU_GMIDRU_Msk (0xffffffffUL) /*!< GMIDRU (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== GMIDRL ========================================================= */ + #define R_ETHERC_EPTPC_GMIDRL_GMIDRL_Pos (0UL) /*!< GMIDRL (Bit 0) */ + #define R_ETHERC_EPTPC_GMIDRL_GMIDRL_Msk (0xffffffffUL) /*!< GMIDRL (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== CUOTSR ========================================================= */ + #define R_ETHERC_EPTPC_CUOTSR_CUTO_Pos (16UL) /*!< CUTO (Bit 16) */ + #define R_ETHERC_EPTPC_CUOTSR_CUTO_Msk (0xffff0000UL) /*!< CUTO (Bitfield-Mask: 0xffff) */ + #define R_ETHERC_EPTPC_CUOTSR_TSRC_Pos (0UL) /*!< TSRC (Bit 0) */ + #define R_ETHERC_EPTPC_CUOTSR_TSRC_Msk (0xffUL) /*!< TSRC (Bitfield-Mask: 0xff) */ +/* ========================================================== SRR ========================================================== */ + #define R_ETHERC_EPTPC_SRR_SRMV_Pos (0UL) /*!< SRMV (Bit 0) */ + #define R_ETHERC_EPTPC_SRR_SRMV_Msk (0xffffUL) /*!< SRMV (Bitfield-Mask: 0xffff) */ +/* ======================================================== PPMACRU ======================================================== */ + #define R_ETHERC_EPTPC_PPMACRU_PPMACRU_Pos (0UL) /*!< PPMACRU (Bit 0) */ + #define R_ETHERC_EPTPC_PPMACRU_PPMACRU_Msk (0xffffffUL) /*!< PPMACRU (Bitfield-Mask: 0xffffff) */ +/* ======================================================== PPMACRL ======================================================== */ + #define R_ETHERC_EPTPC_PPMACRL_PPMACRL_Pos (0UL) /*!< PPMACRL (Bit 0) */ + #define R_ETHERC_EPTPC_PPMACRL_PPMACRL_Msk (0xffffffUL) /*!< PPMACRL (Bitfield-Mask: 0xffffff) */ +/* ======================================================== PDMACRU ======================================================== */ + #define R_ETHERC_EPTPC_PDMACRU_PDMACRU_Pos (0UL) /*!< PDMACRU (Bit 0) */ + #define R_ETHERC_EPTPC_PDMACRU_PDMACRU_Msk (0xffffffUL) /*!< PDMACRU (Bitfield-Mask: 0xffffff) */ +/* ======================================================== PDMACRL ======================================================== */ + #define R_ETHERC_EPTPC_PDMACRL_PDMACRL_Pos (0UL) /*!< PDMACRL (Bit 0) */ + #define R_ETHERC_EPTPC_PDMACRL_PDMACRL_Msk (0xffffffUL) /*!< PDMACRL (Bitfield-Mask: 0xffffff) */ +/* ======================================================== PETYPER ======================================================== */ + #define R_ETHERC_EPTPC_PETYPER_TYPE_Pos (0UL) /*!< TYPE (Bit 0) */ + #define R_ETHERC_EPTPC_PETYPER_TYPE_Msk (0xffffUL) /*!< TYPE (Bitfield-Mask: 0xffff) */ +/* ========================================================= PPIPR ========================================================= */ + #define R_ETHERC_EPTPC_PPIPR_PPIPR_Pos (0UL) /*!< PPIPR (Bit 0) */ + #define R_ETHERC_EPTPC_PPIPR_PPIPR_Msk (0xffffffffUL) /*!< PPIPR (Bitfield-Mask: 0xffffffff) */ +/* ========================================================= PDIPR ========================================================= */ + #define R_ETHERC_EPTPC_PDIPR_PDIPR_Pos (0UL) /*!< PDIPR (Bit 0) */ + #define R_ETHERC_EPTPC_PDIPR_PDIPR_Msk (0xffffffffUL) /*!< PDIPR (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== PETOSR ========================================================= */ + #define R_ETHERC_EPTPC_PETOSR_EVTO_Pos (0UL) /*!< EVTO (Bit 0) */ + #define R_ETHERC_EPTPC_PETOSR_EVTO_Msk (0xffUL) /*!< EVTO (Bitfield-Mask: 0xff) */ +/* ======================================================== PGTOSR ========================================================= */ + #define R_ETHERC_EPTPC_PGTOSR_GETO_Pos (0UL) /*!< GETO (Bit 0) */ + #define R_ETHERC_EPTPC_PGTOSR_GETO_Msk (0xffUL) /*!< GETO (Bitfield-Mask: 0xff) */ +/* ======================================================== PPTTLR ========================================================= */ + #define R_ETHERC_EPTPC_PPTTLR_PRTL_Pos (0UL) /*!< PRTL (Bit 0) */ + #define R_ETHERC_EPTPC_PPTTLR_PRTL_Msk (0xffUL) /*!< PRTL (Bitfield-Mask: 0xff) */ +/* ======================================================== PDTTLR ========================================================= */ + #define R_ETHERC_EPTPC_PDTTLR_PDTL_Pos (0UL) /*!< PDTL (Bit 0) */ + #define R_ETHERC_EPTPC_PDTTLR_PDTL_Msk (0xffUL) /*!< PDTL (Bitfield-Mask: 0xff) */ +/* ======================================================== PEUDPR ========================================================= */ + #define R_ETHERC_EPTPC_PEUDPR_EVUPT_Pos (0UL) /*!< EVUPT (Bit 0) */ + #define R_ETHERC_EPTPC_PEUDPR_EVUPT_Msk (0xffffUL) /*!< EVUPT (Bitfield-Mask: 0xffff) */ +/* ======================================================== PGUDPR ========================================================= */ + #define R_ETHERC_EPTPC_PGUDPR_GEUPT_Pos (0UL) /*!< GEUPT (Bit 0) */ + #define R_ETHERC_EPTPC_PGUDPR_GEUPT_Msk (0xffffUL) /*!< GEUPT (Bitfield-Mask: 0xffff) */ +/* ========================================================= FFLTR ========================================================= */ + #define R_ETHERC_EPTPC_FFLTR_EXTPRM_Pos (16UL) /*!< EXTPRM (Bit 16) */ + #define R_ETHERC_EPTPC_FFLTR_EXTPRM_Msk (0x10000UL) /*!< EXTPRM (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_FFLTR_ENB_Pos (2UL) /*!< ENB (Bit 2) */ + #define R_ETHERC_EPTPC_FFLTR_ENB_Msk (0x4UL) /*!< ENB (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_FFLTR_PRT_Pos (1UL) /*!< PRT (Bit 1) */ + #define R_ETHERC_EPTPC_FFLTR_PRT_Msk (0x2UL) /*!< PRT (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_FFLTR_SEL_Pos (0UL) /*!< SEL (Bit 0) */ + #define R_ETHERC_EPTPC_FFLTR_SEL_Msk (0x1UL) /*!< SEL (Bitfield-Mask: 0x01) */ +/* ======================================================== FMAC0RU ======================================================== */ + #define R_ETHERC_EPTPC_FMAC0RU_FMAC0RU_Pos (0UL) /*!< FMAC0RU (Bit 0) */ + #define R_ETHERC_EPTPC_FMAC0RU_FMAC0RU_Msk (0xffffffUL) /*!< FMAC0RU (Bitfield-Mask: 0xffffff) */ +/* ======================================================== FMAC0RL ======================================================== */ + #define R_ETHERC_EPTPC_FMAC0RL_FMAC0RL_Pos (0UL) /*!< FMAC0RL (Bit 0) */ + #define R_ETHERC_EPTPC_FMAC0RL_FMAC0RL_Msk (0xffffffUL) /*!< FMAC0RL (Bitfield-Mask: 0xffffff) */ +/* ======================================================== FMAC1RU ======================================================== */ + #define R_ETHERC_EPTPC_FMAC1RU_FMAC1RU_Pos (0UL) /*!< FMAC1RU (Bit 0) */ + #define R_ETHERC_EPTPC_FMAC1RU_FMAC1RU_Msk (0xffffffUL) /*!< FMAC1RU (Bitfield-Mask: 0xffffff) */ +/* ======================================================== FMAC1RL ======================================================== */ + #define R_ETHERC_EPTPC_FMAC1RL_FMAC1RL_Pos (0UL) /*!< FMAC1RL (Bit 0) */ + #define R_ETHERC_EPTPC_FMAC1RL_FMAC1RL_Msk (0xffffffUL) /*!< FMAC1RL (Bitfield-Mask: 0xffffff) */ +/* ======================================================== DASYMRU ======================================================== */ + #define R_ETHERC_EPTPC_DASYMRU_DASYMRU_Pos (0UL) /*!< DASYMRU (Bit 0) */ + #define R_ETHERC_EPTPC_DASYMRU_DASYMRU_Msk (0xffffUL) /*!< DASYMRU (Bitfield-Mask: 0xffff) */ +/* ======================================================== DASYMRL ======================================================== */ + #define R_ETHERC_EPTPC_DASYMRL_DASYMRL_Pos (0UL) /*!< DASYMRL (Bit 0) */ + #define R_ETHERC_EPTPC_DASYMRL_DASYMRL_Msk (0xffffffffUL) /*!< DASYMRL (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== TSLATR ========================================================= */ + #define R_ETHERC_EPTPC_TSLATR_INGP_Pos (16UL) /*!< INGP (Bit 16) */ + #define R_ETHERC_EPTPC_TSLATR_INGP_Msk (0xffff0000UL) /*!< INGP (Bitfield-Mask: 0xffff) */ + #define R_ETHERC_EPTPC_TSLATR_EGP_Pos (0UL) /*!< EGP (Bit 0) */ + #define R_ETHERC_EPTPC_TSLATR_EGP_Msk (0xffffUL) /*!< EGP (Bitfield-Mask: 0xffff) */ +/* ======================================================== SYCONFR ======================================================== */ + #define R_ETHERC_EPTPC_SYCONFR_TCMOD_Pos (20UL) /*!< TCMOD (Bit 20) */ + #define R_ETHERC_EPTPC_SYCONFR_TCMOD_Msk (0x100000UL) /*!< TCMOD (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_SYCONFR_FILDIS_Pos (16UL) /*!< FILDIS (Bit 16) */ + #define R_ETHERC_EPTPC_SYCONFR_FILDIS_Msk (0x10000UL) /*!< FILDIS (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_SYCONFR_SBDIS_Pos (12UL) /*!< SBDIS (Bit 12) */ + #define R_ETHERC_EPTPC_SYCONFR_SBDIS_Msk (0x1000UL) /*!< SBDIS (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_SYCONFR_TCYC_Pos (0UL) /*!< TCYC (Bit 0) */ + #define R_ETHERC_EPTPC_SYCONFR_TCYC_Msk (0xffUL) /*!< TCYC (Bitfield-Mask: 0xff) */ +/* ======================================================== SYFORMR ======================================================== */ + #define R_ETHERC_EPTPC_SYFORMR_FORM1_Pos (1UL) /*!< FORM1 (Bit 1) */ + #define R_ETHERC_EPTPC_SYFORMR_FORM1_Msk (0x2UL) /*!< FORM1 (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_SYFORMR_FORM0_Pos (0UL) /*!< FORM0 (Bit 0) */ + #define R_ETHERC_EPTPC_SYFORMR_FORM0_Msk (0x1UL) /*!< FORM0 (Bitfield-Mask: 0x01) */ +/* ======================================================== RSTOUTR ======================================================== */ + #define R_ETHERC_EPTPC_RSTOUTR_RSTOUTR_Pos (0UL) /*!< RSTOUTR (Bit 0) */ + #define R_ETHERC_EPTPC_RSTOUTR_RSTOUTR_Msk (0xffffffffUL) /*!< RSTOUTR (Bitfield-Mask: 0xffffffff) */ + +/* =========================================================================================================================== */ +/* ================ R_ETHERC_EPTPC_CFG ================ */ +/* =========================================================================================================================== */ + +/* ======================================================== PTRSTR ========================================================= */ + #define R_ETHERC_EPTPC_CFG_PTRSTR_RESET_Pos (0UL) /*!< RESET (Bit 0) */ + #define R_ETHERC_EPTPC_CFG_PTRSTR_RESET_Msk (0x1UL) /*!< RESET (Bitfield-Mask: 0x01) */ +/* ======================================================== STCSELR ======================================================== */ + #define R_ETHERC_EPTPC_CFG_STCSELR_SCLKSEL_Pos (8UL) /*!< SCLKSEL (Bit 8) */ + #define R_ETHERC_EPTPC_CFG_STCSELR_SCLKSEL_Msk (0x700UL) /*!< SCLKSEL (Bitfield-Mask: 0x07) */ + #define R_ETHERC_EPTPC_CFG_STCSELR_SCLKDIV_Pos (0UL) /*!< SCLKDIV (Bit 0) */ + #define R_ETHERC_EPTPC_CFG_STCSELR_SCLKDIV_Msk (0x7UL) /*!< SCLKDIV (Bitfield-Mask: 0x07) */ +/* ======================================================== BYPASS ========================================================= */ + #define R_ETHERC_EPTPC_CFG_BYPASS_BYPASS1_Pos (16UL) /*!< BYPASS1 (Bit 16) */ + #define R_ETHERC_EPTPC_CFG_BYPASS_BYPASS1_Msk (0x10000UL) /*!< BYPASS1 (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_CFG_BYPASS_BYPASS0_Pos (0UL) /*!< BYPASS0 (Bit 0) */ + #define R_ETHERC_EPTPC_CFG_BYPASS_BYPASS0_Msk (0x1UL) /*!< BYPASS0 (Bitfield-Mask: 0x01) */ + +/* =========================================================================================================================== */ +/* ================ R_ETHERC_EPTPC_COMMON ================ */ +/* =========================================================================================================================== */ + +/* ========================================================= MIESR ========================================================= */ + #define R_ETHERC_EPTPC_COMMON_MIESR_CYC5_Pos (21UL) /*!< CYC5 (Bit 21) */ + #define R_ETHERC_EPTPC_COMMON_MIESR_CYC5_Msk (0x200000UL) /*!< CYC5 (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_COMMON_MIESR_CYC4_Pos (20UL) /*!< CYC4 (Bit 20) */ + #define R_ETHERC_EPTPC_COMMON_MIESR_CYC4_Msk (0x100000UL) /*!< CYC4 (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_COMMON_MIESR_CYC3_Pos (19UL) /*!< CYC3 (Bit 19) */ + #define R_ETHERC_EPTPC_COMMON_MIESR_CYC3_Msk (0x80000UL) /*!< CYC3 (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_COMMON_MIESR_CYC2_Pos (18UL) /*!< CYC2 (Bit 18) */ + #define R_ETHERC_EPTPC_COMMON_MIESR_CYC2_Msk (0x40000UL) /*!< CYC2 (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_COMMON_MIESR_CYC1_Pos (17UL) /*!< CYC1 (Bit 17) */ + #define R_ETHERC_EPTPC_COMMON_MIESR_CYC1_Msk (0x20000UL) /*!< CYC1 (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_COMMON_MIESR_CYC0_Pos (16UL) /*!< CYC0 (Bit 16) */ + #define R_ETHERC_EPTPC_COMMON_MIESR_CYC0_Msk (0x10000UL) /*!< CYC0 (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_COMMON_MIESR_PRC_Pos (3UL) /*!< PRC (Bit 3) */ + #define R_ETHERC_EPTPC_COMMON_MIESR_PRC_Msk (0x8UL) /*!< PRC (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_COMMON_MIESR_SY1_Pos (2UL) /*!< SY1 (Bit 2) */ + #define R_ETHERC_EPTPC_COMMON_MIESR_SY1_Msk (0x4UL) /*!< SY1 (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_COMMON_MIESR_SY0_Pos (1UL) /*!< SY0 (Bit 1) */ + #define R_ETHERC_EPTPC_COMMON_MIESR_SY0_Msk (0x2UL) /*!< SY0 (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_COMMON_MIESR_ST_Pos (0UL) /*!< ST (Bit 0) */ + #define R_ETHERC_EPTPC_COMMON_MIESR_ST_Msk (0x1UL) /*!< ST (Bitfield-Mask: 0x01) */ +/* ======================================================== MIEIPR ========================================================= */ + #define R_ETHERC_EPTPC_COMMON_MIEIPR_CYC5_Pos (21UL) /*!< CYC5 (Bit 21) */ + #define R_ETHERC_EPTPC_COMMON_MIEIPR_CYC5_Msk (0x200000UL) /*!< CYC5 (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_COMMON_MIEIPR_CYC4_Pos (20UL) /*!< CYC4 (Bit 20) */ + #define R_ETHERC_EPTPC_COMMON_MIEIPR_CYC4_Msk (0x100000UL) /*!< CYC4 (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_COMMON_MIEIPR_CYC3_Pos (19UL) /*!< CYC3 (Bit 19) */ + #define R_ETHERC_EPTPC_COMMON_MIEIPR_CYC3_Msk (0x80000UL) /*!< CYC3 (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_COMMON_MIEIPR_CYC2_Pos (18UL) /*!< CYC2 (Bit 18) */ + #define R_ETHERC_EPTPC_COMMON_MIEIPR_CYC2_Msk (0x40000UL) /*!< CYC2 (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_COMMON_MIEIPR_CYC1_Pos (17UL) /*!< CYC1 (Bit 17) */ + #define R_ETHERC_EPTPC_COMMON_MIEIPR_CYC1_Msk (0x20000UL) /*!< CYC1 (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_COMMON_MIEIPR_CYC0_Pos (16UL) /*!< CYC0 (Bit 16) */ + #define R_ETHERC_EPTPC_COMMON_MIEIPR_CYC0_Msk (0x10000UL) /*!< CYC0 (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_COMMON_MIEIPR_PRC_Pos (3UL) /*!< PRC (Bit 3) */ + #define R_ETHERC_EPTPC_COMMON_MIEIPR_PRC_Msk (0x8UL) /*!< PRC (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_COMMON_MIEIPR_SY1_Pos (2UL) /*!< SY1 (Bit 2) */ + #define R_ETHERC_EPTPC_COMMON_MIEIPR_SY1_Msk (0x4UL) /*!< SY1 (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_COMMON_MIEIPR_SY0_Pos (1UL) /*!< SY0 (Bit 1) */ + #define R_ETHERC_EPTPC_COMMON_MIEIPR_SY0_Msk (0x2UL) /*!< SY0 (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_COMMON_MIEIPR_ST_Pos (0UL) /*!< ST (Bit 0) */ + #define R_ETHERC_EPTPC_COMMON_MIEIPR_ST_Msk (0x1UL) /*!< ST (Bitfield-Mask: 0x01) */ +/* ======================================================== ELIPPR ========================================================= */ + #define R_ETHERC_EPTPC_COMMON_ELIPPR_PLSN_Pos (24UL) /*!< PLSN (Bit 24) */ + #define R_ETHERC_EPTPC_COMMON_ELIPPR_PLSN_Msk (0x1000000UL) /*!< PLSN (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_COMMON_ELIPPR_PLSP_Pos (16UL) /*!< PLSP (Bit 16) */ + #define R_ETHERC_EPTPC_COMMON_ELIPPR_PLSP_Msk (0x10000UL) /*!< PLSP (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_COMMON_ELIPPR_CYCN5_Pos (13UL) /*!< CYCN5 (Bit 13) */ + #define R_ETHERC_EPTPC_COMMON_ELIPPR_CYCN5_Msk (0x2000UL) /*!< CYCN5 (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_COMMON_ELIPPR_CYCN4_Pos (12UL) /*!< CYCN4 (Bit 12) */ + #define R_ETHERC_EPTPC_COMMON_ELIPPR_CYCN4_Msk (0x1000UL) /*!< CYCN4 (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_COMMON_ELIPPR_CYCN3_Pos (11UL) /*!< CYCN3 (Bit 11) */ + #define R_ETHERC_EPTPC_COMMON_ELIPPR_CYCN3_Msk (0x800UL) /*!< CYCN3 (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_COMMON_ELIPPR_CYCN2_Pos (10UL) /*!< CYCN2 (Bit 10) */ + #define R_ETHERC_EPTPC_COMMON_ELIPPR_CYCN2_Msk (0x400UL) /*!< CYCN2 (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_COMMON_ELIPPR_CYCN1_Pos (9UL) /*!< CYCN1 (Bit 9) */ + #define R_ETHERC_EPTPC_COMMON_ELIPPR_CYCN1_Msk (0x200UL) /*!< CYCN1 (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_COMMON_ELIPPR_CYCN0_Pos (8UL) /*!< CYCN0 (Bit 8) */ + #define R_ETHERC_EPTPC_COMMON_ELIPPR_CYCN0_Msk (0x100UL) /*!< CYCN0 (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_COMMON_ELIPPR_CYCP5_Pos (5UL) /*!< CYCP5 (Bit 5) */ + #define R_ETHERC_EPTPC_COMMON_ELIPPR_CYCP5_Msk (0x20UL) /*!< CYCP5 (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_COMMON_ELIPPR_CYCP4_Pos (4UL) /*!< CYCP4 (Bit 4) */ + #define R_ETHERC_EPTPC_COMMON_ELIPPR_CYCP4_Msk (0x10UL) /*!< CYCP4 (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_COMMON_ELIPPR_CYCP3_Pos (3UL) /*!< CYCP3 (Bit 3) */ + #define R_ETHERC_EPTPC_COMMON_ELIPPR_CYCP3_Msk (0x8UL) /*!< CYCP3 (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_COMMON_ELIPPR_CYCP2_Pos (2UL) /*!< CYCP2 (Bit 2) */ + #define R_ETHERC_EPTPC_COMMON_ELIPPR_CYCP2_Msk (0x4UL) /*!< CYCP2 (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_COMMON_ELIPPR_CYCP1_Pos (1UL) /*!< CYCP1 (Bit 1) */ + #define R_ETHERC_EPTPC_COMMON_ELIPPR_CYCP1_Msk (0x2UL) /*!< CYCP1 (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_COMMON_ELIPPR_CYCP0_Pos (0UL) /*!< CYCP0 (Bit 0) */ + #define R_ETHERC_EPTPC_COMMON_ELIPPR_CYCP0_Msk (0x1UL) /*!< CYCP0 (Bitfield-Mask: 0x01) */ +/* ======================================================== ELIPACR ======================================================== */ + #define R_ETHERC_EPTPC_COMMON_ELIPACR_PLSN_Pos (24UL) /*!< PLSN (Bit 24) */ + #define R_ETHERC_EPTPC_COMMON_ELIPACR_PLSN_Msk (0x1000000UL) /*!< PLSN (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_COMMON_ELIPACR_PLSP_Pos (16UL) /*!< PLSP (Bit 16) */ + #define R_ETHERC_EPTPC_COMMON_ELIPACR_PLSP_Msk (0x10000UL) /*!< PLSP (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_COMMON_ELIPACR_CYCN5_Pos (13UL) /*!< CYCN5 (Bit 13) */ + #define R_ETHERC_EPTPC_COMMON_ELIPACR_CYCN5_Msk (0x2000UL) /*!< CYCN5 (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_COMMON_ELIPACR_CYCN4_Pos (12UL) /*!< CYCN4 (Bit 12) */ + #define R_ETHERC_EPTPC_COMMON_ELIPACR_CYCN4_Msk (0x1000UL) /*!< CYCN4 (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_COMMON_ELIPACR_CYCN3_Pos (11UL) /*!< CYCN3 (Bit 11) */ + #define R_ETHERC_EPTPC_COMMON_ELIPACR_CYCN3_Msk (0x800UL) /*!< CYCN3 (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_COMMON_ELIPACR_CYCN2_Pos (10UL) /*!< CYCN2 (Bit 10) */ + #define R_ETHERC_EPTPC_COMMON_ELIPACR_CYCN2_Msk (0x400UL) /*!< CYCN2 (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_COMMON_ELIPACR_CYCN1_Pos (9UL) /*!< CYCN1 (Bit 9) */ + #define R_ETHERC_EPTPC_COMMON_ELIPACR_CYCN1_Msk (0x200UL) /*!< CYCN1 (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_COMMON_ELIPACR_CYCN0_Pos (8UL) /*!< CYCN0 (Bit 8) */ + #define R_ETHERC_EPTPC_COMMON_ELIPACR_CYCN0_Msk (0x100UL) /*!< CYCN0 (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_COMMON_ELIPACR_CYCP5_Pos (5UL) /*!< CYCP5 (Bit 5) */ + #define R_ETHERC_EPTPC_COMMON_ELIPACR_CYCP5_Msk (0x20UL) /*!< CYCP5 (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_COMMON_ELIPACR_CYCP4_Pos (4UL) /*!< CYCP4 (Bit 4) */ + #define R_ETHERC_EPTPC_COMMON_ELIPACR_CYCP4_Msk (0x10UL) /*!< CYCP4 (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_COMMON_ELIPACR_CYCP3_Pos (3UL) /*!< CYCP3 (Bit 3) */ + #define R_ETHERC_EPTPC_COMMON_ELIPACR_CYCP3_Msk (0x8UL) /*!< CYCP3 (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_COMMON_ELIPACR_CYCP2_Pos (2UL) /*!< CYCP2 (Bit 2) */ + #define R_ETHERC_EPTPC_COMMON_ELIPACR_CYCP2_Msk (0x4UL) /*!< CYCP2 (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_COMMON_ELIPACR_CYCP1_Pos (1UL) /*!< CYCP1 (Bit 1) */ + #define R_ETHERC_EPTPC_COMMON_ELIPACR_CYCP1_Msk (0x2UL) /*!< CYCP1 (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_COMMON_ELIPACR_CYCP0_Pos (0UL) /*!< CYCP0 (Bit 0) */ + #define R_ETHERC_EPTPC_COMMON_ELIPACR_CYCP0_Msk (0x1UL) /*!< CYCP0 (Bitfield-Mask: 0x01) */ +/* ========================================================= STSR ========================================================== */ + #define R_ETHERC_EPTPC_COMMON_STSR_W10D_Pos (4UL) /*!< W10D (Bit 4) */ + #define R_ETHERC_EPTPC_COMMON_STSR_W10D_Msk (0x10UL) /*!< W10D (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_COMMON_STSR_SYNTOUT_Pos (3UL) /*!< SYNTOUT (Bit 3) */ + #define R_ETHERC_EPTPC_COMMON_STSR_SYNTOUT_Msk (0x8UL) /*!< SYNTOUT (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_COMMON_STSR_SYNCOUT_Pos (1UL) /*!< SYNCOUT (Bit 1) */ + #define R_ETHERC_EPTPC_COMMON_STSR_SYNCOUT_Msk (0x2UL) /*!< SYNCOUT (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_COMMON_STSR_SYNC_Pos (0UL) /*!< SYNC (Bit 0) */ + #define R_ETHERC_EPTPC_COMMON_STSR_SYNC_Msk (0x1UL) /*!< SYNC (Bitfield-Mask: 0x01) */ +/* ========================================================= STIPR ========================================================= */ + #define R_ETHERC_EPTPC_COMMON_STIPR_W10D_Pos (4UL) /*!< W10D (Bit 4) */ + #define R_ETHERC_EPTPC_COMMON_STIPR_W10D_Msk (0x10UL) /*!< W10D (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_COMMON_STIPR_SYNTOUT_Pos (3UL) /*!< SYNTOUT (Bit 3) */ + #define R_ETHERC_EPTPC_COMMON_STIPR_SYNTOUT_Msk (0x8UL) /*!< SYNTOUT (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_COMMON_STIPR_SYNCOUT_Pos (1UL) /*!< SYNCOUT (Bit 1) */ + #define R_ETHERC_EPTPC_COMMON_STIPR_SYNCOUT_Msk (0x2UL) /*!< SYNCOUT (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_COMMON_STIPR_SYNC_Pos (0UL) /*!< SYNC (Bit 0) */ + #define R_ETHERC_EPTPC_COMMON_STIPR_SYNC_Msk (0x1UL) /*!< SYNC (Bitfield-Mask: 0x01) */ +/* ========================================================= STCFR ========================================================= */ + #define R_ETHERC_EPTPC_COMMON_STCFR_STCF_Pos (0UL) /*!< STCF (Bit 0) */ + #define R_ETHERC_EPTPC_COMMON_STCFR_STCF_Msk (0x3UL) /*!< STCF (Bitfield-Mask: 0x03) */ +/* ========================================================= STMR ========================================================== */ + #define R_ETHERC_EPTPC_COMMON_STMR_ALEN1_Pos (29UL) /*!< ALEN1 (Bit 29) */ + #define R_ETHERC_EPTPC_COMMON_STMR_ALEN1_Msk (0x20000000UL) /*!< ALEN1 (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_COMMON_STMR_ALEN0_Pos (28UL) /*!< ALEN0 (Bit 28) */ + #define R_ETHERC_EPTPC_COMMON_STMR_ALEN0_Msk (0x10000000UL) /*!< ALEN0 (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_COMMON_STMR_DVTH_Pos (20UL) /*!< DVTH (Bit 20) */ + #define R_ETHERC_EPTPC_COMMON_STMR_DVTH_Msk (0xf00000UL) /*!< DVTH (Bitfield-Mask: 0x0f) */ + #define R_ETHERC_EPTPC_COMMON_STMR_SYTH_Pos (16UL) /*!< SYTH (Bit 16) */ + #define R_ETHERC_EPTPC_COMMON_STMR_SYTH_Msk (0xf0000UL) /*!< SYTH (Bitfield-Mask: 0x0f) */ + #define R_ETHERC_EPTPC_COMMON_STMR_W10S_Pos (15UL) /*!< W10S (Bit 15) */ + #define R_ETHERC_EPTPC_COMMON_STMR_W10S_Msk (0x8000UL) /*!< W10S (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_COMMON_STMR_CMOD_Pos (13UL) /*!< CMOD (Bit 13) */ + #define R_ETHERC_EPTPC_COMMON_STMR_CMOD_Msk (0x2000UL) /*!< CMOD (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_COMMON_STMR_WINT_Pos (0UL) /*!< WINT (Bit 0) */ + #define R_ETHERC_EPTPC_COMMON_STMR_WINT_Msk (0xffUL) /*!< WINT (Bitfield-Mask: 0xff) */ +/* ======================================================== SYNTOR ========================================================= */ + #define R_ETHERC_EPTPC_COMMON_SYNTOR_SYNTOR_Pos (0UL) /*!< SYNTOR (Bit 0) */ + #define R_ETHERC_EPTPC_COMMON_SYNTOR_SYNTOR_Msk (0xffffffffUL) /*!< SYNTOR (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== IPTSELR ======================================================== */ + #define R_ETHERC_EPTPC_COMMON_IPTSELR_IPTSEL5_Pos (5UL) /*!< IPTSEL5 (Bit 5) */ + #define R_ETHERC_EPTPC_COMMON_IPTSELR_IPTSEL5_Msk (0x20UL) /*!< IPTSEL5 (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_COMMON_IPTSELR_IPTSEL4_Pos (4UL) /*!< IPTSEL4 (Bit 4) */ + #define R_ETHERC_EPTPC_COMMON_IPTSELR_IPTSEL4_Msk (0x10UL) /*!< IPTSEL4 (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_COMMON_IPTSELR_IPTSEL3_Pos (3UL) /*!< IPTSEL3 (Bit 3) */ + #define R_ETHERC_EPTPC_COMMON_IPTSELR_IPTSEL3_Msk (0x8UL) /*!< IPTSEL3 (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_COMMON_IPTSELR_IPTSEL2_Pos (2UL) /*!< IPTSEL2 (Bit 2) */ + #define R_ETHERC_EPTPC_COMMON_IPTSELR_IPTSEL2_Msk (0x4UL) /*!< IPTSEL2 (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_COMMON_IPTSELR_IPTSEL1_Pos (1UL) /*!< IPTSEL1 (Bit 1) */ + #define R_ETHERC_EPTPC_COMMON_IPTSELR_IPTSEL1_Msk (0x2UL) /*!< IPTSEL1 (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_COMMON_IPTSELR_IPTSEL0_Pos (0UL) /*!< IPTSEL0 (Bit 0) */ + #define R_ETHERC_EPTPC_COMMON_IPTSELR_IPTSEL0_Msk (0x1UL) /*!< IPTSEL0 (Bitfield-Mask: 0x01) */ +/* ======================================================== MITSELR ======================================================== */ + #define R_ETHERC_EPTPC_COMMON_MITSELR_MINTEN5_Pos (5UL) /*!< MINTEN5 (Bit 5) */ + #define R_ETHERC_EPTPC_COMMON_MITSELR_MINTEN5_Msk (0x20UL) /*!< MINTEN5 (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_COMMON_MITSELR_MINTEN4_Pos (4UL) /*!< MINTEN4 (Bit 4) */ + #define R_ETHERC_EPTPC_COMMON_MITSELR_MINTEN4_Msk (0x10UL) /*!< MINTEN4 (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_COMMON_MITSELR_MINTEN3_Pos (3UL) /*!< MINTEN3 (Bit 3) */ + #define R_ETHERC_EPTPC_COMMON_MITSELR_MINTEN3_Msk (0x8UL) /*!< MINTEN3 (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_COMMON_MITSELR_MINTEN2_Pos (2UL) /*!< MINTEN2 (Bit 2) */ + #define R_ETHERC_EPTPC_COMMON_MITSELR_MINTEN2_Msk (0x4UL) /*!< MINTEN2 (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_COMMON_MITSELR_MINTEN1_Pos (1UL) /*!< MINTEN1 (Bit 1) */ + #define R_ETHERC_EPTPC_COMMON_MITSELR_MINTEN1_Msk (0x2UL) /*!< MINTEN1 (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_COMMON_MITSELR_MINTEN0_Pos (0UL) /*!< MINTEN0 (Bit 0) */ + #define R_ETHERC_EPTPC_COMMON_MITSELR_MINTEN0_Msk (0x1UL) /*!< MINTEN0 (Bitfield-Mask: 0x01) */ +/* ======================================================== ELTSELR ======================================================== */ + #define R_ETHERC_EPTPC_COMMON_ELTSELR_ELTDIS5_Pos (5UL) /*!< ELTDIS5 (Bit 5) */ + #define R_ETHERC_EPTPC_COMMON_ELTSELR_ELTDIS5_Msk (0x20UL) /*!< ELTDIS5 (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_COMMON_ELTSELR_ELTDIS4_Pos (4UL) /*!< ELTDIS4 (Bit 4) */ + #define R_ETHERC_EPTPC_COMMON_ELTSELR_ELTDIS4_Msk (0x10UL) /*!< ELTDIS4 (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_COMMON_ELTSELR_ELTDIS3_Pos (3UL) /*!< ELTDIS3 (Bit 3) */ + #define R_ETHERC_EPTPC_COMMON_ELTSELR_ELTDIS3_Msk (0x8UL) /*!< ELTDIS3 (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_COMMON_ELTSELR_ELTDIS2_Pos (2UL) /*!< ELTDIS2 (Bit 2) */ + #define R_ETHERC_EPTPC_COMMON_ELTSELR_ELTDIS2_Msk (0x4UL) /*!< ELTDIS2 (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_COMMON_ELTSELR_ELTDIS1_Pos (1UL) /*!< ELTDIS1 (Bit 1) */ + #define R_ETHERC_EPTPC_COMMON_ELTSELR_ELTDIS1_Msk (0x2UL) /*!< ELTDIS1 (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_COMMON_ELTSELR_ELTDIS0_Pos (0UL) /*!< ELTDIS0 (Bit 0) */ + #define R_ETHERC_EPTPC_COMMON_ELTSELR_ELTDIS0_Msk (0x1UL) /*!< ELTDIS0 (Bitfield-Mask: 0x01) */ +/* ======================================================= STCHSELR ======================================================== */ + #define R_ETHERC_EPTPC_COMMON_STCHSELR_SYSEL_Pos (0UL) /*!< SYSEL (Bit 0) */ + #define R_ETHERC_EPTPC_COMMON_STCHSELR_SYSEL_Msk (0x1UL) /*!< SYSEL (Bitfield-Mask: 0x01) */ +/* ======================================================= SYNSTARTR ======================================================= */ + #define R_ETHERC_EPTPC_COMMON_SYNSTARTR_STR_Pos (0UL) /*!< STR (Bit 0) */ + #define R_ETHERC_EPTPC_COMMON_SYNSTARTR_STR_Msk (0x1UL) /*!< STR (Bitfield-Mask: 0x01) */ +/* ======================================================== LCIVLDR ======================================================== */ + #define R_ETHERC_EPTPC_COMMON_LCIVLDR_LOAD_Pos (0UL) /*!< LOAD (Bit 0) */ + #define R_ETHERC_EPTPC_COMMON_LCIVLDR_LOAD_Msk (0x1UL) /*!< LOAD (Bitfield-Mask: 0x01) */ +/* ======================================================= SYNTDARU ======================================================== */ + #define R_ETHERC_EPTPC_COMMON_SYNTDARU_SYNTDARU_Pos (0UL) /*!< SYNTDARU (Bit 0) */ + #define R_ETHERC_EPTPC_COMMON_SYNTDARU_SYNTDARU_Msk (0xffffffffUL) /*!< SYNTDARU (Bitfield-Mask: 0xffffffff) */ +/* ======================================================= SYNTDARL ======================================================== */ + #define R_ETHERC_EPTPC_COMMON_SYNTDARL_SYNTDARL_Pos (0UL) /*!< SYNTDARL (Bit 0) */ + #define R_ETHERC_EPTPC_COMMON_SYNTDARL_SYNTDARL_Msk (0xffffffffUL) /*!< SYNTDARL (Bitfield-Mask: 0xffffffff) */ +/* ======================================================= SYNTDBRU ======================================================== */ + #define R_ETHERC_EPTPC_COMMON_SYNTDBRU_SYNTDBRU_Pos (0UL) /*!< SYNTDBRU (Bit 0) */ + #define R_ETHERC_EPTPC_COMMON_SYNTDBRU_SYNTDBRU_Msk (0xffffffffUL) /*!< SYNTDBRU (Bitfield-Mask: 0xffffffff) */ +/* ======================================================= SYNTDBRL ======================================================== */ + #define R_ETHERC_EPTPC_COMMON_SYNTDBRL_SYNTDBRL_Pos (0UL) /*!< SYNTDBRL (Bit 0) */ + #define R_ETHERC_EPTPC_COMMON_SYNTDBRL_SYNTDBRL_Msk (0xffffffffUL) /*!< SYNTDBRL (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== LCIVRU ========================================================= */ + #define R_ETHERC_EPTPC_COMMON_LCIVRU_LCIVRU_Pos (0UL) /*!< LCIVRU (Bit 0) */ + #define R_ETHERC_EPTPC_COMMON_LCIVRU_LCIVRU_Msk (0xffffUL) /*!< LCIVRU (Bitfield-Mask: 0xffff) */ +/* ======================================================== LCIVRM ========================================================= */ + #define R_ETHERC_EPTPC_COMMON_LCIVRM_LCIVRM_Pos (0UL) /*!< LCIVRM (Bit 0) */ + #define R_ETHERC_EPTPC_COMMON_LCIVRM_LCIVRM_Msk (0xffffffffUL) /*!< LCIVRM (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== LCIVRL ========================================================= */ + #define R_ETHERC_EPTPC_COMMON_LCIVRL_LCIVRL_Pos (0UL) /*!< LCIVRL (Bit 0) */ + #define R_ETHERC_EPTPC_COMMON_LCIVRL_LCIVRL_Msk (0xffffffffUL) /*!< LCIVRL (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== GETW10R ======================================================== */ + #define R_ETHERC_EPTPC_COMMON_GETW10R_GW10_Pos (0UL) /*!< GW10 (Bit 0) */ + #define R_ETHERC_EPTPC_COMMON_GETW10R_GW10_Msk (0x1UL) /*!< GW10 (Bitfield-Mask: 0x01) */ +/* ======================================================= PLIMITRU ======================================================== */ + #define R_ETHERC_EPTPC_COMMON_PLIMITRU_PLIMITRU_Pos (0UL) /*!< PLIMITRU (Bit 0) */ + #define R_ETHERC_EPTPC_COMMON_PLIMITRU_PLIMITRU_Msk (0x7fffffffUL) /*!< PLIMITRU (Bitfield-Mask: 0x7fffffff) */ +/* ======================================================= PLIMITRM ======================================================== */ + #define R_ETHERC_EPTPC_COMMON_PLIMITRM_PLIMITRM_Pos (0UL) /*!< PLIMITRM (Bit 0) */ + #define R_ETHERC_EPTPC_COMMON_PLIMITRM_PLIMITRM_Msk (0xffffffffUL) /*!< PLIMITRM (Bitfield-Mask: 0xffffffff) */ +/* ======================================================= PLIMITRL ======================================================== */ + #define R_ETHERC_EPTPC_COMMON_PLIMITRL_PLIMITRL_Pos (0UL) /*!< PLIMITRL (Bit 0) */ + #define R_ETHERC_EPTPC_COMMON_PLIMITRL_PLIMITRL_Msk (0xffffffffUL) /*!< PLIMITRL (Bitfield-Mask: 0xffffffff) */ +/* ======================================================= MLIMITRU ======================================================== */ + #define R_ETHERC_EPTPC_COMMON_MLIMITRU_MLIMITRU_Pos (0UL) /*!< MLIMITRU (Bit 0) */ + #define R_ETHERC_EPTPC_COMMON_MLIMITRU_MLIMITRU_Msk (0x7fffffffUL) /*!< MLIMITRU (Bitfield-Mask: 0x7fffffff) */ +/* ======================================================= MLIMITRM ======================================================== */ + #define R_ETHERC_EPTPC_COMMON_MLIMITRM_MLIMITRM_Pos (0UL) /*!< MLIMITRM (Bit 0) */ + #define R_ETHERC_EPTPC_COMMON_MLIMITRM_MLIMITRM_Msk (0xffffffffUL) /*!< MLIMITRM (Bitfield-Mask: 0xffffffff) */ +/* ======================================================= MLIMITRL ======================================================== */ + #define R_ETHERC_EPTPC_COMMON_MLIMITRL_MLIMITRL_Pos (0UL) /*!< MLIMITRL (Bit 0) */ + #define R_ETHERC_EPTPC_COMMON_MLIMITRL_MLIMITRL_Msk (0xffffffffUL) /*!< MLIMITRL (Bitfield-Mask: 0xffffffff) */ +/* ======================================================= GETINFOR ======================================================== */ + #define R_ETHERC_EPTPC_COMMON_GETINFOR_INFO_Pos (0UL) /*!< INFO (Bit 0) */ + #define R_ETHERC_EPTPC_COMMON_GETINFOR_INFO_Msk (0x1UL) /*!< INFO (Bitfield-Mask: 0x01) */ +/* ======================================================== LCCVRU ========================================================= */ + #define R_ETHERC_EPTPC_COMMON_LCCVRU_LCCVRU_Pos (0UL) /*!< LCCVRU (Bit 0) */ + #define R_ETHERC_EPTPC_COMMON_LCCVRU_LCCVRU_Msk (0xffffUL) /*!< LCCVRU (Bitfield-Mask: 0xffff) */ +/* ======================================================== LCCVRM ========================================================= */ + #define R_ETHERC_EPTPC_COMMON_LCCVRM_LCCVRM_Pos (0UL) /*!< LCCVRM (Bit 0) */ + #define R_ETHERC_EPTPC_COMMON_LCCVRM_LCCVRM_Msk (0xffffffffUL) /*!< LCCVRM (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== LCCVRL ========================================================= */ + #define R_ETHERC_EPTPC_COMMON_LCCVRL_LCCVRL_Pos (0UL) /*!< LCCVRL (Bit 0) */ + #define R_ETHERC_EPTPC_COMMON_LCCVRL_LCCVRL_Msk (0xffffffffUL) /*!< LCCVRL (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== PW10VRU ======================================================== */ + #define R_ETHERC_EPTPC_COMMON_PW10VRU_PW10VRU_Pos (0UL) /*!< PW10VRU (Bit 0) */ + #define R_ETHERC_EPTPC_COMMON_PW10VRU_PW10VRU_Msk (0xffffffffUL) /*!< PW10VRU (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== PW10VRM ======================================================== */ + #define R_ETHERC_EPTPC_COMMON_PW10VRM_PW10VRM_Pos (0UL) /*!< PW10VRM (Bit 0) */ + #define R_ETHERC_EPTPC_COMMON_PW10VRM_PW10VRM_Msk (0xffffffffUL) /*!< PW10VRM (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== PW10VRL ======================================================== */ + #define R_ETHERC_EPTPC_COMMON_PW10VRL_PW10VRL_Pos (0UL) /*!< PW10VRL (Bit 0) */ + #define R_ETHERC_EPTPC_COMMON_PW10VRL_PW10VRL_Msk (0xffffffffUL) /*!< PW10VRL (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== MW10RU ========================================================= */ + #define R_ETHERC_EPTPC_COMMON_MW10RU_MW10RU_Pos (0UL) /*!< MW10RU (Bit 0) */ + #define R_ETHERC_EPTPC_COMMON_MW10RU_MW10RU_Msk (0xffffffffUL) /*!< MW10RU (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== MW10RM ========================================================= */ + #define R_ETHERC_EPTPC_COMMON_MW10RM_MW10RM_Pos (0UL) /*!< MW10RM (Bit 0) */ + #define R_ETHERC_EPTPC_COMMON_MW10RM_MW10RM_Msk (0xffffffffUL) /*!< MW10RM (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== MW10RL ========================================================= */ + #define R_ETHERC_EPTPC_COMMON_MW10RL_MW10RL_Pos (0UL) /*!< MW10RL (Bit 0) */ + #define R_ETHERC_EPTPC_COMMON_MW10RL_MW10RL_Msk (0xffffffffUL) /*!< MW10RL (Bitfield-Mask: 0xffffffff) */ +/* ======================================================= TMSTARTR ======================================================== */ + #define R_ETHERC_EPTPC_COMMON_TMSTARTR_EN5_Pos (5UL) /*!< EN5 (Bit 5) */ + #define R_ETHERC_EPTPC_COMMON_TMSTARTR_EN5_Msk (0x20UL) /*!< EN5 (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_COMMON_TMSTARTR_EN4_Pos (4UL) /*!< EN4 (Bit 4) */ + #define R_ETHERC_EPTPC_COMMON_TMSTARTR_EN4_Msk (0x10UL) /*!< EN4 (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_COMMON_TMSTARTR_EN3_Pos (3UL) /*!< EN3 (Bit 3) */ + #define R_ETHERC_EPTPC_COMMON_TMSTARTR_EN3_Msk (0x8UL) /*!< EN3 (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_COMMON_TMSTARTR_EN2_Pos (2UL) /*!< EN2 (Bit 2) */ + #define R_ETHERC_EPTPC_COMMON_TMSTARTR_EN2_Msk (0x4UL) /*!< EN2 (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_COMMON_TMSTARTR_EN1_Pos (1UL) /*!< EN1 (Bit 1) */ + #define R_ETHERC_EPTPC_COMMON_TMSTARTR_EN1_Msk (0x2UL) /*!< EN1 (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_COMMON_TMSTARTR_EN0_Pos (0UL) /*!< EN0 (Bit 0) */ + #define R_ETHERC_EPTPC_COMMON_TMSTARTR_EN0_Msk (0x1UL) /*!< EN0 (Bitfield-Mask: 0x01) */ +/* ========================================================= PRSR ========================================================== */ + #define R_ETHERC_EPTPC_COMMON_PRSR_URE1_Pos (29UL) /*!< URE1 (Bit 29) */ + #define R_ETHERC_EPTPC_COMMON_PRSR_URE1_Msk (0x20000000UL) /*!< URE1 (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_COMMON_PRSR_URE0_Pos (28UL) /*!< URE0 (Bit 28) */ + #define R_ETHERC_EPTPC_COMMON_PRSR_URE0_Msk (0x10000000UL) /*!< URE0 (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_COMMON_PRSR_MACE_Pos (8UL) /*!< MACE (Bit 8) */ + #define R_ETHERC_EPTPC_COMMON_PRSR_MACE_Msk (0x100UL) /*!< MACE (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_COMMON_PRSR_OVRE3_Pos (3UL) /*!< OVRE3 (Bit 3) */ + #define R_ETHERC_EPTPC_COMMON_PRSR_OVRE3_Msk (0x8UL) /*!< OVRE3 (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_COMMON_PRSR_OVRE2_Pos (2UL) /*!< OVRE2 (Bit 2) */ + #define R_ETHERC_EPTPC_COMMON_PRSR_OVRE2_Msk (0x4UL) /*!< OVRE2 (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_COMMON_PRSR_OVRE1_Pos (1UL) /*!< OVRE1 (Bit 1) */ + #define R_ETHERC_EPTPC_COMMON_PRSR_OVRE1_Msk (0x2UL) /*!< OVRE1 (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_COMMON_PRSR_OVRE0_Pos (0UL) /*!< OVRE0 (Bit 0) */ + #define R_ETHERC_EPTPC_COMMON_PRSR_OVRE0_Msk (0x1UL) /*!< OVRE0 (Bitfield-Mask: 0x01) */ +/* ========================================================= PRIPR ========================================================= */ + #define R_ETHERC_EPTPC_COMMON_PRIPR_URE1_Pos (29UL) /*!< URE1 (Bit 29) */ + #define R_ETHERC_EPTPC_COMMON_PRIPR_URE1_Msk (0x20000000UL) /*!< URE1 (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_COMMON_PRIPR_URE0_Pos (28UL) /*!< URE0 (Bit 28) */ + #define R_ETHERC_EPTPC_COMMON_PRIPR_URE0_Msk (0x10000000UL) /*!< URE0 (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_COMMON_PRIPR_MACE_Pos (8UL) /*!< MACE (Bit 8) */ + #define R_ETHERC_EPTPC_COMMON_PRIPR_MACE_Msk (0x100UL) /*!< MACE (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_COMMON_PRIPR_OVRE3_Pos (3UL) /*!< OVRE3 (Bit 3) */ + #define R_ETHERC_EPTPC_COMMON_PRIPR_OVRE3_Msk (0x8UL) /*!< OVRE3 (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_COMMON_PRIPR_OVRE2_Pos (2UL) /*!< OVRE2 (Bit 2) */ + #define R_ETHERC_EPTPC_COMMON_PRIPR_OVRE2_Msk (0x4UL) /*!< OVRE2 (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_COMMON_PRIPR_OVRE1_Pos (1UL) /*!< OVRE1 (Bit 1) */ + #define R_ETHERC_EPTPC_COMMON_PRIPR_OVRE1_Msk (0x2UL) /*!< OVRE1 (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_COMMON_PRIPR_OVRE0_Pos (0UL) /*!< OVRE0 (Bit 0) */ + #define R_ETHERC_EPTPC_COMMON_PRIPR_OVRE0_Msk (0x1UL) /*!< OVRE0 (Bitfield-Mask: 0x01) */ +/* ======================================================== TRNDISR ======================================================== */ + #define R_ETHERC_EPTPC_COMMON_TRNDISR_TDIS_Pos (0UL) /*!< TDIS (Bit 0) */ + #define R_ETHERC_EPTPC_COMMON_TRNDISR_TDIS_Msk (0x3UL) /*!< TDIS (Bitfield-Mask: 0x03) */ +/* ========================================================= TRNMR ========================================================= */ + #define R_ETHERC_EPTPC_COMMON_TRNMR_FWD1_Pos (9UL) /*!< FWD1 (Bit 9) */ + #define R_ETHERC_EPTPC_COMMON_TRNMR_FWD1_Msk (0x200UL) /*!< FWD1 (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_COMMON_TRNMR_FWD0_Pos (8UL) /*!< FWD0 (Bit 8) */ + #define R_ETHERC_EPTPC_COMMON_TRNMR_FWD0_Msk (0x100UL) /*!< FWD0 (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EPTPC_COMMON_TRNMR_MOD_Pos (0UL) /*!< MOD (Bit 0) */ + #define R_ETHERC_EPTPC_COMMON_TRNMR_MOD_Msk (0x1UL) /*!< MOD (Bitfield-Mask: 0x01) */ +/* ======================================================= TRNCTTDR ======================================================== */ + #define R_ETHERC_EPTPC_COMMON_TRNCTTDR_THVAL_Pos (0UL) /*!< THVAL (Bit 0) */ + #define R_ETHERC_EPTPC_COMMON_TRNCTTDR_THVAL_Msk (0x7ffUL) /*!< THVAL (Bitfield-Mask: 0x7ff) */ + +/* =========================================================================================================================== */ +/* ================ 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) */ + #define R_FACI_HP_FASTAT_ECRCT_Pos (0UL) /*!< ECRCT (Bit 0) */ + #define R_FACI_HP_FASTAT_ECRCT_Msk (0x1UL) /*!< ECRCT (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) */ + #define R_FACI_HP_FAEINT_ECRCTIE_Pos (0UL) /*!< ECRCTIE (Bit 0) */ + #define R_FACI_HP_FAEINT_ECRCTIE_Msk (0x1UL) /*!< ECRCTIE (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) */ +/* ======================================================== FPESTAT ======================================================== */ + #define R_FACI_HP_FPESTAT_PEERRST_Pos (0UL) /*!< PEERRST (Bit 0) */ + #define R_FACI_HP_FPESTAT_PEERRST_Msk (0xffUL) /*!< PEERRST (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_FACI_LP ================ */ +/* =========================================================================================================================== */ + +/* ======================================================== DFLCTL ========================================================= */ +/* ========================================================= FPMCR ========================================================= */ + #define R_FACI_LP_FPMCR_FMS2_Pos (7UL) /*!< FMS2 (Bit 7) */ + #define R_FACI_LP_FPMCR_FMS2_Msk (0x80UL) /*!< FMS2 (Bitfield-Mask: 0x01) */ + #define R_FACI_LP_FPMCR_VLPE_Pos (6UL) /*!< VLPE (Bit 6) */ + #define R_FACI_LP_FPMCR_VLPE_Msk (0x40UL) /*!< VLPE (Bitfield-Mask: 0x01) */ + #define R_FACI_LP_FPMCR_FMS1_Pos (4UL) /*!< FMS1 (Bit 4) */ + #define R_FACI_LP_FPMCR_FMS1_Msk (0x10UL) /*!< FMS1 (Bitfield-Mask: 0x01) */ + #define R_FACI_LP_FPMCR_RPDIS_Pos (3UL) /*!< RPDIS (Bit 3) */ + #define R_FACI_LP_FPMCR_RPDIS_Msk (0x8UL) /*!< RPDIS (Bitfield-Mask: 0x01) */ + #define R_FACI_LP_FPMCR_FMS0_Pos (1UL) /*!< FMS0 (Bit 1) */ + #define R_FACI_LP_FPMCR_FMS0_Msk (0x2UL) /*!< FMS0 (Bitfield-Mask: 0x01) */ +/* ========================================================= FASR ========================================================== */ + #define R_FACI_LP_FASR_EXS_Pos (0UL) /*!< EXS (Bit 0) */ + #define R_FACI_LP_FASR_EXS_Msk (0x1UL) /*!< EXS (Bitfield-Mask: 0x01) */ +/* ========================================================= FSARL ========================================================= */ + #define R_FACI_LP_FSARL_FSAR15_0_Pos (0UL) /*!< FSAR15_0 (Bit 0) */ + #define R_FACI_LP_FSARL_FSAR15_0_Msk (0xffffUL) /*!< FSAR15_0 (Bitfield-Mask: 0xffff) */ +/* ========================================================= FSARH ========================================================= */ + #define R_FACI_LP_FSARH_FSAR31_25_Pos (9UL) /*!< FSAR31_25 (Bit 9) */ + #define R_FACI_LP_FSARH_FSAR31_25_Msk (0xfe00UL) /*!< FSAR31_25 (Bitfield-Mask: 0x7f) */ + #define R_FACI_LP_FSARH_FSAR20_16_Pos (0UL) /*!< FSAR20_16 (Bit 0) */ + #define R_FACI_LP_FSARH_FSAR20_16_Msk (0x1fUL) /*!< FSAR20_16 (Bitfield-Mask: 0x1f) */ +/* ========================================================== FCR ========================================================== */ + #define R_FACI_LP_FCR_OPST_Pos (7UL) /*!< OPST (Bit 7) */ + #define R_FACI_LP_FCR_OPST_Msk (0x80UL) /*!< OPST (Bitfield-Mask: 0x01) */ + #define R_FACI_LP_FCR_STOP_Pos (6UL) /*!< STOP (Bit 6) */ + #define R_FACI_LP_FCR_STOP_Msk (0x40UL) /*!< STOP (Bitfield-Mask: 0x01) */ + #define R_FACI_LP_FCR_DRC_Pos (4UL) /*!< DRC (Bit 4) */ + #define R_FACI_LP_FCR_DRC_Msk (0x10UL) /*!< DRC (Bitfield-Mask: 0x01) */ + #define R_FACI_LP_FCR_CMD_Pos (0UL) /*!< CMD (Bit 0) */ + #define R_FACI_LP_FCR_CMD_Msk (0xfUL) /*!< CMD (Bitfield-Mask: 0x0f) */ +/* ========================================================= FEARL ========================================================= */ + #define R_FACI_LP_FEARL_FEAR15_0_Pos (0UL) /*!< FEAR15_0 (Bit 0) */ + #define R_FACI_LP_FEARL_FEAR15_0_Msk (0xffffUL) /*!< FEAR15_0 (Bitfield-Mask: 0xffff) */ +/* ========================================================= FEARH ========================================================= */ + #define R_FACI_LP_FEARH_FEAR31_25_Pos (9UL) /*!< FEAR31_25 (Bit 9) */ + #define R_FACI_LP_FEARH_FEAR31_25_Msk (0xfe00UL) /*!< FEAR31_25 (Bitfield-Mask: 0x7f) */ + #define R_FACI_LP_FEARH_FEAR20_16_Pos (0UL) /*!< FEAR20_16 (Bit 0) */ + #define R_FACI_LP_FEARH_FEAR20_16_Msk (0x1fUL) /*!< FEAR20_16 (Bitfield-Mask: 0x1f) */ +/* ======================================================== FRESETR ======================================================== */ + #define R_FACI_LP_FRESETR_FRESET_Pos (0UL) /*!< FRESET (Bit 0) */ + #define R_FACI_LP_FRESETR_FRESET_Msk (0x1UL) /*!< FRESET (Bitfield-Mask: 0x01) */ +/* ======================================================= FSTATR00 ======================================================== */ + #define R_FACI_LP_FSTATR00_EILGLERR_Pos (5UL) /*!< EILGLERR (Bit 5) */ + #define R_FACI_LP_FSTATR00_EILGLERR_Msk (0x20UL) /*!< EILGLERR (Bitfield-Mask: 0x01) */ + #define R_FACI_LP_FSTATR00_ILGLERR_Pos (4UL) /*!< ILGLERR (Bit 4) */ + #define R_FACI_LP_FSTATR00_ILGLERR_Msk (0x10UL) /*!< ILGLERR (Bitfield-Mask: 0x01) */ + #define R_FACI_LP_FSTATR00_BCERR0_Pos (3UL) /*!< BCERR0 (Bit 3) */ + #define R_FACI_LP_FSTATR00_BCERR0_Msk (0x8UL) /*!< BCERR0 (Bitfield-Mask: 0x01) */ + #define R_FACI_LP_FSTATR00_PRGERR01_Pos (2UL) /*!< PRGERR01 (Bit 2) */ + #define R_FACI_LP_FSTATR00_PRGERR01_Msk (0x4UL) /*!< PRGERR01 (Bitfield-Mask: 0x01) */ + #define R_FACI_LP_FSTATR00_PRGERR0_Pos (1UL) /*!< PRGERR0 (Bit 1) */ + #define R_FACI_LP_FSTATR00_PRGERR0_Msk (0x2UL) /*!< PRGERR0 (Bitfield-Mask: 0x01) */ + #define R_FACI_LP_FSTATR00_ERERR0_Pos (0UL) /*!< ERERR0 (Bit 0) */ + #define R_FACI_LP_FSTATR00_ERERR0_Msk (0x1UL) /*!< ERERR0 (Bitfield-Mask: 0x01) */ +/* ======================================================== FSTATR1 ======================================================== */ + #define R_FACI_LP_FSTATR1_EXRDY_Pos (7UL) /*!< EXRDY (Bit 7) */ + #define R_FACI_LP_FSTATR1_EXRDY_Msk (0x80UL) /*!< EXRDY (Bitfield-Mask: 0x01) */ + #define R_FACI_LP_FSTATR1_FRDY_Pos (6UL) /*!< FRDY (Bit 6) */ + #define R_FACI_LP_FSTATR1_FRDY_Msk (0x40UL) /*!< FRDY (Bitfield-Mask: 0x01) */ + #define R_FACI_LP_FSTATR1_DRRDY_Pos (1UL) /*!< DRRDY (Bit 1) */ + #define R_FACI_LP_FSTATR1_DRRDY_Msk (0x2UL) /*!< DRRDY (Bitfield-Mask: 0x01) */ +/* ========================================================= FWBL0 ========================================================= */ + #define R_FACI_LP_FWBL0_WDATA_Pos (0UL) /*!< WDATA (Bit 0) */ + #define R_FACI_LP_FWBL0_WDATA_Msk (0xffffUL) /*!< WDATA (Bitfield-Mask: 0xffff) */ +/* ========================================================= FWBH0 ========================================================= */ + #define R_FACI_LP_FWBH0_WDATA_Pos (0UL) /*!< WDATA (Bit 0) */ + #define R_FACI_LP_FWBH0_WDATA_Msk (0xffffUL) /*!< WDATA (Bitfield-Mask: 0xffff) */ +/* ======================================================= FSTATR01 ======================================================== */ + #define R_FACI_LP_FSTATR01_BCERR1_Pos (3UL) /*!< BCERR1 (Bit 3) */ + #define R_FACI_LP_FSTATR01_BCERR1_Msk (0x8UL) /*!< BCERR1 (Bitfield-Mask: 0x01) */ + #define R_FACI_LP_FSTATR01_PRGERR1_Pos (1UL) /*!< PRGERR1 (Bit 1) */ + #define R_FACI_LP_FSTATR01_PRGERR1_Msk (0x2UL) /*!< PRGERR1 (Bitfield-Mask: 0x01) */ + #define R_FACI_LP_FSTATR01_ERERR1_Pos (0UL) /*!< ERERR1 (Bit 0) */ + #define R_FACI_LP_FSTATR01_ERERR1_Msk (0x1UL) /*!< ERERR1 (Bitfield-Mask: 0x01) */ +/* ========================================================= FWBL1 ========================================================= */ + #define R_FACI_LP_FWBL1_WDATA47_32_Pos (0UL) /*!< WDATA47_32 (Bit 0) */ + #define R_FACI_LP_FWBL1_WDATA47_32_Msk (0xffffUL) /*!< WDATA47_32 (Bitfield-Mask: 0xffff) */ +/* ========================================================= FWBH1 ========================================================= */ + #define R_FACI_LP_FWBH1_WDATA63_48_Pos (0UL) /*!< WDATA63_48 (Bit 0) */ + #define R_FACI_LP_FWBH1_WDATA63_48_Msk (0xffffUL) /*!< WDATA63_48 (Bitfield-Mask: 0xffff) */ +/* ========================================================= FRBL1 ========================================================= */ + #define R_FACI_LP_FRBL1_RDATA47_32_Pos (0UL) /*!< RDATA47_32 (Bit 0) */ + #define R_FACI_LP_FRBL1_RDATA47_32_Msk (0xffffUL) /*!< RDATA47_32 (Bitfield-Mask: 0xffff) */ +/* ========================================================= FRBH1 ========================================================= */ + #define R_FACI_LP_FRBH1_RDATA63_48_Pos (0UL) /*!< RDATA63_48 (Bit 0) */ + #define R_FACI_LP_FRBH1_RDATA63_48_Msk (0xffffUL) /*!< RDATA63_48 (Bitfield-Mask: 0xffff) */ +/* ========================================================== FPR ========================================================== */ + #define R_FACI_LP_FPR_FPR_Pos (0UL) /*!< FPR (Bit 0) */ + #define R_FACI_LP_FPR_FPR_Msk (0xffUL) /*!< FPR (Bitfield-Mask: 0xff) */ +/* ========================================================= FPSR ========================================================== */ + #define R_FACI_LP_FPSR_PERR_Pos (0UL) /*!< PERR (Bit 0) */ + #define R_FACI_LP_FPSR_PERR_Msk (0x1UL) /*!< PERR (Bitfield-Mask: 0x01) */ +/* ========================================================= FRBL0 ========================================================= */ + #define R_FACI_LP_FRBL0_RDATA_Pos (0UL) /*!< RDATA (Bit 0) */ + #define R_FACI_LP_FRBL0_RDATA_Msk (0xffffUL) /*!< RDATA (Bitfield-Mask: 0xffff) */ +/* ========================================================= FRBH0 ========================================================= */ + #define R_FACI_LP_FRBH0_RDATA_Pos (0UL) /*!< RDATA (Bit 0) */ + #define R_FACI_LP_FRBH0_RDATA_Msk (0xffffUL) /*!< RDATA (Bitfield-Mask: 0xffff) */ +/* ========================================================= FSCMR ========================================================= */ + #define R_FACI_LP_FSCMR_FSPR_Pos (14UL) /*!< FSPR (Bit 14) */ + #define R_FACI_LP_FSCMR_FSPR_Msk (0x4000UL) /*!< FSPR (Bitfield-Mask: 0x01) */ + #define R_FACI_LP_FSCMR_SASMF_Pos (8UL) /*!< SASMF (Bit 8) */ + #define R_FACI_LP_FSCMR_SASMF_Msk (0x100UL) /*!< SASMF (Bitfield-Mask: 0x01) */ +/* ======================================================== FAWSMR ========================================================= */ + #define R_FACI_LP_FAWSMR_FAWS_Pos (0UL) /*!< FAWS (Bit 0) */ + #define R_FACI_LP_FAWSMR_FAWS_Msk (0xfffUL) /*!< FAWS (Bitfield-Mask: 0xfff) */ +/* ======================================================== FAWEMR ========================================================= */ + #define R_FACI_LP_FAWEMR_FAWE_Pos (0UL) /*!< FAWE (Bit 0) */ + #define R_FACI_LP_FAWEMR_FAWE_Msk (0xfffUL) /*!< FAWE (Bitfield-Mask: 0xfff) */ +/* ========================================================= FISR ========================================================== */ + #define R_FACI_LP_FISR_SAS_Pos (6UL) /*!< SAS (Bit 6) */ + #define R_FACI_LP_FISR_SAS_Msk (0xc0UL) /*!< SAS (Bitfield-Mask: 0x03) */ + #define R_FACI_LP_FISR_PCKA_Pos (0UL) /*!< PCKA (Bit 0) */ + #define R_FACI_LP_FISR_PCKA_Msk (0x3fUL) /*!< PCKA (Bitfield-Mask: 0x3f) */ +/* ========================================================= FEXCR ========================================================= */ + #define R_FACI_LP_FEXCR_OPST_Pos (7UL) /*!< OPST (Bit 7) */ + #define R_FACI_LP_FEXCR_OPST_Msk (0x80UL) /*!< OPST (Bitfield-Mask: 0x01) */ + #define R_FACI_LP_FEXCR_CMD_Pos (0UL) /*!< CMD (Bit 0) */ + #define R_FACI_LP_FEXCR_CMD_Msk (0x7UL) /*!< CMD (Bitfield-Mask: 0x07) */ +/* ========================================================= FEAML ========================================================= */ + #define R_FACI_LP_FEAML_FEAM_Pos (0UL) /*!< FEAM (Bit 0) */ + #define R_FACI_LP_FEAML_FEAM_Msk (0xffffUL) /*!< FEAM (Bitfield-Mask: 0xffff) */ +/* ========================================================= FEAMH ========================================================= */ + #define R_FACI_LP_FEAMH_FEAM_Pos (0UL) /*!< FEAM (Bit 0) */ + #define R_FACI_LP_FEAMH_FEAM_Msk (0xffffUL) /*!< FEAM (Bitfield-Mask: 0xffff) */ +/* ======================================================== FSTATR2 ======================================================== */ + #define R_FACI_LP_FSTATR2_EILGLERR_Pos (5UL) /*!< EILGLERR (Bit 5) */ + #define R_FACI_LP_FSTATR2_EILGLERR_Msk (0x20UL) /*!< EILGLERR (Bitfield-Mask: 0x01) */ + #define R_FACI_LP_FSTATR2_ILGLERR_Pos (4UL) /*!< ILGLERR (Bit 4) */ + #define R_FACI_LP_FSTATR2_ILGLERR_Msk (0x10UL) /*!< ILGLERR (Bitfield-Mask: 0x01) */ + #define R_FACI_LP_FSTATR2_BCERR_Pos (3UL) /*!< BCERR (Bit 3) */ + #define R_FACI_LP_FSTATR2_BCERR_Msk (0x8UL) /*!< BCERR (Bitfield-Mask: 0x01) */ + #define R_FACI_LP_FSTATR2_PRGERR01_Pos (2UL) /*!< PRGERR01 (Bit 2) */ + #define R_FACI_LP_FSTATR2_PRGERR01_Msk (0x4UL) /*!< PRGERR01 (Bitfield-Mask: 0x01) */ + #define R_FACI_LP_FSTATR2_PRGERR1_Pos (1UL) /*!< PRGERR1 (Bit 1) */ + #define R_FACI_LP_FSTATR2_PRGERR1_Msk (0x2UL) /*!< PRGERR1 (Bitfield-Mask: 0x01) */ + #define R_FACI_LP_FSTATR2_ERERR_Pos (0UL) /*!< ERERR (Bit 0) */ + #define R_FACI_LP_FSTATR2_ERERR_Msk (0x1UL) /*!< ERERR (Bitfield-Mask: 0x01) */ +/* ====================================================== FENTRYR_MF4 ====================================================== */ +/* ======================================================== FENTRYR ======================================================== */ +/* ======================================================== FLWAITR ======================================================== */ +/* ========================================================= PFBER ========================================================= */ + +/* =========================================================================================================================== */ +/* ================ R_CTSUTRIM ================ */ +/* =========================================================================================================================== */ + +/* ======================================================= CTSUTRIMA ======================================================= */ + #define R_CTSUTRIM_CTSUTRIMA_SUADJTRIM_Pos (24UL) /*!< SUADJTRIM (Bit 24) */ + #define R_CTSUTRIM_CTSUTRIMA_SUADJTRIM_Msk (0xff000000UL) /*!< SUADJTRIM (Bitfield-Mask: 0xff) */ + #define R_CTSUTRIM_CTSUTRIMA_SUADJD_Pos (16UL) /*!< SUADJD (Bit 16) */ + #define R_CTSUTRIM_CTSUTRIMA_SUADJD_Msk (0xff0000UL) /*!< SUADJD (Bitfield-Mask: 0xff) */ + #define R_CTSUTRIM_CTSUTRIMA_DACTRIM_Pos (8UL) /*!< DACTRIM (Bit 8) */ + #define R_CTSUTRIM_CTSUTRIMA_DACTRIM_Msk (0xff00UL) /*!< DACTRIM (Bitfield-Mask: 0xff) */ + #define R_CTSUTRIM_CTSUTRIMA_RTRIM_Pos (0UL) /*!< RTRIM (Bit 0) */ + #define R_CTSUTRIM_CTSUTRIMA_RTRIM_Msk (0xffUL) /*!< RTRIM (Bitfield-Mask: 0xff) */ +/* ======================================================= CTSUTRIMB ======================================================= */ + #define R_CTSUTRIM_CTSUTRIMB_TRESULT3_Pos (24UL) /*!< TRESULT3 (Bit 24) */ + #define R_CTSUTRIM_CTSUTRIMB_TRESULT3_Msk (0xff000000UL) /*!< TRESULT3 (Bitfield-Mask: 0xff) */ + #define R_CTSUTRIM_CTSUTRIMB_TRESULT2_Pos (16UL) /*!< TRESULT2 (Bit 16) */ + #define R_CTSUTRIM_CTSUTRIMB_TRESULT2_Msk (0xff0000UL) /*!< TRESULT2 (Bitfield-Mask: 0xff) */ + #define R_CTSUTRIM_CTSUTRIMB_TRESULT1_Pos (8UL) /*!< TRESULT1 (Bit 8) */ + #define R_CTSUTRIM_CTSUTRIMB_TRESULT1_Msk (0xff00UL) /*!< TRESULT1 (Bitfield-Mask: 0xff) */ + #define R_CTSUTRIM_CTSUTRIMB_TRESULT0_Pos (0UL) /*!< TRESULT0 (Bit 0) */ + #define R_CTSUTRIM_CTSUTRIMB_TRESULT0_Msk (0xffUL) /*!< TRESULT0 (Bitfield-Mask: 0xff) */ + +/* =========================================================================================================================== */ +/* ================ 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_FCKMHZSA_Pos (8UL) /*!< FCKMHZSA (Bit 8) */ + #define R_FCACHE_FSAR_FCKMHZSA_Msk (0x100UL) /*!< FCKMHZSA (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_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_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 (0x70000UL) /*!< MD (Bitfield-Mask: 0x07) */ + #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_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_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_GTIOA_Pos (0UL) /*!< GTIOA (Bit 0) */ + #define R_GPT0_GTIOR_GTIOA_Msk (0x1fUL) /*!< GTIOA (Bitfield-Mask: 0x1f) */ +/* ======================================================== GTINTAD ======================================================== */ + #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_GTINTPC_Pos (31UL) /*!< GTINTPC (Bit 31) */ + #define R_GPT0_GTINTAD_GTINTPC_Msk (0x80000000UL) /*!< GTINTPC (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_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) */ +/* ======================================================== 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_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_SPCE_Pos (16UL) /*!< SPCE (Bit 16) */ + #define R_GPT0_GTSECR_SPCE_Msk (0x10000UL) /*!< SPCE (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTSECR_SPCD_Pos (24UL) /*!< SPCD (Bit 24) */ + #define R_GPT0_GTSECR_SPCD_Msk (0x1000000UL) /*!< SPCD (Bitfield-Mask: 0x01) */ + +/* =========================================================================================================================== */ +/* ================ R_GPT_GTCLK ================ */ +/* =========================================================================================================================== */ + +/* ======================================================== GTCLKCR ======================================================== */ + #define R_GPT_GTCLK_GTCLKCR_BPEN_Pos (0UL) /*!< BPEN (Bit 0) */ + #define R_GPT_GTCLK_GTCLKCR_BPEN_Msk (0x1UL) /*!< BPEN (Bitfield-Mask: 0x01) */ + +/* =========================================================================================================================== */ +/* ================ R_GPT_ODC ================ */ +/* =========================================================================================================================== */ + +/* ======================================================= GTDLYCR1 ======================================================== */ + #define R_GPT_ODC_GTDLYCR1_FRANGE_Pos (8UL) /*!< FRANGE (Bit 8) */ + #define R_GPT_ODC_GTDLYCR1_FRANGE_Msk (0x100UL) /*!< FRANGE (Bitfield-Mask: 0x01) */ + #define R_GPT_ODC_GTDLYCR1_DLYRST_Pos (1UL) /*!< DLYRST (Bit 1) */ + #define R_GPT_ODC_GTDLYCR1_DLYRST_Msk (0x2UL) /*!< DLYRST (Bitfield-Mask: 0x01) */ + #define R_GPT_ODC_GTDLYCR1_DLLEN_Pos (0UL) /*!< DLLEN (Bit 0) */ + #define R_GPT_ODC_GTDLYCR1_DLLEN_Msk (0x1UL) /*!< DLLEN (Bitfield-Mask: 0x01) */ +/* ======================================================= GTDLYCR2 ======================================================== */ + #define R_GPT_ODC_GTDLYCR2_DLYDENB_Pos (12UL) /*!< DLYDENB (Bit 12) */ + #define R_GPT_ODC_GTDLYCR2_DLYDENB_Msk (0x1000UL) /*!< DLYDENB (Bitfield-Mask: 0x01) */ + #define R_GPT_ODC_GTDLYCR2_DLYEN_Pos (8UL) /*!< DLYEN (Bit 8) */ + #define R_GPT_ODC_GTDLYCR2_DLYEN_Msk (0x100UL) /*!< DLYEN (Bitfield-Mask: 0x01) */ + #define R_GPT_ODC_GTDLYCR2_DLYBS_Pos (0UL) /*!< DLYBS (Bit 0) */ + #define R_GPT_ODC_GTDLYCR2_DLYBS_Msk (0x1UL) /*!< DLYBS (Bitfield-Mask: 0x01) */ + +/* =========================================================================================================================== */ +/* ================ 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_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) */ + +/* =========================================================================================================================== */ +/* ================ 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) */ +/* ========================================================= NMISR ========================================================= */ + #define R_ICU_NMISR_SPEST_Pos (12UL) /*!< SPEST (Bit 12) */ + #define R_ICU_NMISR_SPEST_Msk (0x1000UL) /*!< SPEST (Bitfield-Mask: 0x01) */ + #define R_ICU_NMISR_BUSMST_Pos (11UL) /*!< BUSMST (Bit 11) */ + #define R_ICU_NMISR_BUSMST_Msk (0x800UL) /*!< BUSMST (Bitfield-Mask: 0x01) */ + #define R_ICU_NMISR_BUSSST_Pos (10UL) /*!< BUSSST (Bit 10) */ + #define R_ICU_NMISR_BUSSST_Msk (0x400UL) /*!< BUSSST (Bitfield-Mask: 0x01) */ + #define R_ICU_NMISR_RECCST_Pos (9UL) /*!< RECCST (Bit 9) */ + #define R_ICU_NMISR_RECCST_Msk (0x200UL) /*!< RECCST (Bitfield-Mask: 0x01) */ + #define R_ICU_NMISR_RPEST_Pos (8UL) /*!< RPEST (Bit 8) */ + #define R_ICU_NMISR_RPEST_Msk (0x100UL) /*!< RPEST (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_OSTST_Pos (6UL) /*!< OSTST (Bit 6) */ + #define R_ICU_NMISR_OSTST_Msk (0x40UL) /*!< OSTST (Bitfield-Mask: 0x01) */ + #define R_ICU_NMISR_VBATTST_Pos (4UL) /*!< VBATTST (Bit 4) */ + #define R_ICU_NMISR_VBATTST_Msk (0x10UL) /*!< VBATTST (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_LVD1ST_Pos (2UL) /*!< LVD1ST (Bit 2) */ + #define R_ICU_NMISR_LVD1ST_Msk (0x4UL) /*!< LVD1ST (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_IWDTST_Pos (0UL) /*!< IWDTST (Bit 0) */ + #define R_ICU_NMISR_IWDTST_Msk (0x1UL) /*!< IWDTST (Bitfield-Mask: 0x01) */ + #define R_ICU_NMISR_TZFST_Pos (13UL) /*!< TZFST (Bit 13) */ + #define R_ICU_NMISR_TZFST_Msk (0x2000UL) /*!< TZFST (Bitfield-Mask: 0x01) */ + #define R_ICU_NMISR_CPEST_Pos (15UL) /*!< CPEST (Bit 15) */ + #define R_ICU_NMISR_CPEST_Msk (0x8000UL) /*!< CPEST (Bitfield-Mask: 0x01) */ +/* ========================================================= NMIER ========================================================= */ + #define R_ICU_NMIER_SPEEN_Pos (12UL) /*!< SPEEN (Bit 12) */ + #define R_ICU_NMIER_SPEEN_Msk (0x1000UL) /*!< SPEEN (Bitfield-Mask: 0x01) */ + #define R_ICU_NMIER_BUSMEN_Pos (11UL) /*!< BUSMEN (Bit 11) */ + #define R_ICU_NMIER_BUSMEN_Msk (0x800UL) /*!< BUSMEN (Bitfield-Mask: 0x01) */ + #define R_ICU_NMIER_BUSSEN_Pos (10UL) /*!< BUSSEN (Bit 10) */ + #define R_ICU_NMIER_BUSSEN_Msk (0x400UL) /*!< BUSSEN (Bitfield-Mask: 0x01) */ + #define R_ICU_NMIER_RECCEN_Pos (9UL) /*!< RECCEN (Bit 9) */ + #define R_ICU_NMIER_RECCEN_Msk (0x200UL) /*!< RECCEN (Bitfield-Mask: 0x01) */ + #define R_ICU_NMIER_RPEEN_Pos (8UL) /*!< RPEEN (Bit 8) */ + #define R_ICU_NMIER_RPEEN_Msk (0x100UL) /*!< RPEEN (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_OSTEN_Pos (6UL) /*!< OSTEN (Bit 6) */ + #define R_ICU_NMIER_OSTEN_Msk (0x40UL) /*!< OSTEN (Bitfield-Mask: 0x01) */ + #define R_ICU_NMIER_VBATTEN_Pos (4UL) /*!< VBATTEN (Bit 4) */ + #define R_ICU_NMIER_VBATTEN_Msk (0x10UL) /*!< VBATTEN (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_LVD1EN_Pos (2UL) /*!< LVD1EN (Bit 2) */ + #define R_ICU_NMIER_LVD1EN_Msk (0x4UL) /*!< LVD1EN (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_IWDTEN_Pos (0UL) /*!< IWDTEN (Bit 0) */ + #define R_ICU_NMIER_IWDTEN_Msk (0x1UL) /*!< IWDTEN (Bitfield-Mask: 0x01) */ + #define R_ICU_NMIER_TZFEN_Pos (13UL) /*!< TZFEN (Bit 13) */ + #define R_ICU_NMIER_TZFEN_Msk (0x2000UL) /*!< TZFEN (Bitfield-Mask: 0x01) */ + #define R_ICU_NMIER_CPEEN_Pos (15UL) /*!< CPEEN (Bit 15) */ + #define R_ICU_NMIER_CPEEN_Msk (0x8000UL) /*!< CPEEN (Bitfield-Mask: 0x01) */ +/* ======================================================== NMICLR ========================================================= */ + #define R_ICU_NMICLR_SPECLR_Pos (12UL) /*!< SPECLR (Bit 12) */ + #define R_ICU_NMICLR_SPECLR_Msk (0x1000UL) /*!< SPECLR (Bitfield-Mask: 0x01) */ + #define R_ICU_NMICLR_BUSMCLR_Pos (11UL) /*!< BUSMCLR (Bit 11) */ + #define R_ICU_NMICLR_BUSMCLR_Msk (0x800UL) /*!< BUSMCLR (Bitfield-Mask: 0x01) */ + #define R_ICU_NMICLR_BUSSCLR_Pos (10UL) /*!< BUSSCLR (Bit 10) */ + #define R_ICU_NMICLR_BUSSCLR_Msk (0x400UL) /*!< BUSSCLR (Bitfield-Mask: 0x01) */ + #define R_ICU_NMICLR_RECCCLR_Pos (9UL) /*!< RECCCLR (Bit 9) */ + #define R_ICU_NMICLR_RECCCLR_Msk (0x200UL) /*!< RECCCLR (Bitfield-Mask: 0x01) */ + #define R_ICU_NMICLR_RPECLR_Pos (8UL) /*!< RPECLR (Bit 8) */ + #define R_ICU_NMICLR_RPECLR_Msk (0x100UL) /*!< RPECLR (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_OSTCLR_Pos (6UL) /*!< OSTCLR (Bit 6) */ + #define R_ICU_NMICLR_OSTCLR_Msk (0x40UL) /*!< OSTCLR (Bitfield-Mask: 0x01) */ + #define R_ICU_NMICLR_VBATTCLR_Pos (4UL) /*!< VBATTCLR (Bit 4) */ + #define R_ICU_NMICLR_VBATTCLR_Msk (0x10UL) /*!< VBATTCLR (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_LVD1CLR_Pos (2UL) /*!< LVD1CLR (Bit 2) */ + #define R_ICU_NMICLR_LVD1CLR_Msk (0x4UL) /*!< LVD1CLR (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_IWDTCLR_Pos (0UL) /*!< IWDTCLR (Bit 0) */ + #define R_ICU_NMICLR_IWDTCLR_Msk (0x1UL) /*!< IWDTCLR (Bitfield-Mask: 0x01) */ + #define R_ICU_NMICLR_TZFCLR_Pos (13UL) /*!< TZFCLR (Bit 13) */ + #define R_ICU_NMICLR_TZFCLR_Msk (0x2000UL) /*!< TZFCLR (Bitfield-Mask: 0x01) */ + #define R_ICU_NMICLR_CPECLR_Pos (15UL) /*!< CPECLR (Bit 15) */ + #define R_ICU_NMICLR_CPECLR_Msk (0x8000UL) /*!< CPECLR (Bitfield-Mask: 0x01) */ +/* ========================================================= NMICR ========================================================= */ + #define R_ICU_NMICR_NFLTEN_Pos (7UL) /*!< NFLTEN (Bit 7) */ + #define R_ICU_NMICR_NFLTEN_Msk (0x80UL) /*!< NFLTEN (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_NMIMD_Pos (0UL) /*!< NMIMD (Bit 0) */ + #define R_ICU_NMICR_NMIMD_Msk (0x1UL) /*!< NMIMD (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) */ +/* ========================================================= DELSR ========================================================= */ + #define R_ICU_DELSR_IR_Pos (16UL) /*!< IR (Bit 16) */ + #define R_ICU_DELSR_IR_Msk (0x10000UL) /*!< IR (Bitfield-Mask: 0x01) */ + #define R_ICU_DELSR_DELS_Pos (0UL) /*!< DELS (Bit 0) */ + #define R_ICU_DELSR_DELS_Msk (0x1ffUL) /*!< DELS (Bitfield-Mask: 0x1ff) */ +/* ======================================================== SELSR0 ========================================================= */ + #define R_ICU_SELSR0_SELS_Pos (0UL) /*!< SELS (Bit 0) */ + #define R_ICU_SELSR0_SELS_Msk (0x1ffUL) /*!< SELS (Bitfield-Mask: 0x1ff) */ +/* ========================================================= WUPEN ========================================================= */ + #define R_ICU_WUPEN_IIC0WUPEN_Pos (31UL) /*!< IIC0WUPEN (Bit 31) */ + #define R_ICU_WUPEN_IIC0WUPEN_Msk (0x80000000UL) /*!< IIC0WUPEN (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_AGT1CAWUPEN_Pos (29UL) /*!< AGT1CAWUPEN (Bit 29) */ + #define R_ICU_WUPEN_AGT1CAWUPEN_Msk (0x20000000UL) /*!< AGT1CAWUPEN (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_USBFSWUPEN_Pos (27UL) /*!< USBFSWUPEN (Bit 27) */ + #define R_ICU_WUPEN_USBFSWUPEN_Msk (0x8000000UL) /*!< USBFSWUPEN (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_RTCPRDWUPEN_Pos (25UL) /*!< RTCPRDWUPEN (Bit 25) */ + #define R_ICU_WUPEN_RTCPRDWUPEN_Msk (0x2000000UL) /*!< RTCPRDWUPEN (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_ACMPLP0WUPEN_Pos (23UL) /*!< ACMPLP0WUPEN (Bit 23) */ + #define R_ICU_WUPEN_ACMPLP0WUPEN_Msk (0x800000UL) /*!< ACMPLP0WUPEN (Bitfield-Mask: 0x01) */ + #define R_ICU_WUPEN_ACMPHS0WUPEN_Pos (22UL) /*!< ACMPHS0WUPEN (Bit 22) */ + #define R_ICU_WUPEN_ACMPHS0WUPEN_Msk (0x400000UL) /*!< ACMPHS0WUPEN (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_LVD2WUPEN_Pos (19UL) /*!< LVD2WUPEN (Bit 19) */ + #define R_ICU_WUPEN_LVD2WUPEN_Msk (0x80000UL) /*!< LVD2WUPEN (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_KEYWUPEN_Pos (17UL) /*!< KEYWUPEN (Bit 17) */ + #define R_ICU_WUPEN_KEYWUPEN_Msk (0x20000UL) /*!< KEYWUPEN (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_IRQWUPEN_Pos (0UL) /*!< IRQWUPEN (Bit 0) */ + #define R_ICU_WUPEN_IRQWUPEN_Msk (0x1UL) /*!< IRQWUPEN (Bitfield-Mask: 0x01) */ +/* ======================================================== WUPEN1 ========================================================= */ + #define R_ICU_WUPEN1_AGT3UDWUPEN_Pos (0UL) /*!< AGT3UDWUPEN (Bit 0) */ + #define R_ICU_WUPEN1_AGT3UDWUPEN_Msk (0x1UL) /*!< AGT3UDWUPEN (Bitfield-Mask: 0x01) */ + #define R_ICU_WUPEN1_AGT3CAWUPEN_Pos (1UL) /*!< AGT3CAWUPEN (Bit 1) */ + #define R_ICU_WUPEN1_AGT3CAWUPEN_Msk (0x2UL) /*!< AGT3CAWUPEN (Bitfield-Mask: 0x01) */ + #define R_ICU_WUPEN1_AGT3CBWUPEN_Pos (2UL) /*!< AGT3CBWUPEN (Bit 2) */ + #define R_ICU_WUPEN1_AGT3CBWUPEN_Msk (0x4UL) /*!< AGT3CBWUPEN (Bitfield-Mask: 0x01) */ +/* ========================================================= IELEN ========================================================= */ + #define R_ICU_IELEN_IELEN_Pos (1UL) /*!< IELEN (Bit 1) */ + #define R_ICU_IELEN_IELEN_Msk (0x2UL) /*!< IELEN (Bitfield-Mask: 0x01) */ + #define R_ICU_IELEN_RTCINTEN_Pos (0UL) /*!< RTCINTEN (Bit 0) */ + #define R_ICU_IELEN_RTCINTEN_Msk (0x1UL) /*!< RTCINTEN (Bitfield-Mask: 0x01) */ + +/* =========================================================================================================================== */ +/* ================ 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_IRDA ================ */ +/* =========================================================================================================================== */ + +/* ========================================================= IRCR ========================================================== */ + #define R_IRDA_IRCR_IRE_Pos (7UL) /*!< IRE (Bit 7) */ + #define R_IRDA_IRCR_IRE_Msk (0x80UL) /*!< IRE (Bitfield-Mask: 0x01) */ + #define R_IRDA_IRCR_IRTXINV_Pos (3UL) /*!< IRTXINV (Bit 3) */ + #define R_IRDA_IRCR_IRTXINV_Msk (0x8UL) /*!< IRTXINV (Bitfield-Mask: 0x01) */ + #define R_IRDA_IRCR_IRRXINV_Pos (2UL) /*!< IRRXINV (Bit 2) */ + #define R_IRDA_IRCR_IRRXINV_Msk (0x4UL) /*!< IRRXINV (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) */ +/* ======================================================== 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) */ + +/* =========================================================================================================================== */ +/* ================ R_JPEG ================ */ +/* =========================================================================================================================== */ + +/* ========================================================= JCMOD ========================================================= */ + #define R_JPEG_JCMOD_DSP_Pos (3UL) /*!< DSP (Bit 3) */ + #define R_JPEG_JCMOD_DSP_Msk (0x8UL) /*!< DSP (Bitfield-Mask: 0x01) */ + #define R_JPEG_JCMOD_REDU_Pos (0UL) /*!< REDU (Bit 0) */ + #define R_JPEG_JCMOD_REDU_Msk (0x7UL) /*!< REDU (Bitfield-Mask: 0x07) */ +/* ========================================================= JCCMD ========================================================= */ + #define R_JPEG_JCCMD_BRST_Pos (7UL) /*!< BRST (Bit 7) */ + #define R_JPEG_JCCMD_BRST_Msk (0x80UL) /*!< BRST (Bitfield-Mask: 0x01) */ + #define R_JPEG_JCCMD_JEND_Pos (2UL) /*!< JEND (Bit 2) */ + #define R_JPEG_JCCMD_JEND_Msk (0x4UL) /*!< JEND (Bitfield-Mask: 0x01) */ + #define R_JPEG_JCCMD_JRST_Pos (1UL) /*!< JRST (Bit 1) */ + #define R_JPEG_JCCMD_JRST_Msk (0x2UL) /*!< JRST (Bitfield-Mask: 0x01) */ + #define R_JPEG_JCCMD_JSRT_Pos (0UL) /*!< JSRT (Bit 0) */ + #define R_JPEG_JCCMD_JSRT_Msk (0x1UL) /*!< JSRT (Bitfield-Mask: 0x01) */ +/* ========================================================= JCQTN ========================================================= */ + #define R_JPEG_JCQTN_QT3_Pos (4UL) /*!< QT3 (Bit 4) */ + #define R_JPEG_JCQTN_QT3_Msk (0x30UL) /*!< QT3 (Bitfield-Mask: 0x03) */ + #define R_JPEG_JCQTN_QT2_Pos (2UL) /*!< QT2 (Bit 2) */ + #define R_JPEG_JCQTN_QT2_Msk (0xcUL) /*!< QT2 (Bitfield-Mask: 0x03) */ + #define R_JPEG_JCQTN_QT1_Pos (0UL) /*!< QT1 (Bit 0) */ + #define R_JPEG_JCQTN_QT1_Msk (0x3UL) /*!< QT1 (Bitfield-Mask: 0x03) */ +/* ========================================================= JCHTN ========================================================= */ + #define R_JPEG_JCHTN_HTA3_Pos (5UL) /*!< HTA3 (Bit 5) */ + #define R_JPEG_JCHTN_HTA3_Msk (0x20UL) /*!< HTA3 (Bitfield-Mask: 0x01) */ + #define R_JPEG_JCHTN_HTD3_Pos (4UL) /*!< HTD3 (Bit 4) */ + #define R_JPEG_JCHTN_HTD3_Msk (0x10UL) /*!< HTD3 (Bitfield-Mask: 0x01) */ + #define R_JPEG_JCHTN_HTA2_Pos (3UL) /*!< HTA2 (Bit 3) */ + #define R_JPEG_JCHTN_HTA2_Msk (0x8UL) /*!< HTA2 (Bitfield-Mask: 0x01) */ + #define R_JPEG_JCHTN_HTD2_Pos (2UL) /*!< HTD2 (Bit 2) */ + #define R_JPEG_JCHTN_HTD2_Msk (0x4UL) /*!< HTD2 (Bitfield-Mask: 0x01) */ + #define R_JPEG_JCHTN_HTA1_Pos (1UL) /*!< HTA1 (Bit 1) */ + #define R_JPEG_JCHTN_HTA1_Msk (0x2UL) /*!< HTA1 (Bitfield-Mask: 0x01) */ + #define R_JPEG_JCHTN_HTD1_Pos (0UL) /*!< HTD1 (Bit 0) */ + #define R_JPEG_JCHTN_HTD1_Msk (0x1UL) /*!< HTD1 (Bitfield-Mask: 0x01) */ +/* ======================================================== JCDRIU ========================================================= */ + #define R_JPEG_JCDRIU_DRIU_Pos (0UL) /*!< DRIU (Bit 0) */ + #define R_JPEG_JCDRIU_DRIU_Msk (0xffUL) /*!< DRIU (Bitfield-Mask: 0xff) */ +/* ======================================================== JCDRID ========================================================= */ + #define R_JPEG_JCDRID_DRID_Pos (0UL) /*!< DRID (Bit 0) */ + #define R_JPEG_JCDRID_DRID_Msk (0xffUL) /*!< DRID (Bitfield-Mask: 0xff) */ +/* ======================================================== JCVSZU ========================================================= */ + #define R_JPEG_JCVSZU_VSZU_Pos (0UL) /*!< VSZU (Bit 0) */ + #define R_JPEG_JCVSZU_VSZU_Msk (0xffUL) /*!< VSZU (Bitfield-Mask: 0xff) */ +/* ======================================================== JCVSZD ========================================================= */ + #define R_JPEG_JCVSZD_VSZD_Pos (0UL) /*!< VSZD (Bit 0) */ + #define R_JPEG_JCVSZD_VSZD_Msk (0xffUL) /*!< VSZD (Bitfield-Mask: 0xff) */ +/* ======================================================== JCHSZU ========================================================= */ + #define R_JPEG_JCHSZU_HSZU_Pos (0UL) /*!< HSZU (Bit 0) */ + #define R_JPEG_JCHSZU_HSZU_Msk (0xffUL) /*!< HSZU (Bitfield-Mask: 0xff) */ +/* ======================================================== JCHSZD ========================================================= */ + #define R_JPEG_JCHSZD_HSZD_Pos (0UL) /*!< HSZD (Bit 0) */ + #define R_JPEG_JCHSZD_HSZD_Msk (0xffUL) /*!< HSZD (Bitfield-Mask: 0xff) */ +/* ======================================================== JCDTCU ========================================================= */ + #define R_JPEG_JCDTCU_DCU_Pos (0UL) /*!< DCU (Bit 0) */ + #define R_JPEG_JCDTCU_DCU_Msk (0xffUL) /*!< DCU (Bitfield-Mask: 0xff) */ +/* ======================================================== JCDTCM ========================================================= */ + #define R_JPEG_JCDTCM_DCM_Pos (0UL) /*!< DCM (Bit 0) */ + #define R_JPEG_JCDTCM_DCM_Msk (0xffUL) /*!< DCM (Bitfield-Mask: 0xff) */ +/* ======================================================== JCDTCD ========================================================= */ + #define R_JPEG_JCDTCD_DCD_Pos (0UL) /*!< DCD (Bit 0) */ + #define R_JPEG_JCDTCD_DCD_Msk (0xffUL) /*!< DCD (Bitfield-Mask: 0xff) */ +/* ======================================================== JINTE0 ========================================================= */ + #define R_JPEG_JINTE0_INT7_Pos (7UL) /*!< INT7 (Bit 7) */ + #define R_JPEG_JINTE0_INT7_Msk (0x80UL) /*!< INT7 (Bitfield-Mask: 0x01) */ + #define R_JPEG_JINTE0_INT6_Pos (6UL) /*!< INT6 (Bit 6) */ + #define R_JPEG_JINTE0_INT6_Msk (0x40UL) /*!< INT6 (Bitfield-Mask: 0x01) */ + #define R_JPEG_JINTE0_INT5_Pos (5UL) /*!< INT5 (Bit 5) */ + #define R_JPEG_JINTE0_INT5_Msk (0x20UL) /*!< INT5 (Bitfield-Mask: 0x01) */ + #define R_JPEG_JINTE0_INT3_Pos (3UL) /*!< INT3 (Bit 3) */ + #define R_JPEG_JINTE0_INT3_Msk (0x8UL) /*!< INT3 (Bitfield-Mask: 0x01) */ +/* ======================================================== JINTS0 ========================================================= */ + #define R_JPEG_JINTS0_INS6_Pos (6UL) /*!< INS6 (Bit 6) */ + #define R_JPEG_JINTS0_INS6_Msk (0x40UL) /*!< INS6 (Bitfield-Mask: 0x01) */ + #define R_JPEG_JINTS0_INS5_Pos (5UL) /*!< INS5 (Bit 5) */ + #define R_JPEG_JINTS0_INS5_Msk (0x20UL) /*!< INS5 (Bitfield-Mask: 0x01) */ + #define R_JPEG_JINTS0_INS3_Pos (3UL) /*!< INS3 (Bit 3) */ + #define R_JPEG_JINTS0_INS3_Msk (0x8UL) /*!< INS3 (Bitfield-Mask: 0x01) */ +/* ======================================================== JCDERR ========================================================= */ + #define R_JPEG_JCDERR_ERR_Pos (0UL) /*!< ERR (Bit 0) */ + #define R_JPEG_JCDERR_ERR_Msk (0xfUL) /*!< ERR (Bitfield-Mask: 0x0f) */ +/* ========================================================= JCRST ========================================================= */ + #define R_JPEG_JCRST_RST_Pos (0UL) /*!< RST (Bit 0) */ + #define R_JPEG_JCRST_RST_Msk (0x1UL) /*!< RST (Bitfield-Mask: 0x01) */ +/* ======================================================== JIFECNT ======================================================== */ + #define R_JPEG_JIFECNT_JOUTSWAP_Pos (8UL) /*!< JOUTSWAP (Bit 8) */ + #define R_JPEG_JIFECNT_JOUTSWAP_Msk (0x700UL) /*!< JOUTSWAP (Bitfield-Mask: 0x07) */ + #define R_JPEG_JIFECNT_DINRINI_Pos (6UL) /*!< DINRINI (Bit 6) */ + #define R_JPEG_JIFECNT_DINRINI_Msk (0x40UL) /*!< DINRINI (Bitfield-Mask: 0x01) */ + #define R_JPEG_JIFECNT_DINRCMD_Pos (5UL) /*!< DINRCMD (Bit 5) */ + #define R_JPEG_JIFECNT_DINRCMD_Msk (0x20UL) /*!< DINRCMD (Bitfield-Mask: 0x01) */ + #define R_JPEG_JIFECNT_DINLC_Pos (4UL) /*!< DINLC (Bit 4) */ + #define R_JPEG_JIFECNT_DINLC_Msk (0x10UL) /*!< DINLC (Bitfield-Mask: 0x01) */ + #define R_JPEG_JIFECNT_DINSWAP_Pos (0UL) /*!< DINSWAP (Bit 0) */ + #define R_JPEG_JIFECNT_DINSWAP_Msk (0x7UL) /*!< DINSWAP (Bitfield-Mask: 0x07) */ +/* ======================================================== JIFESA ========================================================= */ + #define R_JPEG_JIFESA_ESA_Pos (0UL) /*!< ESA (Bit 0) */ + #define R_JPEG_JIFESA_ESA_Msk (0xffffffffUL) /*!< ESA (Bitfield-Mask: 0xffffffff) */ +/* ======================================================= JIFESOFST ======================================================= */ + #define R_JPEG_JIFESOFST_ESMW_Pos (0UL) /*!< ESMW (Bit 0) */ + #define R_JPEG_JIFESOFST_ESMW_Msk (0x7fffUL) /*!< ESMW (Bitfield-Mask: 0x7fff) */ +/* ======================================================== JIFEDA ========================================================= */ + #define R_JPEG_JIFEDA_EDA_Pos (0UL) /*!< EDA (Bit 0) */ + #define R_JPEG_JIFEDA_EDA_Msk (0xffffffffUL) /*!< EDA (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== JIFESLC ======================================================== */ + #define R_JPEG_JIFESLC_LINES_Pos (0UL) /*!< LINES (Bit 0) */ + #define R_JPEG_JIFESLC_LINES_Msk (0xffffUL) /*!< LINES (Bitfield-Mask: 0xffff) */ +/* ======================================================== JIFDCNT ======================================================== */ + #define R_JPEG_JIFDCNT_VINTER_Pos (28UL) /*!< VINTER (Bit 28) */ + #define R_JPEG_JIFDCNT_VINTER_Msk (0x30000000UL) /*!< VINTER (Bitfield-Mask: 0x03) */ + #define R_JPEG_JIFDCNT_HINTER_Pos (26UL) /*!< HINTER (Bit 26) */ + #define R_JPEG_JIFDCNT_HINTER_Msk (0xc000000UL) /*!< HINTER (Bitfield-Mask: 0x03) */ + #define R_JPEG_JIFDCNT_OPF_Pos (24UL) /*!< OPF (Bit 24) */ + #define R_JPEG_JIFDCNT_OPF_Msk (0x3000000UL) /*!< OPF (Bitfield-Mask: 0x03) */ + #define R_JPEG_JIFDCNT_JINRINI_Pos (14UL) /*!< JINRINI (Bit 14) */ + #define R_JPEG_JIFDCNT_JINRINI_Msk (0x4000UL) /*!< JINRINI (Bitfield-Mask: 0x01) */ + #define R_JPEG_JIFDCNT_JINRCMD_Pos (13UL) /*!< JINRCMD (Bit 13) */ + #define R_JPEG_JIFDCNT_JINRCMD_Msk (0x2000UL) /*!< JINRCMD (Bitfield-Mask: 0x01) */ + #define R_JPEG_JIFDCNT_JINC_Pos (12UL) /*!< JINC (Bit 12) */ + #define R_JPEG_JIFDCNT_JINC_Msk (0x1000UL) /*!< JINC (Bitfield-Mask: 0x01) */ + #define R_JPEG_JIFDCNT_JINSWAP_Pos (8UL) /*!< JINSWAP (Bit 8) */ + #define R_JPEG_JIFDCNT_JINSWAP_Msk (0x700UL) /*!< JINSWAP (Bitfield-Mask: 0x07) */ + #define R_JPEG_JIFDCNT_DOUTRINI_Pos (6UL) /*!< DOUTRINI (Bit 6) */ + #define R_JPEG_JIFDCNT_DOUTRINI_Msk (0x40UL) /*!< DOUTRINI (Bitfield-Mask: 0x01) */ + #define R_JPEG_JIFDCNT_DOUTRCMD_Pos (5UL) /*!< DOUTRCMD (Bit 5) */ + #define R_JPEG_JIFDCNT_DOUTRCMD_Msk (0x20UL) /*!< DOUTRCMD (Bitfield-Mask: 0x01) */ + #define R_JPEG_JIFDCNT_DOUTLC_Pos (4UL) /*!< DOUTLC (Bit 4) */ + #define R_JPEG_JIFDCNT_DOUTLC_Msk (0x10UL) /*!< DOUTLC (Bitfield-Mask: 0x01) */ + #define R_JPEG_JIFDCNT_DOUTSWAP_Pos (0UL) /*!< DOUTSWAP (Bit 0) */ + #define R_JPEG_JIFDCNT_DOUTSWAP_Msk (0x7UL) /*!< DOUTSWAP (Bitfield-Mask: 0x07) */ +/* ======================================================== JIFDSA ========================================================= */ + #define R_JPEG_JIFDSA_DSA_Pos (0UL) /*!< DSA (Bit 0) */ + #define R_JPEG_JIFDSA_DSA_Msk (0xffffffffUL) /*!< DSA (Bitfield-Mask: 0xffffffff) */ +/* ======================================================= JIFDDOFST ======================================================= */ + #define R_JPEG_JIFDDOFST_DDMW_Pos (0UL) /*!< DDMW (Bit 0) */ + #define R_JPEG_JIFDDOFST_DDMW_Msk (0x7fffUL) /*!< DDMW (Bitfield-Mask: 0x7fff) */ +/* ======================================================== JIFDDA ========================================================= */ + #define R_JPEG_JIFDDA_DDA_Pos (0UL) /*!< DDA (Bit 0) */ + #define R_JPEG_JIFDDA_DDA_Msk (0xffffffffUL) /*!< DDA (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== JIFDSDC ======================================================== */ + #define R_JPEG_JIFDSDC_JDATAS_Pos (0UL) /*!< JDATAS (Bit 0) */ + #define R_JPEG_JIFDSDC_JDATAS_Msk (0xffffUL) /*!< JDATAS (Bitfield-Mask: 0xffff) */ +/* ======================================================== JIFDDLC ======================================================== */ + #define R_JPEG_JIFDDLC_LINES_Pos (0UL) /*!< LINES (Bit 0) */ + #define R_JPEG_JIFDDLC_LINES_Msk (0xffffUL) /*!< LINES (Bitfield-Mask: 0xffff) */ +/* ======================================================== JIFDADT ======================================================== */ + #define R_JPEG_JIFDADT_ALPHA_Pos (0UL) /*!< ALPHA (Bit 0) */ + #define R_JPEG_JIFDADT_ALPHA_Msk (0xffUL) /*!< ALPHA (Bitfield-Mask: 0xff) */ +/* ======================================================== JINTE1 ========================================================= */ + #define R_JPEG_JINTE1_CBTEN_Pos (6UL) /*!< CBTEN (Bit 6) */ + #define R_JPEG_JINTE1_CBTEN_Msk (0x40UL) /*!< CBTEN (Bitfield-Mask: 0x01) */ + #define R_JPEG_JINTE1_DINLEN_Pos (5UL) /*!< DINLEN (Bit 5) */ + #define R_JPEG_JINTE1_DINLEN_Msk (0x20UL) /*!< DINLEN (Bitfield-Mask: 0x01) */ + #define R_JPEG_JINTE1_DBTEN_Pos (2UL) /*!< DBTEN (Bit 2) */ + #define R_JPEG_JINTE1_DBTEN_Msk (0x4UL) /*!< DBTEN (Bitfield-Mask: 0x01) */ + #define R_JPEG_JINTE1_JINEN_Pos (1UL) /*!< JINEN (Bit 1) */ + #define R_JPEG_JINTE1_JINEN_Msk (0x2UL) /*!< JINEN (Bitfield-Mask: 0x01) */ + #define R_JPEG_JINTE1_DOUTLEN_Pos (0UL) /*!< DOUTLEN (Bit 0) */ + #define R_JPEG_JINTE1_DOUTLEN_Msk (0x1UL) /*!< DOUTLEN (Bitfield-Mask: 0x01) */ +/* ======================================================== JINTS1 ========================================================= */ + #define R_JPEG_JINTS1_CBTF_Pos (6UL) /*!< CBTF (Bit 6) */ + #define R_JPEG_JINTS1_CBTF_Msk (0x40UL) /*!< CBTF (Bitfield-Mask: 0x01) */ + #define R_JPEG_JINTS1_DINLF_Pos (5UL) /*!< DINLF (Bit 5) */ + #define R_JPEG_JINTS1_DINLF_Msk (0x20UL) /*!< DINLF (Bitfield-Mask: 0x01) */ + #define R_JPEG_JINTS1_DBTF_Pos (2UL) /*!< DBTF (Bit 2) */ + #define R_JPEG_JINTS1_DBTF_Msk (0x4UL) /*!< DBTF (Bitfield-Mask: 0x01) */ + #define R_JPEG_JINTS1_JINF_Pos (1UL) /*!< JINF (Bit 1) */ + #define R_JPEG_JINTS1_JINF_Msk (0x2UL) /*!< JINF (Bitfield-Mask: 0x01) */ + #define R_JPEG_JINTS1_DOUTLF_Pos (0UL) /*!< DOUTLF (Bit 0) */ + #define R_JPEG_JINTS1_DOUTLF_Msk (0x1UL) /*!< DOUTLF (Bitfield-Mask: 0x01) */ +/* ======================================================== JCQTBL0 ======================================================== */ +/* ======================================================== JCQTBL1 ======================================================== */ +/* ======================================================== JCQTBL2 ======================================================== */ +/* ======================================================== JCQTBL3 ======================================================== */ +/* ======================================================== JCHTBD0 ======================================================== */ +/* ======================================================== JCHTBD1 ======================================================== */ +/* ======================================================== JCHTBA0 ======================================================== */ +/* ======================================================== JCHTBA1 ======================================================== */ + +/* =========================================================================================================================== */ +/* ================ R_KINT ================ */ +/* =========================================================================================================================== */ + +/* ========================================================= KRCTL ========================================================= */ + #define R_KINT_KRCTL_KRMD_Pos (7UL) /*!< KRMD (Bit 7) */ + #define R_KINT_KRCTL_KRMD_Msk (0x80UL) /*!< KRMD (Bitfield-Mask: 0x01) */ + #define R_KINT_KRCTL_KREG_Pos (0UL) /*!< KREG (Bit 0) */ + #define R_KINT_KRCTL_KREG_Msk (0x1UL) /*!< KREG (Bitfield-Mask: 0x01) */ +/* ========================================================== KRF ========================================================== */ + #define R_KINT_KRF_KRF7_Pos (7UL) /*!< KRF7 (Bit 7) */ + #define R_KINT_KRF_KRF7_Msk (0x80UL) /*!< KRF7 (Bitfield-Mask: 0x01) */ + #define R_KINT_KRF_KRF6_Pos (6UL) /*!< KRF6 (Bit 6) */ + #define R_KINT_KRF_KRF6_Msk (0x40UL) /*!< KRF6 (Bitfield-Mask: 0x01) */ + #define R_KINT_KRF_KRF5_Pos (5UL) /*!< KRF5 (Bit 5) */ + #define R_KINT_KRF_KRF5_Msk (0x20UL) /*!< KRF5 (Bitfield-Mask: 0x01) */ + #define R_KINT_KRF_KRF4_Pos (4UL) /*!< KRF4 (Bit 4) */ + #define R_KINT_KRF_KRF4_Msk (0x10UL) /*!< KRF4 (Bitfield-Mask: 0x01) */ + #define R_KINT_KRF_KRF3_Pos (3UL) /*!< KRF3 (Bit 3) */ + #define R_KINT_KRF_KRF3_Msk (0x8UL) /*!< KRF3 (Bitfield-Mask: 0x01) */ + #define R_KINT_KRF_KRF2_Pos (2UL) /*!< KRF2 (Bit 2) */ + #define R_KINT_KRF_KRF2_Msk (0x4UL) /*!< KRF2 (Bitfield-Mask: 0x01) */ + #define R_KINT_KRF_KRF1_Pos (1UL) /*!< KRF1 (Bit 1) */ + #define R_KINT_KRF_KRF1_Msk (0x2UL) /*!< KRF1 (Bitfield-Mask: 0x01) */ + #define R_KINT_KRF_KRF0_Pos (0UL) /*!< KRF0 (Bit 0) */ + #define R_KINT_KRF_KRF0_Msk (0x1UL) /*!< KRF0 (Bitfield-Mask: 0x01) */ +/* ========================================================== KRM ========================================================== */ + #define R_KINT_KRM_KRM7_Pos (7UL) /*!< KRM7 (Bit 7) */ + #define R_KINT_KRM_KRM7_Msk (0x80UL) /*!< KRM7 (Bitfield-Mask: 0x01) */ + #define R_KINT_KRM_KRM6_Pos (6UL) /*!< KRM6 (Bit 6) */ + #define R_KINT_KRM_KRM6_Msk (0x40UL) /*!< KRM6 (Bitfield-Mask: 0x01) */ + #define R_KINT_KRM_KRM5_Pos (5UL) /*!< KRM5 (Bit 5) */ + #define R_KINT_KRM_KRM5_Msk (0x20UL) /*!< KRM5 (Bitfield-Mask: 0x01) */ + #define R_KINT_KRM_KRM4_Pos (4UL) /*!< KRM4 (Bit 4) */ + #define R_KINT_KRM_KRM4_Msk (0x10UL) /*!< KRM4 (Bitfield-Mask: 0x01) */ + #define R_KINT_KRM_KRM3_Pos (3UL) /*!< KRM3 (Bit 3) */ + #define R_KINT_KRM_KRM3_Msk (0x8UL) /*!< KRM3 (Bitfield-Mask: 0x01) */ + #define R_KINT_KRM_KRM2_Pos (2UL) /*!< KRM2 (Bit 2) */ + #define R_KINT_KRM_KRM2_Msk (0x4UL) /*!< KRM2 (Bitfield-Mask: 0x01) */ + #define R_KINT_KRM_KRM1_Pos (1UL) /*!< KRM1 (Bit 1) */ + #define R_KINT_KRM_KRM1_Msk (0x2UL) /*!< KRM1 (Bitfield-Mask: 0x01) */ + #define R_KINT_KRM_KRM0_Pos (0UL) /*!< KRM0 (Bit 0) */ + #define R_KINT_KRM_KRM0_Msk (0x1UL) /*!< KRM0 (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) */ +/* ======================================================== 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) */ +/* ======================================================== 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_MMF ================ */ +/* =========================================================================================================================== */ + +/* ========================================================= MMSFR ========================================================= */ + #define R_MMF_MMSFR_KEY_Pos (24UL) /*!< KEY (Bit 24) */ + #define R_MMF_MMSFR_KEY_Msk (0xff000000UL) /*!< KEY (Bitfield-Mask: 0xff) */ + #define R_MMF_MMSFR_MEMMIRADDR_Pos (7UL) /*!< MEMMIRADDR (Bit 7) */ + #define R_MMF_MMSFR_MEMMIRADDR_Msk (0x7fff80UL) /*!< MEMMIRADDR (Bitfield-Mask: 0xffff) */ +/* ========================================================= MMEN ========================================================== */ + #define R_MMF_MMEN_KEY_Pos (24UL) /*!< KEY (Bit 24) */ + #define R_MMF_MMEN_KEY_Msk (0xff000000UL) /*!< KEY (Bitfield-Mask: 0xff) */ + #define R_MMF_MMEN_EN_Pos (0UL) /*!< EN (Bit 0) */ + #define R_MMF_MMEN_EN_Msk (0x1UL) /*!< EN (Bitfield-Mask: 0x01) */ + +/* =========================================================================================================================== */ +/* ================ R_MPU_MMPU ================ */ +/* =========================================================================================================================== */ + +/* =========================================================================================================================== */ +/* ================ R_MPU_SMPU ================ */ +/* =========================================================================================================================== */ + +/* ======================================================== SMPUCTL ======================================================== */ + #define R_MPU_SMPU_SMPUCTL_KEY_Pos (8UL) /*!< KEY (Bit 8) */ + #define R_MPU_SMPU_SMPUCTL_KEY_Msk (0xff00UL) /*!< KEY (Bitfield-Mask: 0xff) */ + #define R_MPU_SMPU_SMPUCTL_PROTECT_Pos (1UL) /*!< PROTECT (Bit 1) */ + #define R_MPU_SMPU_SMPUCTL_PROTECT_Msk (0x2UL) /*!< PROTECT (Bitfield-Mask: 0x01) */ + #define R_MPU_SMPU_SMPUCTL_OAD_Pos (0UL) /*!< OAD (Bit 0) */ + #define R_MPU_SMPU_SMPUCTL_OAD_Msk (0x1UL) /*!< OAD (Bitfield-Mask: 0x01) */ + +/* =========================================================================================================================== */ +/* ================ R_MPU_SPMON ================ */ +/* =========================================================================================================================== */ + +/* =========================================================================================================================== */ +/* ================ R_MSTP ================ */ +/* =========================================================================================================================== */ + +/* ======================================================== MSTPCRA ======================================================== */ + #define R_MSTP_MSTPCRA_MSTPA22_Pos (22UL) /*!< MSTPA22 (Bit 22) */ + #define R_MSTP_MSTPCRA_MSTPA22_Msk (0x400000UL) /*!< MSTPA22 (Bitfield-Mask: 0x01) */ + #define R_MSTP_MSTPCRA_MSTPA7_Pos (7UL) /*!< MSTPA7 (Bit 7) */ + #define R_MSTP_MSTPCRA_MSTPA7_Msk (0x80UL) /*!< MSTPA7 (Bitfield-Mask: 0x01) */ + #define R_MSTP_MSTPCRA_MSTPA0_Pos (0UL) /*!< MSTPA0 (Bit 0) */ + #define R_MSTP_MSTPCRA_MSTPA0_Msk (0x1UL) /*!< MSTPA0 (Bitfield-Mask: 0x01) */ +/* ======================================================== MSTPCRB ======================================================== */ + #define R_MSTP_MSTPCRB_MSTPB31_Pos (31UL) /*!< MSTPB31 (Bit 31) */ + #define R_MSTP_MSTPCRB_MSTPB31_Msk (0x80000000UL) /*!< MSTPB31 (Bitfield-Mask: 0x01) */ + #define R_MSTP_MSTPCRB_MSTPB30_Pos (30UL) /*!< MSTPB30 (Bit 30) */ + #define R_MSTP_MSTPCRB_MSTPB30_Msk (0x40000000UL) /*!< MSTPB30 (Bitfield-Mask: 0x01) */ + #define R_MSTP_MSTPCRB_MSTPB29_Pos (29UL) /*!< MSTPB29 (Bit 29) */ + #define R_MSTP_MSTPCRB_MSTPB29_Msk (0x20000000UL) /*!< MSTPB29 (Bitfield-Mask: 0x01) */ + #define R_MSTP_MSTPCRB_MSTPB28_Pos (28UL) /*!< MSTPB28 (Bit 28) */ + #define R_MSTP_MSTPCRB_MSTPB28_Msk (0x10000000UL) /*!< MSTPB28 (Bitfield-Mask: 0x01) */ + #define R_MSTP_MSTPCRB_MSTPB27_Pos (27UL) /*!< MSTPB27 (Bit 27) */ + #define R_MSTP_MSTPCRB_MSTPB27_Msk (0x8000000UL) /*!< MSTPB27 (Bitfield-Mask: 0x01) */ + #define R_MSTP_MSTPCRB_MSTPB26_Pos (26UL) /*!< MSTPB26 (Bit 26) */ + #define R_MSTP_MSTPCRB_MSTPB26_Msk (0x4000000UL) /*!< MSTPB26 (Bitfield-Mask: 0x01) */ + #define R_MSTP_MSTPCRB_MSTPB25_Pos (25UL) /*!< MSTPB25 (Bit 25) */ + #define R_MSTP_MSTPCRB_MSTPB25_Msk (0x2000000UL) /*!< MSTPB25 (Bitfield-Mask: 0x01) */ + #define R_MSTP_MSTPCRB_MSTPB24_Pos (24UL) /*!< MSTPB24 (Bit 24) */ + #define R_MSTP_MSTPCRB_MSTPB24_Msk (0x1000000UL) /*!< MSTPB24 (Bitfield-Mask: 0x01) */ + #define R_MSTP_MSTPCRB_MSTPB23_Pos (23UL) /*!< MSTPB23 (Bit 23) */ + #define R_MSTP_MSTPCRB_MSTPB23_Msk (0x800000UL) /*!< MSTPB23 (Bitfield-Mask: 0x01) */ + #define R_MSTP_MSTPCRB_MSTPB22_Pos (22UL) /*!< MSTPB22 (Bit 22) */ + #define R_MSTP_MSTPCRB_MSTPB22_Msk (0x400000UL) /*!< MSTPB22 (Bitfield-Mask: 0x01) */ + #define R_MSTP_MSTPCRB_MSTPB19_Pos (19UL) /*!< MSTPB19 (Bit 19) */ + #define R_MSTP_MSTPCRB_MSTPB19_Msk (0x80000UL) /*!< MSTPB19 (Bitfield-Mask: 0x01) */ + #define R_MSTP_MSTPCRB_MSTPB18_Pos (18UL) /*!< MSTPB18 (Bit 18) */ + #define R_MSTP_MSTPCRB_MSTPB18_Msk (0x40000UL) /*!< MSTPB18 (Bitfield-Mask: 0x01) */ + #define R_MSTP_MSTPCRB_MSTPB15_Pos (15UL) /*!< MSTPB15 (Bit 15) */ + #define R_MSTP_MSTPCRB_MSTPB15_Msk (0x8000UL) /*!< MSTPB15 (Bitfield-Mask: 0x01) */ + #define R_MSTP_MSTPCRB_MSTPB14_Pos (14UL) /*!< MSTPB14 (Bit 14) */ + #define R_MSTP_MSTPCRB_MSTPB14_Msk (0x4000UL) /*!< MSTPB14 (Bitfield-Mask: 0x01) */ + #define R_MSTP_MSTPCRB_MSTPB13_Pos (13UL) /*!< MSTPB13 (Bit 13) */ + #define R_MSTP_MSTPCRB_MSTPB13_Msk (0x2000UL) /*!< MSTPB13 (Bitfield-Mask: 0x01) */ + #define R_MSTP_MSTPCRB_MSTPB12_Pos (12UL) /*!< MSTPB12 (Bit 12) */ + #define R_MSTP_MSTPCRB_MSTPB12_Msk (0x1000UL) /*!< MSTPB12 (Bitfield-Mask: 0x01) */ + #define R_MSTP_MSTPCRB_MSTPB11_Pos (11UL) /*!< MSTPB11 (Bit 11) */ + #define R_MSTP_MSTPCRB_MSTPB11_Msk (0x800UL) /*!< MSTPB11 (Bitfield-Mask: 0x01) */ + #define R_MSTP_MSTPCRB_MSTPB9_Pos (9UL) /*!< MSTPB9 (Bit 9) */ + #define R_MSTP_MSTPCRB_MSTPB9_Msk (0x200UL) /*!< MSTPB9 (Bitfield-Mask: 0x01) */ + #define R_MSTP_MSTPCRB_MSTPB8_Pos (8UL) /*!< MSTPB8 (Bit 8) */ + #define R_MSTP_MSTPCRB_MSTPB8_Msk (0x100UL) /*!< MSTPB8 (Bitfield-Mask: 0x01) */ + #define R_MSTP_MSTPCRB_MSTPB7_Pos (7UL) /*!< MSTPB7 (Bit 7) */ + #define R_MSTP_MSTPCRB_MSTPB7_Msk (0x80UL) /*!< MSTPB7 (Bitfield-Mask: 0x01) */ + #define R_MSTP_MSTPCRB_MSTPB6_Pos (6UL) /*!< MSTPB6 (Bit 6) */ + #define R_MSTP_MSTPCRB_MSTPB6_Msk (0x40UL) /*!< MSTPB6 (Bitfield-Mask: 0x01) */ + #define R_MSTP_MSTPCRB_MSTPB5_Pos (5UL) /*!< MSTPB5 (Bit 5) */ + #define R_MSTP_MSTPCRB_MSTPB5_Msk (0x20UL) /*!< MSTPB5 (Bitfield-Mask: 0x01) */ + #define R_MSTP_MSTPCRB_MSTPB3_Pos (3UL) /*!< MSTPB3 (Bit 3) */ + #define R_MSTP_MSTPCRB_MSTPB3_Msk (0x8UL) /*!< MSTPB3 (Bitfield-Mask: 0x01) */ + #define R_MSTP_MSTPCRB_MSTPB2_Pos (2UL) /*!< MSTPB2 (Bit 2) */ + #define R_MSTP_MSTPCRB_MSTPB2_Msk (0x4UL) /*!< MSTPB2 (Bitfield-Mask: 0x01) */ + #define R_MSTP_MSTPCRB_MSTPB1_Pos (1UL) /*!< MSTPB1 (Bit 1) */ + #define R_MSTP_MSTPCRB_MSTPB1_Msk (0x2UL) /*!< MSTPB1 (Bitfield-Mask: 0x01) */ +/* ======================================================== MSTPCRC ======================================================== */ + #define R_MSTP_MSTPCRC_MSTPC31_Pos (31UL) /*!< MSTPC31 (Bit 31) */ + #define R_MSTP_MSTPCRC_MSTPC31_Msk (0x80000000UL) /*!< MSTPC31 (Bitfield-Mask: 0x01) */ + #define R_MSTP_MSTPCRC_MSTPC28_Pos (28UL) /*!< MSTPC28 (Bit 28) */ + #define R_MSTP_MSTPCRC_MSTPC28_Msk (0x10000000UL) /*!< MSTPC28 (Bitfield-Mask: 0x01) */ + #define R_MSTP_MSTPCRC_MSTPC27_Pos (27UL) /*!< MSTPC27 (Bit 27) */ + #define R_MSTP_MSTPCRC_MSTPC27_Msk (0x8000000UL) /*!< MSTPC27 (Bitfield-Mask: 0x01) */ + #define R_MSTP_MSTPCRC_MSTPC21_Pos (21UL) /*!< MSTPC21 (Bit 21) */ + #define R_MSTP_MSTPCRC_MSTPC21_Msk (0x200000UL) /*!< MSTPC21 (Bitfield-Mask: 0x01) */ + #define R_MSTP_MSTPCRC_MSTPC20_Pos (20UL) /*!< MSTPC20 (Bit 20) */ + #define R_MSTP_MSTPCRC_MSTPC20_Msk (0x100000UL) /*!< MSTPC20 (Bitfield-Mask: 0x01) */ + #define R_MSTP_MSTPCRC_MSTPC14_Pos (14UL) /*!< MSTPC14 (Bit 14) */ + #define R_MSTP_MSTPCRC_MSTPC14_Msk (0x4000UL) /*!< MSTPC14 (Bitfield-Mask: 0x01) */ + #define R_MSTP_MSTPCRC_MSTPC13_Pos (13UL) /*!< MSTPC13 (Bit 13) */ + #define R_MSTP_MSTPCRC_MSTPC13_Msk (0x2000UL) /*!< MSTPC13 (Bitfield-Mask: 0x01) */ + #define R_MSTP_MSTPCRC_MSTPC12_Pos (12UL) /*!< MSTPC12 (Bit 12) */ + #define R_MSTP_MSTPCRC_MSTPC12_Msk (0x1000UL) /*!< MSTPC12 (Bitfield-Mask: 0x01) */ + #define R_MSTP_MSTPCRC_MSTPC11_Pos (11UL) /*!< MSTPC11 (Bit 11) */ + #define R_MSTP_MSTPCRC_MSTPC11_Msk (0x800UL) /*!< MSTPC11 (Bitfield-Mask: 0x01) */ + #define R_MSTP_MSTPCRC_MSTPC9_Pos (9UL) /*!< MSTPC9 (Bit 9) */ + #define R_MSTP_MSTPCRC_MSTPC9_Msk (0x200UL) /*!< MSTPC9 (Bitfield-Mask: 0x01) */ + #define R_MSTP_MSTPCRC_MSTPC8_Pos (8UL) /*!< MSTPC8 (Bit 8) */ + #define R_MSTP_MSTPCRC_MSTPC8_Msk (0x100UL) /*!< MSTPC8 (Bitfield-Mask: 0x01) */ + #define R_MSTP_MSTPCRC_MSTPC7_Pos (7UL) /*!< MSTPC7 (Bit 7) */ + #define R_MSTP_MSTPCRC_MSTPC7_Msk (0x80UL) /*!< MSTPC7 (Bitfield-Mask: 0x01) */ + #define R_MSTP_MSTPCRC_MSTPC6_Pos (6UL) /*!< MSTPC6 (Bit 6) */ + #define R_MSTP_MSTPCRC_MSTPC6_Msk (0x40UL) /*!< MSTPC6 (Bitfield-Mask: 0x01) */ + #define R_MSTP_MSTPCRC_MSTPC5_Pos (5UL) /*!< MSTPC5 (Bit 5) */ + #define R_MSTP_MSTPCRC_MSTPC5_Msk (0x20UL) /*!< MSTPC5 (Bitfield-Mask: 0x01) */ + #define R_MSTP_MSTPCRC_MSTPC4_Pos (4UL) /*!< MSTPC4 (Bit 4) */ + #define R_MSTP_MSTPCRC_MSTPC4_Msk (0x10UL) /*!< MSTPC4 (Bitfield-Mask: 0x01) */ + #define R_MSTP_MSTPCRC_MSTPC3_Pos (3UL) /*!< MSTPC3 (Bit 3) */ + #define R_MSTP_MSTPCRC_MSTPC3_Msk (0x8UL) /*!< MSTPC3 (Bitfield-Mask: 0x01) */ + #define R_MSTP_MSTPCRC_MSTPC2_Pos (2UL) /*!< MSTPC2 (Bit 2) */ + #define R_MSTP_MSTPCRC_MSTPC2_Msk (0x4UL) /*!< MSTPC2 (Bitfield-Mask: 0x01) */ + #define R_MSTP_MSTPCRC_MSTPC1_Pos (1UL) /*!< MSTPC1 (Bit 1) */ + #define R_MSTP_MSTPCRC_MSTPC1_Msk (0x2UL) /*!< MSTPC1 (Bitfield-Mask: 0x01) */ + #define R_MSTP_MSTPCRC_MSTPC0_Pos (0UL) /*!< MSTPC0 (Bit 0) */ + #define R_MSTP_MSTPCRC_MSTPC0_Msk (0x1UL) /*!< MSTPC0 (Bitfield-Mask: 0x01) */ +/* ======================================================== MSTPCRD ======================================================== */ + #define R_MSTP_MSTPCRD_MSTPD31_Pos (31UL) /*!< MSTPD31 (Bit 31) */ + #define R_MSTP_MSTPCRD_MSTPD31_Msk (0x80000000UL) /*!< MSTPD31 (Bitfield-Mask: 0x01) */ + #define R_MSTP_MSTPCRD_MSTPD29_Pos (29UL) /*!< MSTPD29 (Bit 29) */ + #define R_MSTP_MSTPCRD_MSTPD29_Msk (0x20000000UL) /*!< MSTPD29 (Bitfield-Mask: 0x01) */ + #define R_MSTP_MSTPCRD_MSTPD28_Pos (28UL) /*!< MSTPD28 (Bit 28) */ + #define R_MSTP_MSTPCRD_MSTPD28_Msk (0x10000000UL) /*!< MSTPD28 (Bitfield-Mask: 0x01) */ + #define R_MSTP_MSTPCRD_MSTPD27_Pos (27UL) /*!< MSTPD27 (Bit 27) */ + #define R_MSTP_MSTPCRD_MSTPD27_Msk (0x8000000UL) /*!< MSTPD27 (Bitfield-Mask: 0x01) */ + #define R_MSTP_MSTPCRD_MSTPD26_Pos (26UL) /*!< MSTPD26 (Bit 26) */ + #define R_MSTP_MSTPCRD_MSTPD26_Msk (0x4000000UL) /*!< MSTPD26 (Bitfield-Mask: 0x01) */ + #define R_MSTP_MSTPCRD_MSTPD25_Pos (25UL) /*!< MSTPD25 (Bit 25) */ + #define R_MSTP_MSTPCRD_MSTPD25_Msk (0x2000000UL) /*!< MSTPD25 (Bitfield-Mask: 0x01) */ + #define R_MSTP_MSTPCRD_MSTPD24_Pos (24UL) /*!< MSTPD24 (Bit 24) */ + #define R_MSTP_MSTPCRD_MSTPD24_Msk (0x1000000UL) /*!< MSTPD24 (Bitfield-Mask: 0x01) */ + #define R_MSTP_MSTPCRD_MSTPD23_Pos (23UL) /*!< MSTPD23 (Bit 23) */ + #define R_MSTP_MSTPCRD_MSTPD23_Msk (0x800000UL) /*!< MSTPD23 (Bitfield-Mask: 0x01) */ + #define R_MSTP_MSTPCRD_MSTPD22_Pos (22UL) /*!< MSTPD22 (Bit 22) */ + #define R_MSTP_MSTPCRD_MSTPD22_Msk (0x400000UL) /*!< MSTPD22 (Bitfield-Mask: 0x01) */ + #define R_MSTP_MSTPCRD_MSTPD20_Pos (20UL) /*!< MSTPD20 (Bit 20) */ + #define R_MSTP_MSTPCRD_MSTPD20_Msk (0x100000UL) /*!< MSTPD20 (Bitfield-Mask: 0x01) */ + #define R_MSTP_MSTPCRD_MSTPD19_Pos (19UL) /*!< MSTPD19 (Bit 19) */ + #define R_MSTP_MSTPCRD_MSTPD19_Msk (0x80000UL) /*!< MSTPD19 (Bitfield-Mask: 0x01) */ + #define R_MSTP_MSTPCRD_MSTPD17_Pos (17UL) /*!< MSTPD17 (Bit 17) */ + #define R_MSTP_MSTPCRD_MSTPD17_Msk (0x20000UL) /*!< MSTPD17 (Bitfield-Mask: 0x01) */ + #define R_MSTP_MSTPCRD_MSTPD16_Pos (16UL) /*!< MSTPD16 (Bit 16) */ + #define R_MSTP_MSTPCRD_MSTPD16_Msk (0x10000UL) /*!< MSTPD16 (Bitfield-Mask: 0x01) */ + #define R_MSTP_MSTPCRD_MSTPD15_Pos (15UL) /*!< MSTPD15 (Bit 15) */ + #define R_MSTP_MSTPCRD_MSTPD15_Msk (0x8000UL) /*!< MSTPD15 (Bitfield-Mask: 0x01) */ + #define R_MSTP_MSTPCRD_MSTPD14_Pos (14UL) /*!< MSTPD14 (Bit 14) */ + #define R_MSTP_MSTPCRD_MSTPD14_Msk (0x4000UL) /*!< MSTPD14 (Bitfield-Mask: 0x01) */ + #define R_MSTP_MSTPCRD_MSTPD13_Pos (13UL) /*!< MSTPD13 (Bit 13) */ + #define R_MSTP_MSTPCRD_MSTPD13_Msk (0x2000UL) /*!< MSTPD13 (Bitfield-Mask: 0x01) */ + #define R_MSTP_MSTPCRD_MSTPD12_Pos (12UL) /*!< MSTPD12 (Bit 12) */ + #define R_MSTP_MSTPCRD_MSTPD12_Msk (0x1000UL) /*!< MSTPD12 (Bitfield-Mask: 0x01) */ + #define R_MSTP_MSTPCRD_MSTPD11_Pos (11UL) /*!< MSTPD11 (Bit 11) */ + #define R_MSTP_MSTPCRD_MSTPD11_Msk (0x800UL) /*!< MSTPD11 (Bitfield-Mask: 0x01) */ + #define R_MSTP_MSTPCRD_MSTPD6_Pos (6UL) /*!< MSTPD6 (Bit 6) */ + #define R_MSTP_MSTPCRD_MSTPD6_Msk (0x40UL) /*!< MSTPD6 (Bitfield-Mask: 0x01) */ + #define R_MSTP_MSTPCRD_MSTPD5_Pos (5UL) /*!< MSTPD5 (Bit 5) */ + #define R_MSTP_MSTPCRD_MSTPD5_Msk (0x20UL) /*!< MSTPD5 (Bitfield-Mask: 0x01) */ + #define R_MSTP_MSTPCRD_MSTPD3_Pos (3UL) /*!< MSTPD3 (Bit 3) */ + #define R_MSTP_MSTPCRD_MSTPD3_Msk (0x8UL) /*!< MSTPD3 (Bitfield-Mask: 0x01) */ + #define R_MSTP_MSTPCRD_MSTPD2_Pos (2UL) /*!< MSTPD2 (Bit 2) */ + #define R_MSTP_MSTPCRD_MSTPD2_Msk (0x4UL) /*!< MSTPD2 (Bitfield-Mask: 0x01) */ + #define R_MSTP_MSTPCRD_MSTPD1_Pos (1UL) /*!< MSTPD1 (Bit 1) */ + #define R_MSTP_MSTPCRD_MSTPD1_Msk (0x2UL) /*!< MSTPD1 (Bitfield-Mask: 0x01) */ + #define R_MSTP_MSTPCRD_MSTPD0_Pos (0UL) /*!< MSTPD0 (Bit 0) */ + #define R_MSTP_MSTPCRD_MSTPD0_Msk (0x1UL) /*!< MSTPD0 (Bitfield-Mask: 0x01) */ +/* ======================================================== MSTPCRE ======================================================== */ + #define R_MSTP_MSTPCRE_MSTPE4_Pos (4UL) /*!< MSTPE4 (Bit 4) */ + #define R_MSTP_MSTPCRE_MSTPE4_Msk (0x10UL) /*!< MSTPE4 (Bitfield-Mask: 0x01) */ + #define R_MSTP_MSTPCRE_MSTPE14_Pos (14UL) /*!< MSTPE14 (Bit 14) */ + #define R_MSTP_MSTPCRE_MSTPE14_Msk (0x4000UL) /*!< MSTPE14 (Bitfield-Mask: 0x01) */ + #define R_MSTP_MSTPCRE_MSTPE15_Pos (15UL) /*!< MSTPE15 (Bit 15) */ + #define R_MSTP_MSTPCRE_MSTPE15_Msk (0x8000UL) /*!< MSTPE15 (Bitfield-Mask: 0x01) */ + #define R_MSTP_MSTPCRE_MSTPE22_Pos (22UL) /*!< MSTPE22 (Bit 22) */ + #define R_MSTP_MSTPCRE_MSTPE22_Msk (0x400000UL) /*!< MSTPE22 (Bitfield-Mask: 0x01) */ + #define R_MSTP_MSTPCRE_MSTPE23_Pos (23UL) /*!< MSTPE23 (Bit 23) */ + #define R_MSTP_MSTPCRE_MSTPE23_Msk (0x800000UL) /*!< MSTPE23 (Bitfield-Mask: 0x01) */ + #define R_MSTP_MSTPCRE_MSTPE24_Pos (24UL) /*!< MSTPE24 (Bit 24) */ + #define R_MSTP_MSTPCRE_MSTPE24_Msk (0x1000000UL) /*!< MSTPE24 (Bitfield-Mask: 0x01) */ + #define R_MSTP_MSTPCRE_MSTPE25_Pos (25UL) /*!< MSTPE25 (Bit 25) */ + #define R_MSTP_MSTPCRE_MSTPE25_Msk (0x2000000UL) /*!< MSTPE25 (Bitfield-Mask: 0x01) */ + #define R_MSTP_MSTPCRE_MSTPE26_Pos (26UL) /*!< MSTPE26 (Bit 26) */ + #define R_MSTP_MSTPCRE_MSTPE26_Msk (0x4000000UL) /*!< MSTPE26 (Bitfield-Mask: 0x01) */ + #define R_MSTP_MSTPCRE_MSTPE27_Pos (27UL) /*!< MSTPE27 (Bit 27) */ + #define R_MSTP_MSTPCRE_MSTPE27_Msk (0x8000000UL) /*!< MSTPE27 (Bitfield-Mask: 0x01) */ + #define R_MSTP_MSTPCRE_MSTPE28_Pos (28UL) /*!< MSTPE28 (Bit 28) */ + #define R_MSTP_MSTPCRE_MSTPE28_Msk (0x10000000UL) /*!< MSTPE28 (Bitfield-Mask: 0x01) */ + #define R_MSTP_MSTPCRE_MSTPE29_Pos (29UL) /*!< MSTPE29 (Bit 29) */ + #define R_MSTP_MSTPCRE_MSTPE29_Msk (0x20000000UL) /*!< MSTPE29 (Bitfield-Mask: 0x01) */ + #define R_MSTP_MSTPCRE_MSTPE30_Pos (30UL) /*!< MSTPE30 (Bit 30) */ + #define R_MSTP_MSTPCRE_MSTPE30_Msk (0x40000000UL) /*!< MSTPE30 (Bitfield-Mask: 0x01) */ + #define R_MSTP_MSTPCRE_MSTPE31_Pos (31UL) /*!< MSTPE31 (Bit 31) */ + #define R_MSTP_MSTPCRE_MSTPE31_Msk (0x80000000UL) /*!< MSTPE31 (Bitfield-Mask: 0x01) */ + +/* =========================================================================================================================== */ +/* ================ R_OPAMP ================ */ +/* =========================================================================================================================== */ + +/* ========================================================= AMPMC ========================================================= */ + #define R_OPAMP_AMPMC_AMPSP_Pos (7UL) /*!< AMPSP (Bit 7) */ + #define R_OPAMP_AMPMC_AMPSP_Msk (0x80UL) /*!< AMPSP (Bitfield-Mask: 0x01) */ + #define R_OPAMP_AMPMC_AMPPC_Pos (0UL) /*!< AMPPC (Bit 0) */ + #define R_OPAMP_AMPMC_AMPPC_Msk (0x1UL) /*!< AMPPC (Bitfield-Mask: 0x01) */ +/* ======================================================== AMPTRM ========================================================= */ + #define R_OPAMP_AMPTRM_AMPTRM_Pos (0UL) /*!< AMPTRM (Bit 0) */ + #define R_OPAMP_AMPTRM_AMPTRM_Msk (0x3UL) /*!< AMPTRM (Bitfield-Mask: 0x03) */ +/* ======================================================== AMPTRS ========================================================= */ + #define R_OPAMP_AMPTRS_AMPTRS_Pos (0UL) /*!< AMPTRS (Bit 0) */ + #define R_OPAMP_AMPTRS_AMPTRS_Msk (0x3UL) /*!< AMPTRS (Bitfield-Mask: 0x03) */ +/* ========================================================= AMPC ========================================================== */ + #define R_OPAMP_AMPC_IREFE_Pos (7UL) /*!< IREFE (Bit 7) */ + #define R_OPAMP_AMPC_IREFE_Msk (0x80UL) /*!< IREFE (Bitfield-Mask: 0x01) */ + #define R_OPAMP_AMPC_AMPE_Pos (0UL) /*!< AMPE (Bit 0) */ + #define R_OPAMP_AMPC_AMPE_Msk (0x1UL) /*!< AMPE (Bitfield-Mask: 0x01) */ +/* ======================================================== AMPMON ========================================================= */ + #define R_OPAMP_AMPMON_AMPMON_Pos (0UL) /*!< AMPMON (Bit 0) */ + #define R_OPAMP_AMPMON_AMPMON_Msk (0x1UL) /*!< AMPMON (Bitfield-Mask: 0x01) */ +/* ======================================================== AMPCPC ========================================================= */ + #define R_OPAMP_AMPCPC_PUMPEN_Pos (0UL) /*!< PUMPEN (Bit 0) */ + #define R_OPAMP_AMPCPC_PUMPEN_Msk (0x1UL) /*!< PUMPEN (Bitfield-Mask: 0x01) */ +/* ======================================================== AMPUOTE ======================================================== */ + #define R_OPAMP_AMPUOTE_AMPTE_Pos (0UL) /*!< AMPTE (Bit 0) */ + #define R_OPAMP_AMPUOTE_AMPTE_Msk (0x1UL) /*!< AMPTE (Bitfield-Mask: 0x01) */ + +/* =========================================================================================================================== */ +/* ================ R_PDC ================ */ +/* =========================================================================================================================== */ + +/* ========================================================= PCCR0 ========================================================= */ + #define R_PDC_PCCR0_EDS_Pos (14UL) /*!< EDS (Bit 14) */ + #define R_PDC_PCCR0_EDS_Msk (0x4000UL) /*!< EDS (Bitfield-Mask: 0x01) */ + #define R_PDC_PCCR0_PCKDIV_Pos (11UL) /*!< PCKDIV (Bit 11) */ + #define R_PDC_PCCR0_PCKDIV_Msk (0x3800UL) /*!< PCKDIV (Bitfield-Mask: 0x07) */ + #define R_PDC_PCCR0_PCKOE_Pos (10UL) /*!< PCKOE (Bit 10) */ + #define R_PDC_PCCR0_PCKOE_Msk (0x400UL) /*!< PCKOE (Bitfield-Mask: 0x01) */ + #define R_PDC_PCCR0_HERIE_Pos (9UL) /*!< HERIE (Bit 9) */ + #define R_PDC_PCCR0_HERIE_Msk (0x200UL) /*!< HERIE (Bitfield-Mask: 0x01) */ + #define R_PDC_PCCR0_VERIE_Pos (8UL) /*!< VERIE (Bit 8) */ + #define R_PDC_PCCR0_VERIE_Msk (0x100UL) /*!< VERIE (Bitfield-Mask: 0x01) */ + #define R_PDC_PCCR0_UDRIE_Pos (7UL) /*!< UDRIE (Bit 7) */ + #define R_PDC_PCCR0_UDRIE_Msk (0x80UL) /*!< UDRIE (Bitfield-Mask: 0x01) */ + #define R_PDC_PCCR0_OVIE_Pos (6UL) /*!< OVIE (Bit 6) */ + #define R_PDC_PCCR0_OVIE_Msk (0x40UL) /*!< OVIE (Bitfield-Mask: 0x01) */ + #define R_PDC_PCCR0_FEIE_Pos (5UL) /*!< FEIE (Bit 5) */ + #define R_PDC_PCCR0_FEIE_Msk (0x20UL) /*!< FEIE (Bitfield-Mask: 0x01) */ + #define R_PDC_PCCR0_DFIE_Pos (4UL) /*!< DFIE (Bit 4) */ + #define R_PDC_PCCR0_DFIE_Msk (0x10UL) /*!< DFIE (Bitfield-Mask: 0x01) */ + #define R_PDC_PCCR0_PRST_Pos (3UL) /*!< PRST (Bit 3) */ + #define R_PDC_PCCR0_PRST_Msk (0x8UL) /*!< PRST (Bitfield-Mask: 0x01) */ + #define R_PDC_PCCR0_HPS_Pos (2UL) /*!< HPS (Bit 2) */ + #define R_PDC_PCCR0_HPS_Msk (0x4UL) /*!< HPS (Bitfield-Mask: 0x01) */ + #define R_PDC_PCCR0_VPS_Pos (1UL) /*!< VPS (Bit 1) */ + #define R_PDC_PCCR0_VPS_Msk (0x2UL) /*!< VPS (Bitfield-Mask: 0x01) */ + #define R_PDC_PCCR0_PCKE_Pos (0UL) /*!< PCKE (Bit 0) */ + #define R_PDC_PCCR0_PCKE_Msk (0x1UL) /*!< PCKE (Bitfield-Mask: 0x01) */ +/* ========================================================= PCCR1 ========================================================= */ + #define R_PDC_PCCR1_PCE_Pos (0UL) /*!< PCE (Bit 0) */ + #define R_PDC_PCCR1_PCE_Msk (0x1UL) /*!< PCE (Bitfield-Mask: 0x01) */ +/* ========================================================= PCSR ========================================================== */ + #define R_PDC_PCSR_HERF_Pos (6UL) /*!< HERF (Bit 6) */ + #define R_PDC_PCSR_HERF_Msk (0x40UL) /*!< HERF (Bitfield-Mask: 0x01) */ + #define R_PDC_PCSR_VERF_Pos (5UL) /*!< VERF (Bit 5) */ + #define R_PDC_PCSR_VERF_Msk (0x20UL) /*!< VERF (Bitfield-Mask: 0x01) */ + #define R_PDC_PCSR_UDRF_Pos (4UL) /*!< UDRF (Bit 4) */ + #define R_PDC_PCSR_UDRF_Msk (0x10UL) /*!< UDRF (Bitfield-Mask: 0x01) */ + #define R_PDC_PCSR_OVRF_Pos (3UL) /*!< OVRF (Bit 3) */ + #define R_PDC_PCSR_OVRF_Msk (0x8UL) /*!< OVRF (Bitfield-Mask: 0x01) */ + #define R_PDC_PCSR_FEF_Pos (2UL) /*!< FEF (Bit 2) */ + #define R_PDC_PCSR_FEF_Msk (0x4UL) /*!< FEF (Bitfield-Mask: 0x01) */ + #define R_PDC_PCSR_FEMPF_Pos (1UL) /*!< FEMPF (Bit 1) */ + #define R_PDC_PCSR_FEMPF_Msk (0x2UL) /*!< FEMPF (Bitfield-Mask: 0x01) */ + #define R_PDC_PCSR_FBSY_Pos (0UL) /*!< FBSY (Bit 0) */ + #define R_PDC_PCSR_FBSY_Msk (0x1UL) /*!< FBSY (Bitfield-Mask: 0x01) */ +/* ======================================================== PCMONR ========================================================= */ + #define R_PDC_PCMONR_HSYNC_Pos (1UL) /*!< HSYNC (Bit 1) */ + #define R_PDC_PCMONR_HSYNC_Msk (0x2UL) /*!< HSYNC (Bitfield-Mask: 0x01) */ + #define R_PDC_PCMONR_VSYNC_Pos (0UL) /*!< VSYNC (Bit 0) */ + #define R_PDC_PCMONR_VSYNC_Msk (0x1UL) /*!< VSYNC (Bitfield-Mask: 0x01) */ +/* ========================================================= PCDR ========================================================== */ + #define R_PDC_PCDR_PCDR_Pos (0UL) /*!< PCDR (Bit 0) */ + #define R_PDC_PCDR_PCDR_Msk (0xffffffffUL) /*!< PCDR (Bitfield-Mask: 0xffffffff) */ +/* ========================================================== VCR ========================================================== */ + #define R_PDC_VCR_VSZ_Pos (16UL) /*!< VSZ (Bit 16) */ + #define R_PDC_VCR_VSZ_Msk (0xfff0000UL) /*!< VSZ (Bitfield-Mask: 0xfff) */ + #define R_PDC_VCR_VST_Pos (0UL) /*!< VST (Bit 0) */ + #define R_PDC_VCR_VST_Msk (0xfffUL) /*!< VST (Bitfield-Mask: 0xfff) */ +/* ========================================================== HCR ========================================================== */ + #define R_PDC_HCR_HSZ_Pos (16UL) /*!< HSZ (Bit 16) */ + #define R_PDC_HCR_HSZ_Msk (0xfff0000UL) /*!< HSZ (Bitfield-Mask: 0xfff) */ + #define R_PDC_HCR_HST_Pos (0UL) /*!< HST (Bit 0) */ + #define R_PDC_HCR_HST_Msk (0xfffUL) /*!< HST (Bitfield-Mask: 0xfff) */ + +/* =========================================================================================================================== */ +/* ================ 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) */ +/* ========================================================= PODR ========================================================== */ + #define R_PORT0_PODR_PODR_Pos (0UL) /*!< PODR (Bit 0) */ + #define R_PORT0_PODR_PODR_Msk (0x1UL) /*!< PODR (Bitfield-Mask: 0x01) */ +/* ========================================================== PDR ========================================================== */ + #define R_PORT0_PDR_PDR_Pos (0UL) /*!< PDR (Bit 0) */ + #define R_PORT0_PDR_PDR_Msk (0x1UL) /*!< PDR (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) */ +/* ========================================================= EIDR ========================================================== */ + #define R_PORT0_EIDR_EIDR_Pos (0UL) /*!< EIDR (Bit 0) */ + #define R_PORT0_EIDR_EIDR_Msk (0x1UL) /*!< EIDR (Bitfield-Mask: 0x01) */ +/* ========================================================= PIDR ========================================================== */ + #define R_PORT0_PIDR_PIDR_Pos (0UL) /*!< PIDR (Bit 0) */ + #define R_PORT0_PIDR_PIDR_Msk (0x1UL) /*!< PIDR (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) */ +/* ========================================================= PORR ========================================================== */ + #define R_PORT0_PORR_PORR_Pos (0UL) /*!< PORR (Bit 0) */ + #define R_PORT0_PORR_PORR_Msk (0x1UL) /*!< PORR (Bitfield-Mask: 0x01) */ +/* ========================================================= POSR ========================================================== */ + #define R_PORT0_POSR_POSR_Pos (0UL) /*!< POSR (Bit 0) */ + #define R_PORT0_POSR_POSR_Msk (0x1UL) /*!< POSR (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) */ +/* ========================================================= EORR ========================================================== */ + #define R_PORT0_EORR_EORR_Pos (0UL) /*!< EORR (Bit 0) */ + #define R_PORT0_EORR_EORR_Msk (0x1UL) /*!< EORR (Bitfield-Mask: 0x01) */ +/* ========================================================= EOSR ========================================================== */ + #define R_PORT0_EOSR_EOSR_Pos (0UL) /*!< EOSR (Bit 0) */ + #define R_PORT0_EOSR_EOSR_Msk (0x1UL) /*!< EOSR (Bitfield-Mask: 0x01) */ + +/* =========================================================================================================================== */ +/* ================ R_PFS ================ */ +/* =========================================================================================================================== */ + +/* =========================================================================================================================== */ +/* ================ R_PMISC ================ */ +/* =========================================================================================================================== */ + +/* ======================================================== PFENET ========================================================= */ + #define R_PMISC_PFENET_PHYMODE1_Pos (5UL) /*!< PHYMODE1 (Bit 5) */ + #define R_PMISC_PFENET_PHYMODE1_Msk (0x20UL) /*!< PHYMODE1 (Bitfield-Mask: 0x01) */ + #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_QSPI ================ */ +/* =========================================================================================================================== */ + +/* ======================================================== SFMSMD ========================================================= */ + #define R_QSPI_SFMSMD_SFMCCE_Pos (15UL) /*!< SFMCCE (Bit 15) */ + #define R_QSPI_SFMSMD_SFMCCE_Msk (0x8000UL) /*!< SFMCCE (Bitfield-Mask: 0x01) */ + #define R_QSPI_SFMSMD_SFMOSW_Pos (11UL) /*!< SFMOSW (Bit 11) */ + #define R_QSPI_SFMSMD_SFMOSW_Msk (0x800UL) /*!< SFMOSW (Bitfield-Mask: 0x01) */ + #define R_QSPI_SFMSMD_SFMOHW_Pos (10UL) /*!< SFMOHW (Bit 10) */ + #define R_QSPI_SFMSMD_SFMOHW_Msk (0x400UL) /*!< SFMOHW (Bitfield-Mask: 0x01) */ + #define R_QSPI_SFMSMD_SFMOEX_Pos (9UL) /*!< SFMOEX (Bit 9) */ + #define R_QSPI_SFMSMD_SFMOEX_Msk (0x200UL) /*!< SFMOEX (Bitfield-Mask: 0x01) */ + #define R_QSPI_SFMSMD_SFMMD3_Pos (8UL) /*!< SFMMD3 (Bit 8) */ + #define R_QSPI_SFMSMD_SFMMD3_Msk (0x100UL) /*!< SFMMD3 (Bitfield-Mask: 0x01) */ + #define R_QSPI_SFMSMD_SFMPAE_Pos (7UL) /*!< SFMPAE (Bit 7) */ + #define R_QSPI_SFMSMD_SFMPAE_Msk (0x80UL) /*!< SFMPAE (Bitfield-Mask: 0x01) */ + #define R_QSPI_SFMSMD_SFMPFE_Pos (6UL) /*!< SFMPFE (Bit 6) */ + #define R_QSPI_SFMSMD_SFMPFE_Msk (0x40UL) /*!< SFMPFE (Bitfield-Mask: 0x01) */ + #define R_QSPI_SFMSMD_SFMSE_Pos (4UL) /*!< SFMSE (Bit 4) */ + #define R_QSPI_SFMSMD_SFMSE_Msk (0x30UL) /*!< SFMSE (Bitfield-Mask: 0x03) */ + #define R_QSPI_SFMSMD_SFMRM_Pos (0UL) /*!< SFMRM (Bit 0) */ + #define R_QSPI_SFMSMD_SFMRM_Msk (0x7UL) /*!< SFMRM (Bitfield-Mask: 0x07) */ +/* ======================================================== SFMSSC ========================================================= */ + #define R_QSPI_SFMSSC_SFMSLD_Pos (5UL) /*!< SFMSLD (Bit 5) */ + #define R_QSPI_SFMSSC_SFMSLD_Msk (0x20UL) /*!< SFMSLD (Bitfield-Mask: 0x01) */ + #define R_QSPI_SFMSSC_SFMSHD_Pos (4UL) /*!< SFMSHD (Bit 4) */ + #define R_QSPI_SFMSSC_SFMSHD_Msk (0x10UL) /*!< SFMSHD (Bitfield-Mask: 0x01) */ + #define R_QSPI_SFMSSC_SFMSW_Pos (0UL) /*!< SFMSW (Bit 0) */ + #define R_QSPI_SFMSSC_SFMSW_Msk (0xfUL) /*!< SFMSW (Bitfield-Mask: 0x0f) */ +/* ======================================================== SFMSKC ========================================================= */ + #define R_QSPI_SFMSKC_SFMDTY_Pos (5UL) /*!< SFMDTY (Bit 5) */ + #define R_QSPI_SFMSKC_SFMDTY_Msk (0x20UL) /*!< SFMDTY (Bitfield-Mask: 0x01) */ + #define R_QSPI_SFMSKC_SFMDV_Pos (0UL) /*!< SFMDV (Bit 0) */ + #define R_QSPI_SFMSKC_SFMDV_Msk (0x1fUL) /*!< SFMDV (Bitfield-Mask: 0x1f) */ +/* ======================================================== SFMSST ========================================================= */ + #define R_QSPI_SFMSST_PFOFF_Pos (7UL) /*!< PFOFF (Bit 7) */ + #define R_QSPI_SFMSST_PFOFF_Msk (0x80UL) /*!< PFOFF (Bitfield-Mask: 0x01) */ + #define R_QSPI_SFMSST_PFFUL_Pos (6UL) /*!< PFFUL (Bit 6) */ + #define R_QSPI_SFMSST_PFFUL_Msk (0x40UL) /*!< PFFUL (Bitfield-Mask: 0x01) */ + #define R_QSPI_SFMSST_PFCNT_Pos (0UL) /*!< PFCNT (Bit 0) */ + #define R_QSPI_SFMSST_PFCNT_Msk (0x1fUL) /*!< PFCNT (Bitfield-Mask: 0x1f) */ +/* ======================================================== SFMCOM ========================================================= */ + #define R_QSPI_SFMCOM_SFMD_Pos (0UL) /*!< SFMD (Bit 0) */ + #define R_QSPI_SFMCOM_SFMD_Msk (0xffUL) /*!< SFMD (Bitfield-Mask: 0xff) */ +/* ======================================================== SFMCMD ========================================================= */ + #define R_QSPI_SFMCMD_DCOM_Pos (0UL) /*!< DCOM (Bit 0) */ + #define R_QSPI_SFMCMD_DCOM_Msk (0x1UL) /*!< DCOM (Bitfield-Mask: 0x01) */ +/* ======================================================== SFMCST ========================================================= */ + #define R_QSPI_SFMCST_EROMR_Pos (7UL) /*!< EROMR (Bit 7) */ + #define R_QSPI_SFMCST_EROMR_Msk (0x80UL) /*!< EROMR (Bitfield-Mask: 0x01) */ + #define R_QSPI_SFMCST_COMBSY_Pos (0UL) /*!< COMBSY (Bit 0) */ + #define R_QSPI_SFMCST_COMBSY_Msk (0x1UL) /*!< COMBSY (Bitfield-Mask: 0x01) */ +/* ======================================================== SFMSIC ========================================================= */ + #define R_QSPI_SFMSIC_SFMCIC_Pos (0UL) /*!< SFMCIC (Bit 0) */ + #define R_QSPI_SFMSIC_SFMCIC_Msk (0xffUL) /*!< SFMCIC (Bitfield-Mask: 0xff) */ +/* ======================================================== SFMSAC ========================================================= */ + #define R_QSPI_SFMSAC_SFM4BC_Pos (4UL) /*!< SFM4BC (Bit 4) */ + #define R_QSPI_SFMSAC_SFM4BC_Msk (0x10UL) /*!< SFM4BC (Bitfield-Mask: 0x01) */ + #define R_QSPI_SFMSAC_SFMAS_Pos (0UL) /*!< SFMAS (Bit 0) */ + #define R_QSPI_SFMSAC_SFMAS_Msk (0x3UL) /*!< SFMAS (Bitfield-Mask: 0x03) */ +/* ======================================================== SFMSDC ========================================================= */ + #define R_QSPI_SFMSDC_SFMXD_Pos (8UL) /*!< SFMXD (Bit 8) */ + #define R_QSPI_SFMSDC_SFMXD_Msk (0xff00UL) /*!< SFMXD (Bitfield-Mask: 0xff) */ + #define R_QSPI_SFMSDC_SFMXEN_Pos (7UL) /*!< SFMXEN (Bit 7) */ + #define R_QSPI_SFMSDC_SFMXEN_Msk (0x80UL) /*!< SFMXEN (Bitfield-Mask: 0x01) */ + #define R_QSPI_SFMSDC_SFMXST_Pos (6UL) /*!< SFMXST (Bit 6) */ + #define R_QSPI_SFMSDC_SFMXST_Msk (0x40UL) /*!< SFMXST (Bitfield-Mask: 0x01) */ + #define R_QSPI_SFMSDC_SFMDN_Pos (0UL) /*!< SFMDN (Bit 0) */ + #define R_QSPI_SFMSDC_SFMDN_Msk (0xfUL) /*!< SFMDN (Bitfield-Mask: 0x0f) */ +/* ======================================================== SFMSPC ========================================================= */ + #define R_QSPI_SFMSPC_SFMSDE_Pos (4UL) /*!< SFMSDE (Bit 4) */ + #define R_QSPI_SFMSPC_SFMSDE_Msk (0x10UL) /*!< SFMSDE (Bitfield-Mask: 0x01) */ + #define R_QSPI_SFMSPC_SFMSPI_Pos (0UL) /*!< SFMSPI (Bit 0) */ + #define R_QSPI_SFMSPC_SFMSPI_Msk (0x3UL) /*!< SFMSPI (Bitfield-Mask: 0x03) */ +/* ======================================================== SFMPMD ========================================================= */ + #define R_QSPI_SFMPMD_SFMWPL_Pos (2UL) /*!< SFMWPL (Bit 2) */ + #define R_QSPI_SFMPMD_SFMWPL_Msk (0x4UL) /*!< SFMWPL (Bitfield-Mask: 0x01) */ +/* ======================================================== SFMCNT1 ======================================================== */ + #define R_QSPI_SFMCNT1_QSPI_EXT_Pos (26UL) /*!< QSPI_EXT (Bit 26) */ + #define R_QSPI_SFMCNT1_QSPI_EXT_Msk (0xfc000000UL) /*!< QSPI_EXT (Bitfield-Mask: 0x3f) */ + +/* =========================================================================================================================== */ +/* ================ 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) */ +/* ======================================================== 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) */ +/* ========================================================= BCNT0 ========================================================= */ + #define R_RTC_BCNT0_BCNT0_Pos (0UL) /*!< BCNT0 (Bit 0) */ + #define R_RTC_BCNT0_BCNT0_Msk (0xffUL) /*!< BCNT0 (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) */ +/* ========================================================= BCNT1 ========================================================= */ + #define R_RTC_BCNT1_BCNT1_Pos (0UL) /*!< BCNT1 (Bit 0) */ + #define R_RTC_BCNT1_BCNT1_Msk (0xffUL) /*!< BCNT1 (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) */ +/* ========================================================= BCNT2 ========================================================= */ + #define R_RTC_BCNT2_BCNT2_Pos (0UL) /*!< BCNT2 (Bit 0) */ + #define R_RTC_BCNT2_BCNT2_Msk (0xffUL) /*!< BCNT2 (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) */ +/* ========================================================= BCNT3 ========================================================= */ + #define R_RTC_BCNT3_BCNT3_Pos (0UL) /*!< BCNT3 (Bit 0) */ + #define R_RTC_BCNT3_BCNT3_Msk (0xffUL) /*!< BCNT3 (Bitfield-Mask: 0xff) */ +/* ======================================================== 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) */ +/* ======================================================== 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) */ +/* ======================================================== BCNT0AR ======================================================== */ + #define R_RTC_BCNT0AR_BCNT0AR_Pos (0UL) /*!< BCNT0AR (Bit 0) */ + #define R_RTC_BCNT0AR_BCNT0AR_Msk (0xffUL) /*!< BCNT0AR (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) */ +/* ======================================================== BCNT1AR ======================================================== */ + #define R_RTC_BCNT1AR_BCNT1AR_Pos (0UL) /*!< BCNT1AR (Bit 0) */ + #define R_RTC_BCNT1AR_BCNT1AR_Msk (0xffUL) /*!< BCNT1AR (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) */ +/* ======================================================== BCNT2AR ======================================================== */ + #define R_RTC_BCNT2AR_BCNT2AR_Pos (0UL) /*!< BCNT2AR (Bit 0) */ + #define R_RTC_BCNT2AR_BCNT2AR_Msk (0xffUL) /*!< BCNT2AR (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) */ +/* ======================================================== BCNT3AR ======================================================== */ + #define R_RTC_BCNT3AR_BCNT3AR_Pos (0UL) /*!< BCNT3AR (Bit 0) */ + #define R_RTC_BCNT3AR_BCNT3AR_Msk (0xffUL) /*!< BCNT3AR (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) */ +/* ======================================================= BCNT0AER ======================================================== */ + #define R_RTC_BCNT0AER_ENB_Pos (0UL) /*!< ENB (Bit 0) */ + #define R_RTC_BCNT0AER_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) */ +/* ======================================================= BCNT1AER ======================================================== */ + #define R_RTC_BCNT1AER_ENB_Pos (0UL) /*!< ENB (Bit 0) */ + #define R_RTC_BCNT1AER_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) */ +/* ======================================================= BCNT2AER ======================================================== */ + #define R_RTC_BCNT2AER_ENB_Pos (0UL) /*!< ENB (Bit 0) */ + #define R_RTC_BCNT2AER_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) */ +/* ======================================================= BCNT3AER ======================================================== */ + #define R_RTC_BCNT3AER_ENB_Pos (0UL) /*!< ENB (Bit 0) */ + #define R_RTC_BCNT3AER_ENB_Msk (0xffUL) /*!< ENB (Bitfield-Mask: 0xff) */ +/* ========================================================= 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) */ +/* ========================================================= 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_SDADC0 ================ */ +/* =========================================================================================================================== */ + +/* ========================================================= STC1 ========================================================== */ + #define R_SDADC0_STC1_VSBIAS_Pos (8UL) /*!< VSBIAS (Bit 8) */ + #define R_SDADC0_STC1_VSBIAS_Msk (0xf00UL) /*!< VSBIAS (Bitfield-Mask: 0x0f) */ + #define R_SDADC0_STC1_CLKDIV_Pos (0UL) /*!< CLKDIV (Bit 0) */ + #define R_SDADC0_STC1_CLKDIV_Msk (0xfUL) /*!< CLKDIV (Bitfield-Mask: 0x0f) */ + #define R_SDADC0_STC1_SDADLPM_Pos (7UL) /*!< SDADLPM (Bit 7) */ + #define R_SDADC0_STC1_SDADLPM_Msk (0x80UL) /*!< SDADLPM (Bitfield-Mask: 0x01) */ + #define R_SDADC0_STC1_VREFSEL_Pos (15UL) /*!< VREFSEL (Bit 15) */ + #define R_SDADC0_STC1_VREFSEL_Msk (0x8000UL) /*!< VREFSEL (Bitfield-Mask: 0x01) */ +/* ========================================================= STC2 ========================================================== */ + #define R_SDADC0_STC2_BGRPON_Pos (0UL) /*!< BGRPON (Bit 0) */ + #define R_SDADC0_STC2_BGRPON_Msk (0x1UL) /*!< BGRPON (Bitfield-Mask: 0x01) */ + #define R_SDADC0_STC2_ADFPWDS_Pos (2UL) /*!< ADFPWDS (Bit 2) */ + #define R_SDADC0_STC2_ADFPWDS_Msk (0x4UL) /*!< ADFPWDS (Bitfield-Mask: 0x01) */ + #define R_SDADC0_STC2_ADCPON_Pos (1UL) /*!< ADCPON (Bit 1) */ + #define R_SDADC0_STC2_ADCPON_Msk (0x2UL) /*!< ADCPON (Bitfield-Mask: 0x01) */ +/* ========================================================= PGAC ========================================================== */ + #define R_SDADC0_PGAC_PGAASN_Pos (31UL) /*!< PGAASN (Bit 31) */ + #define R_SDADC0_PGAC_PGAASN_Msk (0x80000000UL) /*!< PGAASN (Bitfield-Mask: 0x01) */ + #define R_SDADC0_PGAC_PGACVE_Pos (30UL) /*!< PGACVE (Bit 30) */ + #define R_SDADC0_PGAC_PGACVE_Msk (0x40000000UL) /*!< PGACVE (Bitfield-Mask: 0x01) */ + #define R_SDADC0_PGAC_PGAREV_Pos (28UL) /*!< PGAREV (Bit 28) */ + #define R_SDADC0_PGAC_PGAREV_Msk (0x10000000UL) /*!< PGAREV (Bitfield-Mask: 0x01) */ + #define R_SDADC0_PGAC_PGAAVE_Pos (26UL) /*!< PGAAVE (Bit 26) */ + #define R_SDADC0_PGAC_PGAAVE_Msk (0xc000000UL) /*!< PGAAVE (Bitfield-Mask: 0x03) */ + #define R_SDADC0_PGAC_PGAAVN_Pos (24UL) /*!< PGAAVN (Bit 24) */ + #define R_SDADC0_PGAC_PGAAVN_Msk (0x3000000UL) /*!< PGAAVN (Bitfield-Mask: 0x03) */ + #define R_SDADC0_PGAC_PGACTN_Pos (21UL) /*!< PGACTN (Bit 21) */ + #define R_SDADC0_PGAC_PGACTN_Msk (0xe00000UL) /*!< PGACTN (Bitfield-Mask: 0x07) */ + #define R_SDADC0_PGAC_PGACTM_Pos (16UL) /*!< PGACTM (Bit 16) */ + #define R_SDADC0_PGAC_PGACTM_Msk (0x1f0000UL) /*!< PGACTM (Bitfield-Mask: 0x1f) */ + #define R_SDADC0_PGAC_PGASEL_Pos (15UL) /*!< PGASEL (Bit 15) */ + #define R_SDADC0_PGAC_PGASEL_Msk (0x8000UL) /*!< PGASEL (Bitfield-Mask: 0x01) */ + #define R_SDADC0_PGAC_PGAPOL_Pos (14UL) /*!< PGAPOL (Bit 14) */ + #define R_SDADC0_PGAC_PGAPOL_Msk (0x4000UL) /*!< PGAPOL (Bitfield-Mask: 0x01) */ + #define R_SDADC0_PGAC_PGAOFS_Pos (8UL) /*!< PGAOFS (Bit 8) */ + #define R_SDADC0_PGAC_PGAOFS_Msk (0x1f00UL) /*!< PGAOFS (Bitfield-Mask: 0x1f) */ + #define R_SDADC0_PGAC_PGAOSR_Pos (5UL) /*!< PGAOSR (Bit 5) */ + #define R_SDADC0_PGAC_PGAOSR_Msk (0xe0UL) /*!< PGAOSR (Bitfield-Mask: 0x07) */ + #define R_SDADC0_PGAC_PGAGC_Pos (0UL) /*!< PGAGC (Bit 0) */ + #define R_SDADC0_PGAC_PGAGC_Msk (0x1fUL) /*!< PGAGC (Bitfield-Mask: 0x1f) */ +/* ========================================================= ADC1 ========================================================== */ + #define R_SDADC0_ADC1_PGASLFT_Pos (20UL) /*!< PGASLFT (Bit 20) */ + #define R_SDADC0_ADC1_PGASLFT_Msk (0x100000UL) /*!< PGASLFT (Bitfield-Mask: 0x01) */ + #define R_SDADC0_ADC1_PGADISC_Pos (17UL) /*!< PGADISC (Bit 17) */ + #define R_SDADC0_ADC1_PGADISC_Msk (0x20000UL) /*!< PGADISC (Bitfield-Mask: 0x01) */ + #define R_SDADC0_ADC1_PGADISA_Pos (16UL) /*!< PGADISA (Bit 16) */ + #define R_SDADC0_ADC1_PGADISA_Msk (0x10000UL) /*!< PGADISA (Bitfield-Mask: 0x01) */ + #define R_SDADC0_ADC1_SDADBMP_Pos (8UL) /*!< SDADBMP (Bit 8) */ + #define R_SDADC0_ADC1_SDADBMP_Msk (0x1f00UL) /*!< SDADBMP (Bitfield-Mask: 0x1f) */ + #define R_SDADC0_ADC1_SDADTMD_Pos (4UL) /*!< SDADTMD (Bit 4) */ + #define R_SDADC0_ADC1_SDADTMD_Msk (0x10UL) /*!< SDADTMD (Bitfield-Mask: 0x01) */ + #define R_SDADC0_ADC1_SDADSCM_Pos (0UL) /*!< SDADSCM (Bit 0) */ + #define R_SDADC0_ADC1_SDADSCM_Msk (0x1UL) /*!< SDADSCM (Bitfield-Mask: 0x01) */ +/* ========================================================= ADC2 ========================================================== */ + #define R_SDADC0_ADC2_SDADST_Pos (0UL) /*!< SDADST (Bit 0) */ + #define R_SDADC0_ADC2_SDADST_Msk (0x1UL) /*!< SDADST (Bitfield-Mask: 0x01) */ +/* ========================================================= ADCR ========================================================== */ + #define R_SDADC0_ADCR_SDADCRC_Pos (25UL) /*!< SDADCRC (Bit 25) */ + #define R_SDADC0_ADCR_SDADCRC_Msk (0xe000000UL) /*!< SDADCRC (Bitfield-Mask: 0x07) */ + #define R_SDADC0_ADCR_SDADCRS_Pos (24UL) /*!< SDADCRS (Bit 24) */ + #define R_SDADC0_ADCR_SDADCRS_Msk (0x1000000UL) /*!< SDADCRS (Bitfield-Mask: 0x01) */ + #define R_SDADC0_ADCR_SDADCRD_Pos (0UL) /*!< SDADCRD (Bit 0) */ + #define R_SDADC0_ADCR_SDADCRD_Msk (0xffffffUL) /*!< SDADCRD (Bitfield-Mask: 0xffffff) */ +/* ========================================================= ADAR ========================================================== */ + #define R_SDADC0_ADAR_SDADMVC_Pos (25UL) /*!< SDADMVC (Bit 25) */ + #define R_SDADC0_ADAR_SDADMVC_Msk (0xe000000UL) /*!< SDADMVC (Bitfield-Mask: 0x07) */ + #define R_SDADC0_ADAR_SDADMVS_Pos (24UL) /*!< SDADMVS (Bit 24) */ + #define R_SDADC0_ADAR_SDADMVS_Msk (0x1000000UL) /*!< SDADMVS (Bitfield-Mask: 0x01) */ + #define R_SDADC0_ADAR_SDADMVD_Pos (0UL) /*!< SDADMVD (Bit 0) */ + #define R_SDADC0_ADAR_SDADMVD_Msk (0xffffffUL) /*!< SDADMVD (Bitfield-Mask: 0xffffff) */ +/* ========================================================= CLBC ========================================================== */ + #define R_SDADC0_CLBC_CLBMD_Pos (0UL) /*!< CLBMD (Bit 0) */ + #define R_SDADC0_CLBC_CLBMD_Msk (0x3UL) /*!< CLBMD (Bitfield-Mask: 0x03) */ +/* ======================================================== CLBSTR ========================================================= */ + #define R_SDADC0_CLBSTR_CLBST_Pos (0UL) /*!< CLBST (Bit 0) */ + #define R_SDADC0_CLBSTR_CLBST_Msk (0x1UL) /*!< CLBST (Bitfield-Mask: 0x01) */ +/* ======================================================== CLBSSR ========================================================= */ + #define R_SDADC0_CLBSSR_CLBSS_Pos (0UL) /*!< CLBSS (Bit 0) */ + #define R_SDADC0_CLBSSR_CLBSS_Msk (0x1UL) /*!< CLBSS (Bitfield-Mask: 0x01) */ + +/* =========================================================================================================================== */ +/* ================ 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_SLCDC ================ */ +/* =========================================================================================================================== */ + +/* ========================================================= LCDM0 ========================================================= */ + #define R_SLCDC_LCDM0_MDSET_Pos (6UL) /*!< MDSET (Bit 6) */ + #define R_SLCDC_LCDM0_MDSET_Msk (0xc0UL) /*!< MDSET (Bitfield-Mask: 0x03) */ + #define R_SLCDC_LCDM0_LWAVE_Pos (5UL) /*!< LWAVE (Bit 5) */ + #define R_SLCDC_LCDM0_LWAVE_Msk (0x20UL) /*!< LWAVE (Bitfield-Mask: 0x01) */ + #define R_SLCDC_LCDM0_LDTY_Pos (2UL) /*!< LDTY (Bit 2) */ + #define R_SLCDC_LCDM0_LDTY_Msk (0x1cUL) /*!< LDTY (Bitfield-Mask: 0x07) */ + #define R_SLCDC_LCDM0_LBAS_Pos (0UL) /*!< LBAS (Bit 0) */ + #define R_SLCDC_LCDM0_LBAS_Msk (0x3UL) /*!< LBAS (Bitfield-Mask: 0x03) */ +/* ========================================================= LCDM1 ========================================================= */ + #define R_SLCDC_LCDM1_LCDON_Pos (7UL) /*!< LCDON (Bit 7) */ + #define R_SLCDC_LCDM1_LCDON_Msk (0x80UL) /*!< LCDON (Bitfield-Mask: 0x01) */ + #define R_SLCDC_LCDM1_SCOC_Pos (6UL) /*!< SCOC (Bit 6) */ + #define R_SLCDC_LCDM1_SCOC_Msk (0x40UL) /*!< SCOC (Bitfield-Mask: 0x01) */ + #define R_SLCDC_LCDM1_VLCON_Pos (5UL) /*!< VLCON (Bit 5) */ + #define R_SLCDC_LCDM1_VLCON_Msk (0x20UL) /*!< VLCON (Bitfield-Mask: 0x01) */ + #define R_SLCDC_LCDM1_BLON_Pos (4UL) /*!< BLON (Bit 4) */ + #define R_SLCDC_LCDM1_BLON_Msk (0x10UL) /*!< BLON (Bitfield-Mask: 0x01) */ + #define R_SLCDC_LCDM1_LCDSEL_Pos (3UL) /*!< LCDSEL (Bit 3) */ + #define R_SLCDC_LCDM1_LCDSEL_Msk (0x8UL) /*!< LCDSEL (Bitfield-Mask: 0x01) */ + #define R_SLCDC_LCDM1_LCDVLM_Pos (0UL) /*!< LCDVLM (Bit 0) */ + #define R_SLCDC_LCDM1_LCDVLM_Msk (0x1UL) /*!< LCDVLM (Bitfield-Mask: 0x01) */ +/* ========================================================= LCDC0 ========================================================= */ + #define R_SLCDC_LCDC0_LCDC_Pos (0UL) /*!< LCDC (Bit 0) */ + #define R_SLCDC_LCDC0_LCDC_Msk (0x3fUL) /*!< LCDC (Bitfield-Mask: 0x3f) */ +/* ========================================================= VLCD ========================================================== */ + #define R_SLCDC_VLCD_VLCD_Pos (0UL) /*!< VLCD (Bit 0) */ + #define R_SLCDC_VLCD_VLCD_Msk (0x1fUL) /*!< VLCD (Bitfield-Mask: 0x1f) */ +/* ========================================================== SEG ========================================================== */ + #define R_SLCDC_SEG_A_Pos (0UL) /*!< A (Bit 0) */ + #define R_SLCDC_SEG_A_Msk (0xfUL) /*!< A (Bitfield-Mask: 0x0f) */ + #define R_SLCDC_SEG_B_Pos (4UL) /*!< B (Bit 4) */ + #define R_SLCDC_SEG_B_Msk (0xf0UL) /*!< B (Bitfield-Mask: 0x0f) */ + +/* =========================================================================================================================== */ +/* ================ 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 ================ */ +/* =========================================================================================================================== */ + +/* ======================================================== PARIOAD ======================================================== */ + #define R_SRAM_PARIOAD_OAD_Pos (0UL) /*!< OAD (Bit 0) */ + #define R_SRAM_PARIOAD_OAD_Msk (0x1UL) /*!< OAD (Bitfield-Mask: 0x01) */ +/* ======================================================= SRAMPRCR ======================================================== */ + #define R_SRAM_SRAMPRCR_KW_Pos (1UL) /*!< KW (Bit 1) */ + #define R_SRAM_SRAMPRCR_KW_Msk (0xfeUL) /*!< KW (Bitfield-Mask: 0x7f) */ + #define R_SRAM_SRAMPRCR_SRAMPRCR_Pos (0UL) /*!< SRAMPRCR (Bit 0) */ + #define R_SRAM_SRAMPRCR_SRAMPRCR_Msk (0x1UL) /*!< SRAMPRCR (Bitfield-Mask: 0x01) */ +/* ======================================================= SRAMWTSC ======================================================== */ +/* ======================================================== ECCMODE ======================================================== */ + #define R_SRAM_ECCMODE_ECCMOD_Pos (0UL) /*!< ECCMOD (Bit 0) */ + #define R_SRAM_ECCMODE_ECCMOD_Msk (0x3UL) /*!< ECCMOD (Bitfield-Mask: 0x03) */ +/* ======================================================== ECC2STS ======================================================== */ + #define R_SRAM_ECC2STS_ECC2ERR_Pos (0UL) /*!< ECC2ERR (Bit 0) */ + #define R_SRAM_ECC2STS_ECC2ERR_Msk (0x1UL) /*!< ECC2ERR (Bitfield-Mask: 0x01) */ +/* ======================================================= ECC1STSEN ======================================================= */ + #define R_SRAM_ECC1STSEN_E1STSEN_Pos (0UL) /*!< E1STSEN (Bit 0) */ + #define R_SRAM_ECC1STSEN_E1STSEN_Msk (0x1UL) /*!< E1STSEN (Bitfield-Mask: 0x01) */ +/* ======================================================== ECC1STS ======================================================== */ + #define R_SRAM_ECC1STS_ECC1ERR_Pos (0UL) /*!< ECC1ERR (Bit 0) */ + #define R_SRAM_ECC1STS_ECC1ERR_Msk (0x1UL) /*!< ECC1ERR (Bitfield-Mask: 0x01) */ +/* ======================================================== ECCPRCR ======================================================== */ + #define R_SRAM_ECCPRCR_KW_Pos (1UL) /*!< KW (Bit 1) */ + #define R_SRAM_ECCPRCR_KW_Msk (0xfeUL) /*!< KW (Bitfield-Mask: 0x7f) */ + #define R_SRAM_ECCPRCR_ECCPRCR_Pos (0UL) /*!< ECCPRCR (Bit 0) */ + #define R_SRAM_ECCPRCR_ECCPRCR_Msk (0x1UL) /*!< ECCPRCR (Bitfield-Mask: 0x01) */ +/* ======================================================= ECCPRCR2 ======================================================== */ + #define R_SRAM_ECCPRCR2_KW2_Pos (1UL) /*!< KW2 (Bit 1) */ + #define R_SRAM_ECCPRCR2_KW2_Msk (0xfeUL) /*!< KW2 (Bitfield-Mask: 0x7f) */ + #define R_SRAM_ECCPRCR2_ECCPRCR2_Pos (0UL) /*!< ECCPRCR2 (Bit 0) */ + #define R_SRAM_ECCPRCR2_ECCPRCR2_Msk (0x1UL) /*!< ECCPRCR2 (Bitfield-Mask: 0x01) */ +/* ======================================================== ECCETST ======================================================== */ + #define R_SRAM_ECCETST_TSTBYP_Pos (0UL) /*!< TSTBYP (Bit 0) */ + #define R_SRAM_ECCETST_TSTBYP_Msk (0x1UL) /*!< TSTBYP (Bitfield-Mask: 0x01) */ +/* ======================================================== ECCOAD ========================================================= */ + #define R_SRAM_ECCOAD_OAD_Pos (0UL) /*!< OAD (Bit 0) */ + #define R_SRAM_ECCOAD_OAD_Msk (0x1UL) /*!< OAD (Bitfield-Mask: 0x01) */ +/* ======================================================= SRAMPRCR2 ======================================================= */ + #define R_SRAM_SRAMPRCR2_SRAMPRCR2_Pos (0UL) /*!< SRAMPRCR2 (Bit 0) */ + #define R_SRAM_SRAMPRCR2_SRAMPRCR2_Msk (0x1UL) /*!< SRAMPRCR2 (Bitfield-Mask: 0x01) */ + #define R_SRAM_SRAMPRCR2_KW_Pos (1UL) /*!< KW (Bit 1) */ + #define R_SRAM_SRAMPRCR2_KW_Msk (0xfeUL) /*!< KW (Bitfield-Mask: 0x7f) */ + +/* =========================================================================================================================== */ +/* ================ R_BUS_B ================ */ +/* =========================================================================================================================== */ + +/* ===================================================== BUSSCNTFHBIU ====================================================== */ + #define R_BUS_B_BUSSCNTFHBIU_ARBS_Pos (0UL) /*!< ARBS (Bit 0) */ + #define R_BUS_B_BUSSCNTFHBIU_ARBS_Msk (0x3UL) /*!< ARBS (Bitfield-Mask: 0x03) */ +/* ===================================================== BUSSCNTFLBIU ====================================================== */ + #define R_BUS_B_BUSSCNTFLBIU_ARBS_Pos (0UL) /*!< ARBS (Bit 0) */ + #define R_BUS_B_BUSSCNTFLBIU_ARBS_Msk (0x3UL) /*!< ARBS (Bitfield-Mask: 0x03) */ +/* ===================================================== BUSSCNTS0BIU ====================================================== */ + #define R_BUS_B_BUSSCNTS0BIU_ARBS_Pos (0UL) /*!< ARBS (Bit 0) */ + #define R_BUS_B_BUSSCNTS0BIU_ARBS_Msk (0x3UL) /*!< ARBS (Bitfield-Mask: 0x03) */ +/* ===================================================== BUSSCNTPSBIU ====================================================== */ + #define R_BUS_B_BUSSCNTPSBIU_ARBS_Pos (0UL) /*!< ARBS (Bit 0) */ + #define R_BUS_B_BUSSCNTPSBIU_ARBS_Msk (0x1UL) /*!< ARBS (Bitfield-Mask: 0x01) */ +/* ===================================================== BUSSCNTPLBIU ====================================================== */ + #define R_BUS_B_BUSSCNTPLBIU_ARBS_Pos (0UL) /*!< ARBS (Bit 0) */ + #define R_BUS_B_BUSSCNTPLBIU_ARBS_Msk (0x1UL) /*!< ARBS (Bitfield-Mask: 0x01) */ +/* ===================================================== BUSSCNTPHBIU ====================================================== */ + #define R_BUS_B_BUSSCNTPHBIU_ARBS_Pos (0UL) /*!< ARBS (Bit 0) */ + #define R_BUS_B_BUSSCNTPHBIU_ARBS_Msk (0x1UL) /*!< ARBS (Bitfield-Mask: 0x01) */ +/* ===================================================== BUSSCNTEQBIU ====================================================== */ + #define R_BUS_B_BUSSCNTEQBIU_ARBS_Pos (0UL) /*!< ARBS (Bit 0) */ + #define R_BUS_B_BUSSCNTEQBIU_ARBS_Msk (0x3UL) /*!< ARBS (Bitfield-Mask: 0x03) */ +/* ===================================================== BUSSCNTEOBIU ====================================================== */ + #define R_BUS_B_BUSSCNTEOBIU_ARBS_Pos (0UL) /*!< ARBS (Bit 0) */ + #define R_BUS_B_BUSSCNTEOBIU_ARBS_Msk (0x3UL) /*!< ARBS (Bitfield-Mask: 0x03) */ +/* ===================================================== BUSSCNTECBIU ====================================================== */ + #define R_BUS_B_BUSSCNTECBIU_ARBS_Pos (0UL) /*!< ARBS (Bit 0) */ + #define R_BUS_B_BUSSCNTECBIU_ARBS_Msk (0x3UL) /*!< ARBS (Bitfield-Mask: 0x03) */ +/* ====================================================== BUS1ERRSTAT ====================================================== */ + #define R_BUS_B_BUS1ERRSTAT_SLERRSTAT_Pos (0UL) /*!< SLERRSTAT (Bit 0) */ + #define R_BUS_B_BUS1ERRSTAT_SLERRSTAT_Msk (0x1UL) /*!< SLERRSTAT (Bitfield-Mask: 0x01) */ + #define R_BUS_B_BUS1ERRSTAT_STERRSTAT_Pos (1UL) /*!< STERRSTAT (Bit 1) */ + #define R_BUS_B_BUS1ERRSTAT_STERRSTAT_Msk (0x2UL) /*!< STERRSTAT (Bitfield-Mask: 0x01) */ + #define R_BUS_B_BUS1ERRSTAT_MMERRSTAT_Pos (3UL) /*!< MMERRSTAT (Bit 3) */ + #define R_BUS_B_BUS1ERRSTAT_MMERRSTAT_Msk (0x8UL) /*!< MMERRSTAT (Bitfield-Mask: 0x01) */ + #define R_BUS_B_BUS1ERRSTAT_ILERRSTAT_Pos (4UL) /*!< ILERRSTAT (Bit 4) */ + #define R_BUS_B_BUS1ERRSTAT_ILERRSTAT_Msk (0x10UL) /*!< ILERRSTAT (Bitfield-Mask: 0x01) */ +/* ====================================================== BUS2ERRSTAT ====================================================== */ + #define R_BUS_B_BUS2ERRSTAT_SLERRSTAT_Pos (0UL) /*!< SLERRSTAT (Bit 0) */ + #define R_BUS_B_BUS2ERRSTAT_SLERRSTAT_Msk (0x1UL) /*!< SLERRSTAT (Bitfield-Mask: 0x01) */ + #define R_BUS_B_BUS2ERRSTAT_STERRSTAT_Pos (1UL) /*!< STERRSTAT (Bit 1) */ + #define R_BUS_B_BUS2ERRSTAT_STERRSTAT_Msk (0x2UL) /*!< STERRSTAT (Bitfield-Mask: 0x01) */ + #define R_BUS_B_BUS2ERRSTAT_MMERRSTAT_Pos (3UL) /*!< MMERRSTAT (Bit 3) */ + #define R_BUS_B_BUS2ERRSTAT_MMERRSTAT_Msk (0x8UL) /*!< MMERRSTAT (Bitfield-Mask: 0x01) */ + #define R_BUS_B_BUS2ERRSTAT_ILERRSTAT_Pos (4UL) /*!< ILERRSTAT (Bit 4) */ + #define R_BUS_B_BUS2ERRSTAT_ILERRSTAT_Msk (0x10UL) /*!< ILERRSTAT (Bitfield-Mask: 0x01) */ +/* ====================================================== BUS3ERRSTAT ====================================================== */ + #define R_BUS_B_BUS3ERRSTAT_SLERRSTAT_Pos (0UL) /*!< SLERRSTAT (Bit 0) */ + #define R_BUS_B_BUS3ERRSTAT_SLERRSTAT_Msk (0x1UL) /*!< SLERRSTAT (Bitfield-Mask: 0x01) */ + #define R_BUS_B_BUS3ERRSTAT_STERRSTAT_Pos (1UL) /*!< STERRSTAT (Bit 1) */ + #define R_BUS_B_BUS3ERRSTAT_STERRSTAT_Msk (0x2UL) /*!< STERRSTAT (Bitfield-Mask: 0x01) */ + #define R_BUS_B_BUS3ERRSTAT_MMERRSTAT_Pos (3UL) /*!< MMERRSTAT (Bit 3) */ + #define R_BUS_B_BUS3ERRSTAT_MMERRSTAT_Msk (0x8UL) /*!< MMERRSTAT (Bitfield-Mask: 0x01) */ + #define R_BUS_B_BUS3ERRSTAT_ILERRSTAT_Pos (4UL) /*!< ILERRSTAT (Bit 4) */ + #define R_BUS_B_BUS3ERRSTAT_ILERRSTAT_Msk (0x10UL) /*!< ILERRSTAT (Bitfield-Mask: 0x01) */ +/* ====================================================== BUS4ERRSTAT ====================================================== */ + #define R_BUS_B_BUS4ERRSTAT_SLERRSTAT_Pos (0UL) /*!< SLERRSTAT (Bit 0) */ + #define R_BUS_B_BUS4ERRSTAT_SLERRSTAT_Msk (0x1UL) /*!< SLERRSTAT (Bitfield-Mask: 0x01) */ + #define R_BUS_B_BUS4ERRSTAT_STERRSTAT_Pos (1UL) /*!< STERRSTAT (Bit 1) */ + #define R_BUS_B_BUS4ERRSTAT_STERRSTAT_Msk (0x2UL) /*!< STERRSTAT (Bitfield-Mask: 0x01) */ + #define R_BUS_B_BUS4ERRSTAT_MMERRSTAT_Pos (3UL) /*!< MMERRSTAT (Bit 3) */ + #define R_BUS_B_BUS4ERRSTAT_MMERRSTAT_Msk (0x8UL) /*!< MMERRSTAT (Bitfield-Mask: 0x01) */ + #define R_BUS_B_BUS4ERRSTAT_ILERRSTAT_Pos (4UL) /*!< ILERRSTAT (Bit 4) */ + #define R_BUS_B_BUS4ERRSTAT_ILERRSTAT_Msk (0x10UL) /*!< ILERRSTAT (Bitfield-Mask: 0x01) */ +/* ====================================================== BUS1ERRCLR ======================================================= */ + #define R_BUS_B_BUS1ERRCLR_SLERRCLR_Pos (0UL) /*!< SLERRCLR (Bit 0) */ + #define R_BUS_B_BUS1ERRCLR_SLERRCLR_Msk (0x1UL) /*!< SLERRCLR (Bitfield-Mask: 0x01) */ + #define R_BUS_B_BUS1ERRCLR_STERRCLR_Pos (1UL) /*!< STERRCLR (Bit 1) */ + #define R_BUS_B_BUS1ERRCLR_STERRCLR_Msk (0x2UL) /*!< STERRCLR (Bitfield-Mask: 0x01) */ + #define R_BUS_B_BUS1ERRCLR_MMERRCLR_Pos (3UL) /*!< MMERRCLR (Bit 3) */ + #define R_BUS_B_BUS1ERRCLR_MMERRCLR_Msk (0x8UL) /*!< MMERRCLR (Bitfield-Mask: 0x01) */ + #define R_BUS_B_BUS1ERRCLR_ILERRCLR_Pos (4UL) /*!< ILERRCLR (Bit 4) */ + #define R_BUS_B_BUS1ERRCLR_ILERRCLR_Msk (0x10UL) /*!< ILERRCLR (Bitfield-Mask: 0x01) */ +/* ====================================================== BUS2ERRCLR ======================================================= */ + #define R_BUS_B_BUS2ERRCLR_SLERRCLR_Pos (0UL) /*!< SLERRCLR (Bit 0) */ + #define R_BUS_B_BUS2ERRCLR_SLERRCLR_Msk (0x1UL) /*!< SLERRCLR (Bitfield-Mask: 0x01) */ + #define R_BUS_B_BUS2ERRCLR_STERRCLR_Pos (1UL) /*!< STERRCLR (Bit 1) */ + #define R_BUS_B_BUS2ERRCLR_STERRCLR_Msk (0x2UL) /*!< STERRCLR (Bitfield-Mask: 0x01) */ + #define R_BUS_B_BUS2ERRCLR_MMERRCLR_Pos (3UL) /*!< MMERRCLR (Bit 3) */ + #define R_BUS_B_BUS2ERRCLR_MMERRCLR_Msk (0x8UL) /*!< MMERRCLR (Bitfield-Mask: 0x01) */ + #define R_BUS_B_BUS2ERRCLR_ILERRCLR_Pos (4UL) /*!< ILERRCLR (Bit 4) */ + #define R_BUS_B_BUS2ERRCLR_ILERRCLR_Msk (0x10UL) /*!< ILERRCLR (Bitfield-Mask: 0x01) */ +/* ====================================================== BUS3ERRCLR ======================================================= */ + #define R_BUS_B_BUS3ERRCLR_SLERRCLR_Pos (0UL) /*!< SLERRCLR (Bit 0) */ + #define R_BUS_B_BUS3ERRCLR_SLERRCLR_Msk (0x1UL) /*!< SLERRCLR (Bitfield-Mask: 0x01) */ + #define R_BUS_B_BUS3ERRCLR_STERRCLR_Pos (1UL) /*!< STERRCLR (Bit 1) */ + #define R_BUS_B_BUS3ERRCLR_STERRCLR_Msk (0x2UL) /*!< STERRCLR (Bitfield-Mask: 0x01) */ + #define R_BUS_B_BUS3ERRCLR_MMERRCLR_Pos (3UL) /*!< MMERRCLR (Bit 3) */ + #define R_BUS_B_BUS3ERRCLR_MMERRCLR_Msk (0x8UL) /*!< MMERRCLR (Bitfield-Mask: 0x01) */ + #define R_BUS_B_BUS3ERRCLR_ILERRCLR_Pos (4UL) /*!< ILERRCLR (Bit 4) */ + #define R_BUS_B_BUS3ERRCLR_ILERRCLR_Msk (0x10UL) /*!< ILERRCLR (Bitfield-Mask: 0x01) */ +/* ====================================================== BUS4ERRCLR ======================================================= */ + #define R_BUS_B_BUS4ERRCLR_SLERRCLR_Pos (0UL) /*!< SLERRCLR (Bit 0) */ + #define R_BUS_B_BUS4ERRCLR_SLERRCLR_Msk (0x1UL) /*!< SLERRCLR (Bitfield-Mask: 0x01) */ + #define R_BUS_B_BUS4ERRCLR_STERRCLR_Pos (1UL) /*!< STERRCLR (Bit 1) */ + #define R_BUS_B_BUS4ERRCLR_STERRCLR_Msk (0x2UL) /*!< STERRCLR (Bitfield-Mask: 0x01) */ + #define R_BUS_B_BUS4ERRCLR_MMERRCLR_Pos (3UL) /*!< MMERRCLR (Bit 3) */ + #define R_BUS_B_BUS4ERRCLR_MMERRCLR_Msk (0x8UL) /*!< MMERRCLR (Bitfield-Mask: 0x01) */ + #define R_BUS_B_BUS4ERRCLR_ILERRCLR_Pos (4UL) /*!< ILERRCLR (Bit 4) */ + #define R_BUS_B_BUS4ERRCLR_ILERRCLR_Msk (0x10UL) /*!< ILERRCLR (Bitfield-Mask: 0x01) */ +/* ==================================================== DMACDTCERRSTAT ===================================================== */ + #define R_BUS_B_DMACDTCERRSTAT_MTERRSTAT_Pos (0UL) /*!< MTERRSTAT (Bit 0) */ + #define R_BUS_B_DMACDTCERRSTAT_MTERRSTAT_Msk (0x1UL) /*!< MTERRSTAT (Bitfield-Mask: 0x01) */ +/* ===================================================== DMACDTCERRCLR ===================================================== */ + #define R_BUS_B_DMACDTCERRCLR_MTERRCLR_Pos (0UL) /*!< MTERRCLR (Bit 0) */ + #define R_BUS_B_DMACDTCERRCLR_MTERRCLR_Msk (0x1UL) /*!< MTERRCLR (Bitfield-Mask: 0x01) */ +/* ======================================================== CSRECEN ======================================================== */ + #define R_BUS_B_CSRECEN_RCVENM_Pos (8UL) /*!< RCVENM (Bit 8) */ + #define R_BUS_B_CSRECEN_RCVENM_Msk (0x100UL) /*!< RCVENM (Bitfield-Mask: 0x01) */ + #define R_BUS_B_CSRECEN_RCVEN_Pos (0UL) /*!< RCVEN (Bit 0) */ + #define R_BUS_B_CSRECEN_RCVEN_Msk (0x1UL) /*!< RCVEN (Bitfield-Mask: 0x01) */ + +/* =========================================================================================================================== */ +/* ================ R_SRC ================ */ +/* =========================================================================================================================== */ + +/* ======================================================== SRCFCTR ======================================================== */ + #define R_SRC_SRCFCTR_SRCFCOE_Pos (0UL) /*!< SRCFCOE (Bit 0) */ + #define R_SRC_SRCFCTR_SRCFCOE_Msk (0x3fffffUL) /*!< SRCFCOE (Bitfield-Mask: 0x3fffff) */ +/* ========================================================= SRCID ========================================================= */ + #define R_SRC_SRCID_SRCID_Pos (0UL) /*!< SRCID (Bit 0) */ + #define R_SRC_SRCID_SRCID_Msk (0xffffffffUL) /*!< SRCID (Bitfield-Mask: 0xffffffff) */ +/* ========================================================= SRCOD ========================================================= */ + #define R_SRC_SRCOD_SRCOD_Pos (0UL) /*!< SRCOD (Bit 0) */ + #define R_SRC_SRCOD_SRCOD_Msk (0xffffffffUL) /*!< SRCOD (Bitfield-Mask: 0xffffffff) */ +/* ======================================================= SRCIDCTRL ======================================================= */ + #define R_SRC_SRCIDCTRL_IED_Pos (9UL) /*!< IED (Bit 9) */ + #define R_SRC_SRCIDCTRL_IED_Msk (0x200UL) /*!< IED (Bitfield-Mask: 0x01) */ + #define R_SRC_SRCIDCTRL_IEN_Pos (8UL) /*!< IEN (Bit 8) */ + #define R_SRC_SRCIDCTRL_IEN_Msk (0x100UL) /*!< IEN (Bitfield-Mask: 0x01) */ + #define R_SRC_SRCIDCTRL_IFTRG_Pos (0UL) /*!< IFTRG (Bit 0) */ + #define R_SRC_SRCIDCTRL_IFTRG_Msk (0x3UL) /*!< IFTRG (Bitfield-Mask: 0x03) */ +/* ======================================================== SRCCTRL ======================================================== */ + #define R_SRC_SRCCTRL_FICRAE_Pos (15UL) /*!< FICRAE (Bit 15) */ + #define R_SRC_SRCCTRL_FICRAE_Msk (0x8000UL) /*!< FICRAE (Bitfield-Mask: 0x01) */ + #define R_SRC_SRCCTRL_CEEN_Pos (13UL) /*!< CEEN (Bit 13) */ + #define R_SRC_SRCCTRL_CEEN_Msk (0x2000UL) /*!< CEEN (Bitfield-Mask: 0x01) */ + #define R_SRC_SRCCTRL_SRCEN_Pos (12UL) /*!< SRCEN (Bit 12) */ + #define R_SRC_SRCCTRL_SRCEN_Msk (0x1000UL) /*!< SRCEN (Bitfield-Mask: 0x01) */ + #define R_SRC_SRCCTRL_UDEN_Pos (11UL) /*!< UDEN (Bit 11) */ + #define R_SRC_SRCCTRL_UDEN_Msk (0x800UL) /*!< UDEN (Bitfield-Mask: 0x01) */ + #define R_SRC_SRCCTRL_OVEN_Pos (10UL) /*!< OVEN (Bit 10) */ + #define R_SRC_SRCCTRL_OVEN_Msk (0x400UL) /*!< OVEN (Bitfield-Mask: 0x01) */ + #define R_SRC_SRCCTRL_FL_Pos (9UL) /*!< FL (Bit 9) */ + #define R_SRC_SRCCTRL_FL_Msk (0x200UL) /*!< FL (Bitfield-Mask: 0x01) */ + #define R_SRC_SRCCTRL_CL_Pos (8UL) /*!< CL (Bit 8) */ + #define R_SRC_SRCCTRL_CL_Msk (0x100UL) /*!< CL (Bitfield-Mask: 0x01) */ + #define R_SRC_SRCCTRL_IFS_Pos (4UL) /*!< IFS (Bit 4) */ + #define R_SRC_SRCCTRL_IFS_Msk (0xf0UL) /*!< IFS (Bitfield-Mask: 0x0f) */ + #define R_SRC_SRCCTRL_OFS_Pos (0UL) /*!< OFS (Bit 0) */ + #define R_SRC_SRCCTRL_OFS_Msk (0x7UL) /*!< OFS (Bitfield-Mask: 0x07) */ +/* ======================================================= SRCODCTRL ======================================================= */ + #define R_SRC_SRCODCTRL_OCH_Pos (10UL) /*!< OCH (Bit 10) */ + #define R_SRC_SRCODCTRL_OCH_Msk (0x400UL) /*!< OCH (Bitfield-Mask: 0x01) */ + #define R_SRC_SRCODCTRL_OED_Pos (9UL) /*!< OED (Bit 9) */ + #define R_SRC_SRCODCTRL_OED_Msk (0x200UL) /*!< OED (Bitfield-Mask: 0x01) */ + #define R_SRC_SRCODCTRL_OEN_Pos (8UL) /*!< OEN (Bit 8) */ + #define R_SRC_SRCODCTRL_OEN_Msk (0x100UL) /*!< OEN (Bitfield-Mask: 0x01) */ + #define R_SRC_SRCODCTRL_OFTRG_Pos (0UL) /*!< OFTRG (Bit 0) */ + #define R_SRC_SRCODCTRL_OFTRG_Msk (0x3UL) /*!< OFTRG (Bitfield-Mask: 0x03) */ +/* ======================================================== SRCSTAT ======================================================== */ + #define R_SRC_SRCSTAT_OFDN_Pos (11UL) /*!< OFDN (Bit 11) */ + #define R_SRC_SRCSTAT_OFDN_Msk (0xf800UL) /*!< OFDN (Bitfield-Mask: 0x1f) */ + #define R_SRC_SRCSTAT_IFDN_Pos (7UL) /*!< IFDN (Bit 7) */ + #define R_SRC_SRCSTAT_IFDN_Msk (0x780UL) /*!< IFDN (Bitfield-Mask: 0x0f) */ + #define R_SRC_SRCSTAT_CEF_Pos (5UL) /*!< CEF (Bit 5) */ + #define R_SRC_SRCSTAT_CEF_Msk (0x20UL) /*!< CEF (Bitfield-Mask: 0x01) */ + #define R_SRC_SRCSTAT_FLF_Pos (4UL) /*!< FLF (Bit 4) */ + #define R_SRC_SRCSTAT_FLF_Msk (0x10UL) /*!< FLF (Bitfield-Mask: 0x01) */ + #define R_SRC_SRCSTAT_UDF_Pos (3UL) /*!< UDF (Bit 3) */ + #define R_SRC_SRCSTAT_UDF_Msk (0x8UL) /*!< UDF (Bitfield-Mask: 0x01) */ + #define R_SRC_SRCSTAT_OVF_Pos (2UL) /*!< OVF (Bit 2) */ + #define R_SRC_SRCSTAT_OVF_Msk (0x4UL) /*!< OVF (Bitfield-Mask: 0x01) */ + #define R_SRC_SRCSTAT_IINT_Pos (1UL) /*!< IINT (Bit 1) */ + #define R_SRC_SRCSTAT_IINT_Msk (0x2UL) /*!< IINT (Bitfield-Mask: 0x01) */ + #define R_SRC_SRCSTAT_OINT_Pos (0UL) /*!< OINT (Bit 0) */ + #define R_SRC_SRCSTAT_OINT_Msk (0x1UL) /*!< OINT (Bitfield-Mask: 0x01) */ + +/* =========================================================================================================================== */ +/* ================ 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_SSBY_Pos (15UL) /*!< SSBY (Bit 15) */ + #define R_SYSTEM_SBYCR_SSBY_Msk (0x8000UL) /*!< SSBY (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_SBYCR_OPE_Pos (14UL) /*!< OPE (Bit 14) */ + #define R_SYSTEM_SBYCR_OPE_Msk (0x4000UL) /*!< OPE (Bitfield-Mask: 0x01) */ +/* ======================================================== MSTPCRA ======================================================== */ + #define R_SYSTEM_MSTPCRA_MSTPA22_Pos (22UL) /*!< MSTPA22 (Bit 22) */ + #define R_SYSTEM_MSTPCRA_MSTPA22_Msk (0x400000UL) /*!< MSTPA22 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_MSTPCRA_MSTPA7_Pos (7UL) /*!< MSTPA7 (Bit 7) */ + #define R_SYSTEM_MSTPCRA_MSTPA7_Msk (0x80UL) /*!< MSTPA7 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_MSTPCRA_MSTPA6_Pos (6UL) /*!< MSTPA6 (Bit 6) */ + #define R_SYSTEM_MSTPCRA_MSTPA6_Msk (0x40UL) /*!< MSTPA6 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_MSTPCRA_MSTPA5_Pos (5UL) /*!< MSTPA5 (Bit 5) */ + #define R_SYSTEM_MSTPCRA_MSTPA5_Msk (0x20UL) /*!< MSTPA5 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_MSTPCRA_MSTPA1_Pos (1UL) /*!< MSTPA1 (Bit 1) */ + #define R_SYSTEM_MSTPCRA_MSTPA1_Msk (0x2UL) /*!< MSTPA1 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_MSTPCRA_MSTPA0_Pos (0UL) /*!< MSTPA0 (Bit 0) */ + #define R_SYSTEM_MSTPCRA_MSTPA0_Msk (0x1UL) /*!< MSTPA0 (Bitfield-Mask: 0x01) */ +/* ======================================================= SCKDIVCR ======================================================== */ + #define R_SYSTEM_SCKDIVCR_FCK_Pos (28UL) /*!< FCK (Bit 28) */ + #define R_SYSTEM_SCKDIVCR_FCK_Msk (0x70000000UL) /*!< FCK (Bitfield-Mask: 0x07) */ + #define R_SYSTEM_SCKDIVCR_ICK_Pos (24UL) /*!< ICK (Bit 24) */ + #define R_SYSTEM_SCKDIVCR_ICK_Msk (0x7000000UL) /*!< ICK (Bitfield-Mask: 0x07) */ + #define R_SYSTEM_SCKDIVCR_BCK_Pos (16UL) /*!< BCK (Bit 16) */ + #define R_SYSTEM_SCKDIVCR_BCK_Msk (0x70000UL) /*!< BCK (Bitfield-Mask: 0x07) */ + #define R_SYSTEM_SCKDIVCR_PCKA_Pos (12UL) /*!< PCKA (Bit 12) */ + #define R_SYSTEM_SCKDIVCR_PCKA_Msk (0x7000UL) /*!< PCKA (Bitfield-Mask: 0x07) */ + #define R_SYSTEM_SCKDIVCR_PCKB_Pos (8UL) /*!< PCKB (Bit 8) */ + #define R_SYSTEM_SCKDIVCR_PCKB_Msk (0x700UL) /*!< PCKB (Bitfield-Mask: 0x07) */ + #define R_SYSTEM_SCKDIVCR_PCKC_Pos (4UL) /*!< PCKC (Bit 4) */ + #define R_SYSTEM_SCKDIVCR_PCKC_Msk (0x70UL) /*!< PCKC (Bitfield-Mask: 0x07) */ + #define R_SYSTEM_SCKDIVCR_PCKD_Pos (0UL) /*!< PCKD (Bit 0) */ + #define R_SYSTEM_SCKDIVCR_PCKD_Msk (0x7UL) /*!< PCKD (Bitfield-Mask: 0x07) */ +/* ======================================================= SCKDIVCR2 ======================================================= */ + #define R_SYSTEM_SCKDIVCR2_UCK_Pos (4UL) /*!< UCK (Bit 4) */ + #define R_SYSTEM_SCKDIVCR2_UCK_Msk (0x70UL) /*!< UCK (Bitfield-Mask: 0x07) */ +/* ======================================================== 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_PLLMUL_Pos (8UL) /*!< PLLMUL (Bit 8) */ + #define R_SYSTEM_PLLCCR_PLLMUL_Msk (0x3f00UL) /*!< PLLMUL (Bitfield-Mask: 0x3f) */ + #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_PLIDIV_Pos (0UL) /*!< PLIDIV (Bit 0) */ + #define R_SYSTEM_PLLCCR_PLIDIV_Msk (0x3UL) /*!< PLIDIV (Bitfield-Mask: 0x03) */ +/* ========================================================= PLLCR ========================================================= */ + #define R_SYSTEM_PLLCR_PLLSTP_Pos (0UL) /*!< PLLSTP (Bit 0) */ + #define R_SYSTEM_PLLCR_PLLSTP_Msk (0x1UL) /*!< PLLSTP (Bitfield-Mask: 0x01) */ +/* ======================================================== PLLCCR2 ======================================================== */ + #define R_SYSTEM_PLLCCR2_PLODIV_Pos (6UL) /*!< PLODIV (Bit 6) */ + #define R_SYSTEM_PLLCCR2_PLODIV_Msk (0xc0UL) /*!< PLODIV (Bitfield-Mask: 0x03) */ + #define R_SYSTEM_PLLCCR2_PLLMUL_Pos (0UL) /*!< PLLMUL (Bit 0) */ + #define R_SYSTEM_PLLCCR2_PLLMUL_Msk (0x1fUL) /*!< PLLMUL (Bitfield-Mask: 0x1f) */ +/* ========================================================= BCKCR ========================================================= */ + #define R_SYSTEM_BCKCR_BCLKDIV_Pos (0UL) /*!< BCLKDIV (Bit 0) */ + #define R_SYSTEM_BCKCR_BCLKDIV_Msk (0x1UL) /*!< BCLKDIV (Bitfield-Mask: 0x01) */ +/* ======================================================== MEMWAIT ======================================================== */ + #define R_SYSTEM_MEMWAIT_MEMWAIT_Pos (0UL) /*!< MEMWAIT (Bit 0) */ + #define R_SYSTEM_MEMWAIT_MEMWAIT_Msk (0x1UL) /*!< MEMWAIT (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_PLLSF_Pos (5UL) /*!< PLLSF (Bit 5) */ + #define R_SYSTEM_OSCSF_PLLSF_Msk (0x20UL) /*!< PLLSF (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_HOCOSF_Pos (0UL) /*!< HOCOSF (Bit 0) */ + #define R_SYSTEM_OSCSF_HOCOSF_Msk (0x1UL) /*!< HOCOSF (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_CKOEN_Pos (7UL) /*!< CKOEN (Bit 7) */ + #define R_SYSTEM_CKOCR_CKOEN_Msk (0x80UL) /*!< CKOEN (Bitfield-Mask: 0x01) */ + #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_CKOSEL_Pos (0UL) /*!< CKOSEL (Bit 0) */ + #define R_SYSTEM_CKOCR_CKOSEL_Msk (0x7UL) /*!< CKOSEL (Bitfield-Mask: 0x07) */ +/* ======================================================== TRCKCR ========================================================= */ + #define R_SYSTEM_TRCKCR_TRCKEN_Pos (7UL) /*!< TRCKEN (Bit 7) */ + #define R_SYSTEM_TRCKCR_TRCKEN_Msk (0x80UL) /*!< TRCKEN (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_TRCKCR_TRCK_Pos (0UL) /*!< TRCK (Bit 0) */ + #define R_SYSTEM_TRCKCR_TRCK_Msk (0xfUL) /*!< TRCK (Bitfield-Mask: 0x0f) */ +/* ======================================================== OSTDCR ========================================================= */ + #define R_SYSTEM_OSTDCR_OSTDE_Pos (7UL) /*!< OSTDE (Bit 7) */ + #define R_SYSTEM_OSTDCR_OSTDE_Msk (0x80UL) /*!< OSTDE (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_OSTDCR_OSTDIE_Pos (0UL) /*!< OSTDIE (Bit 0) */ + #define R_SYSTEM_OSTDCR_OSTDIE_Msk (0x1UL) /*!< OSTDIE (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) */ +/* ========================================================= LPOPT ========================================================= */ + #define R_SYSTEM_LPOPT_LPOPTEN_Pos (7UL) /*!< LPOPTEN (Bit 7) */ + #define R_SYSTEM_LPOPT_LPOPTEN_Msk (0x80UL) /*!< LPOPTEN (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_LPOPT_BPFCLKDIS_Pos (3UL) /*!< BPFCLKDIS (Bit 3) */ + #define R_SYSTEM_LPOPT_BPFCLKDIS_Msk (0x8UL) /*!< BPFCLKDIS (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_LPOPT_DCLKDIS_Pos (1UL) /*!< DCLKDIS (Bit 1) */ + #define R_SYSTEM_LPOPT_DCLKDIS_Msk (0x6UL) /*!< DCLKDIS (Bitfield-Mask: 0x03) */ + #define R_SYSTEM_LPOPT_MPUDIS_Pos (0UL) /*!< MPUDIS (Bit 0) */ + #define R_SYSTEM_LPOPT_MPUDIS_Msk (0x1UL) /*!< MPUDIS (Bitfield-Mask: 0x01) */ +/* ======================================================= SLCDSCKCR ======================================================= */ + #define R_SYSTEM_SLCDSCKCR_LCDSCKEN_Pos (7UL) /*!< LCDSCKEN (Bit 7) */ + #define R_SYSTEM_SLCDSCKCR_LCDSCKEN_Msk (0x80UL) /*!< LCDSCKEN (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_SLCDSCKCR_LCDSCKSEL_Pos (0UL) /*!< LCDSCKSEL (Bit 0) */ + #define R_SYSTEM_SLCDSCKCR_LCDSCKSEL_Msk (0x7UL) /*!< LCDSCKSEL (Bitfield-Mask: 0x07) */ +/* ======================================================== 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) */ +/* ======================================================= 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) */ +/* ========================================================= 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) */ +/* ======================================================= 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) */ +/* ======================================================== FLSTOP ========================================================= */ + #define R_SYSTEM_FLSTOP_FLSTPF_Pos (4UL) /*!< FLSTPF (Bit 4) */ + #define R_SYSTEM_FLSTOP_FLSTPF_Msk (0x10UL) /*!< FLSTPF (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_FLSTOP_FLSTOP_Pos (0UL) /*!< FLSTOP (Bit 0) */ + #define R_SYSTEM_FLSTOP_FLSTOP_Msk (0x1UL) /*!< FLSTOP (Bitfield-Mask: 0x01) */ +/* ========================================================= PSMCR ========================================================= */ + #define R_SYSTEM_PSMCR_PSMC_Pos (0UL) /*!< PSMC (Bit 0) */ + #define R_SYSTEM_PSMCR_PSMC_Msk (0x3UL) /*!< PSMC (Bitfield-Mask: 0x03) */ +/* ========================================================= 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) */ +/* ======================================================== 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) */ +/* ======================================================= 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) */ +/* ======================================================== RSTSR1 ========================================================= */ + #define R_SYSTEM_RSTSR1_SPERF_Pos (12UL) /*!< SPERF (Bit 12) */ + #define R_SYSTEM_RSTSR1_SPERF_Msk (0x1000UL) /*!< SPERF (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_RSTSR1_BUSMRF_Pos (11UL) /*!< BUSMRF (Bit 11) */ + #define R_SYSTEM_RSTSR1_BUSMRF_Msk (0x800UL) /*!< BUSMRF (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_RSTSR1_BUSSRF_Pos (10UL) /*!< BUSSRF (Bit 10) */ + #define R_SYSTEM_RSTSR1_BUSSRF_Msk (0x400UL) /*!< BUSSRF (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_RSTSR1_REERF_Pos (9UL) /*!< REERF (Bit 9) */ + #define R_SYSTEM_RSTSR1_REERF_Msk (0x200UL) /*!< REERF (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_RSTSR1_RPERF_Pos (8UL) /*!< RPERF (Bit 8) */ + #define R_SYSTEM_RSTSR1_RPERF_Msk (0x100UL) /*!< RPERF (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_WDTRF_Pos (1UL) /*!< WDTRF (Bit 1) */ + #define R_SYSTEM_RSTSR1_WDTRF_Msk (0x2UL) /*!< WDTRF (Bitfield-Mask: 0x01) */ + #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_TZERF_Pos (13UL) /*!< TZERF (Bit 13) */ + #define R_SYSTEM_RSTSR1_TZERF_Msk (0x2000UL) /*!< TZERF (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_RSTSR1_CPERF_Pos (15UL) /*!< CPERF (Bit 15) */ + #define R_SYSTEM_RSTSR1_CPERF_Msk (0x8000UL) /*!< CPERF (Bitfield-Mask: 0x01) */ +/* ======================================================== STCONR ========================================================= */ + #define R_SYSTEM_STCONR_STCON_Pos (0UL) /*!< STCON (Bit 0) */ + #define R_SYSTEM_STCONR_STCON_Msk (0x3UL) /*!< STCON (Bitfield-Mask: 0x03) */ +/* ======================================================== LVD1CR1 ======================================================== */ + #define R_SYSTEM_LVD1CR1_IRQSEL_Pos (2UL) /*!< IRQSEL (Bit 2) */ + #define R_SYSTEM_LVD1CR1_IRQSEL_Msk (0x4UL) /*!< IRQSEL (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_LVD1CR1_IDTSEL_Pos (0UL) /*!< IDTSEL (Bit 0) */ + #define R_SYSTEM_LVD1CR1_IDTSEL_Msk (0x3UL) /*!< IDTSEL (Bitfield-Mask: 0x03) */ +/* ======================================================== LVD2CR1 ======================================================== */ + #define R_SYSTEM_LVD2CR1_IRQSEL_Pos (2UL) /*!< IRQSEL (Bit 2) */ + #define R_SYSTEM_LVD2CR1_IRQSEL_Msk (0x4UL) /*!< IRQSEL (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_LVD2CR1_IDTSEL_Pos (0UL) /*!< IDTSEL (Bit 0) */ + #define R_SYSTEM_LVD2CR1_IDTSEL_Msk (0x3UL) /*!< IDTSEL (Bitfield-Mask: 0x03) */ +/* ====================================================== USBCKCR_ALT ====================================================== */ + #define R_SYSTEM_USBCKCR_ALT_USBCLKSEL_Pos (0UL) /*!< USBCLKSEL (Bit 0) */ + #define R_SYSTEM_USBCKCR_ALT_USBCLKSEL_Msk (0x1UL) /*!< USBCLKSEL (Bitfield-Mask: 0x01) */ +/* ======================================================= SDADCCKCR ======================================================= */ + #define R_SYSTEM_SDADCCKCR_SDADCCKSEL_Pos (0UL) /*!< SDADCCKSEL (Bit 0) */ + #define R_SYSTEM_SDADCCKCR_SDADCCKSEL_Msk (0x1UL) /*!< SDADCCKSEL (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_SDADCCKCR_SDADCCKEN_Pos (7UL) /*!< SDADCCKEN (Bit 7) */ + #define R_SYSTEM_SDADCCKCR_SDADCCKEN_Msk (0x80UL) /*!< SDADCCKEN (Bitfield-Mask: 0x01) */ +/* ======================================================== LVD1SR ========================================================= */ + #define R_SYSTEM_LVD1SR_MON_Pos (1UL) /*!< MON (Bit 1) */ + #define R_SYSTEM_LVD1SR_MON_Msk (0x2UL) /*!< MON (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_LVD1SR_DET_Pos (0UL) /*!< DET (Bit 0) */ + #define R_SYSTEM_LVD1SR_DET_Msk (0x1UL) /*!< DET (Bitfield-Mask: 0x01) */ +/* ======================================================== LVD2SR ========================================================= */ + #define R_SYSTEM_LVD2SR_MON_Pos (1UL) /*!< MON (Bit 1) */ + #define R_SYSTEM_LVD2SR_MON_Msk (0x2UL) /*!< MON (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_LVD2SR_DET_Pos (0UL) /*!< DET (Bit 0) */ + #define R_SYSTEM_LVD2SR_DET_Msk (0x1UL) /*!< DET (Bitfield-Mask: 0x01) */ +/* ========================================================= PRCR ========================================================== */ + #define R_SYSTEM_PRCR_PRKEY_Pos (8UL) /*!< PRKEY (Bit 8) */ + #define R_SYSTEM_PRCR_PRKEY_Msk (0xff00UL) /*!< PRKEY (Bitfield-Mask: 0xff) */ + #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_PRC1_Pos (1UL) /*!< PRC1 (Bit 1) */ + #define R_SYSTEM_PRCR_PRC1_Msk (0x2UL) /*!< PRC1 (Bitfield-Mask: 0x01) */ + #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_PRC4_Pos (4UL) /*!< PRC4 (Bit 4) */ + #define R_SYSTEM_PRCR_PRC4_Msk (0x10UL) /*!< PRC4 (Bitfield-Mask: 0x01) */ +/* ======================================================== DPSIER0 ======================================================== */ + #define R_SYSTEM_DPSIER0_DIRQE_Pos (0UL) /*!< DIRQE (Bit 0) */ + #define R_SYSTEM_DPSIER0_DIRQE_Msk (0x1UL) /*!< DIRQE (Bitfield-Mask: 0x01) */ +/* ======================================================== DPSIER1 ======================================================== */ + #define R_SYSTEM_DPSIER1_DIRQE_Pos (0UL) /*!< DIRQE (Bit 0) */ + #define R_SYSTEM_DPSIER1_DIRQE_Msk (0x1UL) /*!< DIRQE (Bitfield-Mask: 0x01) */ +/* ======================================================== DPSIER2 ======================================================== */ + #define R_SYSTEM_DPSIER2_DNMIE_Pos (4UL) /*!< DNMIE (Bit 4) */ + #define R_SYSTEM_DPSIER2_DNMIE_Msk (0x10UL) /*!< DNMIE (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_DTRTCIIE_Pos (2UL) /*!< DTRTCIIE (Bit 2) */ + #define R_SYSTEM_DPSIER2_DTRTCIIE_Msk (0x4UL) /*!< DTRTCIIE (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPSIER2_DLVD2IE_Pos (1UL) /*!< DLVD2IE (Bit 1) */ + #define R_SYSTEM_DPSIER2_DLVD2IE_Msk (0x2UL) /*!< DLVD2IE (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPSIER2_DLVD1IE_Pos (0UL) /*!< DLVD1IE (Bit 0) */ + #define R_SYSTEM_DPSIER2_DLVD1IE_Msk (0x1UL) /*!< DLVD1IE (Bitfield-Mask: 0x01) */ +/* ======================================================== DPSIER3 ======================================================== */ + #define R_SYSTEM_DPSIER3_DAGT1IE_Pos (2UL) /*!< DAGT1IE (Bit 2) */ + #define R_SYSTEM_DPSIER3_DAGT1IE_Msk (0x4UL) /*!< DAGT1IE (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_DUSBFSIE_Pos (0UL) /*!< DUSBFSIE (Bit 0) */ + #define R_SYSTEM_DPSIER3_DUSBFSIE_Msk (0x1UL) /*!< DUSBFSIE (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPSIER3_DAGT3IE_Pos (3UL) /*!< DAGT3IE (Bit 3) */ + #define R_SYSTEM_DPSIER3_DAGT3IE_Msk (0x8UL) /*!< DAGT3IE (Bitfield-Mask: 0x01) */ +/* ======================================================== DPSIFR0 ======================================================== */ + #define R_SYSTEM_DPSIFR0_DIRQF_Pos (0UL) /*!< DIRQF (Bit 0) */ + #define R_SYSTEM_DPSIFR0_DIRQF_Msk (0x1UL) /*!< DIRQF (Bitfield-Mask: 0x01) */ +/* ======================================================== DPSIFR1 ======================================================== */ + #define R_SYSTEM_DPSIFR1_DIRQF_Pos (0UL) /*!< DIRQF (Bit 0) */ + #define R_SYSTEM_DPSIFR1_DIRQF_Msk (0x1UL) /*!< DIRQF (Bitfield-Mask: 0x01) */ +/* ======================================================== DPSIFR2 ======================================================== */ + #define R_SYSTEM_DPSIFR2_DNMIF_Pos (4UL) /*!< DNMIF (Bit 4) */ + #define R_SYSTEM_DPSIFR2_DNMIF_Msk (0x10UL) /*!< DNMIF (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_DTRTCIIF_Pos (2UL) /*!< DTRTCIIF (Bit 2) */ + #define R_SYSTEM_DPSIFR2_DTRTCIIF_Msk (0x4UL) /*!< DTRTCIIF (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPSIFR2_DLVD2IF_Pos (1UL) /*!< DLVD2IF (Bit 1) */ + #define R_SYSTEM_DPSIFR2_DLVD2IF_Msk (0x2UL) /*!< DLVD2IF (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPSIFR2_DLVD1IF_Pos (0UL) /*!< DLVD1IF (Bit 0) */ + #define R_SYSTEM_DPSIFR2_DLVD1IF_Msk (0x1UL) /*!< DLVD1IF (Bitfield-Mask: 0x01) */ +/* ======================================================== DPSIFR3 ======================================================== */ + #define R_SYSTEM_DPSIFR3_DAGT1IF_Pos (2UL) /*!< DAGT1IF (Bit 2) */ + #define R_SYSTEM_DPSIFR3_DAGT1IF_Msk (0x4UL) /*!< DAGT1IF (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_DUSBFSIF_Pos (0UL) /*!< DUSBFSIF (Bit 0) */ + #define R_SYSTEM_DPSIFR3_DUSBFSIF_Msk (0x1UL) /*!< DUSBFSIF (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPSIFR3_DAGT3IF_Pos (3UL) /*!< DAGT3IF (Bit 3) */ + #define R_SYSTEM_DPSIFR3_DAGT3IF_Msk (0x8UL) /*!< DAGT3IF (Bitfield-Mask: 0x01) */ +/* ======================================================= DPSIEGR0 ======================================================== */ + #define R_SYSTEM_DPSIEGR0_DIRQEG_Pos (0UL) /*!< DIRQEG (Bit 0) */ + #define R_SYSTEM_DPSIEGR0_DIRQEG_Msk (0x1UL) /*!< DIRQEG (Bitfield-Mask: 0x01) */ +/* ======================================================= DPSIEGR1 ======================================================== */ + #define R_SYSTEM_DPSIEGR1_DIRQEG_Pos (0UL) /*!< DIRQEG (Bit 0) */ + #define R_SYSTEM_DPSIEGR1_DIRQEG_Msk (0x1UL) /*!< DIRQEG (Bitfield-Mask: 0x01) */ +/* ======================================================= DPSIEGR2 ======================================================== */ + #define R_SYSTEM_DPSIEGR2_DNMIEG_Pos (4UL) /*!< DNMIEG (Bit 4) */ + #define R_SYSTEM_DPSIEGR2_DNMIEG_Msk (0x10UL) /*!< DNMIEG (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPSIEGR2_DLVD2IEG_Pos (1UL) /*!< DLVD2IEG (Bit 1) */ + #define R_SYSTEM_DPSIEGR2_DLVD2IEG_Msk (0x2UL) /*!< DLVD2IEG (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPSIEGR2_DLVD1IEG_Pos (0UL) /*!< DLVD1IEG (Bit 0) */ + #define R_SYSTEM_DPSIEGR2_DLVD1IEG_Msk (0x1UL) /*!< DLVD1IEG (Bitfield-Mask: 0x01) */ +/* ======================================================== DPSBYCR ======================================================== */ + #define R_SYSTEM_DPSBYCR_DPSBY_Pos (7UL) /*!< DPSBY (Bit 7) */ + #define R_SYSTEM_DPSBYCR_DPSBY_Msk (0x80UL) /*!< DPSBY (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_DEEPCUT_Pos (0UL) /*!< DEEPCUT (Bit 0) */ + #define R_SYSTEM_DPSBYCR_DEEPCUT_Msk (0x3UL) /*!< DEEPCUT (Bitfield-Mask: 0x03) */ +/* ======================================================== SYOCDCR ======================================================== */ + #define R_SYSTEM_SYOCDCR_DBGEN_Pos (7UL) /*!< DBGEN (Bit 7) */ + #define R_SYSTEM_SYOCDCR_DBGEN_Msk (0x80UL) /*!< DBGEN (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_SYOCDCR_DOCDF_Pos (0UL) /*!< DOCDF (Bit 0) */ + #define R_SYSTEM_SYOCDCR_DOCDF_Msk (0x1UL) /*!< DOCDF (Bitfield-Mask: 0x01) */ +/* ========================================================= MOMCR ========================================================= */ + #define R_SYSTEM_MOMCR_AUTODRVEN_Pos (7UL) /*!< AUTODRVEN (Bit 7) */ + #define R_SYSTEM_MOMCR_AUTODRVEN_Msk (0x80UL) /*!< AUTODRVEN (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_MOMCR_MOSEL_Pos (6UL) /*!< MOSEL (Bit 6) */ + #define R_SYSTEM_MOMCR_MOSEL_Msk (0x40UL) /*!< MOSEL (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_MOMCR_MODRV0_Pos (4UL) /*!< MODRV0 (Bit 4) */ + #define R_SYSTEM_MOMCR_MODRV0_Msk (0x30UL) /*!< MODRV0 (Bitfield-Mask: 0x03) */ + #define R_SYSTEM_MOMCR_MODRV1_Pos (3UL) /*!< MODRV1 (Bit 3) */ + #define R_SYSTEM_MOMCR_MODRV1_Msk (0x8UL) /*!< MODRV1 (Bitfield-Mask: 0x01) */ +/* ======================================================== RSTSR0 ========================================================= */ + #define R_SYSTEM_RSTSR0_DPSRSTF_Pos (7UL) /*!< DPSRSTF (Bit 7) */ + #define R_SYSTEM_RSTSR0_DPSRSTF_Msk (0x80UL) /*!< DPSRSTF (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_LVD1RF_Pos (2UL) /*!< LVD1RF (Bit 2) */ + #define R_SYSTEM_RSTSR0_LVD1RF_Msk (0x4UL) /*!< LVD1RF (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_PORF_Pos (0UL) /*!< PORF (Bit 0) */ + #define R_SYSTEM_RSTSR0_PORF_Msk (0x1UL) /*!< PORF (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) */ +/* ======================================================== 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) */ +/* ======================================================== LVDLVLR ======================================================== */ + #define R_SYSTEM_LVDLVLR_LVD2LVL_Pos (5UL) /*!< LVD2LVL (Bit 5) */ + #define R_SYSTEM_LVDLVLR_LVD2LVL_Msk (0xe0UL) /*!< LVD2LVL (Bitfield-Mask: 0x07) */ + #define R_SYSTEM_LVDLVLR_LVD1LVL_Pos (0UL) /*!< LVD1LVL (Bit 0) */ + #define R_SYSTEM_LVDLVLR_LVD1LVL_Msk (0x1fUL) /*!< LVD1LVL (Bitfield-Mask: 0x1f) */ +/* ======================================================= LVD2CMPCR ======================================================= */ + #define R_SYSTEM_LVD2CMPCR_LVD2LVL_Pos (0UL) /*!< LVD2LVL (Bit 0) */ + #define R_SYSTEM_LVD2CMPCR_LVD2LVL_Msk (0x7UL) /*!< LVD2LVL (Bitfield-Mask: 0x07) */ + #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_RN_Pos (7UL) /*!< RN (Bit 7) */ + #define R_SYSTEM_LVD1CR0_RN_Msk (0x80UL) /*!< RN (Bitfield-Mask: 0x01) */ + #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_FSAMP_Pos (4UL) /*!< FSAMP (Bit 4) */ + #define R_SYSTEM_LVD1CR0_FSAMP_Msk (0x30UL) /*!< FSAMP (Bitfield-Mask: 0x03) */ + #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_DFDIS_Pos (1UL) /*!< DFDIS (Bit 1) */ + #define R_SYSTEM_LVD1CR0_DFDIS_Msk (0x2UL) /*!< DFDIS (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_LVD1CR0_RIE_Pos (0UL) /*!< RIE (Bit 0) */ + #define R_SYSTEM_LVD1CR0_RIE_Msk (0x1UL) /*!< RIE (Bitfield-Mask: 0x01) */ +/* ======================================================== LVD2CR0 ======================================================== */ + #define R_SYSTEM_LVD2CR0_RN_Pos (7UL) /*!< RN (Bit 7) */ + #define R_SYSTEM_LVD2CR0_RN_Msk (0x80UL) /*!< RN (Bitfield-Mask: 0x01) */ + #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_FSAMP_Pos (4UL) /*!< FSAMP (Bit 4) */ + #define R_SYSTEM_LVD2CR0_FSAMP_Msk (0x30UL) /*!< FSAMP (Bitfield-Mask: 0x03) */ + #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_DFDIS_Pos (1UL) /*!< DFDIS (Bit 1) */ + #define R_SYSTEM_LVD2CR0_DFDIS_Msk (0x2UL) /*!< DFDIS (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_LVD2CR0_RIE_Pos (0UL) /*!< RIE (Bit 0) */ + #define R_SYSTEM_LVD2CR0_RIE_Msk (0x1UL) /*!< RIE (Bitfield-Mask: 0x01) */ +/* ======================================================== VBTCR1 ========================================================= */ + #define R_SYSTEM_VBTCR1_BPWSWSTP_Pos (0UL) /*!< BPWSWSTP (Bit 0) */ + #define R_SYSTEM_VBTCR1_BPWSWSTP_Msk (0x1UL) /*!< BPWSWSTP (Bitfield-Mask: 0x01) */ +/* ======================================================== DCDCCTL ======================================================== */ + #define R_SYSTEM_DCDCCTL_PD_Pos (7UL) /*!< PD (Bit 7) */ + #define R_SYSTEM_DCDCCTL_PD_Msk (0x80UL) /*!< PD (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DCDCCTL_FST_Pos (6UL) /*!< FST (Bit 6) */ + #define R_SYSTEM_DCDCCTL_FST_Msk (0x40UL) /*!< FST (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DCDCCTL_LCBOOST_Pos (5UL) /*!< LCBOOST (Bit 5) */ + #define R_SYSTEM_DCDCCTL_LCBOOST_Msk (0x20UL) /*!< LCBOOST (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DCDCCTL_STOPZA_Pos (4UL) /*!< STOPZA (Bit 4) */ + #define R_SYSTEM_DCDCCTL_STOPZA_Msk (0x10UL) /*!< STOPZA (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DCDCCTL_OCPEN_Pos (1UL) /*!< OCPEN (Bit 1) */ + #define R_SYSTEM_DCDCCTL_OCPEN_Msk (0x2UL) /*!< OCPEN (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DCDCCTL_DCDCON_Pos (0UL) /*!< DCDCON (Bit 0) */ + #define R_SYSTEM_DCDCCTL_DCDCON_Msk (0x1UL) /*!< DCDCON (Bitfield-Mask: 0x01) */ +/* ======================================================== VCCSEL ========================================================= */ + #define R_SYSTEM_VCCSEL_VCCSEL_Pos (0UL) /*!< VCCSEL (Bit 0) */ + #define R_SYSTEM_VCCSEL_VCCSEL_Msk (0x3UL) /*!< VCCSEL (Bitfield-Mask: 0x03) */ +/* ======================================================== 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) */ +/* ======================================================== 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) */ +/* ======================================================== VBTCR2 ========================================================= */ + #define R_SYSTEM_VBTCR2_VBTLVDLVL_Pos (6UL) /*!< VBTLVDLVL (Bit 6) */ + #define R_SYSTEM_VBTCR2_VBTLVDLVL_Msk (0xc0UL) /*!< VBTLVDLVL (Bitfield-Mask: 0x03) */ + #define R_SYSTEM_VBTCR2_VBTLVDEN_Pos (4UL) /*!< VBTLVDEN (Bit 4) */ + #define R_SYSTEM_VBTCR2_VBTLVDEN_Msk (0x10UL) /*!< VBTLVDEN (Bitfield-Mask: 0x01) */ +/* ========================================================= VBTSR ========================================================= */ + #define R_SYSTEM_VBTSR_VBTRVLD_Pos (4UL) /*!< VBTRVLD (Bit 4) */ + #define R_SYSTEM_VBTSR_VBTRVLD_Msk (0x10UL) /*!< VBTRVLD (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_VBTSR_VBTBLDF_Pos (1UL) /*!< VBTBLDF (Bit 1) */ + #define R_SYSTEM_VBTSR_VBTBLDF_Msk (0x2UL) /*!< VBTBLDF (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_VBTSR_VBTRDF_Pos (0UL) /*!< VBTRDF (Bit 0) */ + #define R_SYSTEM_VBTSR_VBTRDF_Msk (0x1UL) /*!< VBTRDF (Bitfield-Mask: 0x01) */ +/* ======================================================= VBTCMPCR ======================================================== */ + #define R_SYSTEM_VBTCMPCR_VBTCMPE_Pos (0UL) /*!< VBTCMPE (Bit 0) */ + #define R_SYSTEM_VBTCMPCR_VBTCMPE_Msk (0x1UL) /*!< VBTCMPE (Bitfield-Mask: 0x01) */ +/* ======================================================= VBTLVDICR ======================================================= */ + #define R_SYSTEM_VBTLVDICR_VBTLVDISEL_Pos (1UL) /*!< VBTLVDISEL (Bit 1) */ + #define R_SYSTEM_VBTLVDICR_VBTLVDISEL_Msk (0x2UL) /*!< VBTLVDISEL (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_VBTLVDICR_VBTLVDIE_Pos (0UL) /*!< VBTLVDIE (Bit 0) */ + #define R_SYSTEM_VBTLVDICR_VBTLVDIE_Msk (0x1UL) /*!< VBTLVDIE (Bitfield-Mask: 0x01) */ +/* ======================================================= VBTWCTLR ======================================================== */ + #define R_SYSTEM_VBTWCTLR_VWEN_Pos (0UL) /*!< VWEN (Bit 0) */ + #define R_SYSTEM_VBTWCTLR_VWEN_Msk (0x1UL) /*!< VWEN (Bitfield-Mask: 0x01) */ +/* ====================================================== VBTWCH0OTSR ====================================================== */ + #define R_SYSTEM_VBTWCH0OTSR_CH0VAGTUTE_Pos (5UL) /*!< CH0VAGTUTE (Bit 5) */ + #define R_SYSTEM_VBTWCH0OTSR_CH0VAGTUTE_Msk (0x20UL) /*!< CH0VAGTUTE (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_VBTWCH0OTSR_CH0VRTCATE_Pos (4UL) /*!< CH0VRTCATE (Bit 4) */ + #define R_SYSTEM_VBTWCH0OTSR_CH0VRTCATE_Msk (0x10UL) /*!< CH0VRTCATE (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_VBTWCH0OTSR_CH0VRTCTE_Pos (3UL) /*!< CH0VRTCTE (Bit 3) */ + #define R_SYSTEM_VBTWCH0OTSR_CH0VRTCTE_Msk (0x8UL) /*!< CH0VRTCTE (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_VBTWCH0OTSR_CH0VCH2TE_Pos (2UL) /*!< CH0VCH2TE (Bit 2) */ + #define R_SYSTEM_VBTWCH0OTSR_CH0VCH2TE_Msk (0x4UL) /*!< CH0VCH2TE (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_VBTWCH0OTSR_CH0VCH1TE_Pos (1UL) /*!< CH0VCH1TE (Bit 1) */ + #define R_SYSTEM_VBTWCH0OTSR_CH0VCH1TE_Msk (0x2UL) /*!< CH0VCH1TE (Bitfield-Mask: 0x01) */ +/* ====================================================== VBTWCH1OTSR ====================================================== */ + #define R_SYSTEM_VBTWCH1OTSR_CH1VAGTUTE_Pos (5UL) /*!< CH1VAGTUTE (Bit 5) */ + #define R_SYSTEM_VBTWCH1OTSR_CH1VAGTUTE_Msk (0x20UL) /*!< CH1VAGTUTE (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_VBTWCH1OTSR_CH1VRTCATE_Pos (4UL) /*!< CH1VRTCATE (Bit 4) */ + #define R_SYSTEM_VBTWCH1OTSR_CH1VRTCATE_Msk (0x10UL) /*!< CH1VRTCATE (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_VBTWCH1OTSR_CH1VRTCTE_Pos (3UL) /*!< CH1VRTCTE (Bit 3) */ + #define R_SYSTEM_VBTWCH1OTSR_CH1VRTCTE_Msk (0x8UL) /*!< CH1VRTCTE (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_VBTWCH1OTSR_CH1VCH2TE_Pos (2UL) /*!< CH1VCH2TE (Bit 2) */ + #define R_SYSTEM_VBTWCH1OTSR_CH1VCH2TE_Msk (0x4UL) /*!< CH1VCH2TE (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_VBTWCH1OTSR_CH1VCH0TE_Pos (0UL) /*!< CH1VCH0TE (Bit 0) */ + #define R_SYSTEM_VBTWCH1OTSR_CH1VCH0TE_Msk (0x1UL) /*!< CH1VCH0TE (Bitfield-Mask: 0x01) */ +/* ====================================================== VBTWCH2OTSR ====================================================== */ + #define R_SYSTEM_VBTWCH2OTSR_CH2VAGTUTE_Pos (5UL) /*!< CH2VAGTUTE (Bit 5) */ + #define R_SYSTEM_VBTWCH2OTSR_CH2VAGTUTE_Msk (0x20UL) /*!< CH2VAGTUTE (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_VBTWCH2OTSR_CH2VRTCATE_Pos (4UL) /*!< CH2VRTCATE (Bit 4) */ + #define R_SYSTEM_VBTWCH2OTSR_CH2VRTCATE_Msk (0x10UL) /*!< CH2VRTCATE (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_VBTWCH2OTSR_CH2VRTCTE_Pos (3UL) /*!< CH2VRTCTE (Bit 3) */ + #define R_SYSTEM_VBTWCH2OTSR_CH2VRTCTE_Msk (0x8UL) /*!< CH2VRTCTE (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_VBTWCH2OTSR_CH2VCH1TE_Pos (1UL) /*!< CH2VCH1TE (Bit 1) */ + #define R_SYSTEM_VBTWCH2OTSR_CH2VCH1TE_Msk (0x2UL) /*!< CH2VCH1TE (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_VBTWCH2OTSR_CH2VCH0TE_Pos (0UL) /*!< CH2VCH0TE (Bit 0) */ + #define R_SYSTEM_VBTWCH2OTSR_CH2VCH0TE_Msk (0x1UL) /*!< CH2VCH0TE (Bitfield-Mask: 0x01) */ +/* ======================================================= VBTICTLR ======================================================== */ + #define R_SYSTEM_VBTICTLR_VCH2INEN_Pos (2UL) /*!< VCH2INEN (Bit 2) */ + #define R_SYSTEM_VBTICTLR_VCH2INEN_Msk (0x4UL) /*!< VCH2INEN (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_VCH0INEN_Pos (0UL) /*!< VCH0INEN (Bit 0) */ + #define R_SYSTEM_VBTICTLR_VCH0INEN_Msk (0x1UL) /*!< VCH0INEN (Bitfield-Mask: 0x01) */ +/* ======================================================= VBTOCTLR ======================================================== */ + #define R_SYSTEM_VBTOCTLR_VOUT2LSEL_Pos (5UL) /*!< VOUT2LSEL (Bit 5) */ + #define R_SYSTEM_VBTOCTLR_VOUT2LSEL_Msk (0x20UL) /*!< VOUT2LSEL (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_VBTOCTLR_VCOU1LSEL_Pos (4UL) /*!< VCOU1LSEL (Bit 4) */ + #define R_SYSTEM_VBTOCTLR_VCOU1LSEL_Msk (0x10UL) /*!< VCOU1LSEL (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_VBTOCTLR_VOUT0LSEL_Pos (3UL) /*!< VOUT0LSEL (Bit 3) */ + #define R_SYSTEM_VBTOCTLR_VOUT0LSEL_Msk (0x8UL) /*!< VOUT0LSEL (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_VBTOCTLR_VCH2OEN_Pos (2UL) /*!< VCH2OEN (Bit 2) */ + #define R_SYSTEM_VBTOCTLR_VCH2OEN_Msk (0x4UL) /*!< VCH2OEN (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_VBTOCTLR_VCH1OEN_Pos (1UL) /*!< VCH1OEN (Bit 1) */ + #define R_SYSTEM_VBTOCTLR_VCH1OEN_Msk (0x2UL) /*!< VCH1OEN (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_VBTOCTLR_VCH0OEN_Pos (0UL) /*!< VCH0OEN (Bit 0) */ + #define R_SYSTEM_VBTOCTLR_VCH0OEN_Msk (0x1UL) /*!< VCH0OEN (Bitfield-Mask: 0x01) */ +/* ======================================================== VBTWTER ======================================================== */ + #define R_SYSTEM_VBTWTER_VAGTUE_Pos (5UL) /*!< VAGTUE (Bit 5) */ + #define R_SYSTEM_VBTWTER_VAGTUE_Msk (0x20UL) /*!< VAGTUE (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_VBTWTER_VRTCAE_Pos (4UL) /*!< VRTCAE (Bit 4) */ + #define R_SYSTEM_VBTWTER_VRTCAE_Msk (0x10UL) /*!< VRTCAE (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_VBTWTER_VRTCIE_Pos (3UL) /*!< VRTCIE (Bit 3) */ + #define R_SYSTEM_VBTWTER_VRTCIE_Msk (0x8UL) /*!< VRTCIE (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_VBTWTER_VCH2E_Pos (2UL) /*!< VCH2E (Bit 2) */ + #define R_SYSTEM_VBTWTER_VCH2E_Msk (0x4UL) /*!< VCH2E (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_VBTWTER_VCH1E_Pos (1UL) /*!< VCH1E (Bit 1) */ + #define R_SYSTEM_VBTWTER_VCH1E_Msk (0x2UL) /*!< VCH1E (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_VBTWTER_VCH0E_Pos (0UL) /*!< VCH0E (Bit 0) */ + #define R_SYSTEM_VBTWTER_VCH0E_Msk (0x1UL) /*!< VCH0E (Bitfield-Mask: 0x01) */ +/* ======================================================== VBTWEGR ======================================================== */ + #define R_SYSTEM_VBTWEGR_VCH2EG_Pos (2UL) /*!< VCH2EG (Bit 2) */ + #define R_SYSTEM_VBTWEGR_VCH2EG_Msk (0x4UL) /*!< VCH2EG (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_VBTWEGR_VCH1EG_Pos (1UL) /*!< VCH1EG (Bit 1) */ + #define R_SYSTEM_VBTWEGR_VCH1EG_Msk (0x2UL) /*!< VCH1EG (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_VBTWEGR_VCH0EG_Pos (0UL) /*!< VCH0EG (Bit 0) */ + #define R_SYSTEM_VBTWEGR_VCH0EG_Msk (0x1UL) /*!< VCH0EG (Bitfield-Mask: 0x01) */ +/* ======================================================== VBTWFR ========================================================= */ + #define R_SYSTEM_VBTWFR_VAGTUF_Pos (5UL) /*!< VAGTUF (Bit 5) */ + #define R_SYSTEM_VBTWFR_VAGTUF_Msk (0x20UL) /*!< VAGTUF (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_VBTWFR_VRTCAF_Pos (4UL) /*!< VRTCAF (Bit 4) */ + #define R_SYSTEM_VBTWFR_VRTCAF_Msk (0x10UL) /*!< VRTCAF (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_VBTWFR_VRTCIF_Pos (3UL) /*!< VRTCIF (Bit 3) */ + #define R_SYSTEM_VBTWFR_VRTCIF_Msk (0x8UL) /*!< VRTCIF (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_VBTWFR_VCH2F_Pos (2UL) /*!< VCH2F (Bit 2) */ + #define R_SYSTEM_VBTWFR_VCH2F_Msk (0x4UL) /*!< VCH2F (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_VBTWFR_VCH1F_Pos (1UL) /*!< VCH1F (Bit 1) */ + #define R_SYSTEM_VBTWFR_VCH1F_Msk (0x2UL) /*!< VCH1F (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_VBTWFR_VCH0F_Pos (0UL) /*!< VCH0F (Bit 0) */ + #define R_SYSTEM_VBTWFR_VCH0F_Msk (0x1UL) /*!< VCH0F (Bitfield-Mask: 0x01) */ +/* ======================================================== VBTBKR ========================================================= */ + #define R_SYSTEM_VBTBKR_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================== FWEPROR ======================================================== */ + #define R_SYSTEM_FWEPROR_FLWE_Pos (0UL) /*!< FLWE (Bit 0) */ + #define R_SYSTEM_FWEPROR_FLWE_Msk (0x3UL) /*!< FLWE (Bitfield-Mask: 0x03) */ +/* ======================================================== 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_PLL2MUL_Pos (8UL) /*!< PLL2MUL (Bit 8) */ + #define R_SYSTEM_PLL2CCR_PLL2MUL_Msk (0x3f00UL) /*!< PLL2MUL (Bitfield-Mask: 0x3f) */ +/* ======================================================== PLL2CR ========================================================= */ + #define R_SYSTEM_PLL2CR_PLL2STP_Pos (0UL) /*!< PLL2STP (Bit 0) */ + #define R_SYSTEM_PLL2CR_PLL2STP_Msk (0x1UL) /*!< PLL2STP (Bitfield-Mask: 0x01) */ +/* ====================================================== 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) */ +/* ===================================================== SCISPICKDIVCR ===================================================== */ + #define R_SYSTEM_SCISPICKDIVCR_SCISPICKDIV_Pos (0UL) /*!< SCISPICKDIV (Bit 0) */ + #define R_SYSTEM_SCISPICKDIVCR_SCISPICKDIV_Msk (0x7UL) /*!< SCISPICKDIV (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) */ +/* ====================================================== GPTCKDIVCR ======================================================= */ + #define R_SYSTEM_GPTCKDIVCR_GPTCKDIV_Pos (0UL) /*!< GPTCKDIV (Bit 0) */ + #define R_SYSTEM_GPTCKDIVCR_GPTCKDIV_Msk (0x7UL) /*!< GPTCKDIV (Bitfield-Mask: 0x07) */ +/* ====================================================== IICCKDIVCR ======================================================= */ + #define R_SYSTEM_IICCKDIVCR_IICCKDIV_Pos (0UL) /*!< IICCKDIV (Bit 0) */ + #define R_SYSTEM_IICCKDIVCR_IICCKDIV_Msk (0x7UL) /*!< IICCKDIV (Bitfield-Mask: 0x07) */ +/* ======================================================== USBCKCR ======================================================== */ + #define R_SYSTEM_USBCKCR_USBCKSEL_Pos (0UL) /*!< USBCKSEL (Bit 0) */ + #define R_SYSTEM_USBCKCR_USBCKSEL_Msk (0x7UL) /*!< USBCKSEL (Bitfield-Mask: 0x07) */ + #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 (0x7UL) /*!< OCTACKSEL (Bitfield-Mask: 0x07) */ + #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) */ +/* ====================================================== SCISPICKCR ======================================================= */ + #define R_SYSTEM_SCISPICKCR_SCISPICKSEL_Pos (0UL) /*!< SCISPICKSEL (Bit 0) */ + #define R_SYSTEM_SCISPICKCR_SCISPICKSEL_Msk (0x7UL) /*!< SCISPICKSEL (Bitfield-Mask: 0x07) */ + #define R_SYSTEM_SCISPICKCR_SCISPICKSREQ_Pos (6UL) /*!< SCISPICKSREQ (Bit 6) */ + #define R_SYSTEM_SCISPICKCR_SCISPICKSREQ_Msk (0x40UL) /*!< SCISPICKSREQ (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_SCISPICKCR_SCISPICKSRDY_Pos (7UL) /*!< SCISPICKSRDY (Bit 7) */ + #define R_SYSTEM_SCISPICKCR_SCISPICKSRDY_Msk (0x80UL) /*!< SCISPICKSRDY (Bitfield-Mask: 0x01) */ +/* ======================================================= CANFDCKCR ======================================================= */ + #define R_SYSTEM_CANFDCKCR_CANFDCKSEL_Pos (0UL) /*!< CANFDCKSEL (Bit 0) */ + #define R_SYSTEM_CANFDCKCR_CANFDCKSEL_Msk (0x7UL) /*!< CANFDCKSEL (Bitfield-Mask: 0x07) */ + #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) */ +/* ======================================================== GPTCKCR ======================================================== */ + #define R_SYSTEM_GPTCKCR_GPTCKSEL_Pos (0UL) /*!< GPTCKSEL (Bit 0) */ + #define R_SYSTEM_GPTCKCR_GPTCKSEL_Msk (0x7UL) /*!< GPTCKSEL (Bitfield-Mask: 0x07) */ + #define R_SYSTEM_GPTCKCR_GPTCKSREQ_Pos (6UL) /*!< GPTCKSREQ (Bit 6) */ + #define R_SYSTEM_GPTCKCR_GPTCKSREQ_Msk (0x40UL) /*!< GPTCKSREQ (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_GPTCKCR_GPTCKSRDY_Pos (7UL) /*!< GPTCKSRDY (Bit 7) */ + #define R_SYSTEM_GPTCKCR_GPTCKSRDY_Msk (0x80UL) /*!< GPTCKSRDY (Bitfield-Mask: 0x01) */ +/* ======================================================== IICCKCR ======================================================== */ + #define R_SYSTEM_IICCKCR_IICCKSEL_Pos (0UL) /*!< IICCKSEL (Bit 0) */ + #define R_SYSTEM_IICCKCR_IICCKSEL_Msk (0x7UL) /*!< IICCKSEL (Bitfield-Mask: 0x07) */ + #define R_SYSTEM_IICCKCR_IICCKSREQ_Pos (6UL) /*!< IICCKSREQ (Bit 6) */ + #define R_SYSTEM_IICCKCR_IICCKSREQ_Msk (0x40UL) /*!< IICCKSREQ (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_IICCKCR_IICCKSRDY_Pos (7UL) /*!< IICCKSRDY (Bit 7) */ + #define R_SYSTEM_IICCKCR_IICCKSRDY_Msk (0x80UL) /*!< IICCKSRDY (Bitfield-Mask: 0x01) */ +/* ======================================================= SNZREQCR1 ======================================================= */ + #define R_SYSTEM_SNZREQCR1_SNZREQEN0_Pos (0UL) /*!< SNZREQEN0 (Bit 0) */ + #define R_SYSTEM_SNZREQCR1_SNZREQEN0_Msk (0x1UL) /*!< SNZREQEN0 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_SNZREQCR1_SNZREQEN1_Pos (1UL) /*!< SNZREQEN1 (Bit 1) */ + #define R_SYSTEM_SNZREQCR1_SNZREQEN1_Msk (0x2UL) /*!< SNZREQEN1 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_SNZREQCR1_SNZREQEN2_Pos (2UL) /*!< SNZREQEN2 (Bit 2) */ + #define R_SYSTEM_SNZREQCR1_SNZREQEN2_Msk (0x4UL) /*!< SNZREQEN2 (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) */ +/* ======================================================== 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_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) */ +/* ======================================================== 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_NONSEC2_Pos (2UL) /*!< NONSEC2 (Bit 2) */ + #define R_SYSTEM_LPMSAR_NONSEC2_Msk (0x4UL) /*!< NONSEC2 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_LPMSAR_NONSEC4_Pos (4UL) /*!< NONSEC4 (Bit 4) */ + #define R_SYSTEM_LPMSAR_NONSEC4_Msk (0x10UL) /*!< NONSEC4 (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_NONSEC9_Pos (9UL) /*!< NONSEC9 (Bit 9) */ + #define R_SYSTEM_LPMSAR_NONSEC9_Msk (0x200UL) /*!< NONSEC9 (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) */ +/* ======================================================== 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) */ +/* ======================================================== 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_NONSEC16_Pos (16UL) /*!< NONSEC16 (Bit 16) */ + #define R_SYSTEM_BBFSAR_NONSEC16_Msk (0x10000UL) /*!< NONSEC16 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_BBFSAR_NONSEC17_Pos (17UL) /*!< NONSEC17 (Bit 17) */ + #define R_SYSTEM_BBFSAR_NONSEC17_Msk (0x20000UL) /*!< NONSEC17 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_BBFSAR_NONSEC18_Pos (18UL) /*!< NONSEC18 (Bit 18) */ + #define R_SYSTEM_BBFSAR_NONSEC18_Msk (0x40000UL) /*!< NONSEC18 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_BBFSAR_NONSEC19_Pos (19UL) /*!< NONSEC19 (Bit 19) */ + #define R_SYSTEM_BBFSAR_NONSEC19_Msk (0x80000UL) /*!< NONSEC19 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_BBFSAR_NONSEC20_Pos (20UL) /*!< NONSEC20 (Bit 20) */ + #define R_SYSTEM_BBFSAR_NONSEC20_Msk (0x100000UL) /*!< NONSEC20 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_BBFSAR_NONSEC21_Pos (21UL) /*!< NONSEC21 (Bit 21) */ + #define R_SYSTEM_BBFSAR_NONSEC21_Msk (0x200000UL) /*!< NONSEC21 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_BBFSAR_NONSEC22_Pos (22UL) /*!< NONSEC22 (Bit 22) */ + #define R_SYSTEM_BBFSAR_NONSEC22_Msk (0x400000UL) /*!< NONSEC22 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_BBFSAR_NONSEC23_Pos (23UL) /*!< NONSEC23 (Bit 23) */ + #define R_SYSTEM_BBFSAR_NONSEC23_Msk (0x800000UL) /*!< NONSEC23 (Bitfield-Mask: 0x01) */ +/* ======================================================== DPFSAR ========================================================= */ + #define R_SYSTEM_DPFSAR_DPFSA0_Pos (0UL) /*!< DPFSA0 (Bit 0) */ + #define R_SYSTEM_DPFSAR_DPFSA0_Msk (0x1UL) /*!< DPFSA0 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPFSAR_DPFSA1_Pos (1UL) /*!< DPFSA1 (Bit 1) */ + #define R_SYSTEM_DPFSAR_DPFSA1_Msk (0x2UL) /*!< DPFSA1 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPFSAR_DPFSA2_Pos (2UL) /*!< DPFSA2 (Bit 2) */ + #define R_SYSTEM_DPFSAR_DPFSA2_Msk (0x4UL) /*!< DPFSA2 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPFSAR_DPFSA3_Pos (3UL) /*!< DPFSA3 (Bit 3) */ + #define R_SYSTEM_DPFSAR_DPFSA3_Msk (0x8UL) /*!< DPFSA3 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPFSAR_DPFSA4_Pos (4UL) /*!< DPFSA4 (Bit 4) */ + #define R_SYSTEM_DPFSAR_DPFSA4_Msk (0x10UL) /*!< DPFSA4 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPFSAR_DPFSA5_Pos (5UL) /*!< DPFSA5 (Bit 5) */ + #define R_SYSTEM_DPFSAR_DPFSA5_Msk (0x20UL) /*!< DPFSA5 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPFSAR_DPFSA6_Pos (6UL) /*!< DPFSA6 (Bit 6) */ + #define R_SYSTEM_DPFSAR_DPFSA6_Msk (0x40UL) /*!< DPFSA6 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPFSAR_DPFSA7_Pos (7UL) /*!< DPFSA7 (Bit 7) */ + #define R_SYSTEM_DPFSAR_DPFSA7_Msk (0x80UL) /*!< DPFSA7 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPFSAR_DPFSA8_Pos (8UL) /*!< DPFSA8 (Bit 8) */ + #define R_SYSTEM_DPFSAR_DPFSA8_Msk (0x100UL) /*!< DPFSA8 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPFSAR_DPFSA9_Pos (9UL) /*!< DPFSA9 (Bit 9) */ + #define R_SYSTEM_DPFSAR_DPFSA9_Msk (0x200UL) /*!< DPFSA9 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPFSAR_DPFSA10_Pos (10UL) /*!< DPFSA10 (Bit 10) */ + #define R_SYSTEM_DPFSAR_DPFSA10_Msk (0x400UL) /*!< DPFSA10 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPFSAR_DPFSA11_Pos (11UL) /*!< DPFSA11 (Bit 11) */ + #define R_SYSTEM_DPFSAR_DPFSA11_Msk (0x800UL) /*!< DPFSA11 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPFSAR_DPFSA12_Pos (12UL) /*!< DPFSA12 (Bit 12) */ + #define R_SYSTEM_DPFSAR_DPFSA12_Msk (0x1000UL) /*!< DPFSA12 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPFSAR_DPFSA13_Pos (13UL) /*!< DPFSA13 (Bit 13) */ + #define R_SYSTEM_DPFSAR_DPFSA13_Msk (0x2000UL) /*!< DPFSA13 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPFSAR_DPFSA14_Pos (14UL) /*!< DPFSA14 (Bit 14) */ + #define R_SYSTEM_DPFSAR_DPFSA14_Msk (0x4000UL) /*!< DPFSA14 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPFSAR_DPFSA15_Pos (15UL) /*!< DPFSA15 (Bit 15) */ + #define R_SYSTEM_DPFSAR_DPFSA15_Msk (0x8000UL) /*!< DPFSA15 (Bitfield-Mask: 0x01) */ + #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_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) */ +/* ======================================================== DPSWCR ========================================================= */ + #define R_SYSTEM_DPSWCR_WTSTS_Pos (0UL) /*!< WTSTS (Bit 0) */ + #define R_SYSTEM_DPSWCR_WTSTS_Msk (0x3fUL) /*!< WTSTS (Bitfield-Mask: 0x3f) */ +/* ====================================================== VBATTMNSELR ====================================================== */ + #define R_SYSTEM_VBATTMNSELR_VBATTMNSEL_Pos (0UL) /*!< VBATTMNSEL (Bit 0) */ + #define R_SYSTEM_VBATTMNSELR_VBATTMNSEL_Msk (0x1UL) /*!< VBATTMNSEL (Bitfield-Mask: 0x01) */ +/* ======================================================= VBATTMONR ======================================================= */ + #define R_SYSTEM_VBATTMONR_VBATTMON_Pos (0UL) /*!< VBATTMON (Bit 0) */ + #define R_SYSTEM_VBATTMONR_VBATTMON_Msk (0x1UL) /*!< VBATTMON (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) */ + +/* =========================================================================================================================== */ +/* ================ R_TSN ================ */ +/* =========================================================================================================================== */ + +/* ======================================================== TSCDRH ========================================================= */ + #define R_TSN_TSCDRH_TSCDRH_Pos (0UL) /*!< TSCDRH (Bit 0) */ + #define R_TSN_TSCDRH_TSCDRH_Msk (0xffUL) /*!< TSCDRH (Bitfield-Mask: 0xff) */ +/* ======================================================== TSCDRL ========================================================= */ + #define R_TSN_TSCDRL_TSCDRL_Pos (0UL) /*!< TSCDRL (Bit 0) */ + #define R_TSN_TSCDRL_TSCDRL_Msk (0xffUL) /*!< TSCDRL (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) */ +/* ======================================================== TZFSAR ========================================================= */ + #define R_TZF_TZFSAR_TZFSA0_Pos (0UL) /*!< TZFSA0 (Bit 0) */ + #define R_TZF_TZFSAR_TZFSA0_Msk (0x1UL) /*!< TZFSA0 (Bitfield-Mask: 0x01) */ + +/* =========================================================================================================================== */ +/* ================ R_CACHE ================ */ +/* =========================================================================================================================== */ + +/* ======================================================== CCACTL ========================================================= */ + #define R_CACHE_CCACTL_ENC_Pos (0UL) /*!< ENC (Bit 0) */ + #define R_CACHE_CCACTL_ENC_Msk (0x1UL) /*!< ENC (Bitfield-Mask: 0x01) */ +/* ======================================================== CCAFCT ========================================================= */ + #define R_CACHE_CCAFCT_FC_Pos (0UL) /*!< FC (Bit 0) */ + #define R_CACHE_CCAFCT_FC_Msk (0x1UL) /*!< FC (Bitfield-Mask: 0x01) */ +/* ======================================================== CCALCF ========================================================= */ + #define R_CACHE_CCALCF_CC_Pos (0UL) /*!< CC (Bit 0) */ + #define R_CACHE_CCALCF_CC_Msk (0x3UL) /*!< CC (Bitfield-Mask: 0x03) */ +/* ======================================================== SCACTL ========================================================= */ + #define R_CACHE_SCACTL_ENS_Pos (0UL) /*!< ENS (Bit 0) */ + #define R_CACHE_SCACTL_ENS_Msk (0x1UL) /*!< ENS (Bitfield-Mask: 0x01) */ +/* ======================================================== SCAFCT ========================================================= */ + #define R_CACHE_SCAFCT_FS_Pos (0UL) /*!< FS (Bit 0) */ + #define R_CACHE_SCAFCT_FS_Msk (0x1UL) /*!< FS (Bitfield-Mask: 0x01) */ +/* ======================================================== SCALCF ========================================================= */ + #define R_CACHE_SCALCF_CS_Pos (0UL) /*!< CS (Bit 0) */ + #define R_CACHE_SCALCF_CS_Msk (0x3UL) /*!< CS (Bitfield-Mask: 0x03) */ +/* ======================================================== CAPOAD ========================================================= */ + #define R_CACHE_CAPOAD_OAD_Pos (0UL) /*!< OAD (Bit 0) */ + #define R_CACHE_CAPOAD_OAD_Msk (0x1UL) /*!< OAD (Bitfield-Mask: 0x01) */ +/* ======================================================== CAPRCR ========================================================= */ + #define R_CACHE_CAPRCR_PRCR_Pos (0UL) /*!< PRCR (Bit 0) */ + #define R_CACHE_CAPRCR_PRCR_Msk (0x1UL) /*!< PRCR (Bitfield-Mask: 0x01) */ + #define R_CACHE_CAPRCR_KW_Pos (1UL) /*!< KW (Bit 1) */ + #define R_CACHE_CAPRCR_KW_Msk (0xfeUL) /*!< KW (Bitfield-Mask: 0x7f) */ + +/* =========================================================================================================================== */ +/* ================ 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_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) */ +/* ======================================================== 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) */ +/* ======================================================== CPUDSAR ======================================================== */ + #define R_CPSCU_CPUDSAR_CPUDSA0_Pos (0UL) /*!< CPUDSA0 (Bit 0) */ + #define R_CPSCU_CPUDSAR_CPUDSA0_Msk (0x1UL) /*!< CPUDSA0 (Bitfield-Mask: 0x01) */ + +/* =========================================================================================================================== */ +/* ================ R_CEC ================ */ +/* =========================================================================================================================== */ + +/* ========================================================= CADR ========================================================== */ + #define R_CEC_CADR_ADR00_Pos (0UL) /*!< ADR00 (Bit 0) */ + #define R_CEC_CADR_ADR00_Msk (0x1UL) /*!< ADR00 (Bitfield-Mask: 0x01) */ + #define R_CEC_CADR_ADR01_Pos (1UL) /*!< ADR01 (Bit 1) */ + #define R_CEC_CADR_ADR01_Msk (0x2UL) /*!< ADR01 (Bitfield-Mask: 0x01) */ + #define R_CEC_CADR_ADR02_Pos (2UL) /*!< ADR02 (Bit 2) */ + #define R_CEC_CADR_ADR02_Msk (0x4UL) /*!< ADR02 (Bitfield-Mask: 0x01) */ + #define R_CEC_CADR_ADR03_Pos (3UL) /*!< ADR03 (Bit 3) */ + #define R_CEC_CADR_ADR03_Msk (0x8UL) /*!< ADR03 (Bitfield-Mask: 0x01) */ + #define R_CEC_CADR_ADR04_Pos (4UL) /*!< ADR04 (Bit 4) */ + #define R_CEC_CADR_ADR04_Msk (0x10UL) /*!< ADR04 (Bitfield-Mask: 0x01) */ + #define R_CEC_CADR_ADR05_Pos (5UL) /*!< ADR05 (Bit 5) */ + #define R_CEC_CADR_ADR05_Msk (0x20UL) /*!< ADR05 (Bitfield-Mask: 0x01) */ + #define R_CEC_CADR_ADR06_Pos (6UL) /*!< ADR06 (Bit 6) */ + #define R_CEC_CADR_ADR06_Msk (0x40UL) /*!< ADR06 (Bitfield-Mask: 0x01) */ + #define R_CEC_CADR_ADR07_Pos (7UL) /*!< ADR07 (Bit 7) */ + #define R_CEC_CADR_ADR07_Msk (0x80UL) /*!< ADR07 (Bitfield-Mask: 0x01) */ + #define R_CEC_CADR_ADR08_Pos (8UL) /*!< ADR08 (Bit 8) */ + #define R_CEC_CADR_ADR08_Msk (0x100UL) /*!< ADR08 (Bitfield-Mask: 0x01) */ + #define R_CEC_CADR_ADR09_Pos (9UL) /*!< ADR09 (Bit 9) */ + #define R_CEC_CADR_ADR09_Msk (0x200UL) /*!< ADR09 (Bitfield-Mask: 0x01) */ + #define R_CEC_CADR_ADR10_Pos (10UL) /*!< ADR10 (Bit 10) */ + #define R_CEC_CADR_ADR10_Msk (0x400UL) /*!< ADR10 (Bitfield-Mask: 0x01) */ + #define R_CEC_CADR_ADR11_Pos (11UL) /*!< ADR11 (Bit 11) */ + #define R_CEC_CADR_ADR11_Msk (0x800UL) /*!< ADR11 (Bitfield-Mask: 0x01) */ + #define R_CEC_CADR_ADR12_Pos (12UL) /*!< ADR12 (Bit 12) */ + #define R_CEC_CADR_ADR12_Msk (0x1000UL) /*!< ADR12 (Bitfield-Mask: 0x01) */ + #define R_CEC_CADR_ADR13_Pos (13UL) /*!< ADR13 (Bit 13) */ + #define R_CEC_CADR_ADR13_Msk (0x2000UL) /*!< ADR13 (Bitfield-Mask: 0x01) */ + #define R_CEC_CADR_ADR14_Pos (14UL) /*!< ADR14 (Bit 14) */ + #define R_CEC_CADR_ADR14_Msk (0x4000UL) /*!< ADR14 (Bitfield-Mask: 0x01) */ +/* ======================================================== CECCTL1 ======================================================== */ + #define R_CEC_CECCTL1_SFT_Pos (0UL) /*!< SFT (Bit 0) */ + #define R_CEC_CECCTL1_SFT_Msk (0x3UL) /*!< SFT (Bitfield-Mask: 0x03) */ + #define R_CEC_CECCTL1_CESEL_Pos (2UL) /*!< CESEL (Bit 2) */ + #define R_CEC_CECCTL1_CESEL_Msk (0xcUL) /*!< CESEL (Bitfield-Mask: 0x03) */ + #define R_CEC_CECCTL1_STERRD_Pos (4UL) /*!< STERRD (Bit 4) */ + #define R_CEC_CECCTL1_STERRD_Msk (0x10UL) /*!< STERRD (Bitfield-Mask: 0x01) */ + #define R_CEC_CECCTL1_BLERRD_Pos (5UL) /*!< BLERRD (Bit 5) */ + #define R_CEC_CECCTL1_BLERRD_Msk (0x20UL) /*!< BLERRD (Bitfield-Mask: 0x01) */ + #define R_CEC_CECCTL1_CINTMK_Pos (6UL) /*!< CINTMK (Bit 6) */ + #define R_CEC_CECCTL1_CINTMK_Msk (0x40UL) /*!< CINTMK (Bitfield-Mask: 0x01) */ + #define R_CEC_CECCTL1_CDFC_Pos (7UL) /*!< CDFC (Bit 7) */ + #define R_CEC_CECCTL1_CDFC_Msk (0x80UL) /*!< CDFC (Bitfield-Mask: 0x01) */ +/* ========================================================= STATB ========================================================= */ + #define R_CEC_STATB_STATB_Pos (0UL) /*!< STATB (Bit 0) */ + #define R_CEC_STATB_STATB_Msk (0x1ffUL) /*!< STATB (Bitfield-Mask: 0x1ff) */ +/* ========================================================= STATL ========================================================= */ + #define R_CEC_STATL_STATL_Pos (0UL) /*!< STATL (Bit 0) */ + #define R_CEC_STATL_STATL_Msk (0x1ffUL) /*!< STATL (Bitfield-Mask: 0x1ff) */ +/* ========================================================= LGC0L ========================================================= */ + #define R_CEC_LGC0L_LGC0L_Pos (0UL) /*!< LGC0L (Bit 0) */ + #define R_CEC_LGC0L_LGC0L_Msk (0x1ffUL) /*!< LGC0L (Bitfield-Mask: 0x1ff) */ +/* ========================================================= LGC1L ========================================================= */ + #define R_CEC_LGC1L_LGC1L_Pos (0UL) /*!< LGC1L (Bit 0) */ + #define R_CEC_LGC1L_LGC1L_Msk (0x1ffUL) /*!< LGC1L (Bitfield-Mask: 0x1ff) */ +/* ========================================================= DATB ========================================================== */ + #define R_CEC_DATB_DATB_Pos (0UL) /*!< DATB (Bit 0) */ + #define R_CEC_DATB_DATB_Msk (0x1ffUL) /*!< DATB (Bitfield-Mask: 0x1ff) */ +/* ========================================================= NOMT ========================================================== */ + #define R_CEC_NOMT_NOMT_Pos (0UL) /*!< NOMT (Bit 0) */ + #define R_CEC_NOMT_NOMT_Msk (0x1ffUL) /*!< NOMT (Bitfield-Mask: 0x1ff) */ +/* ======================================================== STATLL ========================================================= */ + #define R_CEC_STATLL_STATLL_Pos (0UL) /*!< STATLL (Bit 0) */ + #define R_CEC_STATLL_STATLL_Msk (0x1ffUL) /*!< STATLL (Bitfield-Mask: 0x1ff) */ +/* ======================================================== STATLH ========================================================= */ + #define R_CEC_STATLH_STATLH_Pos (0UL) /*!< STATLH (Bit 0) */ + #define R_CEC_STATLH_STATLH_Msk (0x1ffUL) /*!< STATLH (Bitfield-Mask: 0x1ff) */ +/* ======================================================== STATBL ========================================================= */ + #define R_CEC_STATBL_STATBL_Pos (0UL) /*!< STATBL (Bit 0) */ + #define R_CEC_STATBL_STATBL_Msk (0x1ffUL) /*!< STATBL (Bitfield-Mask: 0x1ff) */ +/* ======================================================== STATBH ========================================================= */ + #define R_CEC_STATBH_STATBH_Pos (0UL) /*!< STATBH (Bit 0) */ + #define R_CEC_STATBH_STATBH_Msk (0x1ffUL) /*!< STATBH (Bitfield-Mask: 0x1ff) */ +/* ======================================================== LGC0LL ========================================================= */ + #define R_CEC_LGC0LL_LGC0LL_Pos (0UL) /*!< LGC0LL (Bit 0) */ + #define R_CEC_LGC0LL_LGC0LL_Msk (0x1ffUL) /*!< LGC0LL (Bitfield-Mask: 0x1ff) */ +/* ======================================================== LGC0LH ========================================================= */ + #define R_CEC_LGC0LH_LGC0LH_Pos (0UL) /*!< LGC0LH (Bit 0) */ + #define R_CEC_LGC0LH_LGC0LH_Msk (0x1ffUL) /*!< LGC0LH (Bitfield-Mask: 0x1ff) */ +/* ======================================================== LGC1LL ========================================================= */ + #define R_CEC_LGC1LL_LGC1LL_Pos (0UL) /*!< LGC1LL (Bit 0) */ + #define R_CEC_LGC1LL_LGC1LL_Msk (0x1ffUL) /*!< LGC1LL (Bitfield-Mask: 0x1ff) */ +/* ======================================================== LGC1LH ========================================================= */ + #define R_CEC_LGC1LH_LGC1LH_Pos (0UL) /*!< LGC1LH (Bit 0) */ + #define R_CEC_LGC1LH_LGC1LH_Msk (0x1ffUL) /*!< LGC1LH (Bitfield-Mask: 0x1ff) */ +/* ========================================================= DATBL ========================================================= */ + #define R_CEC_DATBL_DATBL_Pos (0UL) /*!< DATBL (Bit 0) */ + #define R_CEC_DATBL_DATBL_Msk (0x1ffUL) /*!< DATBL (Bitfield-Mask: 0x1ff) */ +/* ========================================================= DATBH ========================================================= */ + #define R_CEC_DATBH_DATBH_Pos (0UL) /*!< DATBH (Bit 0) */ + #define R_CEC_DATBH_DATBH_Msk (0x1ffUL) /*!< DATBH (Bitfield-Mask: 0x1ff) */ +/* ========================================================= NOMP ========================================================== */ + #define R_CEC_NOMP_NOMP_Pos (0UL) /*!< NOMP (Bit 0) */ + #define R_CEC_NOMP_NOMP_Msk (0x1ffUL) /*!< NOMP (Bitfield-Mask: 0x1ff) */ +/* ======================================================== CECEXMD ======================================================== */ + #define R_CEC_CECEXMD_LERPLEN_Pos (4UL) /*!< LERPLEN (Bit 4) */ + #define R_CEC_CECEXMD_LERPLEN_Msk (0x10UL) /*!< LERPLEN (Bitfield-Mask: 0x01) */ + #define R_CEC_CECEXMD_RERCVEN_Pos (5UL) /*!< RERCVEN (Bit 5) */ + #define R_CEC_CECEXMD_RERCVEN_Msk (0x20UL) /*!< RERCVEN (Bitfield-Mask: 0x01) */ + #define R_CEC_CECEXMD_RCVINTDSEL_Pos (7UL) /*!< RCVINTDSEL (Bit 7) */ + #define R_CEC_CECEXMD_RCVINTDSEL_Msk (0x80UL) /*!< RCVINTDSEL (Bitfield-Mask: 0x01) */ +/* ======================================================= CECEXMON ======================================================== */ + #define R_CEC_CECEXMON_CECLNMON_Pos (0UL) /*!< CECLNMON (Bit 0) */ + #define R_CEC_CECEXMON_CECLNMON_Msk (0x1UL) /*!< CECLNMON (Bitfield-Mask: 0x01) */ + #define R_CEC_CECEXMON_ACKF_Pos (1UL) /*!< ACKF (Bit 1) */ + #define R_CEC_CECEXMON_ACKF_Msk (0x2UL) /*!< ACKF (Bitfield-Mask: 0x01) */ +/* ========================================================= CTXD ========================================================== */ +/* ========================================================= CRXD ========================================================== */ +/* ========================================================= CECES ========================================================= */ + #define R_CEC_CECES_OERR_Pos (0UL) /*!< OERR (Bit 0) */ + #define R_CEC_CECES_OERR_Msk (0x1UL) /*!< OERR (Bitfield-Mask: 0x01) */ + #define R_CEC_CECES_UERR_Pos (1UL) /*!< UERR (Bit 1) */ + #define R_CEC_CECES_UERR_Msk (0x2UL) /*!< UERR (Bitfield-Mask: 0x01) */ + #define R_CEC_CECES_ACKERR_Pos (2UL) /*!< ACKERR (Bit 2) */ + #define R_CEC_CECES_ACKERR_Msk (0x4UL) /*!< ACKERR (Bitfield-Mask: 0x01) */ + #define R_CEC_CECES_TERR_Pos (3UL) /*!< TERR (Bit 3) */ + #define R_CEC_CECES_TERR_Msk (0x8UL) /*!< TERR (Bitfield-Mask: 0x01) */ + #define R_CEC_CECES_TXERR_Pos (4UL) /*!< TXERR (Bit 4) */ + #define R_CEC_CECES_TXERR_Msk (0x10UL) /*!< TXERR (Bitfield-Mask: 0x01) */ + #define R_CEC_CECES_AERR_Pos (5UL) /*!< AERR (Bit 5) */ + #define R_CEC_CECES_AERR_Msk (0x20UL) /*!< AERR (Bitfield-Mask: 0x01) */ + #define R_CEC_CECES_BLERR_Pos (6UL) /*!< BLERR (Bit 6) */ + #define R_CEC_CECES_BLERR_Msk (0x40UL) /*!< BLERR (Bitfield-Mask: 0x01) */ +/* ========================================================= CECS ========================================================== */ + #define R_CEC_CECS_ADRF_Pos (0UL) /*!< ADRF (Bit 0) */ + #define R_CEC_CECS_ADRF_Msk (0x1UL) /*!< ADRF (Bitfield-Mask: 0x01) */ + #define R_CEC_CECS_BUSST_Pos (1UL) /*!< BUSST (Bit 1) */ + #define R_CEC_CECS_BUSST_Msk (0x2UL) /*!< BUSST (Bitfield-Mask: 0x01) */ + #define R_CEC_CECS_TXST_Pos (2UL) /*!< TXST (Bit 2) */ + #define R_CEC_CECS_TXST_Msk (0x4UL) /*!< TXST (Bitfield-Mask: 0x01) */ + #define R_CEC_CECS_EOMF_Pos (3UL) /*!< EOMF (Bit 3) */ + #define R_CEC_CECS_EOMF_Msk (0x8UL) /*!< EOMF (Bitfield-Mask: 0x01) */ + #define R_CEC_CECS_ITCEF_Pos (4UL) /*!< ITCEF (Bit 4) */ + #define R_CEC_CECS_ITCEF_Msk (0x10UL) /*!< ITCEF (Bitfield-Mask: 0x01) */ + #define R_CEC_CECS_SFTST_Pos (7UL) /*!< SFTST (Bit 7) */ + #define R_CEC_CECS_SFTST_Msk (0x80UL) /*!< SFTST (Bitfield-Mask: 0x01) */ +/* ========================================================= CECFC ========================================================= */ + #define R_CEC_CECFC_OCTRG_Pos (0UL) /*!< OCTRG (Bit 0) */ + #define R_CEC_CECFC_OCTRG_Msk (0x1UL) /*!< OCTRG (Bitfield-Mask: 0x01) */ + #define R_CEC_CECFC_UCTRG_Pos (1UL) /*!< UCTRG (Bit 1) */ + #define R_CEC_CECFC_UCTRG_Msk (0x2UL) /*!< UCTRG (Bitfield-Mask: 0x01) */ + #define R_CEC_CECFC_ACKCTRG_Pos (2UL) /*!< ACKCTRG (Bit 2) */ + #define R_CEC_CECFC_ACKCTRG_Msk (0x4UL) /*!< ACKCTRG (Bitfield-Mask: 0x01) */ + #define R_CEC_CECFC_TCTRG_Pos (3UL) /*!< TCTRG (Bit 3) */ + #define R_CEC_CECFC_TCTRG_Msk (0x8UL) /*!< TCTRG (Bitfield-Mask: 0x01) */ + #define R_CEC_CECFC_TXCTRG_Pos (4UL) /*!< TXCTRG (Bit 4) */ + #define R_CEC_CECFC_TXCTRG_Msk (0x10UL) /*!< TXCTRG (Bitfield-Mask: 0x01) */ + #define R_CEC_CECFC_ACTRG_Pos (5UL) /*!< ACTRG (Bit 5) */ + #define R_CEC_CECFC_ACTRG_Msk (0x20UL) /*!< ACTRG (Bitfield-Mask: 0x01) */ + #define R_CEC_CECFC_BLCTRG_Pos (6UL) /*!< BLCTRG (Bit 6) */ + #define R_CEC_CECFC_BLCTRG_Msk (0x40UL) /*!< BLCTRG (Bitfield-Mask: 0x01) */ +/* ======================================================== CECCTL0 ======================================================== */ + #define R_CEC_CECCTL0_EOM_Pos (0UL) /*!< EOM (Bit 0) */ + #define R_CEC_CECCTL0_EOM_Msk (0x1UL) /*!< EOM (Bitfield-Mask: 0x01) */ + #define R_CEC_CECCTL0_CECRXEN_Pos (1UL) /*!< CECRXEN (Bit 1) */ + #define R_CEC_CECCTL0_CECRXEN_Msk (0x2UL) /*!< CECRXEN (Bitfield-Mask: 0x01) */ + #define R_CEC_CECCTL0_TXTRG_Pos (2UL) /*!< TXTRG (Bit 2) */ + #define R_CEC_CECCTL0_TXTRG_Msk (0x4UL) /*!< TXTRG (Bitfield-Mask: 0x01) */ + #define R_CEC_CECCTL0_CCL_Pos (3UL) /*!< CCL (Bit 3) */ + #define R_CEC_CECCTL0_CCL_Msk (0x38UL) /*!< CCL (Bitfield-Mask: 0x07) */ + #define R_CEC_CECCTL0_ACKTEN_Pos (6UL) /*!< ACKTEN (Bit 6) */ + #define R_CEC_CECCTL0_ACKTEN_Msk (0x40UL) /*!< ACKTEN (Bitfield-Mask: 0x01) */ + #define R_CEC_CECCTL0_CECE_Pos (7UL) /*!< CECE (Bit 7) */ + #define R_CEC_CECCTL0_CECE_Msk (0x80UL) /*!< CECE (Bitfield-Mask: 0x01) */ + +/* =========================================================================================================================== */ +/* ================ R_OSPI ================ */ +/* =========================================================================================================================== */ + +/* ========================================================== DCR ========================================================== */ + #define R_OSPI_DCR_DVCMD0_Pos (0UL) /*!< DVCMD0 (Bit 0) */ + #define R_OSPI_DCR_DVCMD0_Msk (0xffUL) /*!< DVCMD0 (Bitfield-Mask: 0xff) */ + #define R_OSPI_DCR_DVCMD1_Pos (8UL) /*!< DVCMD1 (Bit 8) */ + #define R_OSPI_DCR_DVCMD1_Msk (0xff00UL) /*!< DVCMD1 (Bitfield-Mask: 0xff) */ +/* ========================================================== DAR ========================================================== */ + #define R_OSPI_DAR_DVAD0_Pos (0UL) /*!< DVAD0 (Bit 0) */ + #define R_OSPI_DAR_DVAD0_Msk (0xffUL) /*!< DVAD0 (Bitfield-Mask: 0xff) */ + #define R_OSPI_DAR_DVAD1_Pos (8UL) /*!< DVAD1 (Bit 8) */ + #define R_OSPI_DAR_DVAD1_Msk (0xff00UL) /*!< DVAD1 (Bitfield-Mask: 0xff) */ + #define R_OSPI_DAR_DVAD2_Pos (16UL) /*!< DVAD2 (Bit 16) */ + #define R_OSPI_DAR_DVAD2_Msk (0xff0000UL) /*!< DVAD2 (Bitfield-Mask: 0xff) */ + #define R_OSPI_DAR_DVAD3_Pos (24UL) /*!< DVAD3 (Bit 24) */ + #define R_OSPI_DAR_DVAD3_Msk (0xff000000UL) /*!< DVAD3 (Bitfield-Mask: 0xff) */ +/* ========================================================= DCSR ========================================================== */ + #define R_OSPI_DCSR_DALEN_Pos (0UL) /*!< DALEN (Bit 0) */ + #define R_OSPI_DCSR_DALEN_Msk (0xffUL) /*!< DALEN (Bitfield-Mask: 0xff) */ + #define R_OSPI_DCSR_DMLEN_Pos (8UL) /*!< DMLEN (Bit 8) */ + #define R_OSPI_DCSR_DMLEN_Msk (0xff00UL) /*!< DMLEN (Bitfield-Mask: 0xff) */ + #define R_OSPI_DCSR_ACDV_Pos (19UL) /*!< ACDV (Bit 19) */ + #define R_OSPI_DCSR_ACDV_Msk (0x80000UL) /*!< ACDV (Bitfield-Mask: 0x01) */ + #define R_OSPI_DCSR_CMDLEN_Pos (20UL) /*!< CMDLEN (Bit 20) */ + #define R_OSPI_DCSR_CMDLEN_Msk (0x700000UL) /*!< CMDLEN (Bitfield-Mask: 0x07) */ + #define R_OSPI_DCSR_DAOR_Pos (23UL) /*!< DAOR (Bit 23) */ + #define R_OSPI_DCSR_DAOR_Msk (0x800000UL) /*!< DAOR (Bitfield-Mask: 0x01) */ + #define R_OSPI_DCSR_ADLEN_Pos (24UL) /*!< ADLEN (Bit 24) */ + #define R_OSPI_DCSR_ADLEN_Msk (0x7000000UL) /*!< ADLEN (Bitfield-Mask: 0x07) */ + #define R_OSPI_DCSR_DOPI_Pos (27UL) /*!< DOPI (Bit 27) */ + #define R_OSPI_DCSR_DOPI_Msk (0x8000000UL) /*!< DOPI (Bitfield-Mask: 0x01) */ + #define R_OSPI_DCSR_ACDA_Pos (28UL) /*!< ACDA (Bit 28) */ + #define R_OSPI_DCSR_ACDA_Msk (0x10000000UL) /*!< ACDA (Bitfield-Mask: 0x01) */ + #define R_OSPI_DCSR_PREN_Pos (29UL) /*!< PREN (Bit 29) */ + #define R_OSPI_DCSR_PREN_Msk (0x20000000UL) /*!< PREN (Bitfield-Mask: 0x01) */ +/* ========================================================== DSR ========================================================== */ + #define R_OSPI_DSR_DVSZ_Pos (0UL) /*!< DVSZ (Bit 0) */ + #define R_OSPI_DSR_DVSZ_Msk (0x3fffffffUL) /*!< DVSZ (Bitfield-Mask: 0x3fffffff) */ + #define R_OSPI_DSR_DVTYP_Pos (30UL) /*!< DVTYP (Bit 30) */ + #define R_OSPI_DSR_DVTYP_Msk (0xc0000000UL) /*!< DVTYP (Bitfield-Mask: 0x03) */ +/* ========================================================= MDTR ========================================================== */ + #define R_OSPI_MDTR_DV0DEL_Pos (0UL) /*!< DV0DEL (Bit 0) */ + #define R_OSPI_MDTR_DV0DEL_Msk (0xffUL) /*!< DV0DEL (Bitfield-Mask: 0xff) */ + #define R_OSPI_MDTR_DQSERAM_Pos (8UL) /*!< DQSERAM (Bit 8) */ + #define R_OSPI_MDTR_DQSERAM_Msk (0xf00UL) /*!< DQSERAM (Bitfield-Mask: 0x0f) */ + #define R_OSPI_MDTR_DQSESOPI_Pos (12UL) /*!< DQSESOPI (Bit 12) */ + #define R_OSPI_MDTR_DQSESOPI_Msk (0xf000UL) /*!< DQSESOPI (Bitfield-Mask: 0x0f) */ + #define R_OSPI_MDTR_DV1DEL_Pos (16UL) /*!< DV1DEL (Bit 16) */ + #define R_OSPI_MDTR_DV1DEL_Msk (0xff0000UL) /*!< DV1DEL (Bitfield-Mask: 0xff) */ + #define R_OSPI_MDTR_DQSEDOPI_Pos (24UL) /*!< DQSEDOPI (Bit 24) */ + #define R_OSPI_MDTR_DQSEDOPI_Msk (0xf000000UL) /*!< DQSEDOPI (Bitfield-Mask: 0x0f) */ +/* ========================================================= ACTR ========================================================== */ + #define R_OSPI_ACTR_CTP_Pos (0UL) /*!< CTP (Bit 0) */ + #define R_OSPI_ACTR_CTP_Msk (0xffffffffUL) /*!< CTP (Bitfield-Mask: 0xffffffff) */ +/* ========================================================= ACAR ========================================================== */ + #define R_OSPI_ACAR_CAD_Pos (0UL) /*!< CAD (Bit 0) */ + #define R_OSPI_ACAR_CAD_Msk (0xffffffffUL) /*!< CAD (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== DRCSTR ========================================================= */ + #define R_OSPI_DRCSTR_CTRW0_Pos (0UL) /*!< CTRW0 (Bit 0) */ + #define R_OSPI_DRCSTR_CTRW0_Msk (0x7fUL) /*!< CTRW0 (Bitfield-Mask: 0x7f) */ + #define R_OSPI_DRCSTR_CTR0_Pos (7UL) /*!< CTR0 (Bit 7) */ + #define R_OSPI_DRCSTR_CTR0_Msk (0x80UL) /*!< CTR0 (Bitfield-Mask: 0x01) */ + #define R_OSPI_DRCSTR_DVRDCMD0_Pos (8UL) /*!< DVRDCMD0 (Bit 8) */ + #define R_OSPI_DRCSTR_DVRDCMD0_Msk (0x700UL) /*!< DVRDCMD0 (Bitfield-Mask: 0x07) */ + #define R_OSPI_DRCSTR_DVRDHI0_Pos (11UL) /*!< DVRDHI0 (Bit 11) */ + #define R_OSPI_DRCSTR_DVRDHI0_Msk (0x3800UL) /*!< DVRDHI0 (Bitfield-Mask: 0x07) */ + #define R_OSPI_DRCSTR_DVRDLO0_Pos (14UL) /*!< DVRDLO0 (Bit 14) */ + #define R_OSPI_DRCSTR_DVRDLO0_Msk (0xc000UL) /*!< DVRDLO0 (Bitfield-Mask: 0x03) */ + #define R_OSPI_DRCSTR_CTRW1_Pos (16UL) /*!< CTRW1 (Bit 16) */ + #define R_OSPI_DRCSTR_CTRW1_Msk (0x7f0000UL) /*!< CTRW1 (Bitfield-Mask: 0x7f) */ + #define R_OSPI_DRCSTR_CTR1_Pos (23UL) /*!< CTR1 (Bit 23) */ + #define R_OSPI_DRCSTR_CTR1_Msk (0x800000UL) /*!< CTR1 (Bitfield-Mask: 0x01) */ + #define R_OSPI_DRCSTR_DVRDCMD1_Pos (24UL) /*!< DVRDCMD1 (Bit 24) */ + #define R_OSPI_DRCSTR_DVRDCMD1_Msk (0x7000000UL) /*!< DVRDCMD1 (Bitfield-Mask: 0x07) */ + #define R_OSPI_DRCSTR_DVRDHI1_Pos (27UL) /*!< DVRDHI1 (Bit 27) */ + #define R_OSPI_DRCSTR_DVRDHI1_Msk (0x38000000UL) /*!< DVRDHI1 (Bitfield-Mask: 0x07) */ + #define R_OSPI_DRCSTR_DVRDLO1_Pos (30UL) /*!< DVRDLO1 (Bit 30) */ + #define R_OSPI_DRCSTR_DVRDLO1_Msk (0xc0000000UL) /*!< DVRDLO1 (Bitfield-Mask: 0x03) */ +/* ======================================================== DWCSTR ========================================================= */ + #define R_OSPI_DWCSTR_CTWW0_Pos (0UL) /*!< CTWW0 (Bit 0) */ + #define R_OSPI_DWCSTR_CTWW0_Msk (0x7fUL) /*!< CTWW0 (Bitfield-Mask: 0x7f) */ + #define R_OSPI_DWCSTR_CTW0_Pos (7UL) /*!< CTW0 (Bit 7) */ + #define R_OSPI_DWCSTR_CTW0_Msk (0x80UL) /*!< CTW0 (Bitfield-Mask: 0x01) */ + #define R_OSPI_DWCSTR_DVWCMD0_Pos (8UL) /*!< DVWCMD0 (Bit 8) */ + #define R_OSPI_DWCSTR_DVWCMD0_Msk (0x700UL) /*!< DVWCMD0 (Bitfield-Mask: 0x07) */ + #define R_OSPI_DWCSTR_DVWHI0_Pos (11UL) /*!< DVWHI0 (Bit 11) */ + #define R_OSPI_DWCSTR_DVWHI0_Msk (0x3800UL) /*!< DVWHI0 (Bitfield-Mask: 0x07) */ + #define R_OSPI_DWCSTR_DVWLO0_Pos (14UL) /*!< DVWLO0 (Bit 14) */ + #define R_OSPI_DWCSTR_DVWLO0_Msk (0xc000UL) /*!< DVWLO0 (Bitfield-Mask: 0x03) */ + #define R_OSPI_DWCSTR_CTWW1_Pos (16UL) /*!< CTWW1 (Bit 16) */ + #define R_OSPI_DWCSTR_CTWW1_Msk (0x7f0000UL) /*!< CTWW1 (Bitfield-Mask: 0x7f) */ + #define R_OSPI_DWCSTR_CTW1_Pos (23UL) /*!< CTW1 (Bit 23) */ + #define R_OSPI_DWCSTR_CTW1_Msk (0x800000UL) /*!< CTW1 (Bitfield-Mask: 0x01) */ + #define R_OSPI_DWCSTR_DVWCMD1_Pos (24UL) /*!< DVWCMD1 (Bit 24) */ + #define R_OSPI_DWCSTR_DVWCMD1_Msk (0x7000000UL) /*!< DVWCMD1 (Bitfield-Mask: 0x07) */ + #define R_OSPI_DWCSTR_DVWHI1_Pos (27UL) /*!< DVWHI1 (Bit 27) */ + #define R_OSPI_DWCSTR_DVWHI1_Msk (0x38000000UL) /*!< DVWHI1 (Bitfield-Mask: 0x07) */ + #define R_OSPI_DWCSTR_DVWLO1_Pos (30UL) /*!< DVWLO1 (Bit 30) */ + #define R_OSPI_DWCSTR_DVWLO1_Msk (0xc0000000UL) /*!< DVWLO1 (Bitfield-Mask: 0x03) */ +/* ========================================================= DCSTR ========================================================= */ + #define R_OSPI_DCSTR_DVSELCMD_Pos (8UL) /*!< DVSELCMD (Bit 8) */ + #define R_OSPI_DCSTR_DVSELCMD_Msk (0x700UL) /*!< DVSELCMD (Bitfield-Mask: 0x07) */ + #define R_OSPI_DCSTR_DVSELHI_Pos (11UL) /*!< DVSELHI (Bit 11) */ + #define R_OSPI_DCSTR_DVSELHI_Msk (0x3800UL) /*!< DVSELHI (Bitfield-Mask: 0x07) */ + #define R_OSPI_DCSTR_DVSELLO_Pos (14UL) /*!< DVSELLO (Bit 14) */ + #define R_OSPI_DCSTR_DVSELLO_Msk (0xc000UL) /*!< DVSELLO (Bitfield-Mask: 0x03) */ +/* ========================================================= CDSR ========================================================== */ + #define R_OSPI_CDSR_DV0TTYP_Pos (0UL) /*!< DV0TTYP (Bit 0) */ + #define R_OSPI_CDSR_DV0TTYP_Msk (0x3UL) /*!< DV0TTYP (Bitfield-Mask: 0x03) */ + #define R_OSPI_CDSR_DV1TTYP_Pos (2UL) /*!< DV1TTYP (Bit 2) */ + #define R_OSPI_CDSR_DV1TTYP_Msk (0xcUL) /*!< DV1TTYP (Bitfield-Mask: 0x03) */ + #define R_OSPI_CDSR_DV0PC_Pos (4UL) /*!< DV0PC (Bit 4) */ + #define R_OSPI_CDSR_DV0PC_Msk (0x10UL) /*!< DV0PC (Bitfield-Mask: 0x01) */ + #define R_OSPI_CDSR_DV1PC_Pos (5UL) /*!< DV1PC (Bit 5) */ + #define R_OSPI_CDSR_DV1PC_Msk (0x20UL) /*!< DV1PC (Bitfield-Mask: 0x01) */ + #define R_OSPI_CDSR_ACMEME0_Pos (10UL) /*!< ACMEME0 (Bit 10) */ + #define R_OSPI_CDSR_ACMEME0_Msk (0x400UL) /*!< ACMEME0 (Bitfield-Mask: 0x01) */ + #define R_OSPI_CDSR_ACMEME1_Pos (11UL) /*!< ACMEME1 (Bit 11) */ + #define R_OSPI_CDSR_ACMEME1_Msk (0x800UL) /*!< ACMEME1 (Bitfield-Mask: 0x01) */ + #define R_OSPI_CDSR_ACMODE_Pos (12UL) /*!< ACMODE (Bit 12) */ + #define R_OSPI_CDSR_ACMODE_Msk (0x3000UL) /*!< ACMODE (Bitfield-Mask: 0x03) */ + #define R_OSPI_CDSR_DLFT_Pos (31UL) /*!< DLFT (Bit 31) */ + #define R_OSPI_CDSR_DLFT_Msk (0x80000000UL) /*!< DLFT (Bitfield-Mask: 0x01) */ +/* ========================================================= MDLR ========================================================== */ + #define R_OSPI_MDLR_DV0RDL_Pos (0UL) /*!< DV0RDL (Bit 0) */ + #define R_OSPI_MDLR_DV0RDL_Msk (0xffUL) /*!< DV0RDL (Bitfield-Mask: 0xff) */ + #define R_OSPI_MDLR_DV0WDL_Pos (8UL) /*!< DV0WDL (Bit 8) */ + #define R_OSPI_MDLR_DV0WDL_Msk (0xff00UL) /*!< DV0WDL (Bitfield-Mask: 0xff) */ + #define R_OSPI_MDLR_DV1RDL_Pos (16UL) /*!< DV1RDL (Bit 16) */ + #define R_OSPI_MDLR_DV1RDL_Msk (0xff0000UL) /*!< DV1RDL (Bitfield-Mask: 0xff) */ + #define R_OSPI_MDLR_DV1WDL_Pos (24UL) /*!< DV1WDL (Bit 24) */ + #define R_OSPI_MDLR_DV1WDL_Msk (0xff000000UL) /*!< DV1WDL (Bitfield-Mask: 0xff) */ +/* ========================================================= MRWCR ========================================================= */ + #define R_OSPI_MRWCR_DMRCMD0_Pos (0UL) /*!< DMRCMD0 (Bit 0) */ + #define R_OSPI_MRWCR_DMRCMD0_Msk (0xffUL) /*!< DMRCMD0 (Bitfield-Mask: 0xff) */ + #define R_OSPI_MRWCR_DMRCMD1_Pos (8UL) /*!< DMRCMD1 (Bit 8) */ + #define R_OSPI_MRWCR_DMRCMD1_Msk (0xff00UL) /*!< DMRCMD1 (Bitfield-Mask: 0xff) */ + #define R_OSPI_MRWCR_DMWCMD0_Pos (16UL) /*!< DMWCMD0 (Bit 16) */ + #define R_OSPI_MRWCR_DMWCMD0_Msk (0xff0000UL) /*!< DMWCMD0 (Bitfield-Mask: 0xff) */ + #define R_OSPI_MRWCR_DMWCMD1_Pos (24UL) /*!< DMWCMD1 (Bit 24) */ + #define R_OSPI_MRWCR_DMWCMD1_Msk (0xff000000UL) /*!< DMWCMD1 (Bitfield-Mask: 0xff) */ +/* ======================================================== MRWCSR ========================================================= */ + #define R_OSPI_MRWCSR_MRAL0_Pos (0UL) /*!< MRAL0 (Bit 0) */ + #define R_OSPI_MRWCSR_MRAL0_Msk (0x7UL) /*!< MRAL0 (Bitfield-Mask: 0x07) */ + #define R_OSPI_MRWCSR_MRCL0_Pos (3UL) /*!< MRCL0 (Bit 3) */ + #define R_OSPI_MRWCSR_MRCL0_Msk (0x38UL) /*!< MRCL0 (Bitfield-Mask: 0x07) */ + #define R_OSPI_MRWCSR_MRO0_Pos (6UL) /*!< MRO0 (Bit 6) */ + #define R_OSPI_MRWCSR_MRO0_Msk (0x40UL) /*!< MRO0 (Bitfield-Mask: 0x01) */ + #define R_OSPI_MRWCSR_PREN0_Pos (7UL) /*!< PREN0 (Bit 7) */ + #define R_OSPI_MRWCSR_PREN0_Msk (0x80UL) /*!< PREN0 (Bitfield-Mask: 0x01) */ + #define R_OSPI_MRWCSR_MWAL0_Pos (8UL) /*!< MWAL0 (Bit 8) */ + #define R_OSPI_MRWCSR_MWAL0_Msk (0x700UL) /*!< MWAL0 (Bitfield-Mask: 0x07) */ + #define R_OSPI_MRWCSR_MWCL0_Pos (11UL) /*!< MWCL0 (Bit 11) */ + #define R_OSPI_MRWCSR_MWCL0_Msk (0x3800UL) /*!< MWCL0 (Bitfield-Mask: 0x07) */ + #define R_OSPI_MRWCSR_MWO0_Pos (14UL) /*!< MWO0 (Bit 14) */ + #define R_OSPI_MRWCSR_MWO0_Msk (0x4000UL) /*!< MWO0 (Bitfield-Mask: 0x01) */ + #define R_OSPI_MRWCSR_MRAL1_Pos (16UL) /*!< MRAL1 (Bit 16) */ + #define R_OSPI_MRWCSR_MRAL1_Msk (0x70000UL) /*!< MRAL1 (Bitfield-Mask: 0x07) */ + #define R_OSPI_MRWCSR_MRCL1_Pos (19UL) /*!< MRCL1 (Bit 19) */ + #define R_OSPI_MRWCSR_MRCL1_Msk (0x380000UL) /*!< MRCL1 (Bitfield-Mask: 0x07) */ + #define R_OSPI_MRWCSR_MRO1_Pos (22UL) /*!< MRO1 (Bit 22) */ + #define R_OSPI_MRWCSR_MRO1_Msk (0x400000UL) /*!< MRO1 (Bitfield-Mask: 0x01) */ + #define R_OSPI_MRWCSR_PREN1_Pos (23UL) /*!< PREN1 (Bit 23) */ + #define R_OSPI_MRWCSR_PREN1_Msk (0x800000UL) /*!< PREN1 (Bitfield-Mask: 0x01) */ + #define R_OSPI_MRWCSR_MWAL1_Pos (24UL) /*!< MWAL1 (Bit 24) */ + #define R_OSPI_MRWCSR_MWAL1_Msk (0x7000000UL) /*!< MWAL1 (Bitfield-Mask: 0x07) */ + #define R_OSPI_MRWCSR_MWCL1_Pos (27UL) /*!< MWCL1 (Bit 27) */ + #define R_OSPI_MRWCSR_MWCL1_Msk (0x38000000UL) /*!< MWCL1 (Bitfield-Mask: 0x07) */ + #define R_OSPI_MRWCSR_MWO1_Pos (30UL) /*!< MWO1 (Bit 30) */ + #define R_OSPI_MRWCSR_MWO1_Msk (0x40000000UL) /*!< MWO1 (Bitfield-Mask: 0x01) */ +/* ========================================================== ESR ========================================================== */ + #define R_OSPI_ESR_MRESR_Pos (0UL) /*!< MRESR (Bit 0) */ + #define R_OSPI_ESR_MRESR_Msk (0xffUL) /*!< MRESR (Bitfield-Mask: 0xff) */ + #define R_OSPI_ESR_MWESR_Pos (8UL) /*!< MWESR (Bit 8) */ + #define R_OSPI_ESR_MWESR_Msk (0xff00UL) /*!< MWESR (Bitfield-Mask: 0xff) */ +/* ========================================================= CWNDR ========================================================= */ + #define R_OSPI_CWNDR_WND_Pos (0UL) /*!< WND (Bit 0) */ + #define R_OSPI_CWNDR_WND_Msk (0xffffffffUL) /*!< WND (Bitfield-Mask: 0xffffffff) */ +/* ========================================================= CWDR ========================================================== */ + #define R_OSPI_CWDR_WD0_Pos (0UL) /*!< WD0 (Bit 0) */ + #define R_OSPI_CWDR_WD0_Msk (0xffUL) /*!< WD0 (Bitfield-Mask: 0xff) */ + #define R_OSPI_CWDR_WD1_Pos (8UL) /*!< WD1 (Bit 8) */ + #define R_OSPI_CWDR_WD1_Msk (0xff00UL) /*!< WD1 (Bitfield-Mask: 0xff) */ + #define R_OSPI_CWDR_WD2_Pos (16UL) /*!< WD2 (Bit 16) */ + #define R_OSPI_CWDR_WD2_Msk (0xff0000UL) /*!< WD2 (Bitfield-Mask: 0xff) */ + #define R_OSPI_CWDR_WD3_Pos (24UL) /*!< WD3 (Bit 24) */ + #define R_OSPI_CWDR_WD3_Msk (0xff000000UL) /*!< WD3 (Bitfield-Mask: 0xff) */ +/* ========================================================== CRR ========================================================== */ + #define R_OSPI_CRR_RD0_Pos (0UL) /*!< RD0 (Bit 0) */ + #define R_OSPI_CRR_RD0_Msk (0xffUL) /*!< RD0 (Bitfield-Mask: 0xff) */ + #define R_OSPI_CRR_RD1_Pos (8UL) /*!< RD1 (Bit 8) */ + #define R_OSPI_CRR_RD1_Msk (0xff00UL) /*!< RD1 (Bitfield-Mask: 0xff) */ + #define R_OSPI_CRR_RD2_Pos (16UL) /*!< RD2 (Bit 16) */ + #define R_OSPI_CRR_RD2_Msk (0xff0000UL) /*!< RD2 (Bitfield-Mask: 0xff) */ + #define R_OSPI_CRR_RD3_Pos (24UL) /*!< RD3 (Bit 24) */ + #define R_OSPI_CRR_RD3_Msk (0xff000000UL) /*!< RD3 (Bitfield-Mask: 0xff) */ +/* ========================================================= ACSR ========================================================== */ + #define R_OSPI_ACSR_ACSR0_Pos (0UL) /*!< ACSR0 (Bit 0) */ + #define R_OSPI_ACSR_ACSR0_Msk (0x7UL) /*!< ACSR0 (Bitfield-Mask: 0x07) */ + #define R_OSPI_ACSR_ACSR1_Pos (3UL) /*!< ACSR1 (Bit 3) */ + #define R_OSPI_ACSR_ACSR1_Msk (0x38UL) /*!< ACSR1 (Bitfield-Mask: 0x07) */ +/* ======================================================== DCSMXR ========================================================= */ + #define R_OSPI_DCSMXR_CTWMX0_Pos (0UL) /*!< CTWMX0 (Bit 0) */ + #define R_OSPI_DCSMXR_CTWMX0_Msk (0x1ffUL) /*!< CTWMX0 (Bitfield-Mask: 0x1ff) */ + #define R_OSPI_DCSMXR_CTWMX1_Pos (16UL) /*!< CTWMX1 (Bit 16) */ + #define R_OSPI_DCSMXR_CTWMX1_Msk (0x1ff0000UL) /*!< CTWMX1 (Bitfield-Mask: 0x1ff) */ +/* ======================================================== DWSCTSR ======================================================== */ + #define R_OSPI_DWSCTSR_CTSN0_Pos (0UL) /*!< CTSN0 (Bit 0) */ + #define R_OSPI_DWSCTSR_CTSN0_Msk (0x7ffUL) /*!< CTSN0 (Bitfield-Mask: 0x7ff) */ + #define R_OSPI_DWSCTSR_CTSN1_Pos (16UL) /*!< CTSN1 (Bit 16) */ + #define R_OSPI_DWSCTSR_CTSN1_Msk (0x7ff0000UL) /*!< CTSN1 (Bitfield-Mask: 0x7ff) */ + +/* =========================================================================================================================== */ +/* ================ R_ADC_B0 ================ */ +/* =========================================================================================================================== */ + +/* ======================================================= ADCLKENR ======================================================== */ + #define R_ADC_B0_ADCLKENR_CLKEN_Pos (0UL) /*!< CLKEN (Bit 0) */ + #define R_ADC_B0_ADCLKENR_CLKEN_Msk (0x1UL) /*!< CLKEN (Bitfield-Mask: 0x01) */ +/* ======================================================== ADCLKSR ======================================================== */ + #define R_ADC_B0_ADCLKSR_CLKSR_Pos (0UL) /*!< CLKSR (Bit 0) */ + #define R_ADC_B0_ADCLKSR_CLKSR_Msk (0x1UL) /*!< CLKSR (Bitfield-Mask: 0x01) */ +/* ======================================================== ADCLKCR ======================================================== */ + #define R_ADC_B0_ADCLKCR_CLKSEL_Pos (0UL) /*!< CLKSEL (Bit 0) */ + #define R_ADC_B0_ADCLKCR_CLKSEL_Msk (0x3UL) /*!< CLKSEL (Bitfield-Mask: 0x03) */ + #define R_ADC_B0_ADCLKCR_DIVR_Pos (16UL) /*!< DIVR (Bit 16) */ + #define R_ADC_B0_ADCLKCR_DIVR_Msk (0x70000UL) /*!< DIVR (Bitfield-Mask: 0x07) */ +/* ======================================================== ADSYCR ========================================================= */ + #define R_ADC_B0_ADSYCR_ADSYCYC_Pos (0UL) /*!< ADSYCYC (Bit 0) */ + #define R_ADC_B0_ADSYCR_ADSYCYC_Msk (0x7ffUL) /*!< ADSYCYC (Bitfield-Mask: 0x7ff) */ + #define R_ADC_B0_ADSYCR_ADSYDIS0_Pos (16UL) /*!< ADSYDIS0 (Bit 16) */ + #define R_ADC_B0_ADSYCR_ADSYDIS0_Msk (0x10000UL) /*!< ADSYDIS0 (Bitfield-Mask: 0x01) */ + #define R_ADC_B0_ADSYCR_ADSYDIS1_Pos (17UL) /*!< ADSYDIS1 (Bit 17) */ + #define R_ADC_B0_ADSYCR_ADSYDIS1_Msk (0x20000UL) /*!< ADSYDIS1 (Bitfield-Mask: 0x01) */ +/* ======================================================= ADERINTCR ======================================================= */ + #define R_ADC_B0_ADERINTCR_ADEIE0_Pos (0UL) /*!< ADEIE0 (Bit 0) */ + #define R_ADC_B0_ADERINTCR_ADEIE0_Msk (0x1UL) /*!< ADEIE0 (Bitfield-Mask: 0x01) */ + #define R_ADC_B0_ADERINTCR_ADEIE1_Pos (1UL) /*!< ADEIE1 (Bit 1) */ + #define R_ADC_B0_ADERINTCR_ADEIE1_Msk (0x2UL) /*!< ADEIE1 (Bitfield-Mask: 0x01) */ +/* ====================================================== ADOVFINTCR ======================================================= */ + #define R_ADC_B0_ADOVFINTCR_ADOVFIE0_Pos (0UL) /*!< ADOVFIE0 (Bit 0) */ + #define R_ADC_B0_ADOVFINTCR_ADOVFIE0_Msk (0x1UL) /*!< ADOVFIE0 (Bitfield-Mask: 0x01) */ + #define R_ADC_B0_ADOVFINTCR_ADOVFIE1_Pos (1UL) /*!< ADOVFIE1 (Bit 1) */ + #define R_ADC_B0_ADOVFINTCR_ADOVFIE1_Msk (0x2UL) /*!< ADOVFIE1 (Bitfield-Mask: 0x01) */ +/* ====================================================== ADCALINTCR ======================================================= */ + #define R_ADC_B0_ADCALINTCR_CALENDIE0_Pos (16UL) /*!< CALENDIE0 (Bit 16) */ + #define R_ADC_B0_ADCALINTCR_CALENDIE0_Msk (0x10000UL) /*!< CALENDIE0 (Bitfield-Mask: 0x01) */ + #define R_ADC_B0_ADCALINTCR_CALENDIE1_Pos (17UL) /*!< CALENDIE1 (Bit 17) */ + #define R_ADC_B0_ADCALINTCR_CALENDIE1_Msk (0x20000UL) /*!< CALENDIE1 (Bitfield-Mask: 0x01) */ +/* ========================================================= ADMDR ========================================================= */ + #define R_ADC_B0_ADMDR_ADMD0_Pos (0UL) /*!< ADMD0 (Bit 0) */ + #define R_ADC_B0_ADMDR_ADMD0_Msk (0xfUL) /*!< ADMD0 (Bitfield-Mask: 0x0f) */ + #define R_ADC_B0_ADMDR_ADMD1_Pos (8UL) /*!< ADMD1 (Bit 8) */ + #define R_ADC_B0_ADMDR_ADMD1_Msk (0xf00UL) /*!< ADMD1 (Bitfield-Mask: 0x0f) */ +/* ======================================================== ADGSPCR ======================================================== */ + #define R_ADC_B0_ADGSPCR_PGS0_Pos (0UL) /*!< PGS0 (Bit 0) */ + #define R_ADC_B0_ADGSPCR_PGS0_Msk (0x1UL) /*!< PGS0 (Bitfield-Mask: 0x01) */ + #define R_ADC_B0_ADGSPCR_RSCN0_Pos (1UL) /*!< RSCN0 (Bit 1) */ + #define R_ADC_B0_ADGSPCR_RSCN0_Msk (0x2UL) /*!< RSCN0 (Bitfield-Mask: 0x01) */ + #define R_ADC_B0_ADGSPCR_LGRRS0_Pos (2UL) /*!< LGRRS0 (Bit 2) */ + #define R_ADC_B0_ADGSPCR_LGRRS0_Msk (0x4UL) /*!< LGRRS0 (Bitfield-Mask: 0x01) */ + #define R_ADC_B0_ADGSPCR_GRP0_Pos (3UL) /*!< GRP0 (Bit 3) */ + #define R_ADC_B0_ADGSPCR_GRP0_Msk (0x8UL) /*!< GRP0 (Bitfield-Mask: 0x01) */ + #define R_ADC_B0_ADGSPCR_PGS1_Pos (8UL) /*!< PGS1 (Bit 8) */ + #define R_ADC_B0_ADGSPCR_PGS1_Msk (0x100UL) /*!< PGS1 (Bitfield-Mask: 0x01) */ + #define R_ADC_B0_ADGSPCR_RSCN1_Pos (9UL) /*!< RSCN1 (Bit 9) */ + #define R_ADC_B0_ADGSPCR_RSCN1_Msk (0x200UL) /*!< RSCN1 (Bitfield-Mask: 0x01) */ + #define R_ADC_B0_ADGSPCR_LGRRS1_Pos (10UL) /*!< LGRRS1 (Bit 10) */ + #define R_ADC_B0_ADGSPCR_LGRRS1_Msk (0x400UL) /*!< LGRRS1 (Bitfield-Mask: 0x01) */ + #define R_ADC_B0_ADGSPCR_GRP1_Pos (11UL) /*!< GRP1 (Bit 11) */ + #define R_ADC_B0_ADGSPCR_GRP1_Msk (0x800UL) /*!< GRP1 (Bitfield-Mask: 0x01) */ +/* ======================================================== ADSGER ========================================================= */ + #define R_ADC_B0_ADSGER_SGREn_Pos (0UL) /*!< SGREn (Bit 0) */ + #define R_ADC_B0_ADSGER_SGREn_Msk (0x1ffUL) /*!< SGREn (Bitfield-Mask: 0x1ff) */ +/* ======================================================== ADSGCR0 ======================================================== */ + #define R_ADC_B0_ADSGCR0_SGADS0_Pos (0UL) /*!< SGADS0 (Bit 0) */ + #define R_ADC_B0_ADSGCR0_SGADS0_Msk (0x3UL) /*!< SGADS0 (Bitfield-Mask: 0x03) */ + #define R_ADC_B0_ADSGCR0_SGADS1_Pos (8UL) /*!< SGADS1 (Bit 8) */ + #define R_ADC_B0_ADSGCR0_SGADS1_Msk (0x300UL) /*!< SGADS1 (Bitfield-Mask: 0x03) */ + #define R_ADC_B0_ADSGCR0_SGADS2_Pos (16UL) /*!< SGADS2 (Bit 16) */ + #define R_ADC_B0_ADSGCR0_SGADS2_Msk (0x30000UL) /*!< SGADS2 (Bitfield-Mask: 0x03) */ + #define R_ADC_B0_ADSGCR0_SGADS3_Pos (24UL) /*!< SGADS3 (Bit 24) */ + #define R_ADC_B0_ADSGCR0_SGADS3_Msk (0x3000000UL) /*!< SGADS3 (Bitfield-Mask: 0x03) */ +/* ======================================================== ADSGCR1 ======================================================== */ + #define R_ADC_B0_ADSGCR1_SGADS4_Pos (0UL) /*!< SGADS4 (Bit 0) */ + #define R_ADC_B0_ADSGCR1_SGADS4_Msk (0x3UL) /*!< SGADS4 (Bitfield-Mask: 0x03) */ + #define R_ADC_B0_ADSGCR1_SGADS5_Pos (8UL) /*!< SGADS5 (Bit 8) */ + #define R_ADC_B0_ADSGCR1_SGADS5_Msk (0x300UL) /*!< SGADS5 (Bitfield-Mask: 0x03) */ + #define R_ADC_B0_ADSGCR1_SGADS6_Pos (16UL) /*!< SGADS6 (Bit 16) */ + #define R_ADC_B0_ADSGCR1_SGADS6_Msk (0x30000UL) /*!< SGADS6 (Bitfield-Mask: 0x03) */ + #define R_ADC_B0_ADSGCR1_SGADS7_Pos (24UL) /*!< SGADS7 (Bit 24) */ + #define R_ADC_B0_ADSGCR1_SGADS7_Msk (0x3000000UL) /*!< SGADS7 (Bitfield-Mask: 0x03) */ +/* ======================================================== ADSGCR2 ======================================================== */ + #define R_ADC_B0_ADSGCR2_SGADS8_Pos (0UL) /*!< SGADS8 (Bit 0) */ + #define R_ADC_B0_ADSGCR2_SGADS8_Msk (0x3UL) /*!< SGADS8 (Bitfield-Mask: 0x03) */ +/* ======================================================== ADINTCR ======================================================== */ + #define R_ADC_B0_ADINTCR_ADIEn_Pos (0UL) /*!< ADIEn (Bit 0) */ + #define R_ADC_B0_ADINTCR_ADIEn_Msk (0x3ffUL) /*!< ADIEn (Bitfield-Mask: 0x3ff) */ +/* ======================================================= ADTRGEXT0 ======================================================= */ + #define R_ADC_B0_ADTRGEXT0_TRGEXT0_Pos (0UL) /*!< TRGEXT0 (Bit 0) */ + #define R_ADC_B0_ADTRGEXT0_TRGEXT0_Msk (0x1UL) /*!< TRGEXT0 (Bitfield-Mask: 0x01) */ + #define R_ADC_B0_ADTRGEXT0_TRGEXT1_Pos (1UL) /*!< TRGEXT1 (Bit 1) */ + #define R_ADC_B0_ADTRGEXT0_TRGEXT1_Msk (0x2UL) /*!< TRGEXT1 (Bitfield-Mask: 0x01) */ +/* ======================================================= ADTRGEXT1 ======================================================= */ + #define R_ADC_B0_ADTRGEXT1_TRGEXT0_Pos (0UL) /*!< TRGEXT0 (Bit 0) */ + #define R_ADC_B0_ADTRGEXT1_TRGEXT0_Msk (0x1UL) /*!< TRGEXT0 (Bitfield-Mask: 0x01) */ + #define R_ADC_B0_ADTRGEXT1_TRGEXT1_Pos (1UL) /*!< TRGEXT1 (Bit 1) */ + #define R_ADC_B0_ADTRGEXT1_TRGEXT1_Msk (0x2UL) /*!< TRGEXT1 (Bitfield-Mask: 0x01) */ +/* ======================================================= ADTRGEXT2 ======================================================= */ + #define R_ADC_B0_ADTRGEXT2_TRGEXT0_Pos (0UL) /*!< TRGEXT0 (Bit 0) */ + #define R_ADC_B0_ADTRGEXT2_TRGEXT0_Msk (0x1UL) /*!< TRGEXT0 (Bitfield-Mask: 0x01) */ + #define R_ADC_B0_ADTRGEXT2_TRGEXT1_Pos (1UL) /*!< TRGEXT1 (Bit 1) */ + #define R_ADC_B0_ADTRGEXT2_TRGEXT1_Msk (0x2UL) /*!< TRGEXT1 (Bitfield-Mask: 0x01) */ +/* ======================================================= ADTRGEXT3 ======================================================= */ + #define R_ADC_B0_ADTRGEXT3_TRGEXT0_Pos (0UL) /*!< TRGEXT0 (Bit 0) */ + #define R_ADC_B0_ADTRGEXT3_TRGEXT0_Msk (0x1UL) /*!< TRGEXT0 (Bitfield-Mask: 0x01) */ + #define R_ADC_B0_ADTRGEXT3_TRGEXT1_Pos (1UL) /*!< TRGEXT1 (Bit 1) */ + #define R_ADC_B0_ADTRGEXT3_TRGEXT1_Msk (0x2UL) /*!< TRGEXT1 (Bitfield-Mask: 0x01) */ +/* ======================================================= ADTRGEXT4 ======================================================= */ + #define R_ADC_B0_ADTRGEXT4_TRGEXT0_Pos (0UL) /*!< TRGEXT0 (Bit 0) */ + #define R_ADC_B0_ADTRGEXT4_TRGEXT0_Msk (0x1UL) /*!< TRGEXT0 (Bitfield-Mask: 0x01) */ + #define R_ADC_B0_ADTRGEXT4_TRGEXT1_Pos (1UL) /*!< TRGEXT1 (Bit 1) */ + #define R_ADC_B0_ADTRGEXT4_TRGEXT1_Msk (0x2UL) /*!< TRGEXT1 (Bitfield-Mask: 0x01) */ +/* ======================================================= ADTRGEXT5 ======================================================= */ + #define R_ADC_B0_ADTRGEXT5_TRGEXT0_Pos (0UL) /*!< TRGEXT0 (Bit 0) */ + #define R_ADC_B0_ADTRGEXT5_TRGEXT0_Msk (0x1UL) /*!< TRGEXT0 (Bitfield-Mask: 0x01) */ + #define R_ADC_B0_ADTRGEXT5_TRGEXT1_Pos (1UL) /*!< TRGEXT1 (Bit 1) */ + #define R_ADC_B0_ADTRGEXT5_TRGEXT1_Msk (0x2UL) /*!< TRGEXT1 (Bitfield-Mask: 0x01) */ +/* ======================================================= ADTRGEXT6 ======================================================= */ + #define R_ADC_B0_ADTRGEXT6_TRGEXT0_Pos (0UL) /*!< TRGEXT0 (Bit 0) */ + #define R_ADC_B0_ADTRGEXT6_TRGEXT0_Msk (0x1UL) /*!< TRGEXT0 (Bitfield-Mask: 0x01) */ + #define R_ADC_B0_ADTRGEXT6_TRGEXT1_Pos (1UL) /*!< TRGEXT1 (Bit 1) */ + #define R_ADC_B0_ADTRGEXT6_TRGEXT1_Msk (0x2UL) /*!< TRGEXT1 (Bitfield-Mask: 0x01) */ +/* ======================================================= ADTRGEXT7 ======================================================= */ + #define R_ADC_B0_ADTRGEXT7_TRGEXT0_Pos (0UL) /*!< TRGEXT0 (Bit 0) */ + #define R_ADC_B0_ADTRGEXT7_TRGEXT0_Msk (0x1UL) /*!< TRGEXT0 (Bitfield-Mask: 0x01) */ + #define R_ADC_B0_ADTRGEXT7_TRGEXT1_Pos (1UL) /*!< TRGEXT1 (Bit 1) */ + #define R_ADC_B0_ADTRGEXT7_TRGEXT1_Msk (0x2UL) /*!< TRGEXT1 (Bitfield-Mask: 0x01) */ +/* ======================================================= ADTRGEXT8 ======================================================= */ + #define R_ADC_B0_ADTRGEXT8_TRGEXT0_Pos (0UL) /*!< TRGEXT0 (Bit 0) */ + #define R_ADC_B0_ADTRGEXT8_TRGEXT0_Msk (0x1UL) /*!< TRGEXT0 (Bitfield-Mask: 0x01) */ + #define R_ADC_B0_ADTRGEXT8_TRGEXT1_Pos (1UL) /*!< TRGEXT1 (Bit 1) */ + #define R_ADC_B0_ADTRGEXT8_TRGEXT1_Msk (0x2UL) /*!< TRGEXT1 (Bitfield-Mask: 0x01) */ +/* ======================================================= ADTRGELC0 ======================================================= */ + #define R_ADC_B0_ADTRGELC0_TRGELCm_Pos (0UL) /*!< TRGELCm (Bit 0) */ + #define R_ADC_B0_ADTRGELC0_TRGELCm_Msk (0x3fUL) /*!< TRGELCm (Bitfield-Mask: 0x3f) */ +/* ======================================================= ADTRGELC1 ======================================================= */ + #define R_ADC_B0_ADTRGELC1_TRGELCm_Pos (0UL) /*!< TRGELCm (Bit 0) */ + #define R_ADC_B0_ADTRGELC1_TRGELCm_Msk (0x3fUL) /*!< TRGELCm (Bitfield-Mask: 0x3f) */ +/* ======================================================= ADTRGELC2 ======================================================= */ + #define R_ADC_B0_ADTRGELC2_TRGELCm_Pos (0UL) /*!< TRGELCm (Bit 0) */ + #define R_ADC_B0_ADTRGELC2_TRGELCm_Msk (0x3fUL) /*!< TRGELCm (Bitfield-Mask: 0x3f) */ +/* ======================================================= ADTRGELC3 ======================================================= */ + #define R_ADC_B0_ADTRGELC3_TRGELCm_Pos (0UL) /*!< TRGELCm (Bit 0) */ + #define R_ADC_B0_ADTRGELC3_TRGELCm_Msk (0x3fUL) /*!< TRGELCm (Bitfield-Mask: 0x3f) */ +/* ======================================================= ADTRGELC4 ======================================================= */ + #define R_ADC_B0_ADTRGELC4_TRGELCm_Pos (0UL) /*!< TRGELCm (Bit 0) */ + #define R_ADC_B0_ADTRGELC4_TRGELCm_Msk (0x3fUL) /*!< TRGELCm (Bitfield-Mask: 0x3f) */ +/* ======================================================= ADTRGELC5 ======================================================= */ + #define R_ADC_B0_ADTRGELC5_TRGELCm_Pos (0UL) /*!< TRGELCm (Bit 0) */ + #define R_ADC_B0_ADTRGELC5_TRGELCm_Msk (0x3fUL) /*!< TRGELCm (Bitfield-Mask: 0x3f) */ +/* ======================================================= ADTRGELC6 ======================================================= */ + #define R_ADC_B0_ADTRGELC6_TRGELCm_Pos (0UL) /*!< TRGELCm (Bit 0) */ + #define R_ADC_B0_ADTRGELC6_TRGELCm_Msk (0x3fUL) /*!< TRGELCm (Bitfield-Mask: 0x3f) */ +/* ======================================================= ADTRGELC7 ======================================================= */ + #define R_ADC_B0_ADTRGELC7_TRGELCm_Pos (0UL) /*!< TRGELCm (Bit 0) */ + #define R_ADC_B0_ADTRGELC7_TRGELCm_Msk (0x3fUL) /*!< TRGELCm (Bitfield-Mask: 0x3f) */ +/* ======================================================= ADTRGELC8 ======================================================= */ + #define R_ADC_B0_ADTRGELC8_TRGELCm_Pos (0UL) /*!< TRGELCm (Bit 0) */ + #define R_ADC_B0_ADTRGELC8_TRGELCm_Msk (0x3fUL) /*!< TRGELCm (Bitfield-Mask: 0x3f) */ +/* ======================================================= ADTRGGPT0 ======================================================= */ + #define R_ADC_B0_ADTRGGPT0_TRGGPTAm_Pos (0UL) /*!< TRGGPTAm (Bit 0) */ + #define R_ADC_B0_ADTRGGPT0_TRGGPTAm_Msk (0x3ffUL) /*!< TRGGPTAm (Bitfield-Mask: 0x3ff) */ + #define R_ADC_B0_ADTRGGPT0_TRGGPTBm_Pos (16UL) /*!< TRGGPTBm (Bit 16) */ + #define R_ADC_B0_ADTRGGPT0_TRGGPTBm_Msk (0x3ff0000UL) /*!< TRGGPTBm (Bitfield-Mask: 0x3ff) */ +/* ======================================================= ADTRGGPT1 ======================================================= */ + #define R_ADC_B0_ADTRGGPT1_TRGGPTAm_Pos (0UL) /*!< TRGGPTAm (Bit 0) */ + #define R_ADC_B0_ADTRGGPT1_TRGGPTAm_Msk (0x3ffUL) /*!< TRGGPTAm (Bitfield-Mask: 0x3ff) */ + #define R_ADC_B0_ADTRGGPT1_TRGGPTBm_Pos (16UL) /*!< TRGGPTBm (Bit 16) */ + #define R_ADC_B0_ADTRGGPT1_TRGGPTBm_Msk (0x3ff0000UL) /*!< TRGGPTBm (Bitfield-Mask: 0x3ff) */ +/* ======================================================= ADTRGGPT2 ======================================================= */ + #define R_ADC_B0_ADTRGGPT2_TRGGPTAm_Pos (0UL) /*!< TRGGPTAm (Bit 0) */ + #define R_ADC_B0_ADTRGGPT2_TRGGPTAm_Msk (0x3ffUL) /*!< TRGGPTAm (Bitfield-Mask: 0x3ff) */ + #define R_ADC_B0_ADTRGGPT2_TRGGPTBm_Pos (16UL) /*!< TRGGPTBm (Bit 16) */ + #define R_ADC_B0_ADTRGGPT2_TRGGPTBm_Msk (0x3ff0000UL) /*!< TRGGPTBm (Bitfield-Mask: 0x3ff) */ +/* ======================================================= ADTRGGPT3 ======================================================= */ + #define R_ADC_B0_ADTRGGPT3_TRGGPTAm_Pos (0UL) /*!< TRGGPTAm (Bit 0) */ + #define R_ADC_B0_ADTRGGPT3_TRGGPTAm_Msk (0x3ffUL) /*!< TRGGPTAm (Bitfield-Mask: 0x3ff) */ + #define R_ADC_B0_ADTRGGPT3_TRGGPTBm_Pos (16UL) /*!< TRGGPTBm (Bit 16) */ + #define R_ADC_B0_ADTRGGPT3_TRGGPTBm_Msk (0x3ff0000UL) /*!< TRGGPTBm (Bitfield-Mask: 0x3ff) */ +/* ======================================================= ADTRGGPT4 ======================================================= */ + #define R_ADC_B0_ADTRGGPT4_TRGGPTAm_Pos (0UL) /*!< TRGGPTAm (Bit 0) */ + #define R_ADC_B0_ADTRGGPT4_TRGGPTAm_Msk (0x3ffUL) /*!< TRGGPTAm (Bitfield-Mask: 0x3ff) */ + #define R_ADC_B0_ADTRGGPT4_TRGGPTBm_Pos (16UL) /*!< TRGGPTBm (Bit 16) */ + #define R_ADC_B0_ADTRGGPT4_TRGGPTBm_Msk (0x3ff0000UL) /*!< TRGGPTBm (Bitfield-Mask: 0x3ff) */ +/* ======================================================= ADTRGGPT5 ======================================================= */ + #define R_ADC_B0_ADTRGGPT5_TRGGPTAm_Pos (0UL) /*!< TRGGPTAm (Bit 0) */ + #define R_ADC_B0_ADTRGGPT5_TRGGPTAm_Msk (0x3ffUL) /*!< TRGGPTAm (Bitfield-Mask: 0x3ff) */ + #define R_ADC_B0_ADTRGGPT5_TRGGPTBm_Pos (16UL) /*!< TRGGPTBm (Bit 16) */ + #define R_ADC_B0_ADTRGGPT5_TRGGPTBm_Msk (0x3ff0000UL) /*!< TRGGPTBm (Bitfield-Mask: 0x3ff) */ +/* ======================================================= ADTRGGPT6 ======================================================= */ + #define R_ADC_B0_ADTRGGPT6_TRGGPTAm_Pos (0UL) /*!< TRGGPTAm (Bit 0) */ + #define R_ADC_B0_ADTRGGPT6_TRGGPTAm_Msk (0x3ffUL) /*!< TRGGPTAm (Bitfield-Mask: 0x3ff) */ + #define R_ADC_B0_ADTRGGPT6_TRGGPTBm_Pos (16UL) /*!< TRGGPTBm (Bit 16) */ + #define R_ADC_B0_ADTRGGPT6_TRGGPTBm_Msk (0x3ff0000UL) /*!< TRGGPTBm (Bitfield-Mask: 0x3ff) */ +/* ======================================================= ADTRGGPT7 ======================================================= */ + #define R_ADC_B0_ADTRGGPT7_TRGGPTAm_Pos (0UL) /*!< TRGGPTAm (Bit 0) */ + #define R_ADC_B0_ADTRGGPT7_TRGGPTAm_Msk (0x3ffUL) /*!< TRGGPTAm (Bitfield-Mask: 0x3ff) */ + #define R_ADC_B0_ADTRGGPT7_TRGGPTBm_Pos (16UL) /*!< TRGGPTBm (Bit 16) */ + #define R_ADC_B0_ADTRGGPT7_TRGGPTBm_Msk (0x3ff0000UL) /*!< TRGGPTBm (Bitfield-Mask: 0x3ff) */ +/* ======================================================= ADTRGGPT8 ======================================================= */ + #define R_ADC_B0_ADTRGGPT8_TRGGPTAm_Pos (0UL) /*!< TRGGPTAm (Bit 0) */ + #define R_ADC_B0_ADTRGGPT8_TRGGPTAm_Msk (0x3ffUL) /*!< TRGGPTAm (Bitfield-Mask: 0x3ff) */ + #define R_ADC_B0_ADTRGGPT8_TRGGPTBm_Pos (16UL) /*!< TRGGPTBm (Bit 16) */ + #define R_ADC_B0_ADTRGGPT8_TRGGPTBm_Msk (0x3ff0000UL) /*!< TRGGPTBm (Bitfield-Mask: 0x3ff) */ +/* ======================================================= ADTRGDLR0 ======================================================= */ + #define R_ADC_B0_ADTRGDLR0_TRGDLY0_Pos (0UL) /*!< TRGDLY0 (Bit 0) */ + #define R_ADC_B0_ADTRGDLR0_TRGDLY0_Msk (0xffUL) /*!< TRGDLY0 (Bitfield-Mask: 0xff) */ + #define R_ADC_B0_ADTRGDLR0_TRGDLY1_Pos (16UL) /*!< TRGDLY1 (Bit 16) */ + #define R_ADC_B0_ADTRGDLR0_TRGDLY1_Msk (0xff0000UL) /*!< TRGDLY1 (Bitfield-Mask: 0xff) */ +/* ======================================================= ADTRGDLR1 ======================================================= */ + #define R_ADC_B0_ADTRGDLR1_TRGDLY2_Pos (0UL) /*!< TRGDLY2 (Bit 0) */ + #define R_ADC_B0_ADTRGDLR1_TRGDLY2_Msk (0xffUL) /*!< TRGDLY2 (Bitfield-Mask: 0xff) */ + #define R_ADC_B0_ADTRGDLR1_TRGDLY3_Pos (16UL) /*!< TRGDLY3 (Bit 16) */ + #define R_ADC_B0_ADTRGDLR1_TRGDLY3_Msk (0xff0000UL) /*!< TRGDLY3 (Bitfield-Mask: 0xff) */ +/* ======================================================= ADTRGDLR2 ======================================================= */ + #define R_ADC_B0_ADTRGDLR2_TRGDLY4_Pos (0UL) /*!< TRGDLY4 (Bit 0) */ + #define R_ADC_B0_ADTRGDLR2_TRGDLY4_Msk (0xffUL) /*!< TRGDLY4 (Bitfield-Mask: 0xff) */ + #define R_ADC_B0_ADTRGDLR2_TRGDLY5_Pos (16UL) /*!< TRGDLY5 (Bit 16) */ + #define R_ADC_B0_ADTRGDLR2_TRGDLY5_Msk (0xff0000UL) /*!< TRGDLY5 (Bitfield-Mask: 0xff) */ +/* ======================================================= ADTRGDLR3 ======================================================= */ + #define R_ADC_B0_ADTRGDLR3_TRGDLY6_Pos (0UL) /*!< TRGDLY6 (Bit 0) */ + #define R_ADC_B0_ADTRGDLR3_TRGDLY6_Msk (0xffUL) /*!< TRGDLY6 (Bitfield-Mask: 0xff) */ + #define R_ADC_B0_ADTRGDLR3_TRGDLY7_Pos (16UL) /*!< TRGDLY7 (Bit 16) */ + #define R_ADC_B0_ADTRGDLR3_TRGDLY7_Msk (0xff0000UL) /*!< TRGDLY7 (Bitfield-Mask: 0xff) */ +/* ======================================================= ADTRGDLR4 ======================================================= */ + #define R_ADC_B0_ADTRGDLR4_TRGDLY8_Pos (0UL) /*!< TRGDLY8 (Bit 0) */ + #define R_ADC_B0_ADTRGDLR4_TRGDLY8_Msk (0xffUL) /*!< TRGDLY8 (Bitfield-Mask: 0xff) */ +/* ======================================================= ADSGDCR0 ======================================================== */ + #define R_ADC_B0_ADSGDCR0_DIAGVAL_Pos (0UL) /*!< DIAGVAL (Bit 0) */ + #define R_ADC_B0_ADSGDCR0_DIAGVAL_Msk (0x7UL) /*!< DIAGVAL (Bitfield-Mask: 0x07) */ + #define R_ADC_B0_ADSGDCR0_ADDISEN_Pos (16UL) /*!< ADDISEN (Bit 16) */ + #define R_ADC_B0_ADSGDCR0_ADDISEN_Msk (0x10000UL) /*!< ADDISEN (Bitfield-Mask: 0x01) */ + #define R_ADC_B0_ADSGDCR0_ADDISP_Pos (20UL) /*!< ADDISP (Bit 20) */ + #define R_ADC_B0_ADSGDCR0_ADDISP_Msk (0x100000UL) /*!< ADDISP (Bitfield-Mask: 0x01) */ + #define R_ADC_B0_ADSGDCR0_ADDISN_Pos (21UL) /*!< ADDISN (Bit 21) */ + #define R_ADC_B0_ADSGDCR0_ADDISN_Msk (0x200000UL) /*!< ADDISN (Bitfield-Mask: 0x01) */ + #define R_ADC_B0_ADSGDCR0_ADNDIS_Pos (24UL) /*!< ADNDIS (Bit 24) */ + #define R_ADC_B0_ADSGDCR0_ADNDIS_Msk (0xf000000UL) /*!< ADNDIS (Bitfield-Mask: 0x0f) */ +/* ======================================================= ADSGDCR1 ======================================================== */ + #define R_ADC_B0_ADSGDCR1_DIAGVAL_Pos (0UL) /*!< DIAGVAL (Bit 0) */ + #define R_ADC_B0_ADSGDCR1_DIAGVAL_Msk (0x7UL) /*!< DIAGVAL (Bitfield-Mask: 0x07) */ + #define R_ADC_B0_ADSGDCR1_ADDISEN_Pos (16UL) /*!< ADDISEN (Bit 16) */ + #define R_ADC_B0_ADSGDCR1_ADDISEN_Msk (0x10000UL) /*!< ADDISEN (Bitfield-Mask: 0x01) */ + #define R_ADC_B0_ADSGDCR1_ADDISP_Pos (20UL) /*!< ADDISP (Bit 20) */ + #define R_ADC_B0_ADSGDCR1_ADDISP_Msk (0x100000UL) /*!< ADDISP (Bitfield-Mask: 0x01) */ + #define R_ADC_B0_ADSGDCR1_ADDISN_Pos (21UL) /*!< ADDISN (Bit 21) */ + #define R_ADC_B0_ADSGDCR1_ADDISN_Msk (0x200000UL) /*!< ADDISN (Bitfield-Mask: 0x01) */ + #define R_ADC_B0_ADSGDCR1_ADNDIS_Pos (24UL) /*!< ADNDIS (Bit 24) */ + #define R_ADC_B0_ADSGDCR1_ADNDIS_Msk (0xf000000UL) /*!< ADNDIS (Bitfield-Mask: 0x0f) */ +/* ======================================================= ADSGDCR2 ======================================================== */ + #define R_ADC_B0_ADSGDCR2_DIAGVAL_Pos (0UL) /*!< DIAGVAL (Bit 0) */ + #define R_ADC_B0_ADSGDCR2_DIAGVAL_Msk (0x7UL) /*!< DIAGVAL (Bitfield-Mask: 0x07) */ + #define R_ADC_B0_ADSGDCR2_ADDISEN_Pos (16UL) /*!< ADDISEN (Bit 16) */ + #define R_ADC_B0_ADSGDCR2_ADDISEN_Msk (0x10000UL) /*!< ADDISEN (Bitfield-Mask: 0x01) */ + #define R_ADC_B0_ADSGDCR2_ADDISP_Pos (20UL) /*!< ADDISP (Bit 20) */ + #define R_ADC_B0_ADSGDCR2_ADDISP_Msk (0x100000UL) /*!< ADDISP (Bitfield-Mask: 0x01) */ + #define R_ADC_B0_ADSGDCR2_ADDISN_Pos (21UL) /*!< ADDISN (Bit 21) */ + #define R_ADC_B0_ADSGDCR2_ADDISN_Msk (0x200000UL) /*!< ADDISN (Bitfield-Mask: 0x01) */ + #define R_ADC_B0_ADSGDCR2_ADNDIS_Pos (24UL) /*!< ADNDIS (Bit 24) */ + #define R_ADC_B0_ADSGDCR2_ADNDIS_Msk (0xf000000UL) /*!< ADNDIS (Bitfield-Mask: 0x0f) */ +/* ======================================================= ADSGDCR3 ======================================================== */ + #define R_ADC_B0_ADSGDCR3_DIAGVAL_Pos (0UL) /*!< DIAGVAL (Bit 0) */ + #define R_ADC_B0_ADSGDCR3_DIAGVAL_Msk (0x7UL) /*!< DIAGVAL (Bitfield-Mask: 0x07) */ + #define R_ADC_B0_ADSGDCR3_ADDISEN_Pos (16UL) /*!< ADDISEN (Bit 16) */ + #define R_ADC_B0_ADSGDCR3_ADDISEN_Msk (0x10000UL) /*!< ADDISEN (Bitfield-Mask: 0x01) */ + #define R_ADC_B0_ADSGDCR3_ADDISP_Pos (20UL) /*!< ADDISP (Bit 20) */ + #define R_ADC_B0_ADSGDCR3_ADDISP_Msk (0x100000UL) /*!< ADDISP (Bitfield-Mask: 0x01) */ + #define R_ADC_B0_ADSGDCR3_ADDISN_Pos (21UL) /*!< ADDISN (Bit 21) */ + #define R_ADC_B0_ADSGDCR3_ADDISN_Msk (0x200000UL) /*!< ADDISN (Bitfield-Mask: 0x01) */ + #define R_ADC_B0_ADSGDCR3_ADNDIS_Pos (24UL) /*!< ADNDIS (Bit 24) */ + #define R_ADC_B0_ADSGDCR3_ADNDIS_Msk (0xf000000UL) /*!< ADNDIS (Bitfield-Mask: 0x0f) */ +/* ======================================================= ADSGDCR4 ======================================================== */ + #define R_ADC_B0_ADSGDCR4_DIAGVAL_Pos (0UL) /*!< DIAGVAL (Bit 0) */ + #define R_ADC_B0_ADSGDCR4_DIAGVAL_Msk (0x7UL) /*!< DIAGVAL (Bitfield-Mask: 0x07) */ + #define R_ADC_B0_ADSGDCR4_ADDISEN_Pos (16UL) /*!< ADDISEN (Bit 16) */ + #define R_ADC_B0_ADSGDCR4_ADDISEN_Msk (0x10000UL) /*!< ADDISEN (Bitfield-Mask: 0x01) */ + #define R_ADC_B0_ADSGDCR4_ADDISP_Pos (20UL) /*!< ADDISP (Bit 20) */ + #define R_ADC_B0_ADSGDCR4_ADDISP_Msk (0x100000UL) /*!< ADDISP (Bitfield-Mask: 0x01) */ + #define R_ADC_B0_ADSGDCR4_ADDISN_Pos (21UL) /*!< ADDISN (Bit 21) */ + #define R_ADC_B0_ADSGDCR4_ADDISN_Msk (0x200000UL) /*!< ADDISN (Bitfield-Mask: 0x01) */ + #define R_ADC_B0_ADSGDCR4_ADNDIS_Pos (24UL) /*!< ADNDIS (Bit 24) */ + #define R_ADC_B0_ADSGDCR4_ADNDIS_Msk (0xf000000UL) /*!< ADNDIS (Bitfield-Mask: 0x0f) */ +/* ======================================================= ADSGDCR5 ======================================================== */ + #define R_ADC_B0_ADSGDCR5_DIAGVAL_Pos (0UL) /*!< DIAGVAL (Bit 0) */ + #define R_ADC_B0_ADSGDCR5_DIAGVAL_Msk (0x7UL) /*!< DIAGVAL (Bitfield-Mask: 0x07) */ + #define R_ADC_B0_ADSGDCR5_ADDISEN_Pos (16UL) /*!< ADDISEN (Bit 16) */ + #define R_ADC_B0_ADSGDCR5_ADDISEN_Msk (0x10000UL) /*!< ADDISEN (Bitfield-Mask: 0x01) */ + #define R_ADC_B0_ADSGDCR5_ADDISP_Pos (20UL) /*!< ADDISP (Bit 20) */ + #define R_ADC_B0_ADSGDCR5_ADDISP_Msk (0x100000UL) /*!< ADDISP (Bitfield-Mask: 0x01) */ + #define R_ADC_B0_ADSGDCR5_ADDISN_Pos (21UL) /*!< ADDISN (Bit 21) */ + #define R_ADC_B0_ADSGDCR5_ADDISN_Msk (0x200000UL) /*!< ADDISN (Bitfield-Mask: 0x01) */ + #define R_ADC_B0_ADSGDCR5_ADNDIS_Pos (24UL) /*!< ADNDIS (Bit 24) */ + #define R_ADC_B0_ADSGDCR5_ADNDIS_Msk (0xf000000UL) /*!< ADNDIS (Bitfield-Mask: 0x0f) */ +/* ======================================================= ADSGDCR6 ======================================================== */ + #define R_ADC_B0_ADSGDCR6_DIAGVAL_Pos (0UL) /*!< DIAGVAL (Bit 0) */ + #define R_ADC_B0_ADSGDCR6_DIAGVAL_Msk (0x7UL) /*!< DIAGVAL (Bitfield-Mask: 0x07) */ + #define R_ADC_B0_ADSGDCR6_ADDISEN_Pos (16UL) /*!< ADDISEN (Bit 16) */ + #define R_ADC_B0_ADSGDCR6_ADDISEN_Msk (0x10000UL) /*!< ADDISEN (Bitfield-Mask: 0x01) */ + #define R_ADC_B0_ADSGDCR6_ADDISP_Pos (20UL) /*!< ADDISP (Bit 20) */ + #define R_ADC_B0_ADSGDCR6_ADDISP_Msk (0x100000UL) /*!< ADDISP (Bitfield-Mask: 0x01) */ + #define R_ADC_B0_ADSGDCR6_ADDISN_Pos (21UL) /*!< ADDISN (Bit 21) */ + #define R_ADC_B0_ADSGDCR6_ADDISN_Msk (0x200000UL) /*!< ADDISN (Bitfield-Mask: 0x01) */ + #define R_ADC_B0_ADSGDCR6_ADNDIS_Pos (24UL) /*!< ADNDIS (Bit 24) */ + #define R_ADC_B0_ADSGDCR6_ADNDIS_Msk (0xf000000UL) /*!< ADNDIS (Bitfield-Mask: 0x0f) */ +/* ======================================================= ADSGDCR7 ======================================================== */ + #define R_ADC_B0_ADSGDCR7_DIAGVAL_Pos (0UL) /*!< DIAGVAL (Bit 0) */ + #define R_ADC_B0_ADSGDCR7_DIAGVAL_Msk (0x7UL) /*!< DIAGVAL (Bitfield-Mask: 0x07) */ + #define R_ADC_B0_ADSGDCR7_ADDISEN_Pos (16UL) /*!< ADDISEN (Bit 16) */ + #define R_ADC_B0_ADSGDCR7_ADDISEN_Msk (0x10000UL) /*!< ADDISEN (Bitfield-Mask: 0x01) */ + #define R_ADC_B0_ADSGDCR7_ADDISP_Pos (20UL) /*!< ADDISP (Bit 20) */ + #define R_ADC_B0_ADSGDCR7_ADDISP_Msk (0x100000UL) /*!< ADDISP (Bitfield-Mask: 0x01) */ + #define R_ADC_B0_ADSGDCR7_ADDISN_Pos (21UL) /*!< ADDISN (Bit 21) */ + #define R_ADC_B0_ADSGDCR7_ADDISN_Msk (0x200000UL) /*!< ADDISN (Bitfield-Mask: 0x01) */ + #define R_ADC_B0_ADSGDCR7_ADNDIS_Pos (24UL) /*!< ADNDIS (Bit 24) */ + #define R_ADC_B0_ADSGDCR7_ADNDIS_Msk (0xf000000UL) /*!< ADNDIS (Bitfield-Mask: 0x0f) */ +/* ======================================================= ADSGDCR8 ======================================================== */ + #define R_ADC_B0_ADSGDCR8_DIAGVAL_Pos (0UL) /*!< DIAGVAL (Bit 0) */ + #define R_ADC_B0_ADSGDCR8_DIAGVAL_Msk (0x7UL) /*!< DIAGVAL (Bitfield-Mask: 0x07) */ + #define R_ADC_B0_ADSGDCR8_ADDISEN_Pos (16UL) /*!< ADDISEN (Bit 16) */ + #define R_ADC_B0_ADSGDCR8_ADDISEN_Msk (0x10000UL) /*!< ADDISEN (Bitfield-Mask: 0x01) */ + #define R_ADC_B0_ADSGDCR8_ADDISP_Pos (20UL) /*!< ADDISP (Bit 20) */ + #define R_ADC_B0_ADSGDCR8_ADDISP_Msk (0x100000UL) /*!< ADDISP (Bitfield-Mask: 0x01) */ + #define R_ADC_B0_ADSGDCR8_ADDISN_Pos (21UL) /*!< ADDISN (Bit 21) */ + #define R_ADC_B0_ADSGDCR8_ADDISN_Msk (0x200000UL) /*!< ADDISN (Bitfield-Mask: 0x01) */ + #define R_ADC_B0_ADSGDCR8_ADNDIS_Pos (24UL) /*!< ADNDIS (Bit 24) */ + #define R_ADC_B0_ADSGDCR8_ADNDIS_Msk (0xf000000UL) /*!< ADNDIS (Bitfield-Mask: 0x0f) */ +/* ======================================================== ADSSTR0 ======================================================== */ + #define R_ADC_B0_ADSSTR0_SST0_Pos (0UL) /*!< SST0 (Bit 0) */ + #define R_ADC_B0_ADSSTR0_SST0_Msk (0x3ffUL) /*!< SST0 (Bitfield-Mask: 0x3ff) */ + #define R_ADC_B0_ADSSTR0_SST1_Pos (16UL) /*!< SST1 (Bit 16) */ + #define R_ADC_B0_ADSSTR0_SST1_Msk (0x3ff0000UL) /*!< SST1 (Bitfield-Mask: 0x3ff) */ +/* ======================================================== ADSSTR1 ======================================================== */ + #define R_ADC_B0_ADSSTR1_SST2_Pos (0UL) /*!< SST2 (Bit 0) */ + #define R_ADC_B0_ADSSTR1_SST2_Msk (0x3ffUL) /*!< SST2 (Bitfield-Mask: 0x3ff) */ + #define R_ADC_B0_ADSSTR1_SST3_Pos (16UL) /*!< SST3 (Bit 16) */ + #define R_ADC_B0_ADSSTR1_SST3_Msk (0x3ff0000UL) /*!< SST3 (Bitfield-Mask: 0x3ff) */ +/* ======================================================== ADSSTR2 ======================================================== */ + #define R_ADC_B0_ADSSTR2_SST4_Pos (0UL) /*!< SST4 (Bit 0) */ + #define R_ADC_B0_ADSSTR2_SST4_Msk (0x3ffUL) /*!< SST4 (Bitfield-Mask: 0x3ff) */ + #define R_ADC_B0_ADSSTR2_SST5_Pos (16UL) /*!< SST5 (Bit 16) */ + #define R_ADC_B0_ADSSTR2_SST5_Msk (0x3ff0000UL) /*!< SST5 (Bitfield-Mask: 0x3ff) */ +/* ======================================================== ADSSTR3 ======================================================== */ + #define R_ADC_B0_ADSSTR3_SST6_Pos (0UL) /*!< SST6 (Bit 0) */ + #define R_ADC_B0_ADSSTR3_SST6_Msk (0x3ffUL) /*!< SST6 (Bitfield-Mask: 0x3ff) */ + #define R_ADC_B0_ADSSTR3_SST7_Pos (16UL) /*!< SST7 (Bit 16) */ + #define R_ADC_B0_ADSSTR3_SST7_Msk (0x3ff0000UL) /*!< SST7 (Bitfield-Mask: 0x3ff) */ +/* ======================================================== ADSSTR4 ======================================================== */ + #define R_ADC_B0_ADSSTR4_SST8_Pos (0UL) /*!< SST8 (Bit 0) */ + #define R_ADC_B0_ADSSTR4_SST8_Msk (0x3ffUL) /*!< SST8 (Bitfield-Mask: 0x3ff) */ + #define R_ADC_B0_ADSSTR4_SST9_Pos (16UL) /*!< SST9 (Bit 16) */ + #define R_ADC_B0_ADSSTR4_SST9_Msk (0x3ff0000UL) /*!< SST9 (Bitfield-Mask: 0x3ff) */ +/* ======================================================== ADSSTR5 ======================================================== */ + #define R_ADC_B0_ADSSTR5_SST10_Pos (0UL) /*!< SST10 (Bit 0) */ + #define R_ADC_B0_ADSSTR5_SST10_Msk (0x3ffUL) /*!< SST10 (Bitfield-Mask: 0x3ff) */ + #define R_ADC_B0_ADSSTR5_SST11_Pos (16UL) /*!< SST11 (Bit 16) */ + #define R_ADC_B0_ADSSTR5_SST11_Msk (0x3ff0000UL) /*!< SST11 (Bitfield-Mask: 0x3ff) */ +/* ======================================================== ADSSTR6 ======================================================== */ + #define R_ADC_B0_ADSSTR6_SST12_Pos (0UL) /*!< SST12 (Bit 0) */ + #define R_ADC_B0_ADSSTR6_SST12_Msk (0x3ffUL) /*!< SST12 (Bitfield-Mask: 0x3ff) */ + #define R_ADC_B0_ADSSTR6_SST13_Pos (16UL) /*!< SST13 (Bit 16) */ + #define R_ADC_B0_ADSSTR6_SST13_Msk (0x3ff0000UL) /*!< SST13 (Bitfield-Mask: 0x3ff) */ +/* ======================================================== ADSSTR7 ======================================================== */ + #define R_ADC_B0_ADSSTR7_SST14_Pos (0UL) /*!< SST14 (Bit 0) */ + #define R_ADC_B0_ADSSTR7_SST14_Msk (0x3ffUL) /*!< SST14 (Bitfield-Mask: 0x3ff) */ + #define R_ADC_B0_ADSSTR7_SST15_Pos (16UL) /*!< SST15 (Bit 16) */ + #define R_ADC_B0_ADSSTR7_SST15_Msk (0x3ff0000UL) /*!< SST15 (Bitfield-Mask: 0x3ff) */ +/* ======================================================= ADCNVSTR ======================================================== */ + #define R_ADC_B0_ADCNVSTR_CST0_Pos (0UL) /*!< CST0 (Bit 0) */ + #define R_ADC_B0_ADCNVSTR_CST0_Msk (0x3fUL) /*!< CST0 (Bitfield-Mask: 0x3f) */ + #define R_ADC_B0_ADCNVSTR_CST1_Pos (8UL) /*!< CST1 (Bit 8) */ + #define R_ADC_B0_ADCNVSTR_CST1_Msk (0x3f00UL) /*!< CST1 (Bitfield-Mask: 0x3f) */ +/* ======================================================= ADCALSTCR ======================================================= */ + #define R_ADC_B0_ADCALSTCR_CALADSST_Pos (0UL) /*!< CALADSST (Bit 0) */ + #define R_ADC_B0_ADCALSTCR_CALADSST_Msk (0x3ffUL) /*!< CALADSST (Bitfield-Mask: 0x3ff) */ + #define R_ADC_B0_ADCALSTCR_CALADCST_Pos (16UL) /*!< CALADCST (Bit 16) */ + #define R_ADC_B0_ADCALSTCR_CALADCST_Msk (0x3f0000UL) /*!< CALADCST (Bitfield-Mask: 0x3f) */ +/* ======================================================== ADSHCR0 ======================================================== */ + #define R_ADC_B0_ADSHCR0_SHEN0_Pos (0UL) /*!< SHEN0 (Bit 0) */ + #define R_ADC_B0_ADSHCR0_SHEN0_Msk (0x1UL) /*!< SHEN0 (Bitfield-Mask: 0x01) */ + #define R_ADC_B0_ADSHCR0_SHEN1_Pos (1UL) /*!< SHEN1 (Bit 1) */ + #define R_ADC_B0_ADSHCR0_SHEN1_Msk (0x2UL) /*!< SHEN1 (Bitfield-Mask: 0x01) */ + #define R_ADC_B0_ADSHCR0_SHEN2_Pos (2UL) /*!< SHEN2 (Bit 2) */ + #define R_ADC_B0_ADSHCR0_SHEN2_Msk (0x4UL) /*!< SHEN2 (Bitfield-Mask: 0x01) */ +/* ======================================================= ADSHSTR0 ======================================================== */ + #define R_ADC_B0_ADSHSTR0_SHSST_Pos (0UL) /*!< SHSST (Bit 0) */ + #define R_ADC_B0_ADSHSTR0_SHSST_Msk (0xffUL) /*!< SHSST (Bitfield-Mask: 0xff) */ + #define R_ADC_B0_ADSHSTR0_SHHST_Pos (16UL) /*!< SHHST (Bit 16) */ + #define R_ADC_B0_ADSHSTR0_SHHST_Msk (0x70000UL) /*!< SHHST (Bitfield-Mask: 0x07) */ +/* ======================================================== ADSHCR1 ======================================================== */ + #define R_ADC_B0_ADSHCR1_SHEN4_Pos (0UL) /*!< SHEN4 (Bit 0) */ + #define R_ADC_B0_ADSHCR1_SHEN4_Msk (0x1UL) /*!< SHEN4 (Bitfield-Mask: 0x01) */ + #define R_ADC_B0_ADSHCR1_SHEN5_Pos (1UL) /*!< SHEN5 (Bit 1) */ + #define R_ADC_B0_ADSHCR1_SHEN5_Msk (0x2UL) /*!< SHEN5 (Bitfield-Mask: 0x01) */ + #define R_ADC_B0_ADSHCR1_SHEN6_Pos (2UL) /*!< SHEN6 (Bit 2) */ + #define R_ADC_B0_ADSHCR1_SHEN6_Msk (0x4UL) /*!< SHEN6 (Bitfield-Mask: 0x01) */ +/* ======================================================= ADSHSTR1 ======================================================== */ + #define R_ADC_B0_ADSHSTR1_SHSST_Pos (0UL) /*!< SHSST (Bit 0) */ + #define R_ADC_B0_ADSHSTR1_SHSST_Msk (0xffUL) /*!< SHSST (Bitfield-Mask: 0xff) */ + #define R_ADC_B0_ADSHSTR1_SHHST_Pos (16UL) /*!< SHHST (Bit 16) */ + #define R_ADC_B0_ADSHSTR1_SHHST_Msk (0x70000UL) /*!< SHHST (Bitfield-Mask: 0x07) */ +/* ======================================================= ADCALSHCR ======================================================= */ + #define R_ADC_B0_ADCALSHCR_CALSHSST_Pos (0UL) /*!< CALSHSST (Bit 0) */ + #define R_ADC_B0_ADCALSHCR_CALSHSST_Msk (0xffUL) /*!< CALSHSST (Bitfield-Mask: 0xff) */ + #define R_ADC_B0_ADCALSHCR_CALSHHST_Pos (16UL) /*!< CALSHHST (Bit 16) */ + #define R_ADC_B0_ADCALSHCR_CALSHHST_Msk (0x70000UL) /*!< CALSHHST (Bitfield-Mask: 0x07) */ +/* ======================================================== ADPGACR ======================================================== */ + #define R_ADC_B0_ADPGACR_PGADEN_Pos (1UL) /*!< PGADEN (Bit 1) */ + #define R_ADC_B0_ADPGACR_PGADEN_Msk (0x2UL) /*!< PGADEN (Bitfield-Mask: 0x01) */ + #define R_ADC_B0_ADPGACR_PGASEL1_Pos (2UL) /*!< PGASEL1 (Bit 2) */ + #define R_ADC_B0_ADPGACR_PGASEL1_Msk (0x4UL) /*!< PGASEL1 (Bitfield-Mask: 0x01) */ + #define R_ADC_B0_ADPGACR_PGAENAMP_Pos (3UL) /*!< PGAENAMP (Bit 3) */ + #define R_ADC_B0_ADPGACR_PGAENAMP_Msk (0x8UL) /*!< PGAENAMP (Bitfield-Mask: 0x01) */ + #define R_ADC_B0_ADPGACR_PGAGEN_Pos (16UL) /*!< PGAGEN (Bit 16) */ + #define R_ADC_B0_ADPGACR_PGAGEN_Msk (0x10000UL) /*!< PGAGEN (Bitfield-Mask: 0x01) */ + #define R_ADC_B0_ADPGACR_PGADG_Pos (20UL) /*!< PGADG (Bit 20) */ + #define R_ADC_B0_ADPGACR_PGADG_Msk (0x300000UL) /*!< PGADG (Bitfield-Mask: 0x03) */ + #define R_ADC_B0_ADPGACR_PGAGAIN_Pos (24UL) /*!< PGAGAIN (Bit 24) */ + #define R_ADC_B0_ADPGACR_PGAGAIN_Msk (0xf000000UL) /*!< PGAGAIN (Bitfield-Mask: 0x0f) */ +/* ====================================================== ADPGAMONCR ======================================================= */ + #define R_ADC_B0_ADPGAMONCR_PGAMON_Pos (0UL) /*!< PGAMON (Bit 0) */ + #define R_ADC_B0_ADPGAMONCR_PGAMON_Msk (0x7UL) /*!< PGAMON (Bitfield-Mask: 0x07) */ + #define R_ADC_B0_ADPGAMONCR_MONSEL0_Pos (16UL) /*!< MONSEL0 (Bit 16) */ + #define R_ADC_B0_ADPGAMONCR_MONSEL0_Msk (0x10000UL) /*!< MONSEL0 (Bitfield-Mask: 0x01) */ + #define R_ADC_B0_ADPGAMONCR_MONSEL1_Pos (17UL) /*!< MONSEL1 (Bit 17) */ + #define R_ADC_B0_ADPGAMONCR_MONSEL1_Msk (0x20000UL) /*!< MONSEL1 (Bitfield-Mask: 0x01) */ + #define R_ADC_B0_ADPGAMONCR_MONSEL2_Pos (18UL) /*!< MONSEL2 (Bit 18) */ + #define R_ADC_B0_ADPGAMONCR_MONSEL2_Msk (0x40000UL) /*!< MONSEL2 (Bitfield-Mask: 0x01) */ + #define R_ADC_B0_ADPGAMONCR_MONSEL3_Pos (19UL) /*!< MONSEL3 (Bit 19) */ + #define R_ADC_B0_ADPGAMONCR_MONSEL3_Msk (0x80000UL) /*!< MONSEL3 (Bitfield-Mask: 0x01) */ +/* ======================================================== ADREFCR ======================================================== */ + #define R_ADC_B0_ADREFCR_VDE_Pos (0UL) /*!< VDE (Bit 0) */ + #define R_ADC_B0_ADREFCR_VDE_Msk (0x1UL) /*!< VDE (Bitfield-Mask: 0x01) */ +/* ======================================================= ADUOFTR0 ======================================================== */ + #define R_ADC_B0_ADUOFTR0_UOFSET_Pos (0UL) /*!< UOFSET (Bit 0) */ + #define R_ADC_B0_ADUOFTR0_UOFSET_Msk (0xffffUL) /*!< UOFSET (Bitfield-Mask: 0xffff) */ +/* ======================================================= ADUOFTR1 ======================================================== */ + #define R_ADC_B0_ADUOFTR1_UOFSET_Pos (0UL) /*!< UOFSET (Bit 0) */ + #define R_ADC_B0_ADUOFTR1_UOFSET_Msk (0xffffUL) /*!< UOFSET (Bitfield-Mask: 0xffff) */ +/* ======================================================= ADUOFTR2 ======================================================== */ + #define R_ADC_B0_ADUOFTR2_UOFSET_Pos (0UL) /*!< UOFSET (Bit 0) */ + #define R_ADC_B0_ADUOFTR2_UOFSET_Msk (0xffffUL) /*!< UOFSET (Bitfield-Mask: 0xffff) */ +/* ======================================================= ADUOFTR3 ======================================================== */ + #define R_ADC_B0_ADUOFTR3_UOFSET_Pos (0UL) /*!< UOFSET (Bit 0) */ + #define R_ADC_B0_ADUOFTR3_UOFSET_Msk (0xffffUL) /*!< UOFSET (Bitfield-Mask: 0xffff) */ +/* ======================================================= ADUOFTR4 ======================================================== */ + #define R_ADC_B0_ADUOFTR4_UOFSET_Pos (0UL) /*!< UOFSET (Bit 0) */ + #define R_ADC_B0_ADUOFTR4_UOFSET_Msk (0xffffUL) /*!< UOFSET (Bitfield-Mask: 0xffff) */ +/* ======================================================= ADUOFTR5 ======================================================== */ + #define R_ADC_B0_ADUOFTR5_UOFSET_Pos (0UL) /*!< UOFSET (Bit 0) */ + #define R_ADC_B0_ADUOFTR5_UOFSET_Msk (0xffffUL) /*!< UOFSET (Bitfield-Mask: 0xffff) */ +/* ======================================================= ADUOFTR6 ======================================================== */ + #define R_ADC_B0_ADUOFTR6_UOFSET_Pos (0UL) /*!< UOFSET (Bit 0) */ + #define R_ADC_B0_ADUOFTR6_UOFSET_Msk (0xffffUL) /*!< UOFSET (Bitfield-Mask: 0xffff) */ +/* ======================================================= ADUOFTR7 ======================================================== */ + #define R_ADC_B0_ADUOFTR7_UOFSET_Pos (0UL) /*!< UOFSET (Bit 0) */ + #define R_ADC_B0_ADUOFTR7_UOFSET_Msk (0xffffUL) /*!< UOFSET (Bitfield-Mask: 0xffff) */ +/* ======================================================== ADUGTR0 ======================================================== */ + #define R_ADC_B0_ADUGTR0_UGAIN_Pos (0UL) /*!< UGAIN (Bit 0) */ + #define R_ADC_B0_ADUGTR0_UGAIN_Msk (0xffffffUL) /*!< UGAIN (Bitfield-Mask: 0xffffff) */ +/* ======================================================== ADUGTR1 ======================================================== */ + #define R_ADC_B0_ADUGTR1_UGAIN_Pos (0UL) /*!< UGAIN (Bit 0) */ + #define R_ADC_B0_ADUGTR1_UGAIN_Msk (0xffffffUL) /*!< UGAIN (Bitfield-Mask: 0xffffff) */ +/* ======================================================== ADUGTR2 ======================================================== */ + #define R_ADC_B0_ADUGTR2_UGAIN_Pos (0UL) /*!< UGAIN (Bit 0) */ + #define R_ADC_B0_ADUGTR2_UGAIN_Msk (0xffffffUL) /*!< UGAIN (Bitfield-Mask: 0xffffff) */ +/* ======================================================== ADUGTR3 ======================================================== */ + #define R_ADC_B0_ADUGTR3_UGAIN_Pos (0UL) /*!< UGAIN (Bit 0) */ + #define R_ADC_B0_ADUGTR3_UGAIN_Msk (0xffffffUL) /*!< UGAIN (Bitfield-Mask: 0xffffff) */ +/* ======================================================== ADUGTR4 ======================================================== */ + #define R_ADC_B0_ADUGTR4_UGAIN_Pos (0UL) /*!< UGAIN (Bit 0) */ + #define R_ADC_B0_ADUGTR4_UGAIN_Msk (0xffffffUL) /*!< UGAIN (Bitfield-Mask: 0xffffff) */ +/* ======================================================== ADUGTR5 ======================================================== */ + #define R_ADC_B0_ADUGTR5_UGAIN_Pos (0UL) /*!< UGAIN (Bit 0) */ + #define R_ADC_B0_ADUGTR5_UGAIN_Msk (0xffffffUL) /*!< UGAIN (Bitfield-Mask: 0xffffff) */ +/* ======================================================== ADUGTR6 ======================================================== */ + #define R_ADC_B0_ADUGTR6_UGAIN_Pos (0UL) /*!< UGAIN (Bit 0) */ + #define R_ADC_B0_ADUGTR6_UGAIN_Msk (0xffffffUL) /*!< UGAIN (Bitfield-Mask: 0xffffff) */ +/* ======================================================== ADUGTR7 ======================================================== */ + #define R_ADC_B0_ADUGTR7_UGAIN_Pos (0UL) /*!< UGAIN (Bit 0) */ + #define R_ADC_B0_ADUGTR7_UGAIN_Msk (0xffffffUL) /*!< UGAIN (Bitfield-Mask: 0xffffff) */ +/* ====================================================== ADLIMINTCR ======================================================= */ + #define R_ADC_B0_ADLIMINTCR_LIMIEn_Pos (0UL) /*!< LIMIEn (Bit 0) */ + #define R_ADC_B0_ADLIMINTCR_LIMIEn_Msk (0x1ffUL) /*!< LIMIEn (Bitfield-Mask: 0x1ff) */ +/* ======================================================= ADLIMTR0 ======================================================== */ + #define R_ADC_B0_ADLIMTR0_LIML_Pos (0UL) /*!< LIML (Bit 0) */ + #define R_ADC_B0_ADLIMTR0_LIML_Msk (0xffffUL) /*!< LIML (Bitfield-Mask: 0xffff) */ + #define R_ADC_B0_ADLIMTR0_LIMU_Pos (16UL) /*!< LIMU (Bit 16) */ + #define R_ADC_B0_ADLIMTR0_LIMU_Msk (0xffff0000UL) /*!< LIMU (Bitfield-Mask: 0xffff) */ +/* ======================================================= ADLIMTR1 ======================================================== */ + #define R_ADC_B0_ADLIMTR1_LIML_Pos (0UL) /*!< LIML (Bit 0) */ + #define R_ADC_B0_ADLIMTR1_LIML_Msk (0xffffUL) /*!< LIML (Bitfield-Mask: 0xffff) */ + #define R_ADC_B0_ADLIMTR1_LIMU_Pos (16UL) /*!< LIMU (Bit 16) */ + #define R_ADC_B0_ADLIMTR1_LIMU_Msk (0xffff0000UL) /*!< LIMU (Bitfield-Mask: 0xffff) */ +/* ======================================================= ADLIMTR2 ======================================================== */ + #define R_ADC_B0_ADLIMTR2_LIML_Pos (0UL) /*!< LIML (Bit 0) */ + #define R_ADC_B0_ADLIMTR2_LIML_Msk (0xffffUL) /*!< LIML (Bitfield-Mask: 0xffff) */ + #define R_ADC_B0_ADLIMTR2_LIMU_Pos (16UL) /*!< LIMU (Bit 16) */ + #define R_ADC_B0_ADLIMTR2_LIMU_Msk (0xffff0000UL) /*!< LIMU (Bitfield-Mask: 0xffff) */ +/* ======================================================= ADLIMTR3 ======================================================== */ + #define R_ADC_B0_ADLIMTR3_LIML_Pos (0UL) /*!< LIML (Bit 0) */ + #define R_ADC_B0_ADLIMTR3_LIML_Msk (0xffffUL) /*!< LIML (Bitfield-Mask: 0xffff) */ + #define R_ADC_B0_ADLIMTR3_LIMU_Pos (16UL) /*!< LIMU (Bit 16) */ + #define R_ADC_B0_ADLIMTR3_LIMU_Msk (0xffff0000UL) /*!< LIMU (Bitfield-Mask: 0xffff) */ +/* ======================================================= ADLIMTR4 ======================================================== */ + #define R_ADC_B0_ADLIMTR4_LIML_Pos (0UL) /*!< LIML (Bit 0) */ + #define R_ADC_B0_ADLIMTR4_LIML_Msk (0xffffUL) /*!< LIML (Bitfield-Mask: 0xffff) */ + #define R_ADC_B0_ADLIMTR4_LIMU_Pos (16UL) /*!< LIMU (Bit 16) */ + #define R_ADC_B0_ADLIMTR4_LIMU_Msk (0xffff0000UL) /*!< LIMU (Bitfield-Mask: 0xffff) */ +/* ======================================================= ADLIMTR5 ======================================================== */ + #define R_ADC_B0_ADLIMTR5_LIML_Pos (0UL) /*!< LIML (Bit 0) */ + #define R_ADC_B0_ADLIMTR5_LIML_Msk (0xffffUL) /*!< LIML (Bitfield-Mask: 0xffff) */ + #define R_ADC_B0_ADLIMTR5_LIMU_Pos (16UL) /*!< LIMU (Bit 16) */ + #define R_ADC_B0_ADLIMTR5_LIMU_Msk (0xffff0000UL) /*!< LIMU (Bitfield-Mask: 0xffff) */ +/* ======================================================= ADLIMTR6 ======================================================== */ + #define R_ADC_B0_ADLIMTR6_LIML_Pos (0UL) /*!< LIML (Bit 0) */ + #define R_ADC_B0_ADLIMTR6_LIML_Msk (0xffffUL) /*!< LIML (Bitfield-Mask: 0xffff) */ + #define R_ADC_B0_ADLIMTR6_LIMU_Pos (16UL) /*!< LIMU (Bit 16) */ + #define R_ADC_B0_ADLIMTR6_LIMU_Msk (0xffff0000UL) /*!< LIMU (Bitfield-Mask: 0xffff) */ +/* ======================================================= ADLIMTR7 ======================================================== */ + #define R_ADC_B0_ADLIMTR7_LIML_Pos (0UL) /*!< LIML (Bit 0) */ + #define R_ADC_B0_ADLIMTR7_LIML_Msk (0xffffUL) /*!< LIML (Bitfield-Mask: 0xffff) */ + #define R_ADC_B0_ADLIMTR7_LIMU_Pos (16UL) /*!< LIMU (Bit 16) */ + #define R_ADC_B0_ADLIMTR7_LIMU_Msk (0xffff0000UL) /*!< LIMU (Bitfield-Mask: 0xffff) */ +/* ======================================================= ADCMPENR ======================================================== */ + #define R_ADC_B0_ADCMPENR_CMPENn_Pos (0UL) /*!< CMPENn (Bit 0) */ + #define R_ADC_B0_ADCMPENR_CMPENn_Msk (0xffUL) /*!< CMPENn (Bitfield-Mask: 0xff) */ +/* ====================================================== ADCMPINTCR ======================================================= */ + #define R_ADC_B0_ADCMPINTCR_CMPIEn_Pos (0UL) /*!< CMPIEn (Bit 0) */ + #define R_ADC_B0_ADCMPINTCR_CMPIEn_Msk (0xfUL) /*!< CMPIEn (Bitfield-Mask: 0x0f) */ +/* ======================================================= ADCCMPCR0 ======================================================= */ + #define R_ADC_B0_ADCCMPCR0_CCMPCND_Pos (0UL) /*!< CCMPCND (Bit 0) */ + #define R_ADC_B0_ADCCMPCR0_CCMPCND_Msk (0x3UL) /*!< CCMPCND (Bitfield-Mask: 0x03) */ + #define R_ADC_B0_ADCCMPCR0_CCMPTBLm_Pos (16UL) /*!< CCMPTBLm (Bit 16) */ + #define R_ADC_B0_ADCCMPCR0_CCMPTBLm_Msk (0xff0000UL) /*!< CCMPTBLm (Bitfield-Mask: 0xff) */ +/* ======================================================= ADCCMPCR1 ======================================================= */ + #define R_ADC_B0_ADCCMPCR1_CCMPCND_Pos (0UL) /*!< CCMPCND (Bit 0) */ + #define R_ADC_B0_ADCCMPCR1_CCMPCND_Msk (0x3UL) /*!< CCMPCND (Bitfield-Mask: 0x03) */ + #define R_ADC_B0_ADCCMPCR1_CCMPTBLm_Pos (16UL) /*!< CCMPTBLm (Bit 16) */ + #define R_ADC_B0_ADCCMPCR1_CCMPTBLm_Msk (0xff0000UL) /*!< CCMPTBLm (Bitfield-Mask: 0xff) */ +/* ======================================================= ADCMPMDR0 ======================================================= */ + #define R_ADC_B0_ADCMPMDR0_CMPMD0_Pos (0UL) /*!< CMPMD0 (Bit 0) */ + #define R_ADC_B0_ADCMPMDR0_CMPMD0_Msk (0x3UL) /*!< CMPMD0 (Bitfield-Mask: 0x03) */ + #define R_ADC_B0_ADCMPMDR0_CMPMD1_Pos (8UL) /*!< CMPMD1 (Bit 8) */ + #define R_ADC_B0_ADCMPMDR0_CMPMD1_Msk (0x300UL) /*!< CMPMD1 (Bitfield-Mask: 0x03) */ + #define R_ADC_B0_ADCMPMDR0_CMPMD2_Pos (16UL) /*!< CMPMD2 (Bit 16) */ + #define R_ADC_B0_ADCMPMDR0_CMPMD2_Msk (0x30000UL) /*!< CMPMD2 (Bitfield-Mask: 0x03) */ + #define R_ADC_B0_ADCMPMDR0_CMPMD3_Pos (24UL) /*!< CMPMD3 (Bit 24) */ + #define R_ADC_B0_ADCMPMDR0_CMPMD3_Msk (0x3000000UL) /*!< CMPMD3 (Bitfield-Mask: 0x03) */ +/* ======================================================= ADCMPMDR1 ======================================================= */ + #define R_ADC_B0_ADCMPMDR1_CMPMD4_Pos (0UL) /*!< CMPMD4 (Bit 0) */ + #define R_ADC_B0_ADCMPMDR1_CMPMD4_Msk (0x3UL) /*!< CMPMD4 (Bitfield-Mask: 0x03) */ + #define R_ADC_B0_ADCMPMDR1_CMPMD5_Pos (8UL) /*!< CMPMD5 (Bit 8) */ + #define R_ADC_B0_ADCMPMDR1_CMPMD5_Msk (0x300UL) /*!< CMPMD5 (Bitfield-Mask: 0x03) */ + #define R_ADC_B0_ADCMPMDR1_CMPMD6_Pos (16UL) /*!< CMPMD6 (Bit 16) */ + #define R_ADC_B0_ADCMPMDR1_CMPMD6_Msk (0x30000UL) /*!< CMPMD6 (Bitfield-Mask: 0x03) */ + #define R_ADC_B0_ADCMPMDR1_CMPMD7_Pos (24UL) /*!< CMPMD7 (Bit 24) */ + #define R_ADC_B0_ADCMPMDR1_CMPMD7_Msk (0x3000000UL) /*!< CMPMD7 (Bitfield-Mask: 0x03) */ +/* ======================================================= ADCMPTBR0 ======================================================= */ + #define R_ADC_B0_ADCMPTBR0_CMPTBL_Pos (0UL) /*!< CMPTBL (Bit 0) */ + #define R_ADC_B0_ADCMPTBR0_CMPTBL_Msk (0xffffUL) /*!< CMPTBL (Bitfield-Mask: 0xffff) */ + #define R_ADC_B0_ADCMPTBR0_CMPTBH_Pos (16UL) /*!< CMPTBH (Bit 16) */ + #define R_ADC_B0_ADCMPTBR0_CMPTBH_Msk (0xffff0000UL) /*!< CMPTBH (Bitfield-Mask: 0xffff) */ +/* ======================================================= ADCMPTBR1 ======================================================= */ + #define R_ADC_B0_ADCMPTBR1_CMPTBL_Pos (0UL) /*!< CMPTBL (Bit 0) */ + #define R_ADC_B0_ADCMPTBR1_CMPTBL_Msk (0xffffUL) /*!< CMPTBL (Bitfield-Mask: 0xffff) */ + #define R_ADC_B0_ADCMPTBR1_CMPTBH_Pos (16UL) /*!< CMPTBH (Bit 16) */ + #define R_ADC_B0_ADCMPTBR1_CMPTBH_Msk (0xffff0000UL) /*!< CMPTBH (Bitfield-Mask: 0xffff) */ +/* ======================================================= ADCMPTBR2 ======================================================= */ + #define R_ADC_B0_ADCMPTBR2_CMPTBL_Pos (0UL) /*!< CMPTBL (Bit 0) */ + #define R_ADC_B0_ADCMPTBR2_CMPTBL_Msk (0xffffUL) /*!< CMPTBL (Bitfield-Mask: 0xffff) */ + #define R_ADC_B0_ADCMPTBR2_CMPTBH_Pos (16UL) /*!< CMPTBH (Bit 16) */ + #define R_ADC_B0_ADCMPTBR2_CMPTBH_Msk (0xffff0000UL) /*!< CMPTBH (Bitfield-Mask: 0xffff) */ +/* ======================================================= ADCMPTBR3 ======================================================= */ + #define R_ADC_B0_ADCMPTBR3_CMPTBL_Pos (0UL) /*!< CMPTBL (Bit 0) */ + #define R_ADC_B0_ADCMPTBR3_CMPTBL_Msk (0xffffUL) /*!< CMPTBL (Bitfield-Mask: 0xffff) */ + #define R_ADC_B0_ADCMPTBR3_CMPTBH_Pos (16UL) /*!< CMPTBH (Bit 16) */ + #define R_ADC_B0_ADCMPTBR3_CMPTBH_Msk (0xffff0000UL) /*!< CMPTBH (Bitfield-Mask: 0xffff) */ +/* ======================================================= ADCMPTBR4 ======================================================= */ + #define R_ADC_B0_ADCMPTBR4_CMPTBL_Pos (0UL) /*!< CMPTBL (Bit 0) */ + #define R_ADC_B0_ADCMPTBR4_CMPTBL_Msk (0xffffUL) /*!< CMPTBL (Bitfield-Mask: 0xffff) */ + #define R_ADC_B0_ADCMPTBR4_CMPTBH_Pos (16UL) /*!< CMPTBH (Bit 16) */ + #define R_ADC_B0_ADCMPTBR4_CMPTBH_Msk (0xffff0000UL) /*!< CMPTBH (Bitfield-Mask: 0xffff) */ +/* ======================================================= ADCMPTBR5 ======================================================= */ + #define R_ADC_B0_ADCMPTBR5_CMPTBL_Pos (0UL) /*!< CMPTBL (Bit 0) */ + #define R_ADC_B0_ADCMPTBR5_CMPTBL_Msk (0xffffUL) /*!< CMPTBL (Bitfield-Mask: 0xffff) */ + #define R_ADC_B0_ADCMPTBR5_CMPTBH_Pos (16UL) /*!< CMPTBH (Bit 16) */ + #define R_ADC_B0_ADCMPTBR5_CMPTBH_Msk (0xffff0000UL) /*!< CMPTBH (Bitfield-Mask: 0xffff) */ +/* ======================================================= ADCMPTBR6 ======================================================= */ + #define R_ADC_B0_ADCMPTBR6_CMPTBL_Pos (0UL) /*!< CMPTBL (Bit 0) */ + #define R_ADC_B0_ADCMPTBR6_CMPTBL_Msk (0xffffUL) /*!< CMPTBL (Bitfield-Mask: 0xffff) */ + #define R_ADC_B0_ADCMPTBR6_CMPTBH_Pos (16UL) /*!< CMPTBH (Bit 16) */ + #define R_ADC_B0_ADCMPTBR6_CMPTBH_Msk (0xffff0000UL) /*!< CMPTBH (Bitfield-Mask: 0xffff) */ +/* ======================================================= ADCMPTBR7 ======================================================= */ + #define R_ADC_B0_ADCMPTBR7_CMPTBL_Pos (0UL) /*!< CMPTBL (Bit 0) */ + #define R_ADC_B0_ADCMPTBR7_CMPTBL_Msk (0xffffUL) /*!< CMPTBL (Bitfield-Mask: 0xffff) */ + #define R_ADC_B0_ADCMPTBR7_CMPTBH_Pos (16UL) /*!< CMPTBH (Bit 16) */ + #define R_ADC_B0_ADCMPTBR7_CMPTBH_Msk (0xffff0000UL) /*!< CMPTBH (Bitfield-Mask: 0xffff) */ +/* ======================================================= ADFIFOCR ======================================================== */ + #define R_ADC_B0_ADFIFOCR_FIFOEN0_Pos (0UL) /*!< FIFOEN0 (Bit 0) */ + #define R_ADC_B0_ADFIFOCR_FIFOEN0_Msk (0x1UL) /*!< FIFOEN0 (Bitfield-Mask: 0x01) */ + #define R_ADC_B0_ADFIFOCR_FIFOEN1_Pos (1UL) /*!< FIFOEN1 (Bit 1) */ + #define R_ADC_B0_ADFIFOCR_FIFOEN1_Msk (0x2UL) /*!< FIFOEN1 (Bitfield-Mask: 0x01) */ + #define R_ADC_B0_ADFIFOCR_FIFOEN2_Pos (2UL) /*!< FIFOEN2 (Bit 2) */ + #define R_ADC_B0_ADFIFOCR_FIFOEN2_Msk (0x4UL) /*!< FIFOEN2 (Bitfield-Mask: 0x01) */ + #define R_ADC_B0_ADFIFOCR_FIFOEN3_Pos (3UL) /*!< FIFOEN3 (Bit 3) */ + #define R_ADC_B0_ADFIFOCR_FIFOEN3_Msk (0x8UL) /*!< FIFOEN3 (Bitfield-Mask: 0x01) */ + #define R_ADC_B0_ADFIFOCR_FIFOEN4_Pos (4UL) /*!< FIFOEN4 (Bit 4) */ + #define R_ADC_B0_ADFIFOCR_FIFOEN4_Msk (0x10UL) /*!< FIFOEN4 (Bitfield-Mask: 0x01) */ + #define R_ADC_B0_ADFIFOCR_FIFOEN5_Pos (5UL) /*!< FIFOEN5 (Bit 5) */ + #define R_ADC_B0_ADFIFOCR_FIFOEN5_Msk (0x20UL) /*!< FIFOEN5 (Bitfield-Mask: 0x01) */ + #define R_ADC_B0_ADFIFOCR_FIFOEN6_Pos (6UL) /*!< FIFOEN6 (Bit 6) */ + #define R_ADC_B0_ADFIFOCR_FIFOEN6_Msk (0x40UL) /*!< FIFOEN6 (Bitfield-Mask: 0x01) */ + #define R_ADC_B0_ADFIFOCR_FIFOEN7_Pos (7UL) /*!< FIFOEN7 (Bit 7) */ + #define R_ADC_B0_ADFIFOCR_FIFOEN7_Msk (0x80UL) /*!< FIFOEN7 (Bitfield-Mask: 0x01) */ + #define R_ADC_B0_ADFIFOCR_FIFOEN8_Pos (8UL) /*!< FIFOEN8 (Bit 8) */ + #define R_ADC_B0_ADFIFOCR_FIFOEN8_Msk (0x100UL) /*!< FIFOEN8 (Bitfield-Mask: 0x01) */ +/* ====================================================== ADFIFOINTCR ====================================================== */ + #define R_ADC_B0_ADFIFOINTCR_FIFOIE0_Pos (0UL) /*!< FIFOIE0 (Bit 0) */ + #define R_ADC_B0_ADFIFOINTCR_FIFOIE0_Msk (0x1UL) /*!< FIFOIE0 (Bitfield-Mask: 0x01) */ + #define R_ADC_B0_ADFIFOINTCR_FIFOIE1_Pos (1UL) /*!< FIFOIE1 (Bit 1) */ + #define R_ADC_B0_ADFIFOINTCR_FIFOIE1_Msk (0x2UL) /*!< FIFOIE1 (Bitfield-Mask: 0x01) */ + #define R_ADC_B0_ADFIFOINTCR_FIFOIE2_Pos (2UL) /*!< FIFOIE2 (Bit 2) */ + #define R_ADC_B0_ADFIFOINTCR_FIFOIE2_Msk (0x4UL) /*!< FIFOIE2 (Bitfield-Mask: 0x01) */ + #define R_ADC_B0_ADFIFOINTCR_FIFOIE3_Pos (3UL) /*!< FIFOIE3 (Bit 3) */ + #define R_ADC_B0_ADFIFOINTCR_FIFOIE3_Msk (0x8UL) /*!< FIFOIE3 (Bitfield-Mask: 0x01) */ + #define R_ADC_B0_ADFIFOINTCR_FIFOIE4_Pos (4UL) /*!< FIFOIE4 (Bit 4) */ + #define R_ADC_B0_ADFIFOINTCR_FIFOIE4_Msk (0x10UL) /*!< FIFOIE4 (Bitfield-Mask: 0x01) */ + #define R_ADC_B0_ADFIFOINTCR_FIFOIE5_Pos (5UL) /*!< FIFOIE5 (Bit 5) */ + #define R_ADC_B0_ADFIFOINTCR_FIFOIE5_Msk (0x20UL) /*!< FIFOIE5 (Bitfield-Mask: 0x01) */ + #define R_ADC_B0_ADFIFOINTCR_FIFOIE6_Pos (6UL) /*!< FIFOIE6 (Bit 6) */ + #define R_ADC_B0_ADFIFOINTCR_FIFOIE6_Msk (0x40UL) /*!< FIFOIE6 (Bitfield-Mask: 0x01) */ + #define R_ADC_B0_ADFIFOINTCR_FIFOIE7_Pos (7UL) /*!< FIFOIE7 (Bit 7) */ + #define R_ADC_B0_ADFIFOINTCR_FIFOIE7_Msk (0x80UL) /*!< FIFOIE7 (Bitfield-Mask: 0x01) */ + #define R_ADC_B0_ADFIFOINTCR_FIFOIE8_Pos (8UL) /*!< FIFOIE8 (Bit 8) */ + #define R_ADC_B0_ADFIFOINTCR_FIFOIE8_Msk (0x100UL) /*!< FIFOIE8 (Bitfield-Mask: 0x01) */ +/* ===================================================== ADFIFOINTLR0 ====================================================== */ + #define R_ADC_B0_ADFIFOINTLR0_FIFOILV0_Pos (0UL) /*!< FIFOILV0 (Bit 0) */ + #define R_ADC_B0_ADFIFOINTLR0_FIFOILV0_Msk (0xfUL) /*!< FIFOILV0 (Bitfield-Mask: 0x0f) */ + #define R_ADC_B0_ADFIFOINTLR0_FIFOILV1_Pos (16UL) /*!< FIFOILV1 (Bit 16) */ + #define R_ADC_B0_ADFIFOINTLR0_FIFOILV1_Msk (0xf0000UL) /*!< FIFOILV1 (Bitfield-Mask: 0x0f) */ +/* ===================================================== ADFIFOINTLR1 ====================================================== */ + #define R_ADC_B0_ADFIFOINTLR1_FIFOILV2_Pos (0UL) /*!< FIFOILV2 (Bit 0) */ + #define R_ADC_B0_ADFIFOINTLR1_FIFOILV2_Msk (0xfUL) /*!< FIFOILV2 (Bitfield-Mask: 0x0f) */ + #define R_ADC_B0_ADFIFOINTLR1_FIFOILV3_Pos (16UL) /*!< FIFOILV3 (Bit 16) */ + #define R_ADC_B0_ADFIFOINTLR1_FIFOILV3_Msk (0xf0000UL) /*!< FIFOILV3 (Bitfield-Mask: 0x0f) */ +/* ===================================================== ADFIFOINTLR2 ====================================================== */ + #define R_ADC_B0_ADFIFOINTLR2_FIFOILV4_Pos (0UL) /*!< FIFOILV4 (Bit 0) */ + #define R_ADC_B0_ADFIFOINTLR2_FIFOILV4_Msk (0xfUL) /*!< FIFOILV4 (Bitfield-Mask: 0x0f) */ + #define R_ADC_B0_ADFIFOINTLR2_FIFOILV5_Pos (16UL) /*!< FIFOILV5 (Bit 16) */ + #define R_ADC_B0_ADFIFOINTLR2_FIFOILV5_Msk (0xf0000UL) /*!< FIFOILV5 (Bitfield-Mask: 0x0f) */ +/* ===================================================== ADFIFOINTLR3 ====================================================== */ + #define R_ADC_B0_ADFIFOINTLR3_FIFOILV6_Pos (0UL) /*!< FIFOILV6 (Bit 0) */ + #define R_ADC_B0_ADFIFOINTLR3_FIFOILV6_Msk (0xfUL) /*!< FIFOILV6 (Bitfield-Mask: 0x0f) */ + #define R_ADC_B0_ADFIFOINTLR3_FIFOILV7_Pos (16UL) /*!< FIFOILV7 (Bit 16) */ + #define R_ADC_B0_ADFIFOINTLR3_FIFOILV7_Msk (0xf0000UL) /*!< FIFOILV7 (Bitfield-Mask: 0x0f) */ +/* ===================================================== ADFIFOINTLR4 ====================================================== */ + #define R_ADC_B0_ADFIFOINTLR4_FIFOILV8_Pos (0UL) /*!< FIFOILV8 (Bit 0) */ + #define R_ADC_B0_ADFIFOINTLR4_FIFOILV8_Msk (0xfUL) /*!< FIFOILV8 (Bitfield-Mask: 0x0f) */ +/* ======================================================== ADCHCR0 ======================================================== */ + #define R_ADC_B0_ADCHCR0_SGSEL_Pos (0UL) /*!< SGSEL (Bit 0) */ + #define R_ADC_B0_ADCHCR0_SGSEL_Msk (0x1fUL) /*!< SGSEL (Bitfield-Mask: 0x1f) */ + #define R_ADC_B0_ADCHCR0_CNVCS_Pos (8UL) /*!< CNVCS (Bit 8) */ + #define R_ADC_B0_ADCHCR0_CNVCS_Msk (0x7f00UL) /*!< CNVCS (Bitfield-Mask: 0x7f) */ + #define R_ADC_B0_ADCHCR0_AINMD_Pos (15UL) /*!< AINMD (Bit 15) */ + #define R_ADC_B0_ADCHCR0_AINMD_Msk (0x8000UL) /*!< AINMD (Bitfield-Mask: 0x01) */ + #define R_ADC_B0_ADCHCR0_SSTSEL_Pos (16UL) /*!< SSTSEL (Bit 16) */ + #define R_ADC_B0_ADCHCR0_SSTSEL_Msk (0xf0000UL) /*!< SSTSEL (Bitfield-Mask: 0x0f) */ +/* ======================================================== ADCHCR1 ======================================================== */ + #define R_ADC_B0_ADCHCR1_SGSEL_Pos (0UL) /*!< SGSEL (Bit 0) */ + #define R_ADC_B0_ADCHCR1_SGSEL_Msk (0x1fUL) /*!< SGSEL (Bitfield-Mask: 0x1f) */ + #define R_ADC_B0_ADCHCR1_CNVCS_Pos (8UL) /*!< CNVCS (Bit 8) */ + #define R_ADC_B0_ADCHCR1_CNVCS_Msk (0x7f00UL) /*!< CNVCS (Bitfield-Mask: 0x7f) */ + #define R_ADC_B0_ADCHCR1_AINMD_Pos (15UL) /*!< AINMD (Bit 15) */ + #define R_ADC_B0_ADCHCR1_AINMD_Msk (0x8000UL) /*!< AINMD (Bitfield-Mask: 0x01) */ + #define R_ADC_B0_ADCHCR1_SSTSEL_Pos (16UL) /*!< SSTSEL (Bit 16) */ + #define R_ADC_B0_ADCHCR1_SSTSEL_Msk (0xf0000UL) /*!< SSTSEL (Bitfield-Mask: 0x0f) */ +/* ======================================================== ADCHCR2 ======================================================== */ + #define R_ADC_B0_ADCHCR2_SGSEL_Pos (0UL) /*!< SGSEL (Bit 0) */ + #define R_ADC_B0_ADCHCR2_SGSEL_Msk (0x1fUL) /*!< SGSEL (Bitfield-Mask: 0x1f) */ + #define R_ADC_B0_ADCHCR2_CNVCS_Pos (8UL) /*!< CNVCS (Bit 8) */ + #define R_ADC_B0_ADCHCR2_CNVCS_Msk (0x7f00UL) /*!< CNVCS (Bitfield-Mask: 0x7f) */ + #define R_ADC_B0_ADCHCR2_AINMD_Pos (15UL) /*!< AINMD (Bit 15) */ + #define R_ADC_B0_ADCHCR2_AINMD_Msk (0x8000UL) /*!< AINMD (Bitfield-Mask: 0x01) */ + #define R_ADC_B0_ADCHCR2_SSTSEL_Pos (16UL) /*!< SSTSEL (Bit 16) */ + #define R_ADC_B0_ADCHCR2_SSTSEL_Msk (0xf0000UL) /*!< SSTSEL (Bitfield-Mask: 0x0f) */ +/* ======================================================== ADCHCR3 ======================================================== */ + #define R_ADC_B0_ADCHCR3_SGSEL_Pos (0UL) /*!< SGSEL (Bit 0) */ + #define R_ADC_B0_ADCHCR3_SGSEL_Msk (0x1fUL) /*!< SGSEL (Bitfield-Mask: 0x1f) */ + #define R_ADC_B0_ADCHCR3_CNVCS_Pos (8UL) /*!< CNVCS (Bit 8) */ + #define R_ADC_B0_ADCHCR3_CNVCS_Msk (0x7f00UL) /*!< CNVCS (Bitfield-Mask: 0x7f) */ + #define R_ADC_B0_ADCHCR3_AINMD_Pos (15UL) /*!< AINMD (Bit 15) */ + #define R_ADC_B0_ADCHCR3_AINMD_Msk (0x8000UL) /*!< AINMD (Bitfield-Mask: 0x01) */ + #define R_ADC_B0_ADCHCR3_SSTSEL_Pos (16UL) /*!< SSTSEL (Bit 16) */ + #define R_ADC_B0_ADCHCR3_SSTSEL_Msk (0xf0000UL) /*!< SSTSEL (Bitfield-Mask: 0x0f) */ +/* ======================================================== ADCHCR4 ======================================================== */ + #define R_ADC_B0_ADCHCR4_SGSEL_Pos (0UL) /*!< SGSEL (Bit 0) */ + #define R_ADC_B0_ADCHCR4_SGSEL_Msk (0x1fUL) /*!< SGSEL (Bitfield-Mask: 0x1f) */ + #define R_ADC_B0_ADCHCR4_CNVCS_Pos (8UL) /*!< CNVCS (Bit 8) */ + #define R_ADC_B0_ADCHCR4_CNVCS_Msk (0x7f00UL) /*!< CNVCS (Bitfield-Mask: 0x7f) */ + #define R_ADC_B0_ADCHCR4_AINMD_Pos (15UL) /*!< AINMD (Bit 15) */ + #define R_ADC_B0_ADCHCR4_AINMD_Msk (0x8000UL) /*!< AINMD (Bitfield-Mask: 0x01) */ + #define R_ADC_B0_ADCHCR4_SSTSEL_Pos (16UL) /*!< SSTSEL (Bit 16) */ + #define R_ADC_B0_ADCHCR4_SSTSEL_Msk (0xf0000UL) /*!< SSTSEL (Bitfield-Mask: 0x0f) */ +/* ======================================================== ADCHCR5 ======================================================== */ + #define R_ADC_B0_ADCHCR5_SGSEL_Pos (0UL) /*!< SGSEL (Bit 0) */ + #define R_ADC_B0_ADCHCR5_SGSEL_Msk (0x1fUL) /*!< SGSEL (Bitfield-Mask: 0x1f) */ + #define R_ADC_B0_ADCHCR5_CNVCS_Pos (8UL) /*!< CNVCS (Bit 8) */ + #define R_ADC_B0_ADCHCR5_CNVCS_Msk (0x7f00UL) /*!< CNVCS (Bitfield-Mask: 0x7f) */ + #define R_ADC_B0_ADCHCR5_AINMD_Pos (15UL) /*!< AINMD (Bit 15) */ + #define R_ADC_B0_ADCHCR5_AINMD_Msk (0x8000UL) /*!< AINMD (Bitfield-Mask: 0x01) */ + #define R_ADC_B0_ADCHCR5_SSTSEL_Pos (16UL) /*!< SSTSEL (Bit 16) */ + #define R_ADC_B0_ADCHCR5_SSTSEL_Msk (0xf0000UL) /*!< SSTSEL (Bitfield-Mask: 0x0f) */ +/* ======================================================== ADCHCR6 ======================================================== */ + #define R_ADC_B0_ADCHCR6_SGSEL_Pos (0UL) /*!< SGSEL (Bit 0) */ + #define R_ADC_B0_ADCHCR6_SGSEL_Msk (0x1fUL) /*!< SGSEL (Bitfield-Mask: 0x1f) */ + #define R_ADC_B0_ADCHCR6_CNVCS_Pos (8UL) /*!< CNVCS (Bit 8) */ + #define R_ADC_B0_ADCHCR6_CNVCS_Msk (0x7f00UL) /*!< CNVCS (Bitfield-Mask: 0x7f) */ + #define R_ADC_B0_ADCHCR6_AINMD_Pos (15UL) /*!< AINMD (Bit 15) */ + #define R_ADC_B0_ADCHCR6_AINMD_Msk (0x8000UL) /*!< AINMD (Bitfield-Mask: 0x01) */ + #define R_ADC_B0_ADCHCR6_SSTSEL_Pos (16UL) /*!< SSTSEL (Bit 16) */ + #define R_ADC_B0_ADCHCR6_SSTSEL_Msk (0xf0000UL) /*!< SSTSEL (Bitfield-Mask: 0x0f) */ +/* ======================================================== ADCHCR7 ======================================================== */ + #define R_ADC_B0_ADCHCR7_SGSEL_Pos (0UL) /*!< SGSEL (Bit 0) */ + #define R_ADC_B0_ADCHCR7_SGSEL_Msk (0x1fUL) /*!< SGSEL (Bitfield-Mask: 0x1f) */ + #define R_ADC_B0_ADCHCR7_CNVCS_Pos (8UL) /*!< CNVCS (Bit 8) */ + #define R_ADC_B0_ADCHCR7_CNVCS_Msk (0x7f00UL) /*!< CNVCS (Bitfield-Mask: 0x7f) */ + #define R_ADC_B0_ADCHCR7_AINMD_Pos (15UL) /*!< AINMD (Bit 15) */ + #define R_ADC_B0_ADCHCR7_AINMD_Msk (0x8000UL) /*!< AINMD (Bitfield-Mask: 0x01) */ + #define R_ADC_B0_ADCHCR7_SSTSEL_Pos (16UL) /*!< SSTSEL (Bit 16) */ + #define R_ADC_B0_ADCHCR7_SSTSEL_Msk (0xf0000UL) /*!< SSTSEL (Bitfield-Mask: 0x0f) */ +/* ======================================================== ADCHCR8 ======================================================== */ + #define R_ADC_B0_ADCHCR8_SGSEL_Pos (0UL) /*!< SGSEL (Bit 0) */ + #define R_ADC_B0_ADCHCR8_SGSEL_Msk (0x1fUL) /*!< SGSEL (Bitfield-Mask: 0x1f) */ + #define R_ADC_B0_ADCHCR8_CNVCS_Pos (8UL) /*!< CNVCS (Bit 8) */ + #define R_ADC_B0_ADCHCR8_CNVCS_Msk (0x7f00UL) /*!< CNVCS (Bitfield-Mask: 0x7f) */ + #define R_ADC_B0_ADCHCR8_AINMD_Pos (15UL) /*!< AINMD (Bit 15) */ + #define R_ADC_B0_ADCHCR8_AINMD_Msk (0x8000UL) /*!< AINMD (Bitfield-Mask: 0x01) */ + #define R_ADC_B0_ADCHCR8_SSTSEL_Pos (16UL) /*!< SSTSEL (Bit 16) */ + #define R_ADC_B0_ADCHCR8_SSTSEL_Msk (0xf0000UL) /*!< SSTSEL (Bitfield-Mask: 0x0f) */ +/* ======================================================== ADCHCR9 ======================================================== */ + #define R_ADC_B0_ADCHCR9_SGSEL_Pos (0UL) /*!< SGSEL (Bit 0) */ + #define R_ADC_B0_ADCHCR9_SGSEL_Msk (0x1fUL) /*!< SGSEL (Bitfield-Mask: 0x1f) */ + #define R_ADC_B0_ADCHCR9_CNVCS_Pos (8UL) /*!< CNVCS (Bit 8) */ + #define R_ADC_B0_ADCHCR9_CNVCS_Msk (0x7f00UL) /*!< CNVCS (Bitfield-Mask: 0x7f) */ + #define R_ADC_B0_ADCHCR9_AINMD_Pos (15UL) /*!< AINMD (Bit 15) */ + #define R_ADC_B0_ADCHCR9_AINMD_Msk (0x8000UL) /*!< AINMD (Bitfield-Mask: 0x01) */ + #define R_ADC_B0_ADCHCR9_SSTSEL_Pos (16UL) /*!< SSTSEL (Bit 16) */ + #define R_ADC_B0_ADCHCR9_SSTSEL_Msk (0xf0000UL) /*!< SSTSEL (Bitfield-Mask: 0x0f) */ +/* ======================================================= ADCHCR10 ======================================================== */ + #define R_ADC_B0_ADCHCR10_SGSEL_Pos (0UL) /*!< SGSEL (Bit 0) */ + #define R_ADC_B0_ADCHCR10_SGSEL_Msk (0x1fUL) /*!< SGSEL (Bitfield-Mask: 0x1f) */ + #define R_ADC_B0_ADCHCR10_CNVCS_Pos (8UL) /*!< CNVCS (Bit 8) */ + #define R_ADC_B0_ADCHCR10_CNVCS_Msk (0x7f00UL) /*!< CNVCS (Bitfield-Mask: 0x7f) */ + #define R_ADC_B0_ADCHCR10_AINMD_Pos (15UL) /*!< AINMD (Bit 15) */ + #define R_ADC_B0_ADCHCR10_AINMD_Msk (0x8000UL) /*!< AINMD (Bitfield-Mask: 0x01) */ + #define R_ADC_B0_ADCHCR10_SSTSEL_Pos (16UL) /*!< SSTSEL (Bit 16) */ + #define R_ADC_B0_ADCHCR10_SSTSEL_Msk (0xf0000UL) /*!< SSTSEL (Bitfield-Mask: 0x0f) */ +/* ======================================================= ADCHCR11 ======================================================== */ + #define R_ADC_B0_ADCHCR11_SGSEL_Pos (0UL) /*!< SGSEL (Bit 0) */ + #define R_ADC_B0_ADCHCR11_SGSEL_Msk (0x1fUL) /*!< SGSEL (Bitfield-Mask: 0x1f) */ + #define R_ADC_B0_ADCHCR11_CNVCS_Pos (8UL) /*!< CNVCS (Bit 8) */ + #define R_ADC_B0_ADCHCR11_CNVCS_Msk (0x7f00UL) /*!< CNVCS (Bitfield-Mask: 0x7f) */ + #define R_ADC_B0_ADCHCR11_AINMD_Pos (15UL) /*!< AINMD (Bit 15) */ + #define R_ADC_B0_ADCHCR11_AINMD_Msk (0x8000UL) /*!< AINMD (Bitfield-Mask: 0x01) */ + #define R_ADC_B0_ADCHCR11_SSTSEL_Pos (16UL) /*!< SSTSEL (Bit 16) */ + #define R_ADC_B0_ADCHCR11_SSTSEL_Msk (0xf0000UL) /*!< SSTSEL (Bitfield-Mask: 0x0f) */ +/* ======================================================= ADCHCR12 ======================================================== */ + #define R_ADC_B0_ADCHCR12_SGSEL_Pos (0UL) /*!< SGSEL (Bit 0) */ + #define R_ADC_B0_ADCHCR12_SGSEL_Msk (0x1fUL) /*!< SGSEL (Bitfield-Mask: 0x1f) */ + #define R_ADC_B0_ADCHCR12_CNVCS_Pos (8UL) /*!< CNVCS (Bit 8) */ + #define R_ADC_B0_ADCHCR12_CNVCS_Msk (0x7f00UL) /*!< CNVCS (Bitfield-Mask: 0x7f) */ + #define R_ADC_B0_ADCHCR12_AINMD_Pos (15UL) /*!< AINMD (Bit 15) */ + #define R_ADC_B0_ADCHCR12_AINMD_Msk (0x8000UL) /*!< AINMD (Bitfield-Mask: 0x01) */ + #define R_ADC_B0_ADCHCR12_SSTSEL_Pos (16UL) /*!< SSTSEL (Bit 16) */ + #define R_ADC_B0_ADCHCR12_SSTSEL_Msk (0xf0000UL) /*!< SSTSEL (Bitfield-Mask: 0x0f) */ +/* ======================================================= ADCHCR13 ======================================================== */ + #define R_ADC_B0_ADCHCR13_SGSEL_Pos (0UL) /*!< SGSEL (Bit 0) */ + #define R_ADC_B0_ADCHCR13_SGSEL_Msk (0x1fUL) /*!< SGSEL (Bitfield-Mask: 0x1f) */ + #define R_ADC_B0_ADCHCR13_CNVCS_Pos (8UL) /*!< CNVCS (Bit 8) */ + #define R_ADC_B0_ADCHCR13_CNVCS_Msk (0x7f00UL) /*!< CNVCS (Bitfield-Mask: 0x7f) */ + #define R_ADC_B0_ADCHCR13_AINMD_Pos (15UL) /*!< AINMD (Bit 15) */ + #define R_ADC_B0_ADCHCR13_AINMD_Msk (0x8000UL) /*!< AINMD (Bitfield-Mask: 0x01) */ + #define R_ADC_B0_ADCHCR13_SSTSEL_Pos (16UL) /*!< SSTSEL (Bit 16) */ + #define R_ADC_B0_ADCHCR13_SSTSEL_Msk (0xf0000UL) /*!< SSTSEL (Bitfield-Mask: 0x0f) */ +/* ======================================================= ADCHCR14 ======================================================== */ + #define R_ADC_B0_ADCHCR14_SGSEL_Pos (0UL) /*!< SGSEL (Bit 0) */ + #define R_ADC_B0_ADCHCR14_SGSEL_Msk (0x1fUL) /*!< SGSEL (Bitfield-Mask: 0x1f) */ + #define R_ADC_B0_ADCHCR14_CNVCS_Pos (8UL) /*!< CNVCS (Bit 8) */ + #define R_ADC_B0_ADCHCR14_CNVCS_Msk (0x7f00UL) /*!< CNVCS (Bitfield-Mask: 0x7f) */ + #define R_ADC_B0_ADCHCR14_AINMD_Pos (15UL) /*!< AINMD (Bit 15) */ + #define R_ADC_B0_ADCHCR14_AINMD_Msk (0x8000UL) /*!< AINMD (Bitfield-Mask: 0x01) */ + #define R_ADC_B0_ADCHCR14_SSTSEL_Pos (16UL) /*!< SSTSEL (Bit 16) */ + #define R_ADC_B0_ADCHCR14_SSTSEL_Msk (0xf0000UL) /*!< SSTSEL (Bitfield-Mask: 0x0f) */ +/* ======================================================= ADCHCR15 ======================================================== */ + #define R_ADC_B0_ADCHCR15_SGSEL_Pos (0UL) /*!< SGSEL (Bit 0) */ + #define R_ADC_B0_ADCHCR15_SGSEL_Msk (0x1fUL) /*!< SGSEL (Bitfield-Mask: 0x1f) */ + #define R_ADC_B0_ADCHCR15_CNVCS_Pos (8UL) /*!< CNVCS (Bit 8) */ + #define R_ADC_B0_ADCHCR15_CNVCS_Msk (0x7f00UL) /*!< CNVCS (Bitfield-Mask: 0x7f) */ + #define R_ADC_B0_ADCHCR15_AINMD_Pos (15UL) /*!< AINMD (Bit 15) */ + #define R_ADC_B0_ADCHCR15_AINMD_Msk (0x8000UL) /*!< AINMD (Bitfield-Mask: 0x01) */ + #define R_ADC_B0_ADCHCR15_SSTSEL_Pos (16UL) /*!< SSTSEL (Bit 16) */ + #define R_ADC_B0_ADCHCR15_SSTSEL_Msk (0xf0000UL) /*!< SSTSEL (Bitfield-Mask: 0x0f) */ +/* ======================================================= ADCHCR16 ======================================================== */ + #define R_ADC_B0_ADCHCR16_SGSEL_Pos (0UL) /*!< SGSEL (Bit 0) */ + #define R_ADC_B0_ADCHCR16_SGSEL_Msk (0x1fUL) /*!< SGSEL (Bitfield-Mask: 0x1f) */ + #define R_ADC_B0_ADCHCR16_CNVCS_Pos (8UL) /*!< CNVCS (Bit 8) */ + #define R_ADC_B0_ADCHCR16_CNVCS_Msk (0x7f00UL) /*!< CNVCS (Bitfield-Mask: 0x7f) */ + #define R_ADC_B0_ADCHCR16_AINMD_Pos (15UL) /*!< AINMD (Bit 15) */ + #define R_ADC_B0_ADCHCR16_AINMD_Msk (0x8000UL) /*!< AINMD (Bitfield-Mask: 0x01) */ + #define R_ADC_B0_ADCHCR16_SSTSEL_Pos (16UL) /*!< SSTSEL (Bit 16) */ + #define R_ADC_B0_ADCHCR16_SSTSEL_Msk (0xf0000UL) /*!< SSTSEL (Bitfield-Mask: 0x0f) */ +/* ======================================================= ADCHCR17 ======================================================== */ + #define R_ADC_B0_ADCHCR17_SGSEL_Pos (0UL) /*!< SGSEL (Bit 0) */ + #define R_ADC_B0_ADCHCR17_SGSEL_Msk (0x1fUL) /*!< SGSEL (Bitfield-Mask: 0x1f) */ + #define R_ADC_B0_ADCHCR17_CNVCS_Pos (8UL) /*!< CNVCS (Bit 8) */ + #define R_ADC_B0_ADCHCR17_CNVCS_Msk (0x7f00UL) /*!< CNVCS (Bitfield-Mask: 0x7f) */ + #define R_ADC_B0_ADCHCR17_AINMD_Pos (15UL) /*!< AINMD (Bit 15) */ + #define R_ADC_B0_ADCHCR17_AINMD_Msk (0x8000UL) /*!< AINMD (Bitfield-Mask: 0x01) */ + #define R_ADC_B0_ADCHCR17_SSTSEL_Pos (16UL) /*!< SSTSEL (Bit 16) */ + #define R_ADC_B0_ADCHCR17_SSTSEL_Msk (0xf0000UL) /*!< SSTSEL (Bitfield-Mask: 0x0f) */ +/* ======================================================= ADCHCR18 ======================================================== */ + #define R_ADC_B0_ADCHCR18_SGSEL_Pos (0UL) /*!< SGSEL (Bit 0) */ + #define R_ADC_B0_ADCHCR18_SGSEL_Msk (0x1fUL) /*!< SGSEL (Bitfield-Mask: 0x1f) */ + #define R_ADC_B0_ADCHCR18_CNVCS_Pos (8UL) /*!< CNVCS (Bit 8) */ + #define R_ADC_B0_ADCHCR18_CNVCS_Msk (0x7f00UL) /*!< CNVCS (Bitfield-Mask: 0x7f) */ + #define R_ADC_B0_ADCHCR18_AINMD_Pos (15UL) /*!< AINMD (Bit 15) */ + #define R_ADC_B0_ADCHCR18_AINMD_Msk (0x8000UL) /*!< AINMD (Bitfield-Mask: 0x01) */ + #define R_ADC_B0_ADCHCR18_SSTSEL_Pos (16UL) /*!< SSTSEL (Bit 16) */ + #define R_ADC_B0_ADCHCR18_SSTSEL_Msk (0xf0000UL) /*!< SSTSEL (Bitfield-Mask: 0x0f) */ +/* ======================================================= ADCHCR19 ======================================================== */ + #define R_ADC_B0_ADCHCR19_SGSEL_Pos (0UL) /*!< SGSEL (Bit 0) */ + #define R_ADC_B0_ADCHCR19_SGSEL_Msk (0x1fUL) /*!< SGSEL (Bitfield-Mask: 0x1f) */ + #define R_ADC_B0_ADCHCR19_CNVCS_Pos (8UL) /*!< CNVCS (Bit 8) */ + #define R_ADC_B0_ADCHCR19_CNVCS_Msk (0x7f00UL) /*!< CNVCS (Bitfield-Mask: 0x7f) */ + #define R_ADC_B0_ADCHCR19_AINMD_Pos (15UL) /*!< AINMD (Bit 15) */ + #define R_ADC_B0_ADCHCR19_AINMD_Msk (0x8000UL) /*!< AINMD (Bitfield-Mask: 0x01) */ + #define R_ADC_B0_ADCHCR19_SSTSEL_Pos (16UL) /*!< SSTSEL (Bit 16) */ + #define R_ADC_B0_ADCHCR19_SSTSEL_Msk (0xf0000UL) /*!< SSTSEL (Bitfield-Mask: 0x0f) */ +/* ======================================================= ADCHCR20 ======================================================== */ + #define R_ADC_B0_ADCHCR20_SGSEL_Pos (0UL) /*!< SGSEL (Bit 0) */ + #define R_ADC_B0_ADCHCR20_SGSEL_Msk (0x1fUL) /*!< SGSEL (Bitfield-Mask: 0x1f) */ + #define R_ADC_B0_ADCHCR20_CNVCS_Pos (8UL) /*!< CNVCS (Bit 8) */ + #define R_ADC_B0_ADCHCR20_CNVCS_Msk (0x7f00UL) /*!< CNVCS (Bitfield-Mask: 0x7f) */ + #define R_ADC_B0_ADCHCR20_AINMD_Pos (15UL) /*!< AINMD (Bit 15) */ + #define R_ADC_B0_ADCHCR20_AINMD_Msk (0x8000UL) /*!< AINMD (Bitfield-Mask: 0x01) */ + #define R_ADC_B0_ADCHCR20_SSTSEL_Pos (16UL) /*!< SSTSEL (Bit 16) */ + #define R_ADC_B0_ADCHCR20_SSTSEL_Msk (0xf0000UL) /*!< SSTSEL (Bitfield-Mask: 0x0f) */ +/* ======================================================= ADCHCR21 ======================================================== */ + #define R_ADC_B0_ADCHCR21_SGSEL_Pos (0UL) /*!< SGSEL (Bit 0) */ + #define R_ADC_B0_ADCHCR21_SGSEL_Msk (0x1fUL) /*!< SGSEL (Bitfield-Mask: 0x1f) */ + #define R_ADC_B0_ADCHCR21_CNVCS_Pos (8UL) /*!< CNVCS (Bit 8) */ + #define R_ADC_B0_ADCHCR21_CNVCS_Msk (0x7f00UL) /*!< CNVCS (Bitfield-Mask: 0x7f) */ + #define R_ADC_B0_ADCHCR21_AINMD_Pos (15UL) /*!< AINMD (Bit 15) */ + #define R_ADC_B0_ADCHCR21_AINMD_Msk (0x8000UL) /*!< AINMD (Bitfield-Mask: 0x01) */ + #define R_ADC_B0_ADCHCR21_SSTSEL_Pos (16UL) /*!< SSTSEL (Bit 16) */ + #define R_ADC_B0_ADCHCR21_SSTSEL_Msk (0xf0000UL) /*!< SSTSEL (Bitfield-Mask: 0x0f) */ +/* ======================================================= ADCHCR22 ======================================================== */ + #define R_ADC_B0_ADCHCR22_SGSEL_Pos (0UL) /*!< SGSEL (Bit 0) */ + #define R_ADC_B0_ADCHCR22_SGSEL_Msk (0x1fUL) /*!< SGSEL (Bitfield-Mask: 0x1f) */ + #define R_ADC_B0_ADCHCR22_CNVCS_Pos (8UL) /*!< CNVCS (Bit 8) */ + #define R_ADC_B0_ADCHCR22_CNVCS_Msk (0x7f00UL) /*!< CNVCS (Bitfield-Mask: 0x7f) */ + #define R_ADC_B0_ADCHCR22_AINMD_Pos (15UL) /*!< AINMD (Bit 15) */ + #define R_ADC_B0_ADCHCR22_AINMD_Msk (0x8000UL) /*!< AINMD (Bitfield-Mask: 0x01) */ + #define R_ADC_B0_ADCHCR22_SSTSEL_Pos (16UL) /*!< SSTSEL (Bit 16) */ + #define R_ADC_B0_ADCHCR22_SSTSEL_Msk (0xf0000UL) /*!< SSTSEL (Bitfield-Mask: 0x0f) */ +/* ======================================================= ADCHCR23 ======================================================== */ + #define R_ADC_B0_ADCHCR23_SGSEL_Pos (0UL) /*!< SGSEL (Bit 0) */ + #define R_ADC_B0_ADCHCR23_SGSEL_Msk (0x1fUL) /*!< SGSEL (Bitfield-Mask: 0x1f) */ + #define R_ADC_B0_ADCHCR23_CNVCS_Pos (8UL) /*!< CNVCS (Bit 8) */ + #define R_ADC_B0_ADCHCR23_CNVCS_Msk (0x7f00UL) /*!< CNVCS (Bitfield-Mask: 0x7f) */ + #define R_ADC_B0_ADCHCR23_AINMD_Pos (15UL) /*!< AINMD (Bit 15) */ + #define R_ADC_B0_ADCHCR23_AINMD_Msk (0x8000UL) /*!< AINMD (Bitfield-Mask: 0x01) */ + #define R_ADC_B0_ADCHCR23_SSTSEL_Pos (16UL) /*!< SSTSEL (Bit 16) */ + #define R_ADC_B0_ADCHCR23_SSTSEL_Msk (0xf0000UL) /*!< SSTSEL (Bitfield-Mask: 0x0f) */ +/* ======================================================= ADCHCR24 ======================================================== */ + #define R_ADC_B0_ADCHCR24_SGSEL_Pos (0UL) /*!< SGSEL (Bit 0) */ + #define R_ADC_B0_ADCHCR24_SGSEL_Msk (0x1fUL) /*!< SGSEL (Bitfield-Mask: 0x1f) */ + #define R_ADC_B0_ADCHCR24_CNVCS_Pos (8UL) /*!< CNVCS (Bit 8) */ + #define R_ADC_B0_ADCHCR24_CNVCS_Msk (0x7f00UL) /*!< CNVCS (Bitfield-Mask: 0x7f) */ + #define R_ADC_B0_ADCHCR24_AINMD_Pos (15UL) /*!< AINMD (Bit 15) */ + #define R_ADC_B0_ADCHCR24_AINMD_Msk (0x8000UL) /*!< AINMD (Bitfield-Mask: 0x01) */ + #define R_ADC_B0_ADCHCR24_SSTSEL_Pos (16UL) /*!< SSTSEL (Bit 16) */ + #define R_ADC_B0_ADCHCR24_SSTSEL_Msk (0xf0000UL) /*!< SSTSEL (Bitfield-Mask: 0x0f) */ +/* ======================================================= ADCHCR25 ======================================================== */ + #define R_ADC_B0_ADCHCR25_SGSEL_Pos (0UL) /*!< SGSEL (Bit 0) */ + #define R_ADC_B0_ADCHCR25_SGSEL_Msk (0x1fUL) /*!< SGSEL (Bitfield-Mask: 0x1f) */ + #define R_ADC_B0_ADCHCR25_CNVCS_Pos (8UL) /*!< CNVCS (Bit 8) */ + #define R_ADC_B0_ADCHCR25_CNVCS_Msk (0x7f00UL) /*!< CNVCS (Bitfield-Mask: 0x7f) */ + #define R_ADC_B0_ADCHCR25_AINMD_Pos (15UL) /*!< AINMD (Bit 15) */ + #define R_ADC_B0_ADCHCR25_AINMD_Msk (0x8000UL) /*!< AINMD (Bitfield-Mask: 0x01) */ + #define R_ADC_B0_ADCHCR25_SSTSEL_Pos (16UL) /*!< SSTSEL (Bit 16) */ + #define R_ADC_B0_ADCHCR25_SSTSEL_Msk (0xf0000UL) /*!< SSTSEL (Bitfield-Mask: 0x0f) */ +/* ======================================================= ADCHCR26 ======================================================== */ + #define R_ADC_B0_ADCHCR26_SGSEL_Pos (0UL) /*!< SGSEL (Bit 0) */ + #define R_ADC_B0_ADCHCR26_SGSEL_Msk (0x1fUL) /*!< SGSEL (Bitfield-Mask: 0x1f) */ + #define R_ADC_B0_ADCHCR26_CNVCS_Pos (8UL) /*!< CNVCS (Bit 8) */ + #define R_ADC_B0_ADCHCR26_CNVCS_Msk (0x7f00UL) /*!< CNVCS (Bitfield-Mask: 0x7f) */ + #define R_ADC_B0_ADCHCR26_AINMD_Pos (15UL) /*!< AINMD (Bit 15) */ + #define R_ADC_B0_ADCHCR26_AINMD_Msk (0x8000UL) /*!< AINMD (Bitfield-Mask: 0x01) */ + #define R_ADC_B0_ADCHCR26_SSTSEL_Pos (16UL) /*!< SSTSEL (Bit 16) */ + #define R_ADC_B0_ADCHCR26_SSTSEL_Msk (0xf0000UL) /*!< SSTSEL (Bitfield-Mask: 0x0f) */ +/* ======================================================= ADCHCR27 ======================================================== */ + #define R_ADC_B0_ADCHCR27_SGSEL_Pos (0UL) /*!< SGSEL (Bit 0) */ + #define R_ADC_B0_ADCHCR27_SGSEL_Msk (0x1fUL) /*!< SGSEL (Bitfield-Mask: 0x1f) */ + #define R_ADC_B0_ADCHCR27_CNVCS_Pos (8UL) /*!< CNVCS (Bit 8) */ + #define R_ADC_B0_ADCHCR27_CNVCS_Msk (0x7f00UL) /*!< CNVCS (Bitfield-Mask: 0x7f) */ + #define R_ADC_B0_ADCHCR27_AINMD_Pos (15UL) /*!< AINMD (Bit 15) */ + #define R_ADC_B0_ADCHCR27_AINMD_Msk (0x8000UL) /*!< AINMD (Bitfield-Mask: 0x01) */ + #define R_ADC_B0_ADCHCR27_SSTSEL_Pos (16UL) /*!< SSTSEL (Bit 16) */ + #define R_ADC_B0_ADCHCR27_SSTSEL_Msk (0xf0000UL) /*!< SSTSEL (Bitfield-Mask: 0x0f) */ +/* ======================================================= ADCHCR28 ======================================================== */ + #define R_ADC_B0_ADCHCR28_SGSEL_Pos (0UL) /*!< SGSEL (Bit 0) */ + #define R_ADC_B0_ADCHCR28_SGSEL_Msk (0x1fUL) /*!< SGSEL (Bitfield-Mask: 0x1f) */ + #define R_ADC_B0_ADCHCR28_CNVCS_Pos (8UL) /*!< CNVCS (Bit 8) */ + #define R_ADC_B0_ADCHCR28_CNVCS_Msk (0x7f00UL) /*!< CNVCS (Bitfield-Mask: 0x7f) */ + #define R_ADC_B0_ADCHCR28_AINMD_Pos (15UL) /*!< AINMD (Bit 15) */ + #define R_ADC_B0_ADCHCR28_AINMD_Msk (0x8000UL) /*!< AINMD (Bitfield-Mask: 0x01) */ + #define R_ADC_B0_ADCHCR28_SSTSEL_Pos (16UL) /*!< SSTSEL (Bit 16) */ + #define R_ADC_B0_ADCHCR28_SSTSEL_Msk (0xf0000UL) /*!< SSTSEL (Bitfield-Mask: 0x0f) */ +/* ======================================================= ADCHCR29 ======================================================== */ + #define R_ADC_B0_ADCHCR29_SGSEL_Pos (0UL) /*!< SGSEL (Bit 0) */ + #define R_ADC_B0_ADCHCR29_SGSEL_Msk (0x1fUL) /*!< SGSEL (Bitfield-Mask: 0x1f) */ + #define R_ADC_B0_ADCHCR29_CNVCS_Pos (8UL) /*!< CNVCS (Bit 8) */ + #define R_ADC_B0_ADCHCR29_CNVCS_Msk (0x7f00UL) /*!< CNVCS (Bitfield-Mask: 0x7f) */ + #define R_ADC_B0_ADCHCR29_AINMD_Pos (15UL) /*!< AINMD (Bit 15) */ + #define R_ADC_B0_ADCHCR29_AINMD_Msk (0x8000UL) /*!< AINMD (Bitfield-Mask: 0x01) */ + #define R_ADC_B0_ADCHCR29_SSTSEL_Pos (16UL) /*!< SSTSEL (Bit 16) */ + #define R_ADC_B0_ADCHCR29_SSTSEL_Msk (0xf0000UL) /*!< SSTSEL (Bitfield-Mask: 0x0f) */ +/* ======================================================= ADCHCR30 ======================================================== */ + #define R_ADC_B0_ADCHCR30_SGSEL_Pos (0UL) /*!< SGSEL (Bit 0) */ + #define R_ADC_B0_ADCHCR30_SGSEL_Msk (0x1fUL) /*!< SGSEL (Bitfield-Mask: 0x1f) */ + #define R_ADC_B0_ADCHCR30_CNVCS_Pos (8UL) /*!< CNVCS (Bit 8) */ + #define R_ADC_B0_ADCHCR30_CNVCS_Msk (0x7f00UL) /*!< CNVCS (Bitfield-Mask: 0x7f) */ + #define R_ADC_B0_ADCHCR30_AINMD_Pos (15UL) /*!< AINMD (Bit 15) */ + #define R_ADC_B0_ADCHCR30_AINMD_Msk (0x8000UL) /*!< AINMD (Bitfield-Mask: 0x01) */ + #define R_ADC_B0_ADCHCR30_SSTSEL_Pos (16UL) /*!< SSTSEL (Bit 16) */ + #define R_ADC_B0_ADCHCR30_SSTSEL_Msk (0xf0000UL) /*!< SSTSEL (Bitfield-Mask: 0x0f) */ +/* ======================================================= ADCHCR31 ======================================================== */ + #define R_ADC_B0_ADCHCR31_SGSEL_Pos (0UL) /*!< SGSEL (Bit 0) */ + #define R_ADC_B0_ADCHCR31_SGSEL_Msk (0x1fUL) /*!< SGSEL (Bitfield-Mask: 0x1f) */ + #define R_ADC_B0_ADCHCR31_CNVCS_Pos (8UL) /*!< CNVCS (Bit 8) */ + #define R_ADC_B0_ADCHCR31_CNVCS_Msk (0x7f00UL) /*!< CNVCS (Bitfield-Mask: 0x7f) */ + #define R_ADC_B0_ADCHCR31_AINMD_Pos (15UL) /*!< AINMD (Bit 15) */ + #define R_ADC_B0_ADCHCR31_AINMD_Msk (0x8000UL) /*!< AINMD (Bitfield-Mask: 0x01) */ + #define R_ADC_B0_ADCHCR31_SSTSEL_Pos (16UL) /*!< SSTSEL (Bit 16) */ + #define R_ADC_B0_ADCHCR31_SSTSEL_Msk (0xf0000UL) /*!< SSTSEL (Bitfield-Mask: 0x0f) */ +/* ======================================================= ADCHCR32 ======================================================== */ + #define R_ADC_B0_ADCHCR32_SGSEL_Pos (0UL) /*!< SGSEL (Bit 0) */ + #define R_ADC_B0_ADCHCR32_SGSEL_Msk (0x1fUL) /*!< SGSEL (Bitfield-Mask: 0x1f) */ + #define R_ADC_B0_ADCHCR32_CNVCS_Pos (8UL) /*!< CNVCS (Bit 8) */ + #define R_ADC_B0_ADCHCR32_CNVCS_Msk (0x7f00UL) /*!< CNVCS (Bitfield-Mask: 0x7f) */ + #define R_ADC_B0_ADCHCR32_AINMD_Pos (15UL) /*!< AINMD (Bit 15) */ + #define R_ADC_B0_ADCHCR32_AINMD_Msk (0x8000UL) /*!< AINMD (Bitfield-Mask: 0x01) */ + #define R_ADC_B0_ADCHCR32_SSTSEL_Pos (16UL) /*!< SSTSEL (Bit 16) */ + #define R_ADC_B0_ADCHCR32_SSTSEL_Msk (0xf0000UL) /*!< SSTSEL (Bitfield-Mask: 0x0f) */ +/* ======================================================= ADCHCR33 ======================================================== */ + #define R_ADC_B0_ADCHCR33_SGSEL_Pos (0UL) /*!< SGSEL (Bit 0) */ + #define R_ADC_B0_ADCHCR33_SGSEL_Msk (0x1fUL) /*!< SGSEL (Bitfield-Mask: 0x1f) */ + #define R_ADC_B0_ADCHCR33_CNVCS_Pos (8UL) /*!< CNVCS (Bit 8) */ + #define R_ADC_B0_ADCHCR33_CNVCS_Msk (0x7f00UL) /*!< CNVCS (Bitfield-Mask: 0x7f) */ + #define R_ADC_B0_ADCHCR33_AINMD_Pos (15UL) /*!< AINMD (Bit 15) */ + #define R_ADC_B0_ADCHCR33_AINMD_Msk (0x8000UL) /*!< AINMD (Bitfield-Mask: 0x01) */ + #define R_ADC_B0_ADCHCR33_SSTSEL_Pos (16UL) /*!< SSTSEL (Bit 16) */ + #define R_ADC_B0_ADCHCR33_SSTSEL_Msk (0xf0000UL) /*!< SSTSEL (Bitfield-Mask: 0x0f) */ +/* ======================================================= ADCHCR34 ======================================================== */ + #define R_ADC_B0_ADCHCR34_SGSEL_Pos (0UL) /*!< SGSEL (Bit 0) */ + #define R_ADC_B0_ADCHCR34_SGSEL_Msk (0x1fUL) /*!< SGSEL (Bitfield-Mask: 0x1f) */ + #define R_ADC_B0_ADCHCR34_CNVCS_Pos (8UL) /*!< CNVCS (Bit 8) */ + #define R_ADC_B0_ADCHCR34_CNVCS_Msk (0x7f00UL) /*!< CNVCS (Bitfield-Mask: 0x7f) */ + #define R_ADC_B0_ADCHCR34_AINMD_Pos (15UL) /*!< AINMD (Bit 15) */ + #define R_ADC_B0_ADCHCR34_AINMD_Msk (0x8000UL) /*!< AINMD (Bitfield-Mask: 0x01) */ + #define R_ADC_B0_ADCHCR34_SSTSEL_Pos (16UL) /*!< SSTSEL (Bit 16) */ + #define R_ADC_B0_ADCHCR34_SSTSEL_Msk (0xf0000UL) /*!< SSTSEL (Bitfield-Mask: 0x0f) */ +/* ======================================================= ADCHCR35 ======================================================== */ + #define R_ADC_B0_ADCHCR35_SGSEL_Pos (0UL) /*!< SGSEL (Bit 0) */ + #define R_ADC_B0_ADCHCR35_SGSEL_Msk (0x1fUL) /*!< SGSEL (Bitfield-Mask: 0x1f) */ + #define R_ADC_B0_ADCHCR35_CNVCS_Pos (8UL) /*!< CNVCS (Bit 8) */ + #define R_ADC_B0_ADCHCR35_CNVCS_Msk (0x7f00UL) /*!< CNVCS (Bitfield-Mask: 0x7f) */ + #define R_ADC_B0_ADCHCR35_AINMD_Pos (15UL) /*!< AINMD (Bit 15) */ + #define R_ADC_B0_ADCHCR35_AINMD_Msk (0x8000UL) /*!< AINMD (Bitfield-Mask: 0x01) */ + #define R_ADC_B0_ADCHCR35_SSTSEL_Pos (16UL) /*!< SSTSEL (Bit 16) */ + #define R_ADC_B0_ADCHCR35_SSTSEL_Msk (0xf0000UL) /*!< SSTSEL (Bitfield-Mask: 0x0f) */ +/* ======================================================= ADCHCR36 ======================================================== */ + #define R_ADC_B0_ADCHCR36_SGSEL_Pos (0UL) /*!< SGSEL (Bit 0) */ + #define R_ADC_B0_ADCHCR36_SGSEL_Msk (0x1fUL) /*!< SGSEL (Bitfield-Mask: 0x1f) */ + #define R_ADC_B0_ADCHCR36_CNVCS_Pos (8UL) /*!< CNVCS (Bit 8) */ + #define R_ADC_B0_ADCHCR36_CNVCS_Msk (0x7f00UL) /*!< CNVCS (Bitfield-Mask: 0x7f) */ + #define R_ADC_B0_ADCHCR36_AINMD_Pos (15UL) /*!< AINMD (Bit 15) */ + #define R_ADC_B0_ADCHCR36_AINMD_Msk (0x8000UL) /*!< AINMD (Bitfield-Mask: 0x01) */ + #define R_ADC_B0_ADCHCR36_SSTSEL_Pos (16UL) /*!< SSTSEL (Bit 16) */ + #define R_ADC_B0_ADCHCR36_SSTSEL_Msk (0xf0000UL) /*!< SSTSEL (Bitfield-Mask: 0x0f) */ +/* ======================================================= ADDOPCRA0 ======================================================= */ + #define R_ADC_B0_ADDOPCRA0_GAINSEL_Pos (16UL) /*!< GAINSEL (Bit 16) */ + #define R_ADC_B0_ADDOPCRA0_GAINSEL_Msk (0xf0000UL) /*!< GAINSEL (Bitfield-Mask: 0x0f) */ + #define R_ADC_B0_ADDOPCRA0_OFSETSEL_Pos (24UL) /*!< OFSETSEL (Bit 24) */ + #define R_ADC_B0_ADDOPCRA0_OFSETSEL_Msk (0xf000000UL) /*!< OFSETSEL (Bitfield-Mask: 0x0f) */ +/* ======================================================= ADDOPCRA1 ======================================================= */ + #define R_ADC_B0_ADDOPCRA1_GAINSEL_Pos (16UL) /*!< GAINSEL (Bit 16) */ + #define R_ADC_B0_ADDOPCRA1_GAINSEL_Msk (0xf0000UL) /*!< GAINSEL (Bitfield-Mask: 0x0f) */ + #define R_ADC_B0_ADDOPCRA1_OFSETSEL_Pos (24UL) /*!< OFSETSEL (Bit 24) */ + #define R_ADC_B0_ADDOPCRA1_OFSETSEL_Msk (0xf000000UL) /*!< OFSETSEL (Bitfield-Mask: 0x0f) */ +/* ======================================================= ADDOPCRA2 ======================================================= */ + #define R_ADC_B0_ADDOPCRA2_GAINSEL_Pos (16UL) /*!< GAINSEL (Bit 16) */ + #define R_ADC_B0_ADDOPCRA2_GAINSEL_Msk (0xf0000UL) /*!< GAINSEL (Bitfield-Mask: 0x0f) */ + #define R_ADC_B0_ADDOPCRA2_OFSETSEL_Pos (24UL) /*!< OFSETSEL (Bit 24) */ + #define R_ADC_B0_ADDOPCRA2_OFSETSEL_Msk (0xf000000UL) /*!< OFSETSEL (Bitfield-Mask: 0x0f) */ +/* ======================================================= ADDOPCRA3 ======================================================= */ + #define R_ADC_B0_ADDOPCRA3_GAINSEL_Pos (16UL) /*!< GAINSEL (Bit 16) */ + #define R_ADC_B0_ADDOPCRA3_GAINSEL_Msk (0xf0000UL) /*!< GAINSEL (Bitfield-Mask: 0x0f) */ + #define R_ADC_B0_ADDOPCRA3_OFSETSEL_Pos (24UL) /*!< OFSETSEL (Bit 24) */ + #define R_ADC_B0_ADDOPCRA3_OFSETSEL_Msk (0xf000000UL) /*!< OFSETSEL (Bitfield-Mask: 0x0f) */ +/* ======================================================= ADDOPCRA4 ======================================================= */ + #define R_ADC_B0_ADDOPCRA4_GAINSEL_Pos (16UL) /*!< GAINSEL (Bit 16) */ + #define R_ADC_B0_ADDOPCRA4_GAINSEL_Msk (0xf0000UL) /*!< GAINSEL (Bitfield-Mask: 0x0f) */ + #define R_ADC_B0_ADDOPCRA4_OFSETSEL_Pos (24UL) /*!< OFSETSEL (Bit 24) */ + #define R_ADC_B0_ADDOPCRA4_OFSETSEL_Msk (0xf000000UL) /*!< OFSETSEL (Bitfield-Mask: 0x0f) */ +/* ======================================================= ADDOPCRA5 ======================================================= */ + #define R_ADC_B0_ADDOPCRA5_GAINSEL_Pos (16UL) /*!< GAINSEL (Bit 16) */ + #define R_ADC_B0_ADDOPCRA5_GAINSEL_Msk (0xf0000UL) /*!< GAINSEL (Bitfield-Mask: 0x0f) */ + #define R_ADC_B0_ADDOPCRA5_OFSETSEL_Pos (24UL) /*!< OFSETSEL (Bit 24) */ + #define R_ADC_B0_ADDOPCRA5_OFSETSEL_Msk (0xf000000UL) /*!< OFSETSEL (Bitfield-Mask: 0x0f) */ +/* ======================================================= ADDOPCRA6 ======================================================= */ + #define R_ADC_B0_ADDOPCRA6_GAINSEL_Pos (16UL) /*!< GAINSEL (Bit 16) */ + #define R_ADC_B0_ADDOPCRA6_GAINSEL_Msk (0xf0000UL) /*!< GAINSEL (Bitfield-Mask: 0x0f) */ + #define R_ADC_B0_ADDOPCRA6_OFSETSEL_Pos (24UL) /*!< OFSETSEL (Bit 24) */ + #define R_ADC_B0_ADDOPCRA6_OFSETSEL_Msk (0xf000000UL) /*!< OFSETSEL (Bitfield-Mask: 0x0f) */ +/* ======================================================= ADDOPCRA7 ======================================================= */ + #define R_ADC_B0_ADDOPCRA7_GAINSEL_Pos (16UL) /*!< GAINSEL (Bit 16) */ + #define R_ADC_B0_ADDOPCRA7_GAINSEL_Msk (0xf0000UL) /*!< GAINSEL (Bitfield-Mask: 0x0f) */ + #define R_ADC_B0_ADDOPCRA7_OFSETSEL_Pos (24UL) /*!< OFSETSEL (Bit 24) */ + #define R_ADC_B0_ADDOPCRA7_OFSETSEL_Msk (0xf000000UL) /*!< OFSETSEL (Bitfield-Mask: 0x0f) */ +/* ======================================================= ADDOPCRA8 ======================================================= */ + #define R_ADC_B0_ADDOPCRA8_GAINSEL_Pos (16UL) /*!< GAINSEL (Bit 16) */ + #define R_ADC_B0_ADDOPCRA8_GAINSEL_Msk (0xf0000UL) /*!< GAINSEL (Bitfield-Mask: 0x0f) */ + #define R_ADC_B0_ADDOPCRA8_OFSETSEL_Pos (24UL) /*!< OFSETSEL (Bit 24) */ + #define R_ADC_B0_ADDOPCRA8_OFSETSEL_Msk (0xf000000UL) /*!< OFSETSEL (Bitfield-Mask: 0x0f) */ +/* ======================================================= ADDOPCRA9 ======================================================= */ + #define R_ADC_B0_ADDOPCRA9_GAINSEL_Pos (16UL) /*!< GAINSEL (Bit 16) */ + #define R_ADC_B0_ADDOPCRA9_GAINSEL_Msk (0xf0000UL) /*!< GAINSEL (Bitfield-Mask: 0x0f) */ + #define R_ADC_B0_ADDOPCRA9_OFSETSEL_Pos (24UL) /*!< OFSETSEL (Bit 24) */ + #define R_ADC_B0_ADDOPCRA9_OFSETSEL_Msk (0xf000000UL) /*!< OFSETSEL (Bitfield-Mask: 0x0f) */ +/* ====================================================== ADDOPCRA10 ======================================================= */ + #define R_ADC_B0_ADDOPCRA10_GAINSEL_Pos (16UL) /*!< GAINSEL (Bit 16) */ + #define R_ADC_B0_ADDOPCRA10_GAINSEL_Msk (0xf0000UL) /*!< GAINSEL (Bitfield-Mask: 0x0f) */ + #define R_ADC_B0_ADDOPCRA10_OFSETSEL_Pos (24UL) /*!< OFSETSEL (Bit 24) */ + #define R_ADC_B0_ADDOPCRA10_OFSETSEL_Msk (0xf000000UL) /*!< OFSETSEL (Bitfield-Mask: 0x0f) */ +/* ====================================================== ADDOPCRA11 ======================================================= */ + #define R_ADC_B0_ADDOPCRA11_GAINSEL_Pos (16UL) /*!< GAINSEL (Bit 16) */ + #define R_ADC_B0_ADDOPCRA11_GAINSEL_Msk (0xf0000UL) /*!< GAINSEL (Bitfield-Mask: 0x0f) */ + #define R_ADC_B0_ADDOPCRA11_OFSETSEL_Pos (24UL) /*!< OFSETSEL (Bit 24) */ + #define R_ADC_B0_ADDOPCRA11_OFSETSEL_Msk (0xf000000UL) /*!< OFSETSEL (Bitfield-Mask: 0x0f) */ +/* ====================================================== ADDOPCRA12 ======================================================= */ + #define R_ADC_B0_ADDOPCRA12_GAINSEL_Pos (16UL) /*!< GAINSEL (Bit 16) */ + #define R_ADC_B0_ADDOPCRA12_GAINSEL_Msk (0xf0000UL) /*!< GAINSEL (Bitfield-Mask: 0x0f) */ + #define R_ADC_B0_ADDOPCRA12_OFSETSEL_Pos (24UL) /*!< OFSETSEL (Bit 24) */ + #define R_ADC_B0_ADDOPCRA12_OFSETSEL_Msk (0xf000000UL) /*!< OFSETSEL (Bitfield-Mask: 0x0f) */ +/* ====================================================== ADDOPCRA13 ======================================================= */ + #define R_ADC_B0_ADDOPCRA13_GAINSEL_Pos (16UL) /*!< GAINSEL (Bit 16) */ + #define R_ADC_B0_ADDOPCRA13_GAINSEL_Msk (0xf0000UL) /*!< GAINSEL (Bitfield-Mask: 0x0f) */ + #define R_ADC_B0_ADDOPCRA13_OFSETSEL_Pos (24UL) /*!< OFSETSEL (Bit 24) */ + #define R_ADC_B0_ADDOPCRA13_OFSETSEL_Msk (0xf000000UL) /*!< OFSETSEL (Bitfield-Mask: 0x0f) */ +/* ====================================================== ADDOPCRA14 ======================================================= */ + #define R_ADC_B0_ADDOPCRA14_GAINSEL_Pos (16UL) /*!< GAINSEL (Bit 16) */ + #define R_ADC_B0_ADDOPCRA14_GAINSEL_Msk (0xf0000UL) /*!< GAINSEL (Bitfield-Mask: 0x0f) */ + #define R_ADC_B0_ADDOPCRA14_OFSETSEL_Pos (24UL) /*!< OFSETSEL (Bit 24) */ + #define R_ADC_B0_ADDOPCRA14_OFSETSEL_Msk (0xf000000UL) /*!< OFSETSEL (Bitfield-Mask: 0x0f) */ +/* ====================================================== ADDOPCRA15 ======================================================= */ + #define R_ADC_B0_ADDOPCRA15_GAINSEL_Pos (16UL) /*!< GAINSEL (Bit 16) */ + #define R_ADC_B0_ADDOPCRA15_GAINSEL_Msk (0xf0000UL) /*!< GAINSEL (Bitfield-Mask: 0x0f) */ + #define R_ADC_B0_ADDOPCRA15_OFSETSEL_Pos (24UL) /*!< OFSETSEL (Bit 24) */ + #define R_ADC_B0_ADDOPCRA15_OFSETSEL_Msk (0xf000000UL) /*!< OFSETSEL (Bitfield-Mask: 0x0f) */ +/* ====================================================== ADDOPCRA16 ======================================================= */ + #define R_ADC_B0_ADDOPCRA16_GAINSEL_Pos (16UL) /*!< GAINSEL (Bit 16) */ + #define R_ADC_B0_ADDOPCRA16_GAINSEL_Msk (0xf0000UL) /*!< GAINSEL (Bitfield-Mask: 0x0f) */ + #define R_ADC_B0_ADDOPCRA16_OFSETSEL_Pos (24UL) /*!< OFSETSEL (Bit 24) */ + #define R_ADC_B0_ADDOPCRA16_OFSETSEL_Msk (0xf000000UL) /*!< OFSETSEL (Bitfield-Mask: 0x0f) */ +/* ====================================================== ADDOPCRA17 ======================================================= */ + #define R_ADC_B0_ADDOPCRA17_GAINSEL_Pos (16UL) /*!< GAINSEL (Bit 16) */ + #define R_ADC_B0_ADDOPCRA17_GAINSEL_Msk (0xf0000UL) /*!< GAINSEL (Bitfield-Mask: 0x0f) */ + #define R_ADC_B0_ADDOPCRA17_OFSETSEL_Pos (24UL) /*!< OFSETSEL (Bit 24) */ + #define R_ADC_B0_ADDOPCRA17_OFSETSEL_Msk (0xf000000UL) /*!< OFSETSEL (Bitfield-Mask: 0x0f) */ +/* ====================================================== ADDOPCRA18 ======================================================= */ + #define R_ADC_B0_ADDOPCRA18_GAINSEL_Pos (16UL) /*!< GAINSEL (Bit 16) */ + #define R_ADC_B0_ADDOPCRA18_GAINSEL_Msk (0xf0000UL) /*!< GAINSEL (Bitfield-Mask: 0x0f) */ + #define R_ADC_B0_ADDOPCRA18_OFSETSEL_Pos (24UL) /*!< OFSETSEL (Bit 24) */ + #define R_ADC_B0_ADDOPCRA18_OFSETSEL_Msk (0xf000000UL) /*!< OFSETSEL (Bitfield-Mask: 0x0f) */ +/* ====================================================== ADDOPCRA19 ======================================================= */ + #define R_ADC_B0_ADDOPCRA19_GAINSEL_Pos (16UL) /*!< GAINSEL (Bit 16) */ + #define R_ADC_B0_ADDOPCRA19_GAINSEL_Msk (0xf0000UL) /*!< GAINSEL (Bitfield-Mask: 0x0f) */ + #define R_ADC_B0_ADDOPCRA19_OFSETSEL_Pos (24UL) /*!< OFSETSEL (Bit 24) */ + #define R_ADC_B0_ADDOPCRA19_OFSETSEL_Msk (0xf000000UL) /*!< OFSETSEL (Bitfield-Mask: 0x0f) */ +/* ====================================================== ADDOPCRA20 ======================================================= */ + #define R_ADC_B0_ADDOPCRA20_GAINSEL_Pos (16UL) /*!< GAINSEL (Bit 16) */ + #define R_ADC_B0_ADDOPCRA20_GAINSEL_Msk (0xf0000UL) /*!< GAINSEL (Bitfield-Mask: 0x0f) */ + #define R_ADC_B0_ADDOPCRA20_OFSETSEL_Pos (24UL) /*!< OFSETSEL (Bit 24) */ + #define R_ADC_B0_ADDOPCRA20_OFSETSEL_Msk (0xf000000UL) /*!< OFSETSEL (Bitfield-Mask: 0x0f) */ +/* ====================================================== ADDOPCRA21 ======================================================= */ + #define R_ADC_B0_ADDOPCRA21_GAINSEL_Pos (16UL) /*!< GAINSEL (Bit 16) */ + #define R_ADC_B0_ADDOPCRA21_GAINSEL_Msk (0xf0000UL) /*!< GAINSEL (Bitfield-Mask: 0x0f) */ + #define R_ADC_B0_ADDOPCRA21_OFSETSEL_Pos (24UL) /*!< OFSETSEL (Bit 24) */ + #define R_ADC_B0_ADDOPCRA21_OFSETSEL_Msk (0xf000000UL) /*!< OFSETSEL (Bitfield-Mask: 0x0f) */ +/* ====================================================== ADDOPCRA22 ======================================================= */ + #define R_ADC_B0_ADDOPCRA22_GAINSEL_Pos (16UL) /*!< GAINSEL (Bit 16) */ + #define R_ADC_B0_ADDOPCRA22_GAINSEL_Msk (0xf0000UL) /*!< GAINSEL (Bitfield-Mask: 0x0f) */ + #define R_ADC_B0_ADDOPCRA22_OFSETSEL_Pos (24UL) /*!< OFSETSEL (Bit 24) */ + #define R_ADC_B0_ADDOPCRA22_OFSETSEL_Msk (0xf000000UL) /*!< OFSETSEL (Bitfield-Mask: 0x0f) */ +/* ====================================================== ADDOPCRA23 ======================================================= */ + #define R_ADC_B0_ADDOPCRA23_GAINSEL_Pos (16UL) /*!< GAINSEL (Bit 16) */ + #define R_ADC_B0_ADDOPCRA23_GAINSEL_Msk (0xf0000UL) /*!< GAINSEL (Bitfield-Mask: 0x0f) */ + #define R_ADC_B0_ADDOPCRA23_OFSETSEL_Pos (24UL) /*!< OFSETSEL (Bit 24) */ + #define R_ADC_B0_ADDOPCRA23_OFSETSEL_Msk (0xf000000UL) /*!< OFSETSEL (Bitfield-Mask: 0x0f) */ +/* ====================================================== ADDOPCRA24 ======================================================= */ + #define R_ADC_B0_ADDOPCRA24_GAINSEL_Pos (16UL) /*!< GAINSEL (Bit 16) */ + #define R_ADC_B0_ADDOPCRA24_GAINSEL_Msk (0xf0000UL) /*!< GAINSEL (Bitfield-Mask: 0x0f) */ + #define R_ADC_B0_ADDOPCRA24_OFSETSEL_Pos (24UL) /*!< OFSETSEL (Bit 24) */ + #define R_ADC_B0_ADDOPCRA24_OFSETSEL_Msk (0xf000000UL) /*!< OFSETSEL (Bitfield-Mask: 0x0f) */ +/* ====================================================== ADDOPCRA25 ======================================================= */ + #define R_ADC_B0_ADDOPCRA25_GAINSEL_Pos (16UL) /*!< GAINSEL (Bit 16) */ + #define R_ADC_B0_ADDOPCRA25_GAINSEL_Msk (0xf0000UL) /*!< GAINSEL (Bitfield-Mask: 0x0f) */ + #define R_ADC_B0_ADDOPCRA25_OFSETSEL_Pos (24UL) /*!< OFSETSEL (Bit 24) */ + #define R_ADC_B0_ADDOPCRA25_OFSETSEL_Msk (0xf000000UL) /*!< OFSETSEL (Bitfield-Mask: 0x0f) */ +/* ====================================================== ADDOPCRA26 ======================================================= */ + #define R_ADC_B0_ADDOPCRA26_GAINSEL_Pos (16UL) /*!< GAINSEL (Bit 16) */ + #define R_ADC_B0_ADDOPCRA26_GAINSEL_Msk (0xf0000UL) /*!< GAINSEL (Bitfield-Mask: 0x0f) */ + #define R_ADC_B0_ADDOPCRA26_OFSETSEL_Pos (24UL) /*!< OFSETSEL (Bit 24) */ + #define R_ADC_B0_ADDOPCRA26_OFSETSEL_Msk (0xf000000UL) /*!< OFSETSEL (Bitfield-Mask: 0x0f) */ +/* ====================================================== ADDOPCRA27 ======================================================= */ + #define R_ADC_B0_ADDOPCRA27_GAINSEL_Pos (16UL) /*!< GAINSEL (Bit 16) */ + #define R_ADC_B0_ADDOPCRA27_GAINSEL_Msk (0xf0000UL) /*!< GAINSEL (Bitfield-Mask: 0x0f) */ + #define R_ADC_B0_ADDOPCRA27_OFSETSEL_Pos (24UL) /*!< OFSETSEL (Bit 24) */ + #define R_ADC_B0_ADDOPCRA27_OFSETSEL_Msk (0xf000000UL) /*!< OFSETSEL (Bitfield-Mask: 0x0f) */ +/* ====================================================== ADDOPCRA28 ======================================================= */ + #define R_ADC_B0_ADDOPCRA28_GAINSEL_Pos (16UL) /*!< GAINSEL (Bit 16) */ + #define R_ADC_B0_ADDOPCRA28_GAINSEL_Msk (0xf0000UL) /*!< GAINSEL (Bitfield-Mask: 0x0f) */ + #define R_ADC_B0_ADDOPCRA28_OFSETSEL_Pos (24UL) /*!< OFSETSEL (Bit 24) */ + #define R_ADC_B0_ADDOPCRA28_OFSETSEL_Msk (0xf000000UL) /*!< OFSETSEL (Bitfield-Mask: 0x0f) */ +/* ====================================================== ADDOPCRA29 ======================================================= */ + #define R_ADC_B0_ADDOPCRA29_GAINSEL_Pos (16UL) /*!< GAINSEL (Bit 16) */ + #define R_ADC_B0_ADDOPCRA29_GAINSEL_Msk (0xf0000UL) /*!< GAINSEL (Bitfield-Mask: 0x0f) */ + #define R_ADC_B0_ADDOPCRA29_OFSETSEL_Pos (24UL) /*!< OFSETSEL (Bit 24) */ + #define R_ADC_B0_ADDOPCRA29_OFSETSEL_Msk (0xf000000UL) /*!< OFSETSEL (Bitfield-Mask: 0x0f) */ +/* ====================================================== ADDOPCRA30 ======================================================= */ + #define R_ADC_B0_ADDOPCRA30_GAINSEL_Pos (16UL) /*!< GAINSEL (Bit 16) */ + #define R_ADC_B0_ADDOPCRA30_GAINSEL_Msk (0xf0000UL) /*!< GAINSEL (Bitfield-Mask: 0x0f) */ + #define R_ADC_B0_ADDOPCRA30_OFSETSEL_Pos (24UL) /*!< OFSETSEL (Bit 24) */ + #define R_ADC_B0_ADDOPCRA30_OFSETSEL_Msk (0xf000000UL) /*!< OFSETSEL (Bitfield-Mask: 0x0f) */ +/* ====================================================== ADDOPCRA31 ======================================================= */ + #define R_ADC_B0_ADDOPCRA31_GAINSEL_Pos (16UL) /*!< GAINSEL (Bit 16) */ + #define R_ADC_B0_ADDOPCRA31_GAINSEL_Msk (0xf0000UL) /*!< GAINSEL (Bitfield-Mask: 0x0f) */ + #define R_ADC_B0_ADDOPCRA31_OFSETSEL_Pos (24UL) /*!< OFSETSEL (Bit 24) */ + #define R_ADC_B0_ADDOPCRA31_OFSETSEL_Msk (0xf000000UL) /*!< OFSETSEL (Bitfield-Mask: 0x0f) */ +/* ====================================================== ADDOPCRA32 ======================================================= */ + #define R_ADC_B0_ADDOPCRA32_GAINSEL_Pos (16UL) /*!< GAINSEL (Bit 16) */ + #define R_ADC_B0_ADDOPCRA32_GAINSEL_Msk (0xf0000UL) /*!< GAINSEL (Bitfield-Mask: 0x0f) */ + #define R_ADC_B0_ADDOPCRA32_OFSETSEL_Pos (24UL) /*!< OFSETSEL (Bit 24) */ + #define R_ADC_B0_ADDOPCRA32_OFSETSEL_Msk (0xf000000UL) /*!< OFSETSEL (Bitfield-Mask: 0x0f) */ +/* ====================================================== ADDOPCRA33 ======================================================= */ + #define R_ADC_B0_ADDOPCRA33_GAINSEL_Pos (16UL) /*!< GAINSEL (Bit 16) */ + #define R_ADC_B0_ADDOPCRA33_GAINSEL_Msk (0xf0000UL) /*!< GAINSEL (Bitfield-Mask: 0x0f) */ + #define R_ADC_B0_ADDOPCRA33_OFSETSEL_Pos (24UL) /*!< OFSETSEL (Bit 24) */ + #define R_ADC_B0_ADDOPCRA33_OFSETSEL_Msk (0xf000000UL) /*!< OFSETSEL (Bitfield-Mask: 0x0f) */ +/* ====================================================== ADDOPCRA34 ======================================================= */ + #define R_ADC_B0_ADDOPCRA34_GAINSEL_Pos (16UL) /*!< GAINSEL (Bit 16) */ + #define R_ADC_B0_ADDOPCRA34_GAINSEL_Msk (0xf0000UL) /*!< GAINSEL (Bitfield-Mask: 0x0f) */ + #define R_ADC_B0_ADDOPCRA34_OFSETSEL_Pos (24UL) /*!< OFSETSEL (Bit 24) */ + #define R_ADC_B0_ADDOPCRA34_OFSETSEL_Msk (0xf000000UL) /*!< OFSETSEL (Bitfield-Mask: 0x0f) */ +/* ====================================================== ADDOPCRA35 ======================================================= */ + #define R_ADC_B0_ADDOPCRA35_GAINSEL_Pos (16UL) /*!< GAINSEL (Bit 16) */ + #define R_ADC_B0_ADDOPCRA35_GAINSEL_Msk (0xf0000UL) /*!< GAINSEL (Bitfield-Mask: 0x0f) */ + #define R_ADC_B0_ADDOPCRA35_OFSETSEL_Pos (24UL) /*!< OFSETSEL (Bit 24) */ + #define R_ADC_B0_ADDOPCRA35_OFSETSEL_Msk (0xf000000UL) /*!< OFSETSEL (Bitfield-Mask: 0x0f) */ +/* ====================================================== ADDOPCRA36 ======================================================= */ + #define R_ADC_B0_ADDOPCRA36_GAINSEL_Pos (16UL) /*!< GAINSEL (Bit 16) */ + #define R_ADC_B0_ADDOPCRA36_GAINSEL_Msk (0xf0000UL) /*!< GAINSEL (Bitfield-Mask: 0x0f) */ + #define R_ADC_B0_ADDOPCRA36_OFSETSEL_Pos (24UL) /*!< OFSETSEL (Bit 24) */ + #define R_ADC_B0_ADDOPCRA36_OFSETSEL_Msk (0xf000000UL) /*!< OFSETSEL (Bitfield-Mask: 0x0f) */ +/* ======================================================= ADDOPCRB0 ======================================================= */ + #define R_ADC_B0_ADDOPCRB0_AVEMD_Pos (0UL) /*!< AVEMD (Bit 0) */ + #define R_ADC_B0_ADDOPCRB0_AVEMD_Msk (0x3UL) /*!< AVEMD (Bitfield-Mask: 0x03) */ + #define R_ADC_B0_ADDOPCRB0_ADC_Pos (8UL) /*!< ADC (Bit 8) */ + #define R_ADC_B0_ADDOPCRB0_ADC_Msk (0xf00UL) /*!< ADC (Bitfield-Mask: 0x0f) */ + #define R_ADC_B0_ADDOPCRB0_CMPTBLEm_Pos (16UL) /*!< CMPTBLEm (Bit 16) */ + #define R_ADC_B0_ADDOPCRB0_CMPTBLEm_Msk (0xff0000UL) /*!< CMPTBLEm (Bitfield-Mask: 0xff) */ +/* ======================================================= ADDOPCRB1 ======================================================= */ + #define R_ADC_B0_ADDOPCRB1_AVEMD_Pos (0UL) /*!< AVEMD (Bit 0) */ + #define R_ADC_B0_ADDOPCRB1_AVEMD_Msk (0x3UL) /*!< AVEMD (Bitfield-Mask: 0x03) */ + #define R_ADC_B0_ADDOPCRB1_ADC_Pos (8UL) /*!< ADC (Bit 8) */ + #define R_ADC_B0_ADDOPCRB1_ADC_Msk (0xf00UL) /*!< ADC (Bitfield-Mask: 0x0f) */ + #define R_ADC_B0_ADDOPCRB1_CMPTBLEm_Pos (16UL) /*!< CMPTBLEm (Bit 16) */ + #define R_ADC_B0_ADDOPCRB1_CMPTBLEm_Msk (0xff0000UL) /*!< CMPTBLEm (Bitfield-Mask: 0xff) */ +/* ======================================================= ADDOPCRB2 ======================================================= */ + #define R_ADC_B0_ADDOPCRB2_AVEMD_Pos (0UL) /*!< AVEMD (Bit 0) */ + #define R_ADC_B0_ADDOPCRB2_AVEMD_Msk (0x3UL) /*!< AVEMD (Bitfield-Mask: 0x03) */ + #define R_ADC_B0_ADDOPCRB2_ADC_Pos (8UL) /*!< ADC (Bit 8) */ + #define R_ADC_B0_ADDOPCRB2_ADC_Msk (0xf00UL) /*!< ADC (Bitfield-Mask: 0x0f) */ + #define R_ADC_B0_ADDOPCRB2_CMPTBLEm_Pos (16UL) /*!< CMPTBLEm (Bit 16) */ + #define R_ADC_B0_ADDOPCRB2_CMPTBLEm_Msk (0xff0000UL) /*!< CMPTBLEm (Bitfield-Mask: 0xff) */ +/* ======================================================= ADDOPCRB3 ======================================================= */ + #define R_ADC_B0_ADDOPCRB3_AVEMD_Pos (0UL) /*!< AVEMD (Bit 0) */ + #define R_ADC_B0_ADDOPCRB3_AVEMD_Msk (0x3UL) /*!< AVEMD (Bitfield-Mask: 0x03) */ + #define R_ADC_B0_ADDOPCRB3_ADC_Pos (8UL) /*!< ADC (Bit 8) */ + #define R_ADC_B0_ADDOPCRB3_ADC_Msk (0xf00UL) /*!< ADC (Bitfield-Mask: 0x0f) */ + #define R_ADC_B0_ADDOPCRB3_CMPTBLEm_Pos (16UL) /*!< CMPTBLEm (Bit 16) */ + #define R_ADC_B0_ADDOPCRB3_CMPTBLEm_Msk (0xff0000UL) /*!< CMPTBLEm (Bitfield-Mask: 0xff) */ +/* ======================================================= ADDOPCRB4 ======================================================= */ + #define R_ADC_B0_ADDOPCRB4_AVEMD_Pos (0UL) /*!< AVEMD (Bit 0) */ + #define R_ADC_B0_ADDOPCRB4_AVEMD_Msk (0x3UL) /*!< AVEMD (Bitfield-Mask: 0x03) */ + #define R_ADC_B0_ADDOPCRB4_ADC_Pos (8UL) /*!< ADC (Bit 8) */ + #define R_ADC_B0_ADDOPCRB4_ADC_Msk (0xf00UL) /*!< ADC (Bitfield-Mask: 0x0f) */ + #define R_ADC_B0_ADDOPCRB4_CMPTBLEm_Pos (16UL) /*!< CMPTBLEm (Bit 16) */ + #define R_ADC_B0_ADDOPCRB4_CMPTBLEm_Msk (0xff0000UL) /*!< CMPTBLEm (Bitfield-Mask: 0xff) */ +/* ======================================================= ADDOPCRB5 ======================================================= */ + #define R_ADC_B0_ADDOPCRB5_AVEMD_Pos (0UL) /*!< AVEMD (Bit 0) */ + #define R_ADC_B0_ADDOPCRB5_AVEMD_Msk (0x3UL) /*!< AVEMD (Bitfield-Mask: 0x03) */ + #define R_ADC_B0_ADDOPCRB5_ADC_Pos (8UL) /*!< ADC (Bit 8) */ + #define R_ADC_B0_ADDOPCRB5_ADC_Msk (0xf00UL) /*!< ADC (Bitfield-Mask: 0x0f) */ + #define R_ADC_B0_ADDOPCRB5_CMPTBLEm_Pos (16UL) /*!< CMPTBLEm (Bit 16) */ + #define R_ADC_B0_ADDOPCRB5_CMPTBLEm_Msk (0xff0000UL) /*!< CMPTBLEm (Bitfield-Mask: 0xff) */ +/* ======================================================= ADDOPCRB6 ======================================================= */ + #define R_ADC_B0_ADDOPCRB6_AVEMD_Pos (0UL) /*!< AVEMD (Bit 0) */ + #define R_ADC_B0_ADDOPCRB6_AVEMD_Msk (0x3UL) /*!< AVEMD (Bitfield-Mask: 0x03) */ + #define R_ADC_B0_ADDOPCRB6_ADC_Pos (8UL) /*!< ADC (Bit 8) */ + #define R_ADC_B0_ADDOPCRB6_ADC_Msk (0xf00UL) /*!< ADC (Bitfield-Mask: 0x0f) */ + #define R_ADC_B0_ADDOPCRB6_CMPTBLEm_Pos (16UL) /*!< CMPTBLEm (Bit 16) */ + #define R_ADC_B0_ADDOPCRB6_CMPTBLEm_Msk (0xff0000UL) /*!< CMPTBLEm (Bitfield-Mask: 0xff) */ +/* ======================================================= ADDOPCRB7 ======================================================= */ + #define R_ADC_B0_ADDOPCRB7_AVEMD_Pos (0UL) /*!< AVEMD (Bit 0) */ + #define R_ADC_B0_ADDOPCRB7_AVEMD_Msk (0x3UL) /*!< AVEMD (Bitfield-Mask: 0x03) */ + #define R_ADC_B0_ADDOPCRB7_ADC_Pos (8UL) /*!< ADC (Bit 8) */ + #define R_ADC_B0_ADDOPCRB7_ADC_Msk (0xf00UL) /*!< ADC (Bitfield-Mask: 0x0f) */ + #define R_ADC_B0_ADDOPCRB7_CMPTBLEm_Pos (16UL) /*!< CMPTBLEm (Bit 16) */ + #define R_ADC_B0_ADDOPCRB7_CMPTBLEm_Msk (0xff0000UL) /*!< CMPTBLEm (Bitfield-Mask: 0xff) */ +/* ======================================================= ADDOPCRB8 ======================================================= */ + #define R_ADC_B0_ADDOPCRB8_AVEMD_Pos (0UL) /*!< AVEMD (Bit 0) */ + #define R_ADC_B0_ADDOPCRB8_AVEMD_Msk (0x3UL) /*!< AVEMD (Bitfield-Mask: 0x03) */ + #define R_ADC_B0_ADDOPCRB8_ADC_Pos (8UL) /*!< ADC (Bit 8) */ + #define R_ADC_B0_ADDOPCRB8_ADC_Msk (0xf00UL) /*!< ADC (Bitfield-Mask: 0x0f) */ + #define R_ADC_B0_ADDOPCRB8_CMPTBLEm_Pos (16UL) /*!< CMPTBLEm (Bit 16) */ + #define R_ADC_B0_ADDOPCRB8_CMPTBLEm_Msk (0xff0000UL) /*!< CMPTBLEm (Bitfield-Mask: 0xff) */ +/* ======================================================= ADDOPCRB9 ======================================================= */ + #define R_ADC_B0_ADDOPCRB9_AVEMD_Pos (0UL) /*!< AVEMD (Bit 0) */ + #define R_ADC_B0_ADDOPCRB9_AVEMD_Msk (0x3UL) /*!< AVEMD (Bitfield-Mask: 0x03) */ + #define R_ADC_B0_ADDOPCRB9_ADC_Pos (8UL) /*!< ADC (Bit 8) */ + #define R_ADC_B0_ADDOPCRB9_ADC_Msk (0xf00UL) /*!< ADC (Bitfield-Mask: 0x0f) */ + #define R_ADC_B0_ADDOPCRB9_CMPTBLEm_Pos (16UL) /*!< CMPTBLEm (Bit 16) */ + #define R_ADC_B0_ADDOPCRB9_CMPTBLEm_Msk (0xff0000UL) /*!< CMPTBLEm (Bitfield-Mask: 0xff) */ +/* ====================================================== ADDOPCRB10 ======================================================= */ + #define R_ADC_B0_ADDOPCRB10_AVEMD_Pos (0UL) /*!< AVEMD (Bit 0) */ + #define R_ADC_B0_ADDOPCRB10_AVEMD_Msk (0x3UL) /*!< AVEMD (Bitfield-Mask: 0x03) */ + #define R_ADC_B0_ADDOPCRB10_ADC_Pos (8UL) /*!< ADC (Bit 8) */ + #define R_ADC_B0_ADDOPCRB10_ADC_Msk (0xf00UL) /*!< ADC (Bitfield-Mask: 0x0f) */ + #define R_ADC_B0_ADDOPCRB10_CMPTBLEm_Pos (16UL) /*!< CMPTBLEm (Bit 16) */ + #define R_ADC_B0_ADDOPCRB10_CMPTBLEm_Msk (0xff0000UL) /*!< CMPTBLEm (Bitfield-Mask: 0xff) */ +/* ====================================================== ADDOPCRB11 ======================================================= */ + #define R_ADC_B0_ADDOPCRB11_AVEMD_Pos (0UL) /*!< AVEMD (Bit 0) */ + #define R_ADC_B0_ADDOPCRB11_AVEMD_Msk (0x3UL) /*!< AVEMD (Bitfield-Mask: 0x03) */ + #define R_ADC_B0_ADDOPCRB11_ADC_Pos (8UL) /*!< ADC (Bit 8) */ + #define R_ADC_B0_ADDOPCRB11_ADC_Msk (0xf00UL) /*!< ADC (Bitfield-Mask: 0x0f) */ + #define R_ADC_B0_ADDOPCRB11_CMPTBLEm_Pos (16UL) /*!< CMPTBLEm (Bit 16) */ + #define R_ADC_B0_ADDOPCRB11_CMPTBLEm_Msk (0xff0000UL) /*!< CMPTBLEm (Bitfield-Mask: 0xff) */ +/* ====================================================== ADDOPCRB12 ======================================================= */ + #define R_ADC_B0_ADDOPCRB12_AVEMD_Pos (0UL) /*!< AVEMD (Bit 0) */ + #define R_ADC_B0_ADDOPCRB12_AVEMD_Msk (0x3UL) /*!< AVEMD (Bitfield-Mask: 0x03) */ + #define R_ADC_B0_ADDOPCRB12_ADC_Pos (8UL) /*!< ADC (Bit 8) */ + #define R_ADC_B0_ADDOPCRB12_ADC_Msk (0xf00UL) /*!< ADC (Bitfield-Mask: 0x0f) */ + #define R_ADC_B0_ADDOPCRB12_CMPTBLEm_Pos (16UL) /*!< CMPTBLEm (Bit 16) */ + #define R_ADC_B0_ADDOPCRB12_CMPTBLEm_Msk (0xff0000UL) /*!< CMPTBLEm (Bitfield-Mask: 0xff) */ +/* ====================================================== ADDOPCRB13 ======================================================= */ + #define R_ADC_B0_ADDOPCRB13_AVEMD_Pos (0UL) /*!< AVEMD (Bit 0) */ + #define R_ADC_B0_ADDOPCRB13_AVEMD_Msk (0x3UL) /*!< AVEMD (Bitfield-Mask: 0x03) */ + #define R_ADC_B0_ADDOPCRB13_ADC_Pos (8UL) /*!< ADC (Bit 8) */ + #define R_ADC_B0_ADDOPCRB13_ADC_Msk (0xf00UL) /*!< ADC (Bitfield-Mask: 0x0f) */ + #define R_ADC_B0_ADDOPCRB13_CMPTBLEm_Pos (16UL) /*!< CMPTBLEm (Bit 16) */ + #define R_ADC_B0_ADDOPCRB13_CMPTBLEm_Msk (0xff0000UL) /*!< CMPTBLEm (Bitfield-Mask: 0xff) */ +/* ====================================================== ADDOPCRB14 ======================================================= */ + #define R_ADC_B0_ADDOPCRB14_AVEMD_Pos (0UL) /*!< AVEMD (Bit 0) */ + #define R_ADC_B0_ADDOPCRB14_AVEMD_Msk (0x3UL) /*!< AVEMD (Bitfield-Mask: 0x03) */ + #define R_ADC_B0_ADDOPCRB14_ADC_Pos (8UL) /*!< ADC (Bit 8) */ + #define R_ADC_B0_ADDOPCRB14_ADC_Msk (0xf00UL) /*!< ADC (Bitfield-Mask: 0x0f) */ + #define R_ADC_B0_ADDOPCRB14_CMPTBLEm_Pos (16UL) /*!< CMPTBLEm (Bit 16) */ + #define R_ADC_B0_ADDOPCRB14_CMPTBLEm_Msk (0xff0000UL) /*!< CMPTBLEm (Bitfield-Mask: 0xff) */ +/* ====================================================== ADDOPCRB15 ======================================================= */ + #define R_ADC_B0_ADDOPCRB15_AVEMD_Pos (0UL) /*!< AVEMD (Bit 0) */ + #define R_ADC_B0_ADDOPCRB15_AVEMD_Msk (0x3UL) /*!< AVEMD (Bitfield-Mask: 0x03) */ + #define R_ADC_B0_ADDOPCRB15_ADC_Pos (8UL) /*!< ADC (Bit 8) */ + #define R_ADC_B0_ADDOPCRB15_ADC_Msk (0xf00UL) /*!< ADC (Bitfield-Mask: 0x0f) */ + #define R_ADC_B0_ADDOPCRB15_CMPTBLEm_Pos (16UL) /*!< CMPTBLEm (Bit 16) */ + #define R_ADC_B0_ADDOPCRB15_CMPTBLEm_Msk (0xff0000UL) /*!< CMPTBLEm (Bitfield-Mask: 0xff) */ +/* ====================================================== ADDOPCRB16 ======================================================= */ + #define R_ADC_B0_ADDOPCRB16_AVEMD_Pos (0UL) /*!< AVEMD (Bit 0) */ + #define R_ADC_B0_ADDOPCRB16_AVEMD_Msk (0x3UL) /*!< AVEMD (Bitfield-Mask: 0x03) */ + #define R_ADC_B0_ADDOPCRB16_ADC_Pos (8UL) /*!< ADC (Bit 8) */ + #define R_ADC_B0_ADDOPCRB16_ADC_Msk (0xf00UL) /*!< ADC (Bitfield-Mask: 0x0f) */ + #define R_ADC_B0_ADDOPCRB16_CMPTBLEm_Pos (16UL) /*!< CMPTBLEm (Bit 16) */ + #define R_ADC_B0_ADDOPCRB16_CMPTBLEm_Msk (0xff0000UL) /*!< CMPTBLEm (Bitfield-Mask: 0xff) */ +/* ====================================================== ADDOPCRB17 ======================================================= */ + #define R_ADC_B0_ADDOPCRB17_AVEMD_Pos (0UL) /*!< AVEMD (Bit 0) */ + #define R_ADC_B0_ADDOPCRB17_AVEMD_Msk (0x3UL) /*!< AVEMD (Bitfield-Mask: 0x03) */ + #define R_ADC_B0_ADDOPCRB17_ADC_Pos (8UL) /*!< ADC (Bit 8) */ + #define R_ADC_B0_ADDOPCRB17_ADC_Msk (0xf00UL) /*!< ADC (Bitfield-Mask: 0x0f) */ + #define R_ADC_B0_ADDOPCRB17_CMPTBLEm_Pos (16UL) /*!< CMPTBLEm (Bit 16) */ + #define R_ADC_B0_ADDOPCRB17_CMPTBLEm_Msk (0xff0000UL) /*!< CMPTBLEm (Bitfield-Mask: 0xff) */ +/* ====================================================== ADDOPCRB18 ======================================================= */ + #define R_ADC_B0_ADDOPCRB18_AVEMD_Pos (0UL) /*!< AVEMD (Bit 0) */ + #define R_ADC_B0_ADDOPCRB18_AVEMD_Msk (0x3UL) /*!< AVEMD (Bitfield-Mask: 0x03) */ + #define R_ADC_B0_ADDOPCRB18_ADC_Pos (8UL) /*!< ADC (Bit 8) */ + #define R_ADC_B0_ADDOPCRB18_ADC_Msk (0xf00UL) /*!< ADC (Bitfield-Mask: 0x0f) */ + #define R_ADC_B0_ADDOPCRB18_CMPTBLEm_Pos (16UL) /*!< CMPTBLEm (Bit 16) */ + #define R_ADC_B0_ADDOPCRB18_CMPTBLEm_Msk (0xff0000UL) /*!< CMPTBLEm (Bitfield-Mask: 0xff) */ +/* ====================================================== ADDOPCRB19 ======================================================= */ + #define R_ADC_B0_ADDOPCRB19_AVEMD_Pos (0UL) /*!< AVEMD (Bit 0) */ + #define R_ADC_B0_ADDOPCRB19_AVEMD_Msk (0x3UL) /*!< AVEMD (Bitfield-Mask: 0x03) */ + #define R_ADC_B0_ADDOPCRB19_ADC_Pos (8UL) /*!< ADC (Bit 8) */ + #define R_ADC_B0_ADDOPCRB19_ADC_Msk (0xf00UL) /*!< ADC (Bitfield-Mask: 0x0f) */ + #define R_ADC_B0_ADDOPCRB19_CMPTBLEm_Pos (16UL) /*!< CMPTBLEm (Bit 16) */ + #define R_ADC_B0_ADDOPCRB19_CMPTBLEm_Msk (0xff0000UL) /*!< CMPTBLEm (Bitfield-Mask: 0xff) */ +/* ====================================================== ADDOPCRB20 ======================================================= */ + #define R_ADC_B0_ADDOPCRB20_AVEMD_Pos (0UL) /*!< AVEMD (Bit 0) */ + #define R_ADC_B0_ADDOPCRB20_AVEMD_Msk (0x3UL) /*!< AVEMD (Bitfield-Mask: 0x03) */ + #define R_ADC_B0_ADDOPCRB20_ADC_Pos (8UL) /*!< ADC (Bit 8) */ + #define R_ADC_B0_ADDOPCRB20_ADC_Msk (0xf00UL) /*!< ADC (Bitfield-Mask: 0x0f) */ + #define R_ADC_B0_ADDOPCRB20_CMPTBLEm_Pos (16UL) /*!< CMPTBLEm (Bit 16) */ + #define R_ADC_B0_ADDOPCRB20_CMPTBLEm_Msk (0xff0000UL) /*!< CMPTBLEm (Bitfield-Mask: 0xff) */ +/* ====================================================== ADDOPCRB21 ======================================================= */ + #define R_ADC_B0_ADDOPCRB21_AVEMD_Pos (0UL) /*!< AVEMD (Bit 0) */ + #define R_ADC_B0_ADDOPCRB21_AVEMD_Msk (0x3UL) /*!< AVEMD (Bitfield-Mask: 0x03) */ + #define R_ADC_B0_ADDOPCRB21_ADC_Pos (8UL) /*!< ADC (Bit 8) */ + #define R_ADC_B0_ADDOPCRB21_ADC_Msk (0xf00UL) /*!< ADC (Bitfield-Mask: 0x0f) */ + #define R_ADC_B0_ADDOPCRB21_CMPTBLEm_Pos (16UL) /*!< CMPTBLEm (Bit 16) */ + #define R_ADC_B0_ADDOPCRB21_CMPTBLEm_Msk (0xff0000UL) /*!< CMPTBLEm (Bitfield-Mask: 0xff) */ +/* ====================================================== ADDOPCRB22 ======================================================= */ + #define R_ADC_B0_ADDOPCRB22_AVEMD_Pos (0UL) /*!< AVEMD (Bit 0) */ + #define R_ADC_B0_ADDOPCRB22_AVEMD_Msk (0x3UL) /*!< AVEMD (Bitfield-Mask: 0x03) */ + #define R_ADC_B0_ADDOPCRB22_ADC_Pos (8UL) /*!< ADC (Bit 8) */ + #define R_ADC_B0_ADDOPCRB22_ADC_Msk (0xf00UL) /*!< ADC (Bitfield-Mask: 0x0f) */ + #define R_ADC_B0_ADDOPCRB22_CMPTBLEm_Pos (16UL) /*!< CMPTBLEm (Bit 16) */ + #define R_ADC_B0_ADDOPCRB22_CMPTBLEm_Msk (0xff0000UL) /*!< CMPTBLEm (Bitfield-Mask: 0xff) */ +/* ====================================================== ADDOPCRB23 ======================================================= */ + #define R_ADC_B0_ADDOPCRB23_AVEMD_Pos (0UL) /*!< AVEMD (Bit 0) */ + #define R_ADC_B0_ADDOPCRB23_AVEMD_Msk (0x3UL) /*!< AVEMD (Bitfield-Mask: 0x03) */ + #define R_ADC_B0_ADDOPCRB23_ADC_Pos (8UL) /*!< ADC (Bit 8) */ + #define R_ADC_B0_ADDOPCRB23_ADC_Msk (0xf00UL) /*!< ADC (Bitfield-Mask: 0x0f) */ + #define R_ADC_B0_ADDOPCRB23_CMPTBLEm_Pos (16UL) /*!< CMPTBLEm (Bit 16) */ + #define R_ADC_B0_ADDOPCRB23_CMPTBLEm_Msk (0xff0000UL) /*!< CMPTBLEm (Bitfield-Mask: 0xff) */ +/* ====================================================== ADDOPCRB24 ======================================================= */ + #define R_ADC_B0_ADDOPCRB24_AVEMD_Pos (0UL) /*!< AVEMD (Bit 0) */ + #define R_ADC_B0_ADDOPCRB24_AVEMD_Msk (0x3UL) /*!< AVEMD (Bitfield-Mask: 0x03) */ + #define R_ADC_B0_ADDOPCRB24_ADC_Pos (8UL) /*!< ADC (Bit 8) */ + #define R_ADC_B0_ADDOPCRB24_ADC_Msk (0xf00UL) /*!< ADC (Bitfield-Mask: 0x0f) */ + #define R_ADC_B0_ADDOPCRB24_CMPTBLEm_Pos (16UL) /*!< CMPTBLEm (Bit 16) */ + #define R_ADC_B0_ADDOPCRB24_CMPTBLEm_Msk (0xff0000UL) /*!< CMPTBLEm (Bitfield-Mask: 0xff) */ +/* ====================================================== ADDOPCRB25 ======================================================= */ + #define R_ADC_B0_ADDOPCRB25_AVEMD_Pos (0UL) /*!< AVEMD (Bit 0) */ + #define R_ADC_B0_ADDOPCRB25_AVEMD_Msk (0x3UL) /*!< AVEMD (Bitfield-Mask: 0x03) */ + #define R_ADC_B0_ADDOPCRB25_ADC_Pos (8UL) /*!< ADC (Bit 8) */ + #define R_ADC_B0_ADDOPCRB25_ADC_Msk (0xf00UL) /*!< ADC (Bitfield-Mask: 0x0f) */ + #define R_ADC_B0_ADDOPCRB25_CMPTBLEm_Pos (16UL) /*!< CMPTBLEm (Bit 16) */ + #define R_ADC_B0_ADDOPCRB25_CMPTBLEm_Msk (0xff0000UL) /*!< CMPTBLEm (Bitfield-Mask: 0xff) */ +/* ====================================================== ADDOPCRB26 ======================================================= */ + #define R_ADC_B0_ADDOPCRB26_AVEMD_Pos (0UL) /*!< AVEMD (Bit 0) */ + #define R_ADC_B0_ADDOPCRB26_AVEMD_Msk (0x3UL) /*!< AVEMD (Bitfield-Mask: 0x03) */ + #define R_ADC_B0_ADDOPCRB26_ADC_Pos (8UL) /*!< ADC (Bit 8) */ + #define R_ADC_B0_ADDOPCRB26_ADC_Msk (0xf00UL) /*!< ADC (Bitfield-Mask: 0x0f) */ + #define R_ADC_B0_ADDOPCRB26_CMPTBLEm_Pos (16UL) /*!< CMPTBLEm (Bit 16) */ + #define R_ADC_B0_ADDOPCRB26_CMPTBLEm_Msk (0xff0000UL) /*!< CMPTBLEm (Bitfield-Mask: 0xff) */ +/* ====================================================== ADDOPCRB27 ======================================================= */ + #define R_ADC_B0_ADDOPCRB27_AVEMD_Pos (0UL) /*!< AVEMD (Bit 0) */ + #define R_ADC_B0_ADDOPCRB27_AVEMD_Msk (0x3UL) /*!< AVEMD (Bitfield-Mask: 0x03) */ + #define R_ADC_B0_ADDOPCRB27_ADC_Pos (8UL) /*!< ADC (Bit 8) */ + #define R_ADC_B0_ADDOPCRB27_ADC_Msk (0xf00UL) /*!< ADC (Bitfield-Mask: 0x0f) */ + #define R_ADC_B0_ADDOPCRB27_CMPTBLEm_Pos (16UL) /*!< CMPTBLEm (Bit 16) */ + #define R_ADC_B0_ADDOPCRB27_CMPTBLEm_Msk (0xff0000UL) /*!< CMPTBLEm (Bitfield-Mask: 0xff) */ +/* ====================================================== ADDOPCRB28 ======================================================= */ + #define R_ADC_B0_ADDOPCRB28_AVEMD_Pos (0UL) /*!< AVEMD (Bit 0) */ + #define R_ADC_B0_ADDOPCRB28_AVEMD_Msk (0x3UL) /*!< AVEMD (Bitfield-Mask: 0x03) */ + #define R_ADC_B0_ADDOPCRB28_ADC_Pos (8UL) /*!< ADC (Bit 8) */ + #define R_ADC_B0_ADDOPCRB28_ADC_Msk (0xf00UL) /*!< ADC (Bitfield-Mask: 0x0f) */ + #define R_ADC_B0_ADDOPCRB28_CMPTBLEm_Pos (16UL) /*!< CMPTBLEm (Bit 16) */ + #define R_ADC_B0_ADDOPCRB28_CMPTBLEm_Msk (0xff0000UL) /*!< CMPTBLEm (Bitfield-Mask: 0xff) */ +/* ====================================================== ADDOPCRB29 ======================================================= */ + #define R_ADC_B0_ADDOPCRB29_AVEMD_Pos (0UL) /*!< AVEMD (Bit 0) */ + #define R_ADC_B0_ADDOPCRB29_AVEMD_Msk (0x3UL) /*!< AVEMD (Bitfield-Mask: 0x03) */ + #define R_ADC_B0_ADDOPCRB29_ADC_Pos (8UL) /*!< ADC (Bit 8) */ + #define R_ADC_B0_ADDOPCRB29_ADC_Msk (0xf00UL) /*!< ADC (Bitfield-Mask: 0x0f) */ + #define R_ADC_B0_ADDOPCRB29_CMPTBLEm_Pos (16UL) /*!< CMPTBLEm (Bit 16) */ + #define R_ADC_B0_ADDOPCRB29_CMPTBLEm_Msk (0xff0000UL) /*!< CMPTBLEm (Bitfield-Mask: 0xff) */ +/* ====================================================== ADDOPCRB30 ======================================================= */ + #define R_ADC_B0_ADDOPCRB30_AVEMD_Pos (0UL) /*!< AVEMD (Bit 0) */ + #define R_ADC_B0_ADDOPCRB30_AVEMD_Msk (0x3UL) /*!< AVEMD (Bitfield-Mask: 0x03) */ + #define R_ADC_B0_ADDOPCRB30_ADC_Pos (8UL) /*!< ADC (Bit 8) */ + #define R_ADC_B0_ADDOPCRB30_ADC_Msk (0xf00UL) /*!< ADC (Bitfield-Mask: 0x0f) */ + #define R_ADC_B0_ADDOPCRB30_CMPTBLEm_Pos (16UL) /*!< CMPTBLEm (Bit 16) */ + #define R_ADC_B0_ADDOPCRB30_CMPTBLEm_Msk (0xff0000UL) /*!< CMPTBLEm (Bitfield-Mask: 0xff) */ +/* ====================================================== ADDOPCRB31 ======================================================= */ + #define R_ADC_B0_ADDOPCRB31_AVEMD_Pos (0UL) /*!< AVEMD (Bit 0) */ + #define R_ADC_B0_ADDOPCRB31_AVEMD_Msk (0x3UL) /*!< AVEMD (Bitfield-Mask: 0x03) */ + #define R_ADC_B0_ADDOPCRB31_ADC_Pos (8UL) /*!< ADC (Bit 8) */ + #define R_ADC_B0_ADDOPCRB31_ADC_Msk (0xf00UL) /*!< ADC (Bitfield-Mask: 0x0f) */ + #define R_ADC_B0_ADDOPCRB31_CMPTBLEm_Pos (16UL) /*!< CMPTBLEm (Bit 16) */ + #define R_ADC_B0_ADDOPCRB31_CMPTBLEm_Msk (0xff0000UL) /*!< CMPTBLEm (Bitfield-Mask: 0xff) */ +/* ====================================================== ADDOPCRB32 ======================================================= */ + #define R_ADC_B0_ADDOPCRB32_AVEMD_Pos (0UL) /*!< AVEMD (Bit 0) */ + #define R_ADC_B0_ADDOPCRB32_AVEMD_Msk (0x3UL) /*!< AVEMD (Bitfield-Mask: 0x03) */ + #define R_ADC_B0_ADDOPCRB32_ADC_Pos (8UL) /*!< ADC (Bit 8) */ + #define R_ADC_B0_ADDOPCRB32_ADC_Msk (0xf00UL) /*!< ADC (Bitfield-Mask: 0x0f) */ + #define R_ADC_B0_ADDOPCRB32_CMPTBLEm_Pos (16UL) /*!< CMPTBLEm (Bit 16) */ + #define R_ADC_B0_ADDOPCRB32_CMPTBLEm_Msk (0xff0000UL) /*!< CMPTBLEm (Bitfield-Mask: 0xff) */ +/* ====================================================== ADDOPCRB33 ======================================================= */ + #define R_ADC_B0_ADDOPCRB33_AVEMD_Pos (0UL) /*!< AVEMD (Bit 0) */ + #define R_ADC_B0_ADDOPCRB33_AVEMD_Msk (0x3UL) /*!< AVEMD (Bitfield-Mask: 0x03) */ + #define R_ADC_B0_ADDOPCRB33_ADC_Pos (8UL) /*!< ADC (Bit 8) */ + #define R_ADC_B0_ADDOPCRB33_ADC_Msk (0xf00UL) /*!< ADC (Bitfield-Mask: 0x0f) */ + #define R_ADC_B0_ADDOPCRB33_CMPTBLEm_Pos (16UL) /*!< CMPTBLEm (Bit 16) */ + #define R_ADC_B0_ADDOPCRB33_CMPTBLEm_Msk (0xff0000UL) /*!< CMPTBLEm (Bitfield-Mask: 0xff) */ +/* ====================================================== ADDOPCRB34 ======================================================= */ + #define R_ADC_B0_ADDOPCRB34_AVEMD_Pos (0UL) /*!< AVEMD (Bit 0) */ + #define R_ADC_B0_ADDOPCRB34_AVEMD_Msk (0x3UL) /*!< AVEMD (Bitfield-Mask: 0x03) */ + #define R_ADC_B0_ADDOPCRB34_ADC_Pos (8UL) /*!< ADC (Bit 8) */ + #define R_ADC_B0_ADDOPCRB34_ADC_Msk (0xf00UL) /*!< ADC (Bitfield-Mask: 0x0f) */ + #define R_ADC_B0_ADDOPCRB34_CMPTBLEm_Pos (16UL) /*!< CMPTBLEm (Bit 16) */ + #define R_ADC_B0_ADDOPCRB34_CMPTBLEm_Msk (0xff0000UL) /*!< CMPTBLEm (Bitfield-Mask: 0xff) */ +/* ====================================================== ADDOPCRB35 ======================================================= */ + #define R_ADC_B0_ADDOPCRB35_AVEMD_Pos (0UL) /*!< AVEMD (Bit 0) */ + #define R_ADC_B0_ADDOPCRB35_AVEMD_Msk (0x3UL) /*!< AVEMD (Bitfield-Mask: 0x03) */ + #define R_ADC_B0_ADDOPCRB35_ADC_Pos (8UL) /*!< ADC (Bit 8) */ + #define R_ADC_B0_ADDOPCRB35_ADC_Msk (0xf00UL) /*!< ADC (Bitfield-Mask: 0x0f) */ + #define R_ADC_B0_ADDOPCRB35_CMPTBLEm_Pos (16UL) /*!< CMPTBLEm (Bit 16) */ + #define R_ADC_B0_ADDOPCRB35_CMPTBLEm_Msk (0xff0000UL) /*!< CMPTBLEm (Bitfield-Mask: 0xff) */ +/* ====================================================== ADDOPCRB36 ======================================================= */ + #define R_ADC_B0_ADDOPCRB36_AVEMD_Pos (0UL) /*!< AVEMD (Bit 0) */ + #define R_ADC_B0_ADDOPCRB36_AVEMD_Msk (0x3UL) /*!< AVEMD (Bitfield-Mask: 0x03) */ + #define R_ADC_B0_ADDOPCRB36_ADC_Pos (8UL) /*!< ADC (Bit 8) */ + #define R_ADC_B0_ADDOPCRB36_ADC_Msk (0xf00UL) /*!< ADC (Bitfield-Mask: 0x0f) */ + #define R_ADC_B0_ADDOPCRB36_CMPTBLEm_Pos (16UL) /*!< CMPTBLEm (Bit 16) */ + #define R_ADC_B0_ADDOPCRB36_CMPTBLEm_Msk (0xff0000UL) /*!< CMPTBLEm (Bitfield-Mask: 0xff) */ +/* ======================================================= ADDOPCRC0 ======================================================= */ + #define R_ADC_B0_ADDOPCRC0_LIMTBLS_Pos (0UL) /*!< LIMTBLS (Bit 0) */ + #define R_ADC_B0_ADDOPCRC0_LIMTBLS_Msk (0xfUL) /*!< LIMTBLS (Bitfield-Mask: 0x0f) */ + #define R_ADC_B0_ADDOPCRC0_ADPRC_Pos (16UL) /*!< ADPRC (Bit 16) */ + #define R_ADC_B0_ADDOPCRC0_ADPRC_Msk (0x30000UL) /*!< ADPRC (Bitfield-Mask: 0x03) */ + #define R_ADC_B0_ADDOPCRC0_SIGNSEL_Pos (20UL) /*!< SIGNSEL (Bit 20) */ + #define R_ADC_B0_ADDOPCRC0_SIGNSEL_Msk (0x100000UL) /*!< SIGNSEL (Bitfield-Mask: 0x01) */ +/* ======================================================= ADDOPCRC1 ======================================================= */ + #define R_ADC_B0_ADDOPCRC1_LIMTBLS_Pos (0UL) /*!< LIMTBLS (Bit 0) */ + #define R_ADC_B0_ADDOPCRC1_LIMTBLS_Msk (0xfUL) /*!< LIMTBLS (Bitfield-Mask: 0x0f) */ + #define R_ADC_B0_ADDOPCRC1_ADPRC_Pos (16UL) /*!< ADPRC (Bit 16) */ + #define R_ADC_B0_ADDOPCRC1_ADPRC_Msk (0x30000UL) /*!< ADPRC (Bitfield-Mask: 0x03) */ + #define R_ADC_B0_ADDOPCRC1_SIGNSEL_Pos (20UL) /*!< SIGNSEL (Bit 20) */ + #define R_ADC_B0_ADDOPCRC1_SIGNSEL_Msk (0x100000UL) /*!< SIGNSEL (Bitfield-Mask: 0x01) */ +/* ======================================================= ADDOPCRC2 ======================================================= */ + #define R_ADC_B0_ADDOPCRC2_LIMTBLS_Pos (0UL) /*!< LIMTBLS (Bit 0) */ + #define R_ADC_B0_ADDOPCRC2_LIMTBLS_Msk (0xfUL) /*!< LIMTBLS (Bitfield-Mask: 0x0f) */ + #define R_ADC_B0_ADDOPCRC2_ADPRC_Pos (16UL) /*!< ADPRC (Bit 16) */ + #define R_ADC_B0_ADDOPCRC2_ADPRC_Msk (0x30000UL) /*!< ADPRC (Bitfield-Mask: 0x03) */ + #define R_ADC_B0_ADDOPCRC2_SIGNSEL_Pos (20UL) /*!< SIGNSEL (Bit 20) */ + #define R_ADC_B0_ADDOPCRC2_SIGNSEL_Msk (0x100000UL) /*!< SIGNSEL (Bitfield-Mask: 0x01) */ +/* ======================================================= ADDOPCRC3 ======================================================= */ + #define R_ADC_B0_ADDOPCRC3_LIMTBLS_Pos (0UL) /*!< LIMTBLS (Bit 0) */ + #define R_ADC_B0_ADDOPCRC3_LIMTBLS_Msk (0xfUL) /*!< LIMTBLS (Bitfield-Mask: 0x0f) */ + #define R_ADC_B0_ADDOPCRC3_ADPRC_Pos (16UL) /*!< ADPRC (Bit 16) */ + #define R_ADC_B0_ADDOPCRC3_ADPRC_Msk (0x30000UL) /*!< ADPRC (Bitfield-Mask: 0x03) */ + #define R_ADC_B0_ADDOPCRC3_SIGNSEL_Pos (20UL) /*!< SIGNSEL (Bit 20) */ + #define R_ADC_B0_ADDOPCRC3_SIGNSEL_Msk (0x100000UL) /*!< SIGNSEL (Bitfield-Mask: 0x01) */ +/* ======================================================= ADDOPCRC4 ======================================================= */ + #define R_ADC_B0_ADDOPCRC4_LIMTBLS_Pos (0UL) /*!< LIMTBLS (Bit 0) */ + #define R_ADC_B0_ADDOPCRC4_LIMTBLS_Msk (0xfUL) /*!< LIMTBLS (Bitfield-Mask: 0x0f) */ + #define R_ADC_B0_ADDOPCRC4_ADPRC_Pos (16UL) /*!< ADPRC (Bit 16) */ + #define R_ADC_B0_ADDOPCRC4_ADPRC_Msk (0x30000UL) /*!< ADPRC (Bitfield-Mask: 0x03) */ + #define R_ADC_B0_ADDOPCRC4_SIGNSEL_Pos (20UL) /*!< SIGNSEL (Bit 20) */ + #define R_ADC_B0_ADDOPCRC4_SIGNSEL_Msk (0x100000UL) /*!< SIGNSEL (Bitfield-Mask: 0x01) */ +/* ======================================================= ADDOPCRC5 ======================================================= */ + #define R_ADC_B0_ADDOPCRC5_LIMTBLS_Pos (0UL) /*!< LIMTBLS (Bit 0) */ + #define R_ADC_B0_ADDOPCRC5_LIMTBLS_Msk (0xfUL) /*!< LIMTBLS (Bitfield-Mask: 0x0f) */ + #define R_ADC_B0_ADDOPCRC5_ADPRC_Pos (16UL) /*!< ADPRC (Bit 16) */ + #define R_ADC_B0_ADDOPCRC5_ADPRC_Msk (0x30000UL) /*!< ADPRC (Bitfield-Mask: 0x03) */ + #define R_ADC_B0_ADDOPCRC5_SIGNSEL_Pos (20UL) /*!< SIGNSEL (Bit 20) */ + #define R_ADC_B0_ADDOPCRC5_SIGNSEL_Msk (0x100000UL) /*!< SIGNSEL (Bitfield-Mask: 0x01) */ +/* ======================================================= ADDOPCRC6 ======================================================= */ + #define R_ADC_B0_ADDOPCRC6_LIMTBLS_Pos (0UL) /*!< LIMTBLS (Bit 0) */ + #define R_ADC_B0_ADDOPCRC6_LIMTBLS_Msk (0xfUL) /*!< LIMTBLS (Bitfield-Mask: 0x0f) */ + #define R_ADC_B0_ADDOPCRC6_ADPRC_Pos (16UL) /*!< ADPRC (Bit 16) */ + #define R_ADC_B0_ADDOPCRC6_ADPRC_Msk (0x30000UL) /*!< ADPRC (Bitfield-Mask: 0x03) */ + #define R_ADC_B0_ADDOPCRC6_SIGNSEL_Pos (20UL) /*!< SIGNSEL (Bit 20) */ + #define R_ADC_B0_ADDOPCRC6_SIGNSEL_Msk (0x100000UL) /*!< SIGNSEL (Bitfield-Mask: 0x01) */ +/* ======================================================= ADDOPCRC7 ======================================================= */ + #define R_ADC_B0_ADDOPCRC7_LIMTBLS_Pos (0UL) /*!< LIMTBLS (Bit 0) */ + #define R_ADC_B0_ADDOPCRC7_LIMTBLS_Msk (0xfUL) /*!< LIMTBLS (Bitfield-Mask: 0x0f) */ + #define R_ADC_B0_ADDOPCRC7_ADPRC_Pos (16UL) /*!< ADPRC (Bit 16) */ + #define R_ADC_B0_ADDOPCRC7_ADPRC_Msk (0x30000UL) /*!< ADPRC (Bitfield-Mask: 0x03) */ + #define R_ADC_B0_ADDOPCRC7_SIGNSEL_Pos (20UL) /*!< SIGNSEL (Bit 20) */ + #define R_ADC_B0_ADDOPCRC7_SIGNSEL_Msk (0x100000UL) /*!< SIGNSEL (Bitfield-Mask: 0x01) */ +/* ======================================================= ADDOPCRC8 ======================================================= */ + #define R_ADC_B0_ADDOPCRC8_LIMTBLS_Pos (0UL) /*!< LIMTBLS (Bit 0) */ + #define R_ADC_B0_ADDOPCRC8_LIMTBLS_Msk (0xfUL) /*!< LIMTBLS (Bitfield-Mask: 0x0f) */ + #define R_ADC_B0_ADDOPCRC8_ADPRC_Pos (16UL) /*!< ADPRC (Bit 16) */ + #define R_ADC_B0_ADDOPCRC8_ADPRC_Msk (0x30000UL) /*!< ADPRC (Bitfield-Mask: 0x03) */ + #define R_ADC_B0_ADDOPCRC8_SIGNSEL_Pos (20UL) /*!< SIGNSEL (Bit 20) */ + #define R_ADC_B0_ADDOPCRC8_SIGNSEL_Msk (0x100000UL) /*!< SIGNSEL (Bitfield-Mask: 0x01) */ +/* ======================================================= ADDOPCRC9 ======================================================= */ + #define R_ADC_B0_ADDOPCRC9_LIMTBLS_Pos (0UL) /*!< LIMTBLS (Bit 0) */ + #define R_ADC_B0_ADDOPCRC9_LIMTBLS_Msk (0xfUL) /*!< LIMTBLS (Bitfield-Mask: 0x0f) */ + #define R_ADC_B0_ADDOPCRC9_ADPRC_Pos (16UL) /*!< ADPRC (Bit 16) */ + #define R_ADC_B0_ADDOPCRC9_ADPRC_Msk (0x30000UL) /*!< ADPRC (Bitfield-Mask: 0x03) */ + #define R_ADC_B0_ADDOPCRC9_SIGNSEL_Pos (20UL) /*!< SIGNSEL (Bit 20) */ + #define R_ADC_B0_ADDOPCRC9_SIGNSEL_Msk (0x100000UL) /*!< SIGNSEL (Bitfield-Mask: 0x01) */ +/* ====================================================== ADDOPCRC10 ======================================================= */ + #define R_ADC_B0_ADDOPCRC10_LIMTBLS_Pos (0UL) /*!< LIMTBLS (Bit 0) */ + #define R_ADC_B0_ADDOPCRC10_LIMTBLS_Msk (0xfUL) /*!< LIMTBLS (Bitfield-Mask: 0x0f) */ + #define R_ADC_B0_ADDOPCRC10_ADPRC_Pos (16UL) /*!< ADPRC (Bit 16) */ + #define R_ADC_B0_ADDOPCRC10_ADPRC_Msk (0x30000UL) /*!< ADPRC (Bitfield-Mask: 0x03) */ + #define R_ADC_B0_ADDOPCRC10_SIGNSEL_Pos (20UL) /*!< SIGNSEL (Bit 20) */ + #define R_ADC_B0_ADDOPCRC10_SIGNSEL_Msk (0x100000UL) /*!< SIGNSEL (Bitfield-Mask: 0x01) */ +/* ====================================================== ADDOPCRC11 ======================================================= */ + #define R_ADC_B0_ADDOPCRC11_LIMTBLS_Pos (0UL) /*!< LIMTBLS (Bit 0) */ + #define R_ADC_B0_ADDOPCRC11_LIMTBLS_Msk (0xfUL) /*!< LIMTBLS (Bitfield-Mask: 0x0f) */ + #define R_ADC_B0_ADDOPCRC11_ADPRC_Pos (16UL) /*!< ADPRC (Bit 16) */ + #define R_ADC_B0_ADDOPCRC11_ADPRC_Msk (0x30000UL) /*!< ADPRC (Bitfield-Mask: 0x03) */ + #define R_ADC_B0_ADDOPCRC11_SIGNSEL_Pos (20UL) /*!< SIGNSEL (Bit 20) */ + #define R_ADC_B0_ADDOPCRC11_SIGNSEL_Msk (0x100000UL) /*!< SIGNSEL (Bitfield-Mask: 0x01) */ +/* ====================================================== ADDOPCRC12 ======================================================= */ + #define R_ADC_B0_ADDOPCRC12_LIMTBLS_Pos (0UL) /*!< LIMTBLS (Bit 0) */ + #define R_ADC_B0_ADDOPCRC12_LIMTBLS_Msk (0xfUL) /*!< LIMTBLS (Bitfield-Mask: 0x0f) */ + #define R_ADC_B0_ADDOPCRC12_ADPRC_Pos (16UL) /*!< ADPRC (Bit 16) */ + #define R_ADC_B0_ADDOPCRC12_ADPRC_Msk (0x30000UL) /*!< ADPRC (Bitfield-Mask: 0x03) */ + #define R_ADC_B0_ADDOPCRC12_SIGNSEL_Pos (20UL) /*!< SIGNSEL (Bit 20) */ + #define R_ADC_B0_ADDOPCRC12_SIGNSEL_Msk (0x100000UL) /*!< SIGNSEL (Bitfield-Mask: 0x01) */ +/* ====================================================== ADDOPCRC13 ======================================================= */ + #define R_ADC_B0_ADDOPCRC13_LIMTBLS_Pos (0UL) /*!< LIMTBLS (Bit 0) */ + #define R_ADC_B0_ADDOPCRC13_LIMTBLS_Msk (0xfUL) /*!< LIMTBLS (Bitfield-Mask: 0x0f) */ + #define R_ADC_B0_ADDOPCRC13_ADPRC_Pos (16UL) /*!< ADPRC (Bit 16) */ + #define R_ADC_B0_ADDOPCRC13_ADPRC_Msk (0x30000UL) /*!< ADPRC (Bitfield-Mask: 0x03) */ + #define R_ADC_B0_ADDOPCRC13_SIGNSEL_Pos (20UL) /*!< SIGNSEL (Bit 20) */ + #define R_ADC_B0_ADDOPCRC13_SIGNSEL_Msk (0x100000UL) /*!< SIGNSEL (Bitfield-Mask: 0x01) */ +/* ====================================================== ADDOPCRC14 ======================================================= */ + #define R_ADC_B0_ADDOPCRC14_LIMTBLS_Pos (0UL) /*!< LIMTBLS (Bit 0) */ + #define R_ADC_B0_ADDOPCRC14_LIMTBLS_Msk (0xfUL) /*!< LIMTBLS (Bitfield-Mask: 0x0f) */ + #define R_ADC_B0_ADDOPCRC14_ADPRC_Pos (16UL) /*!< ADPRC (Bit 16) */ + #define R_ADC_B0_ADDOPCRC14_ADPRC_Msk (0x30000UL) /*!< ADPRC (Bitfield-Mask: 0x03) */ + #define R_ADC_B0_ADDOPCRC14_SIGNSEL_Pos (20UL) /*!< SIGNSEL (Bit 20) */ + #define R_ADC_B0_ADDOPCRC14_SIGNSEL_Msk (0x100000UL) /*!< SIGNSEL (Bitfield-Mask: 0x01) */ +/* ====================================================== ADDOPCRC15 ======================================================= */ + #define R_ADC_B0_ADDOPCRC15_LIMTBLS_Pos (0UL) /*!< LIMTBLS (Bit 0) */ + #define R_ADC_B0_ADDOPCRC15_LIMTBLS_Msk (0xfUL) /*!< LIMTBLS (Bitfield-Mask: 0x0f) */ + #define R_ADC_B0_ADDOPCRC15_ADPRC_Pos (16UL) /*!< ADPRC (Bit 16) */ + #define R_ADC_B0_ADDOPCRC15_ADPRC_Msk (0x30000UL) /*!< ADPRC (Bitfield-Mask: 0x03) */ + #define R_ADC_B0_ADDOPCRC15_SIGNSEL_Pos (20UL) /*!< SIGNSEL (Bit 20) */ + #define R_ADC_B0_ADDOPCRC15_SIGNSEL_Msk (0x100000UL) /*!< SIGNSEL (Bitfield-Mask: 0x01) */ +/* ====================================================== ADDOPCRC16 ======================================================= */ + #define R_ADC_B0_ADDOPCRC16_LIMTBLS_Pos (0UL) /*!< LIMTBLS (Bit 0) */ + #define R_ADC_B0_ADDOPCRC16_LIMTBLS_Msk (0xfUL) /*!< LIMTBLS (Bitfield-Mask: 0x0f) */ + #define R_ADC_B0_ADDOPCRC16_ADPRC_Pos (16UL) /*!< ADPRC (Bit 16) */ + #define R_ADC_B0_ADDOPCRC16_ADPRC_Msk (0x30000UL) /*!< ADPRC (Bitfield-Mask: 0x03) */ + #define R_ADC_B0_ADDOPCRC16_SIGNSEL_Pos (20UL) /*!< SIGNSEL (Bit 20) */ + #define R_ADC_B0_ADDOPCRC16_SIGNSEL_Msk (0x100000UL) /*!< SIGNSEL (Bitfield-Mask: 0x01) */ +/* ====================================================== ADDOPCRC17 ======================================================= */ + #define R_ADC_B0_ADDOPCRC17_LIMTBLS_Pos (0UL) /*!< LIMTBLS (Bit 0) */ + #define R_ADC_B0_ADDOPCRC17_LIMTBLS_Msk (0xfUL) /*!< LIMTBLS (Bitfield-Mask: 0x0f) */ + #define R_ADC_B0_ADDOPCRC17_ADPRC_Pos (16UL) /*!< ADPRC (Bit 16) */ + #define R_ADC_B0_ADDOPCRC17_ADPRC_Msk (0x30000UL) /*!< ADPRC (Bitfield-Mask: 0x03) */ + #define R_ADC_B0_ADDOPCRC17_SIGNSEL_Pos (20UL) /*!< SIGNSEL (Bit 20) */ + #define R_ADC_B0_ADDOPCRC17_SIGNSEL_Msk (0x100000UL) /*!< SIGNSEL (Bitfield-Mask: 0x01) */ +/* ====================================================== ADDOPCRC18 ======================================================= */ + #define R_ADC_B0_ADDOPCRC18_LIMTBLS_Pos (0UL) /*!< LIMTBLS (Bit 0) */ + #define R_ADC_B0_ADDOPCRC18_LIMTBLS_Msk (0xfUL) /*!< LIMTBLS (Bitfield-Mask: 0x0f) */ + #define R_ADC_B0_ADDOPCRC18_ADPRC_Pos (16UL) /*!< ADPRC (Bit 16) */ + #define R_ADC_B0_ADDOPCRC18_ADPRC_Msk (0x30000UL) /*!< ADPRC (Bitfield-Mask: 0x03) */ + #define R_ADC_B0_ADDOPCRC18_SIGNSEL_Pos (20UL) /*!< SIGNSEL (Bit 20) */ + #define R_ADC_B0_ADDOPCRC18_SIGNSEL_Msk (0x100000UL) /*!< SIGNSEL (Bitfield-Mask: 0x01) */ +/* ====================================================== ADDOPCRC19 ======================================================= */ + #define R_ADC_B0_ADDOPCRC19_LIMTBLS_Pos (0UL) /*!< LIMTBLS (Bit 0) */ + #define R_ADC_B0_ADDOPCRC19_LIMTBLS_Msk (0xfUL) /*!< LIMTBLS (Bitfield-Mask: 0x0f) */ + #define R_ADC_B0_ADDOPCRC19_ADPRC_Pos (16UL) /*!< ADPRC (Bit 16) */ + #define R_ADC_B0_ADDOPCRC19_ADPRC_Msk (0x30000UL) /*!< ADPRC (Bitfield-Mask: 0x03) */ + #define R_ADC_B0_ADDOPCRC19_SIGNSEL_Pos (20UL) /*!< SIGNSEL (Bit 20) */ + #define R_ADC_B0_ADDOPCRC19_SIGNSEL_Msk (0x100000UL) /*!< SIGNSEL (Bitfield-Mask: 0x01) */ +/* ====================================================== ADDOPCRC20 ======================================================= */ + #define R_ADC_B0_ADDOPCRC20_LIMTBLS_Pos (0UL) /*!< LIMTBLS (Bit 0) */ + #define R_ADC_B0_ADDOPCRC20_LIMTBLS_Msk (0xfUL) /*!< LIMTBLS (Bitfield-Mask: 0x0f) */ + #define R_ADC_B0_ADDOPCRC20_ADPRC_Pos (16UL) /*!< ADPRC (Bit 16) */ + #define R_ADC_B0_ADDOPCRC20_ADPRC_Msk (0x30000UL) /*!< ADPRC (Bitfield-Mask: 0x03) */ + #define R_ADC_B0_ADDOPCRC20_SIGNSEL_Pos (20UL) /*!< SIGNSEL (Bit 20) */ + #define R_ADC_B0_ADDOPCRC20_SIGNSEL_Msk (0x100000UL) /*!< SIGNSEL (Bitfield-Mask: 0x01) */ +/* ====================================================== ADDOPCRC21 ======================================================= */ + #define R_ADC_B0_ADDOPCRC21_LIMTBLS_Pos (0UL) /*!< LIMTBLS (Bit 0) */ + #define R_ADC_B0_ADDOPCRC21_LIMTBLS_Msk (0xfUL) /*!< LIMTBLS (Bitfield-Mask: 0x0f) */ + #define R_ADC_B0_ADDOPCRC21_ADPRC_Pos (16UL) /*!< ADPRC (Bit 16) */ + #define R_ADC_B0_ADDOPCRC21_ADPRC_Msk (0x30000UL) /*!< ADPRC (Bitfield-Mask: 0x03) */ + #define R_ADC_B0_ADDOPCRC21_SIGNSEL_Pos (20UL) /*!< SIGNSEL (Bit 20) */ + #define R_ADC_B0_ADDOPCRC21_SIGNSEL_Msk (0x100000UL) /*!< SIGNSEL (Bitfield-Mask: 0x01) */ +/* ====================================================== ADDOPCRC22 ======================================================= */ + #define R_ADC_B0_ADDOPCRC22_LIMTBLS_Pos (0UL) /*!< LIMTBLS (Bit 0) */ + #define R_ADC_B0_ADDOPCRC22_LIMTBLS_Msk (0xfUL) /*!< LIMTBLS (Bitfield-Mask: 0x0f) */ + #define R_ADC_B0_ADDOPCRC22_ADPRC_Pos (16UL) /*!< ADPRC (Bit 16) */ + #define R_ADC_B0_ADDOPCRC22_ADPRC_Msk (0x30000UL) /*!< ADPRC (Bitfield-Mask: 0x03) */ + #define R_ADC_B0_ADDOPCRC22_SIGNSEL_Pos (20UL) /*!< SIGNSEL (Bit 20) */ + #define R_ADC_B0_ADDOPCRC22_SIGNSEL_Msk (0x100000UL) /*!< SIGNSEL (Bitfield-Mask: 0x01) */ +/* ====================================================== ADDOPCRC23 ======================================================= */ + #define R_ADC_B0_ADDOPCRC23_LIMTBLS_Pos (0UL) /*!< LIMTBLS (Bit 0) */ + #define R_ADC_B0_ADDOPCRC23_LIMTBLS_Msk (0xfUL) /*!< LIMTBLS (Bitfield-Mask: 0x0f) */ + #define R_ADC_B0_ADDOPCRC23_ADPRC_Pos (16UL) /*!< ADPRC (Bit 16) */ + #define R_ADC_B0_ADDOPCRC23_ADPRC_Msk (0x30000UL) /*!< ADPRC (Bitfield-Mask: 0x03) */ + #define R_ADC_B0_ADDOPCRC23_SIGNSEL_Pos (20UL) /*!< SIGNSEL (Bit 20) */ + #define R_ADC_B0_ADDOPCRC23_SIGNSEL_Msk (0x100000UL) /*!< SIGNSEL (Bitfield-Mask: 0x01) */ +/* ====================================================== ADDOPCRC24 ======================================================= */ + #define R_ADC_B0_ADDOPCRC24_LIMTBLS_Pos (0UL) /*!< LIMTBLS (Bit 0) */ + #define R_ADC_B0_ADDOPCRC24_LIMTBLS_Msk (0xfUL) /*!< LIMTBLS (Bitfield-Mask: 0x0f) */ + #define R_ADC_B0_ADDOPCRC24_ADPRC_Pos (16UL) /*!< ADPRC (Bit 16) */ + #define R_ADC_B0_ADDOPCRC24_ADPRC_Msk (0x30000UL) /*!< ADPRC (Bitfield-Mask: 0x03) */ + #define R_ADC_B0_ADDOPCRC24_SIGNSEL_Pos (20UL) /*!< SIGNSEL (Bit 20) */ + #define R_ADC_B0_ADDOPCRC24_SIGNSEL_Msk (0x100000UL) /*!< SIGNSEL (Bitfield-Mask: 0x01) */ +/* ====================================================== ADDOPCRC25 ======================================================= */ + #define R_ADC_B0_ADDOPCRC25_LIMTBLS_Pos (0UL) /*!< LIMTBLS (Bit 0) */ + #define R_ADC_B0_ADDOPCRC25_LIMTBLS_Msk (0xfUL) /*!< LIMTBLS (Bitfield-Mask: 0x0f) */ + #define R_ADC_B0_ADDOPCRC25_ADPRC_Pos (16UL) /*!< ADPRC (Bit 16) */ + #define R_ADC_B0_ADDOPCRC25_ADPRC_Msk (0x30000UL) /*!< ADPRC (Bitfield-Mask: 0x03) */ + #define R_ADC_B0_ADDOPCRC25_SIGNSEL_Pos (20UL) /*!< SIGNSEL (Bit 20) */ + #define R_ADC_B0_ADDOPCRC25_SIGNSEL_Msk (0x100000UL) /*!< SIGNSEL (Bitfield-Mask: 0x01) */ +/* ====================================================== ADDOPCRC26 ======================================================= */ + #define R_ADC_B0_ADDOPCRC26_LIMTBLS_Pos (0UL) /*!< LIMTBLS (Bit 0) */ + #define R_ADC_B0_ADDOPCRC26_LIMTBLS_Msk (0xfUL) /*!< LIMTBLS (Bitfield-Mask: 0x0f) */ + #define R_ADC_B0_ADDOPCRC26_ADPRC_Pos (16UL) /*!< ADPRC (Bit 16) */ + #define R_ADC_B0_ADDOPCRC26_ADPRC_Msk (0x30000UL) /*!< ADPRC (Bitfield-Mask: 0x03) */ + #define R_ADC_B0_ADDOPCRC26_SIGNSEL_Pos (20UL) /*!< SIGNSEL (Bit 20) */ + #define R_ADC_B0_ADDOPCRC26_SIGNSEL_Msk (0x100000UL) /*!< SIGNSEL (Bitfield-Mask: 0x01) */ +/* ====================================================== ADDOPCRC27 ======================================================= */ + #define R_ADC_B0_ADDOPCRC27_LIMTBLS_Pos (0UL) /*!< LIMTBLS (Bit 0) */ + #define R_ADC_B0_ADDOPCRC27_LIMTBLS_Msk (0xfUL) /*!< LIMTBLS (Bitfield-Mask: 0x0f) */ + #define R_ADC_B0_ADDOPCRC27_ADPRC_Pos (16UL) /*!< ADPRC (Bit 16) */ + #define R_ADC_B0_ADDOPCRC27_ADPRC_Msk (0x30000UL) /*!< ADPRC (Bitfield-Mask: 0x03) */ + #define R_ADC_B0_ADDOPCRC27_SIGNSEL_Pos (20UL) /*!< SIGNSEL (Bit 20) */ + #define R_ADC_B0_ADDOPCRC27_SIGNSEL_Msk (0x100000UL) /*!< SIGNSEL (Bitfield-Mask: 0x01) */ +/* ====================================================== ADDOPCRC28 ======================================================= */ + #define R_ADC_B0_ADDOPCRC28_LIMTBLS_Pos (0UL) /*!< LIMTBLS (Bit 0) */ + #define R_ADC_B0_ADDOPCRC28_LIMTBLS_Msk (0xfUL) /*!< LIMTBLS (Bitfield-Mask: 0x0f) */ + #define R_ADC_B0_ADDOPCRC28_ADPRC_Pos (16UL) /*!< ADPRC (Bit 16) */ + #define R_ADC_B0_ADDOPCRC28_ADPRC_Msk (0x30000UL) /*!< ADPRC (Bitfield-Mask: 0x03) */ + #define R_ADC_B0_ADDOPCRC28_SIGNSEL_Pos (20UL) /*!< SIGNSEL (Bit 20) */ + #define R_ADC_B0_ADDOPCRC28_SIGNSEL_Msk (0x100000UL) /*!< SIGNSEL (Bitfield-Mask: 0x01) */ +/* ====================================================== ADDOPCRC29 ======================================================= */ + #define R_ADC_B0_ADDOPCRC29_LIMTBLS_Pos (0UL) /*!< LIMTBLS (Bit 0) */ + #define R_ADC_B0_ADDOPCRC29_LIMTBLS_Msk (0xfUL) /*!< LIMTBLS (Bitfield-Mask: 0x0f) */ + #define R_ADC_B0_ADDOPCRC29_ADPRC_Pos (16UL) /*!< ADPRC (Bit 16) */ + #define R_ADC_B0_ADDOPCRC29_ADPRC_Msk (0x30000UL) /*!< ADPRC (Bitfield-Mask: 0x03) */ + #define R_ADC_B0_ADDOPCRC29_SIGNSEL_Pos (20UL) /*!< SIGNSEL (Bit 20) */ + #define R_ADC_B0_ADDOPCRC29_SIGNSEL_Msk (0x100000UL) /*!< SIGNSEL (Bitfield-Mask: 0x01) */ +/* ====================================================== ADDOPCRC30 ======================================================= */ + #define R_ADC_B0_ADDOPCRC30_LIMTBLS_Pos (0UL) /*!< LIMTBLS (Bit 0) */ + #define R_ADC_B0_ADDOPCRC30_LIMTBLS_Msk (0xfUL) /*!< LIMTBLS (Bitfield-Mask: 0x0f) */ + #define R_ADC_B0_ADDOPCRC30_ADPRC_Pos (16UL) /*!< ADPRC (Bit 16) */ + #define R_ADC_B0_ADDOPCRC30_ADPRC_Msk (0x30000UL) /*!< ADPRC (Bitfield-Mask: 0x03) */ + #define R_ADC_B0_ADDOPCRC30_SIGNSEL_Pos (20UL) /*!< SIGNSEL (Bit 20) */ + #define R_ADC_B0_ADDOPCRC30_SIGNSEL_Msk (0x100000UL) /*!< SIGNSEL (Bitfield-Mask: 0x01) */ +/* ====================================================== ADDOPCRC31 ======================================================= */ + #define R_ADC_B0_ADDOPCRC31_LIMTBLS_Pos (0UL) /*!< LIMTBLS (Bit 0) */ + #define R_ADC_B0_ADDOPCRC31_LIMTBLS_Msk (0xfUL) /*!< LIMTBLS (Bitfield-Mask: 0x0f) */ + #define R_ADC_B0_ADDOPCRC31_ADPRC_Pos (16UL) /*!< ADPRC (Bit 16) */ + #define R_ADC_B0_ADDOPCRC31_ADPRC_Msk (0x30000UL) /*!< ADPRC (Bitfield-Mask: 0x03) */ + #define R_ADC_B0_ADDOPCRC31_SIGNSEL_Pos (20UL) /*!< SIGNSEL (Bit 20) */ + #define R_ADC_B0_ADDOPCRC31_SIGNSEL_Msk (0x100000UL) /*!< SIGNSEL (Bitfield-Mask: 0x01) */ +/* ====================================================== ADDOPCRC32 ======================================================= */ + #define R_ADC_B0_ADDOPCRC32_LIMTBLS_Pos (0UL) /*!< LIMTBLS (Bit 0) */ + #define R_ADC_B0_ADDOPCRC32_LIMTBLS_Msk (0xfUL) /*!< LIMTBLS (Bitfield-Mask: 0x0f) */ + #define R_ADC_B0_ADDOPCRC32_ADPRC_Pos (16UL) /*!< ADPRC (Bit 16) */ + #define R_ADC_B0_ADDOPCRC32_ADPRC_Msk (0x30000UL) /*!< ADPRC (Bitfield-Mask: 0x03) */ + #define R_ADC_B0_ADDOPCRC32_SIGNSEL_Pos (20UL) /*!< SIGNSEL (Bit 20) */ + #define R_ADC_B0_ADDOPCRC32_SIGNSEL_Msk (0x100000UL) /*!< SIGNSEL (Bitfield-Mask: 0x01) */ +/* ====================================================== ADDOPCRC33 ======================================================= */ + #define R_ADC_B0_ADDOPCRC33_LIMTBLS_Pos (0UL) /*!< LIMTBLS (Bit 0) */ + #define R_ADC_B0_ADDOPCRC33_LIMTBLS_Msk (0xfUL) /*!< LIMTBLS (Bitfield-Mask: 0x0f) */ + #define R_ADC_B0_ADDOPCRC33_ADPRC_Pos (16UL) /*!< ADPRC (Bit 16) */ + #define R_ADC_B0_ADDOPCRC33_ADPRC_Msk (0x30000UL) /*!< ADPRC (Bitfield-Mask: 0x03) */ + #define R_ADC_B0_ADDOPCRC33_SIGNSEL_Pos (20UL) /*!< SIGNSEL (Bit 20) */ + #define R_ADC_B0_ADDOPCRC33_SIGNSEL_Msk (0x100000UL) /*!< SIGNSEL (Bitfield-Mask: 0x01) */ +/* ====================================================== ADDOPCRC34 ======================================================= */ + #define R_ADC_B0_ADDOPCRC34_LIMTBLS_Pos (0UL) /*!< LIMTBLS (Bit 0) */ + #define R_ADC_B0_ADDOPCRC34_LIMTBLS_Msk (0xfUL) /*!< LIMTBLS (Bitfield-Mask: 0x0f) */ + #define R_ADC_B0_ADDOPCRC34_ADPRC_Pos (16UL) /*!< ADPRC (Bit 16) */ + #define R_ADC_B0_ADDOPCRC34_ADPRC_Msk (0x30000UL) /*!< ADPRC (Bitfield-Mask: 0x03) */ + #define R_ADC_B0_ADDOPCRC34_SIGNSEL_Pos (20UL) /*!< SIGNSEL (Bit 20) */ + #define R_ADC_B0_ADDOPCRC34_SIGNSEL_Msk (0x100000UL) /*!< SIGNSEL (Bitfield-Mask: 0x01) */ +/* ====================================================== ADDOPCRC35 ======================================================= */ + #define R_ADC_B0_ADDOPCRC35_LIMTBLS_Pos (0UL) /*!< LIMTBLS (Bit 0) */ + #define R_ADC_B0_ADDOPCRC35_LIMTBLS_Msk (0xfUL) /*!< LIMTBLS (Bitfield-Mask: 0x0f) */ + #define R_ADC_B0_ADDOPCRC35_ADPRC_Pos (16UL) /*!< ADPRC (Bit 16) */ + #define R_ADC_B0_ADDOPCRC35_ADPRC_Msk (0x30000UL) /*!< ADPRC (Bitfield-Mask: 0x03) */ + #define R_ADC_B0_ADDOPCRC35_SIGNSEL_Pos (20UL) /*!< SIGNSEL (Bit 20) */ + #define R_ADC_B0_ADDOPCRC35_SIGNSEL_Msk (0x100000UL) /*!< SIGNSEL (Bitfield-Mask: 0x01) */ +/* ====================================================== ADDOPCRC36 ======================================================= */ + #define R_ADC_B0_ADDOPCRC36_LIMTBLS_Pos (0UL) /*!< LIMTBLS (Bit 0) */ + #define R_ADC_B0_ADDOPCRC36_LIMTBLS_Msk (0xfUL) /*!< LIMTBLS (Bitfield-Mask: 0x0f) */ + #define R_ADC_B0_ADDOPCRC36_ADPRC_Pos (16UL) /*!< ADPRC (Bit 16) */ + #define R_ADC_B0_ADDOPCRC36_ADPRC_Msk (0x30000UL) /*!< ADPRC (Bitfield-Mask: 0x03) */ + #define R_ADC_B0_ADDOPCRC36_SIGNSEL_Pos (20UL) /*!< SIGNSEL (Bit 20) */ + #define R_ADC_B0_ADDOPCRC36_SIGNSEL_Msk (0x100000UL) /*!< SIGNSEL (Bitfield-Mask: 0x01) */ +/* ======================================================= ADCALSTR ======================================================== */ + #define R_ADC_B0_ADCALSTR_ADCALST0_Pos (0UL) /*!< ADCALST0 (Bit 0) */ + #define R_ADC_B0_ADCALSTR_ADCALST0_Msk (0x7UL) /*!< ADCALST0 (Bitfield-Mask: 0x07) */ + #define R_ADC_B0_ADCALSTR_ADCALST1_Pos (8UL) /*!< ADCALST1 (Bit 8) */ + #define R_ADC_B0_ADCALSTR_ADCALST1_Msk (0x700UL) /*!< ADCALST1 (Bitfield-Mask: 0x07) */ +/* ======================================================= ADTRGENR ======================================================== */ + #define R_ADC_B0_ADTRGENR_STTRGENn_Pos (0UL) /*!< STTRGENn (Bit 0) */ + #define R_ADC_B0_ADTRGENR_STTRGENn_Msk (0x1ffUL) /*!< STTRGENn (Bitfield-Mask: 0x1ff) */ +/* ======================================================== ADSYSTR ======================================================== */ + #define R_ADC_B0_ADSYSTR_ADSYSTn_Pos (0UL) /*!< ADSYSTn (Bit 0) */ + #define R_ADC_B0_ADSYSTR_ADSYSTn_Msk (0x1ffUL) /*!< ADSYSTn (Bitfield-Mask: 0x1ff) */ +/* ========================================================= ADSTR ========================================================= */ + #define R_ADC_B0_ADSTR_ADST_Pos (0UL) /*!< ADST (Bit 0) */ + #define R_ADC_B0_ADSTR_ADST_Msk (0x1UL) /*!< ADST (Bitfield-Mask: 0x01) */ +/* ======================================================== ADSTOPR ======================================================== */ + #define R_ADC_B0_ADSTOPR_ADSTOP0_Pos (0UL) /*!< ADSTOP0 (Bit 0) */ + #define R_ADC_B0_ADSTOPR_ADSTOP0_Msk (0x1UL) /*!< ADSTOP0 (Bitfield-Mask: 0x01) */ + #define R_ADC_B0_ADSTOPR_ADSTOP1_Pos (8UL) /*!< ADSTOP1 (Bit 8) */ + #define R_ADC_B0_ADSTOPR_ADSTOP1_Msk (0x100UL) /*!< ADSTOP1 (Bitfield-Mask: 0x01) */ +/* ========================================================= ADSR ========================================================== */ + #define R_ADC_B0_ADSR_ADACT0_Pos (0UL) /*!< ADACT0 (Bit 0) */ + #define R_ADC_B0_ADSR_ADACT0_Msk (0x1UL) /*!< ADACT0 (Bitfield-Mask: 0x01) */ + #define R_ADC_B0_ADSR_ADACT1_Pos (1UL) /*!< ADACT1 (Bit 1) */ + #define R_ADC_B0_ADSR_ADACT1_Msk (0x2UL) /*!< ADACT1 (Bitfield-Mask: 0x01) */ + #define R_ADC_B0_ADSR_CALACT0_Pos (16UL) /*!< CALACT0 (Bit 16) */ + #define R_ADC_B0_ADSR_CALACT0_Msk (0x10000UL) /*!< CALACT0 (Bitfield-Mask: 0x01) */ + #define R_ADC_B0_ADSR_CALACT1_Pos (17UL) /*!< CALACT1 (Bit 17) */ + #define R_ADC_B0_ADSR_CALACT1_Msk (0x20000UL) /*!< CALACT1 (Bitfield-Mask: 0x01) */ +/* ======================================================== ADGRSR ========================================================= */ + #define R_ADC_B0_ADGRSR_ACTGRn_Pos (0UL) /*!< ACTGRn (Bit 0) */ + #define R_ADC_B0_ADGRSR_ACTGRn_Msk (0x1ffUL) /*!< ACTGRn (Bitfield-Mask: 0x1ff) */ +/* ======================================================== ADERSR ========================================================= */ + #define R_ADC_B0_ADERSR_ADERF0_Pos (0UL) /*!< ADERF0 (Bit 0) */ + #define R_ADC_B0_ADERSR_ADERF0_Msk (0x1UL) /*!< ADERF0 (Bitfield-Mask: 0x01) */ + #define R_ADC_B0_ADERSR_ADERF1_Pos (1UL) /*!< ADERF1 (Bit 1) */ + #define R_ADC_B0_ADERSR_ADERF1_Msk (0x2UL) /*!< ADERF1 (Bitfield-Mask: 0x01) */ +/* ======================================================== ADERSCR ======================================================== */ + #define R_ADC_B0_ADERSCR_ADERCLR0_Pos (0UL) /*!< ADERCLR0 (Bit 0) */ + #define R_ADC_B0_ADERSCR_ADERCLR0_Msk (0x1UL) /*!< ADERCLR0 (Bitfield-Mask: 0x01) */ + #define R_ADC_B0_ADERSCR_ADERCLR1_Pos (1UL) /*!< ADERCLR1 (Bit 1) */ + #define R_ADC_B0_ADERSCR_ADERCLR1_Msk (0x2UL) /*!< ADERCLR1 (Bitfield-Mask: 0x01) */ +/* ====================================================== ADCALENDSR ======================================================= */ + #define R_ADC_B0_ADCALENDSR_CALENDF0_Pos (0UL) /*!< CALENDF0 (Bit 0) */ + #define R_ADC_B0_ADCALENDSR_CALENDF0_Msk (0x1UL) /*!< CALENDF0 (Bitfield-Mask: 0x01) */ + #define R_ADC_B0_ADCALENDSR_CALENDF1_Pos (1UL) /*!< CALENDF1 (Bit 1) */ + #define R_ADC_B0_ADCALENDSR_CALENDF1_Msk (0x2UL) /*!< CALENDF1 (Bitfield-Mask: 0x01) */ +/* ====================================================== ADCALENDSCR ====================================================== */ + #define R_ADC_B0_ADCALENDSCR_CALENDC0_Pos (0UL) /*!< CALENDC0 (Bit 0) */ + #define R_ADC_B0_ADCALENDSCR_CALENDC0_Msk (0x1UL) /*!< CALENDC0 (Bitfield-Mask: 0x01) */ + #define R_ADC_B0_ADCALENDSCR_CALENDC1_Pos (1UL) /*!< CALENDC1 (Bit 1) */ + #define R_ADC_B0_ADCALENDSCR_CALENDC1_Msk (0x2UL) /*!< CALENDC1 (Bitfield-Mask: 0x01) */ +/* ======================================================= ADOVFERSR ======================================================= */ + #define R_ADC_B0_ADOVFERSR_ADOVFEF0_Pos (0UL) /*!< ADOVFEF0 (Bit 0) */ + #define R_ADC_B0_ADOVFERSR_ADOVFEF0_Msk (0x1UL) /*!< ADOVFEF0 (Bitfield-Mask: 0x01) */ + #define R_ADC_B0_ADOVFERSR_ADOVFEF1_Pos (1UL) /*!< ADOVFEF1 (Bit 1) */ + #define R_ADC_B0_ADOVFERSR_ADOVFEF1_Msk (0x2UL) /*!< ADOVFEF1 (Bitfield-Mask: 0x01) */ +/* ====================================================== ADOVFCHSR0 ======================================================= */ + #define R_ADC_B0_ADOVFCHSR0_OFVCHFn_Pos (0UL) /*!< OFVCHFn (Bit 0) */ + #define R_ADC_B0_ADOVFCHSR0_OFVCHFn_Msk (0x1fffffffUL) /*!< OFVCHFn (Bitfield-Mask: 0x1fffffff) */ +/* ======================================================= ADOVFEXSR ======================================================= */ + #define R_ADC_B0_ADOVFEXSR_OVFEXF0_Pos (0UL) /*!< OVFEXF0 (Bit 0) */ + #define R_ADC_B0_ADOVFEXSR_OVFEXF0_Msk (0x1UL) /*!< OVFEXF0 (Bitfield-Mask: 0x01) */ + #define R_ADC_B0_ADOVFEXSR_OVFEXF1_Pos (1UL) /*!< OVFEXF1 (Bit 1) */ + #define R_ADC_B0_ADOVFEXSR_OVFEXF1_Msk (0x2UL) /*!< OVFEXF1 (Bitfield-Mask: 0x01) */ + #define R_ADC_B0_ADOVFEXSR_OVFEXF2_Pos (2UL) /*!< OVFEXF2 (Bit 2) */ + #define R_ADC_B0_ADOVFEXSR_OVFEXF2_Msk (0x4UL) /*!< OVFEXF2 (Bitfield-Mask: 0x01) */ + #define R_ADC_B0_ADOVFEXSR_OVFEXF5_Pos (5UL) /*!< OVFEXF5 (Bit 5) */ + #define R_ADC_B0_ADOVFEXSR_OVFEXF5_Msk (0x20UL) /*!< OVFEXF5 (Bitfield-Mask: 0x01) */ + #define R_ADC_B0_ADOVFEXSR_OVFEXF6_Pos (6UL) /*!< OVFEXF6 (Bit 6) */ + #define R_ADC_B0_ADOVFEXSR_OVFEXF6_Msk (0x40UL) /*!< OVFEXF6 (Bitfield-Mask: 0x01) */ + #define R_ADC_B0_ADOVFEXSR_OVFEXF7_Pos (7UL) /*!< OVFEXF7 (Bit 7) */ + #define R_ADC_B0_ADOVFEXSR_OVFEXF7_Msk (0x80UL) /*!< OVFEXF7 (Bitfield-Mask: 0x01) */ + #define R_ADC_B0_ADOVFEXSR_OVFEXF8_Pos (8UL) /*!< OVFEXF8 (Bit 8) */ + #define R_ADC_B0_ADOVFEXSR_OVFEXF8_Msk (0x100UL) /*!< OVFEXF8 (Bitfield-Mask: 0x01) */ +/* ====================================================== ADOVFERSCR ======================================================= */ + #define R_ADC_B0_ADOVFERSCR_ADOVFEC0_Pos (0UL) /*!< ADOVFEC0 (Bit 0) */ + #define R_ADC_B0_ADOVFERSCR_ADOVFEC0_Msk (0x1UL) /*!< ADOVFEC0 (Bitfield-Mask: 0x01) */ + #define R_ADC_B0_ADOVFERSCR_ADOVFEC1_Pos (1UL) /*!< ADOVFEC1 (Bit 1) */ + #define R_ADC_B0_ADOVFERSCR_ADOVFEC1_Msk (0x2UL) /*!< ADOVFEC1 (Bitfield-Mask: 0x01) */ +/* ====================================================== ADOVFCHSCR0 ====================================================== */ + #define R_ADC_B0_ADOVFCHSCR0_OVFCHCn_Pos (0UL) /*!< OVFCHCn (Bit 0) */ + #define R_ADC_B0_ADOVFCHSCR0_OVFCHCn_Msk (0x1fffffffUL) /*!< OVFCHCn (Bitfield-Mask: 0x1fffffff) */ +/* ====================================================== ADOVFEXSCR ======================================================= */ + #define R_ADC_B0_ADOVFEXSCR_OVFEXC0_Pos (0UL) /*!< OVFEXC0 (Bit 0) */ + #define R_ADC_B0_ADOVFEXSCR_OVFEXC0_Msk (0x1UL) /*!< OVFEXC0 (Bitfield-Mask: 0x01) */ + #define R_ADC_B0_ADOVFEXSCR_OVFEXC1_Pos (1UL) /*!< OVFEXC1 (Bit 1) */ + #define R_ADC_B0_ADOVFEXSCR_OVFEXC1_Msk (0x2UL) /*!< OVFEXC1 (Bitfield-Mask: 0x01) */ + #define R_ADC_B0_ADOVFEXSCR_OVFEXC2_Pos (2UL) /*!< OVFEXC2 (Bit 2) */ + #define R_ADC_B0_ADOVFEXSCR_OVFEXC2_Msk (0x4UL) /*!< OVFEXC2 (Bitfield-Mask: 0x01) */ + #define R_ADC_B0_ADOVFEXSCR_OVFEXC5_Pos (5UL) /*!< OVFEXC5 (Bit 5) */ + #define R_ADC_B0_ADOVFEXSCR_OVFEXC5_Msk (0x20UL) /*!< OVFEXC5 (Bitfield-Mask: 0x01) */ + #define R_ADC_B0_ADOVFEXSCR_OVFEXC6_Pos (6UL) /*!< OVFEXC6 (Bit 6) */ + #define R_ADC_B0_ADOVFEXSCR_OVFEXC6_Msk (0x40UL) /*!< OVFEXC6 (Bitfield-Mask: 0x01) */ + #define R_ADC_B0_ADOVFEXSCR_OVFEXC7_Pos (7UL) /*!< OVFEXC7 (Bit 7) */ + #define R_ADC_B0_ADOVFEXSCR_OVFEXC7_Msk (0x80UL) /*!< OVFEXC7 (Bitfield-Mask: 0x01) */ + #define R_ADC_B0_ADOVFEXSCR_OVFEXC8_Pos (8UL) /*!< OVFEXC8 (Bit 8) */ + #define R_ADC_B0_ADOVFEXSCR_OVFEXC8_Msk (0x100UL) /*!< OVFEXC8 (Bitfield-Mask: 0x01) */ +/* ======================================================= ADFIFOSR0 ======================================================= */ + #define R_ADC_B0_ADFIFOSR0_FIFOST0_Pos (0UL) /*!< FIFOST0 (Bit 0) */ + #define R_ADC_B0_ADFIFOSR0_FIFOST0_Msk (0xfUL) /*!< FIFOST0 (Bitfield-Mask: 0x0f) */ + #define R_ADC_B0_ADFIFOSR0_FIFOST1_Pos (16UL) /*!< FIFOST1 (Bit 16) */ + #define R_ADC_B0_ADFIFOSR0_FIFOST1_Msk (0xf0000UL) /*!< FIFOST1 (Bitfield-Mask: 0x0f) */ +/* ======================================================= ADFIFOSR1 ======================================================= */ + #define R_ADC_B0_ADFIFOSR1_FIFOST2_Pos (0UL) /*!< FIFOST2 (Bit 0) */ + #define R_ADC_B0_ADFIFOSR1_FIFOST2_Msk (0xfUL) /*!< FIFOST2 (Bitfield-Mask: 0x0f) */ + #define R_ADC_B0_ADFIFOSR1_FIFOST3_Pos (16UL) /*!< FIFOST3 (Bit 16) */ + #define R_ADC_B0_ADFIFOSR1_FIFOST3_Msk (0xf0000UL) /*!< FIFOST3 (Bitfield-Mask: 0x0f) */ +/* ======================================================= ADFIFOSR2 ======================================================= */ + #define R_ADC_B0_ADFIFOSR2_FIFOST4_Pos (0UL) /*!< FIFOST4 (Bit 0) */ + #define R_ADC_B0_ADFIFOSR2_FIFOST4_Msk (0xfUL) /*!< FIFOST4 (Bitfield-Mask: 0x0f) */ + #define R_ADC_B0_ADFIFOSR2_FIFOST5_Pos (16UL) /*!< FIFOST5 (Bit 16) */ + #define R_ADC_B0_ADFIFOSR2_FIFOST5_Msk (0xf0000UL) /*!< FIFOST5 (Bitfield-Mask: 0x0f) */ +/* ======================================================= ADFIFOSR3 ======================================================= */ + #define R_ADC_B0_ADFIFOSR3_FIFOST6_Pos (0UL) /*!< FIFOST6 (Bit 0) */ + #define R_ADC_B0_ADFIFOSR3_FIFOST6_Msk (0xfUL) /*!< FIFOST6 (Bitfield-Mask: 0x0f) */ + #define R_ADC_B0_ADFIFOSR3_FIFOST7_Pos (16UL) /*!< FIFOST7 (Bit 16) */ + #define R_ADC_B0_ADFIFOSR3_FIFOST7_Msk (0xf0000UL) /*!< FIFOST7 (Bitfield-Mask: 0x0f) */ +/* ======================================================= ADFIFOSR4 ======================================================= */ + #define R_ADC_B0_ADFIFOSR4_FIFOST8_Pos (0UL) /*!< FIFOST8 (Bit 0) */ + #define R_ADC_B0_ADFIFOSR4_FIFOST8_Msk (0xfUL) /*!< FIFOST8 (Bitfield-Mask: 0x0f) */ +/* ======================================================= ADFIFODCR ======================================================= */ + #define R_ADC_B0_ADFIFODCR_FIFODCn_Pos (0UL) /*!< FIFODCn (Bit 0) */ + #define R_ADC_B0_ADFIFODCR_FIFODCn_Msk (0x1ffUL) /*!< FIFODCn (Bitfield-Mask: 0x1ff) */ +/* ====================================================== ADFIFOERSR ======================================================= */ + #define R_ADC_B0_ADFIFOERSR_FIFOOVFn_Pos (0UL) /*!< FIFOOVFn (Bit 0) */ + #define R_ADC_B0_ADFIFOERSR_FIFOOVFn_Msk (0x1ffUL) /*!< FIFOOVFn (Bitfield-Mask: 0x1ff) */ + #define R_ADC_B0_ADFIFOERSR_FIFOFLFn_Pos (16UL) /*!< FIFOFLFn (Bit 16) */ + #define R_ADC_B0_ADFIFOERSR_FIFOFLFn_Msk (0x1ff0000UL) /*!< FIFOFLFn (Bitfield-Mask: 0x1ff) */ +/* ====================================================== ADFIFOERSCR ====================================================== */ + #define R_ADC_B0_ADFIFOERSCR_FIFOOVFCn_Pos (0UL) /*!< FIFOOVFCn (Bit 0) */ + #define R_ADC_B0_ADFIFOERSCR_FIFOOVFCn_Msk (0x1ffUL) /*!< FIFOOVFCn (Bitfield-Mask: 0x1ff) */ + #define R_ADC_B0_ADFIFOERSCR_FIFOFLCn_Pos (16UL) /*!< FIFOFLCn (Bit 16) */ + #define R_ADC_B0_ADFIFOERSCR_FIFOFLCn_Msk (0x1ff0000UL) /*!< FIFOFLCn (Bitfield-Mask: 0x1ff) */ +/* ======================================================= ADCMPTBSR ======================================================= */ + #define R_ADC_B0_ADCMPTBSR_CMPTBFn_Pos (0UL) /*!< CMPTBFn (Bit 0) */ + #define R_ADC_B0_ADCMPTBSR_CMPTBFn_Msk (0xffUL) /*!< CMPTBFn (Bitfield-Mask: 0xff) */ +/* ====================================================== ADCMPTBSCR ======================================================= */ + #define R_ADC_B0_ADCMPTBSCR_CMPTBCn_Pos (0UL) /*!< CMPTBCn (Bit 0) */ + #define R_ADC_B0_ADCMPTBSCR_CMPTBCn_Msk (0xffUL) /*!< CMPTBCn (Bitfield-Mask: 0xff) */ +/* ====================================================== ADCMPCHSR0 ======================================================= */ + #define R_ADC_B0_ADCMPCHSR0_CMPCHFn_Pos (0UL) /*!< CMPCHFn (Bit 0) */ + #define R_ADC_B0_ADCMPCHSR0_CMPCHFn_Msk (0x1fffffffUL) /*!< CMPCHFn (Bitfield-Mask: 0x1fffffff) */ +/* ======================================================= ADCMPEXSR ======================================================= */ + #define R_ADC_B0_ADCMPEXSR_CMPEXF0_Pos (0UL) /*!< CMPEXF0 (Bit 0) */ + #define R_ADC_B0_ADCMPEXSR_CMPEXF0_Msk (0x1UL) /*!< CMPEXF0 (Bitfield-Mask: 0x01) */ + #define R_ADC_B0_ADCMPEXSR_CMPEXF1_Pos (1UL) /*!< CMPEXF1 (Bit 1) */ + #define R_ADC_B0_ADCMPEXSR_CMPEXF1_Msk (0x2UL) /*!< CMPEXF1 (Bitfield-Mask: 0x01) */ + #define R_ADC_B0_ADCMPEXSR_CMPEXF2_Pos (2UL) /*!< CMPEXF2 (Bit 2) */ + #define R_ADC_B0_ADCMPEXSR_CMPEXF2_Msk (0x4UL) /*!< CMPEXF2 (Bitfield-Mask: 0x01) */ + #define R_ADC_B0_ADCMPEXSR_CMPEXF5_Pos (5UL) /*!< CMPEXF5 (Bit 5) */ + #define R_ADC_B0_ADCMPEXSR_CMPEXF5_Msk (0x20UL) /*!< CMPEXF5 (Bitfield-Mask: 0x01) */ + #define R_ADC_B0_ADCMPEXSR_CMPEXF6_Pos (6UL) /*!< CMPEXF6 (Bit 6) */ + #define R_ADC_B0_ADCMPEXSR_CMPEXF6_Msk (0x40UL) /*!< CMPEXF6 (Bitfield-Mask: 0x01) */ + #define R_ADC_B0_ADCMPEXSR_CMPEXF7_Pos (7UL) /*!< CMPEXF7 (Bit 7) */ + #define R_ADC_B0_ADCMPEXSR_CMPEXF7_Msk (0x80UL) /*!< CMPEXF7 (Bitfield-Mask: 0x01) */ + #define R_ADC_B0_ADCMPEXSR_CMPEXF8_Pos (8UL) /*!< CMPEXF8 (Bit 8) */ + #define R_ADC_B0_ADCMPEXSR_CMPEXF8_Msk (0x100UL) /*!< CMPEXF8 (Bitfield-Mask: 0x01) */ +/* ====================================================== ADCMPCHSCR0 ====================================================== */ + #define R_ADC_B0_ADCMPCHSCR0_CMPCHCn_Pos (0UL) /*!< CMPCHCn (Bit 0) */ + #define R_ADC_B0_ADCMPCHSCR0_CMPCHCn_Msk (0x1fffffffUL) /*!< CMPCHCn (Bitfield-Mask: 0x1fffffff) */ +/* ====================================================== ADCMPEXSCR ======================================================= */ + #define R_ADC_B0_ADCMPEXSCR_CMPEXC0_Pos (0UL) /*!< CMPEXC0 (Bit 0) */ + #define R_ADC_B0_ADCMPEXSCR_CMPEXC0_Msk (0x1UL) /*!< CMPEXC0 (Bitfield-Mask: 0x01) */ + #define R_ADC_B0_ADCMPEXSCR_CMPEXC1_Pos (1UL) /*!< CMPEXC1 (Bit 1) */ + #define R_ADC_B0_ADCMPEXSCR_CMPEXC1_Msk (0x2UL) /*!< CMPEXC1 (Bitfield-Mask: 0x01) */ + #define R_ADC_B0_ADCMPEXSCR_CMPEXC2_Pos (2UL) /*!< CMPEXC2 (Bit 2) */ + #define R_ADC_B0_ADCMPEXSCR_CMPEXC2_Msk (0x4UL) /*!< CMPEXC2 (Bitfield-Mask: 0x01) */ + #define R_ADC_B0_ADCMPEXSCR_CMPEXC5_Pos (5UL) /*!< CMPEXC5 (Bit 5) */ + #define R_ADC_B0_ADCMPEXSCR_CMPEXC5_Msk (0x20UL) /*!< CMPEXC5 (Bitfield-Mask: 0x01) */ + #define R_ADC_B0_ADCMPEXSCR_CMPEXC6_Pos (6UL) /*!< CMPEXC6 (Bit 6) */ + #define R_ADC_B0_ADCMPEXSCR_CMPEXC6_Msk (0x40UL) /*!< CMPEXC6 (Bitfield-Mask: 0x01) */ + #define R_ADC_B0_ADCMPEXSCR_CMPEXC7_Pos (7UL) /*!< CMPEXC7 (Bit 7) */ + #define R_ADC_B0_ADCMPEXSCR_CMPEXC7_Msk (0x80UL) /*!< CMPEXC7 (Bitfield-Mask: 0x01) */ + #define R_ADC_B0_ADCMPEXSCR_CMPEXC8_Pos (8UL) /*!< CMPEXC8 (Bit 8) */ + #define R_ADC_B0_ADCMPEXSCR_CMPEXC8_Msk (0x100UL) /*!< CMPEXC8 (Bitfield-Mask: 0x01) */ +/* ======================================================= ADLIMGRSR ======================================================= */ + #define R_ADC_B0_ADLIMGRSR_LIMGRFn_Pos (0UL) /*!< LIMGRFn (Bit 0) */ + #define R_ADC_B0_ADLIMGRSR_LIMGRFn_Msk (0x1ffUL) /*!< LIMGRFn (Bitfield-Mask: 0x1ff) */ +/* ====================================================== ADLIMCHSR0 ======================================================= */ + #define R_ADC_B0_ADLIMCHSR0_LIMCHFn_Pos (0UL) /*!< LIMCHFn (Bit 0) */ + #define R_ADC_B0_ADLIMCHSR0_LIMCHFn_Msk (0x1fffffffUL) /*!< LIMCHFn (Bitfield-Mask: 0x1fffffff) */ +/* ======================================================= ADLIMEXSR ======================================================= */ + #define R_ADC_B0_ADLIMEXSR_LIMEXF0_Pos (0UL) /*!< LIMEXF0 (Bit 0) */ + #define R_ADC_B0_ADLIMEXSR_LIMEXF0_Msk (0x1UL) /*!< LIMEXF0 (Bitfield-Mask: 0x01) */ + #define R_ADC_B0_ADLIMEXSR_LIMEXF1_Pos (1UL) /*!< LIMEXF1 (Bit 1) */ + #define R_ADC_B0_ADLIMEXSR_LIMEXF1_Msk (0x2UL) /*!< LIMEXF1 (Bitfield-Mask: 0x01) */ + #define R_ADC_B0_ADLIMEXSR_LIMEXF2_Pos (2UL) /*!< LIMEXF2 (Bit 2) */ + #define R_ADC_B0_ADLIMEXSR_LIMEXF2_Msk (0x4UL) /*!< LIMEXF2 (Bitfield-Mask: 0x01) */ + #define R_ADC_B0_ADLIMEXSR_LIMEXF5_Pos (5UL) /*!< LIMEXF5 (Bit 5) */ + #define R_ADC_B0_ADLIMEXSR_LIMEXF5_Msk (0x20UL) /*!< LIMEXF5 (Bitfield-Mask: 0x01) */ + #define R_ADC_B0_ADLIMEXSR_LIMEXF6_Pos (6UL) /*!< LIMEXF6 (Bit 6) */ + #define R_ADC_B0_ADLIMEXSR_LIMEXF6_Msk (0x40UL) /*!< LIMEXF6 (Bitfield-Mask: 0x01) */ + #define R_ADC_B0_ADLIMEXSR_LIMEXF7_Pos (7UL) /*!< LIMEXF7 (Bit 7) */ + #define R_ADC_B0_ADLIMEXSR_LIMEXF7_Msk (0x80UL) /*!< LIMEXF7 (Bitfield-Mask: 0x01) */ + #define R_ADC_B0_ADLIMEXSR_LIMEXF8_Pos (8UL) /*!< LIMEXF8 (Bit 8) */ + #define R_ADC_B0_ADLIMEXSR_LIMEXF8_Msk (0x100UL) /*!< LIMEXF8 (Bitfield-Mask: 0x01) */ +/* ====================================================== ADLIMGRSCR ======================================================= */ + #define R_ADC_B0_ADLIMGRSCR_LIMGRCn_Pos (0UL) /*!< LIMGRCn (Bit 0) */ + #define R_ADC_B0_ADLIMGRSCR_LIMGRCn_Msk (0x1ffUL) /*!< LIMGRCn (Bitfield-Mask: 0x1ff) */ +/* ====================================================== ADLIMCHSCR0 ====================================================== */ + #define R_ADC_B0_ADLIMCHSCR0_LIMCHCn_Pos (0UL) /*!< LIMCHCn (Bit 0) */ + #define R_ADC_B0_ADLIMCHSCR0_LIMCHCn_Msk (0x1fffffffUL) /*!< LIMCHCn (Bitfield-Mask: 0x1fffffff) */ +/* ====================================================== ADLIMEXSCR ======================================================= */ + #define R_ADC_B0_ADLIMEXSCR_LIMEXF0_Pos (0UL) /*!< LIMEXF0 (Bit 0) */ + #define R_ADC_B0_ADLIMEXSCR_LIMEXF0_Msk (0x1UL) /*!< LIMEXF0 (Bitfield-Mask: 0x01) */ + #define R_ADC_B0_ADLIMEXSCR_LIMEXF1_Pos (1UL) /*!< LIMEXF1 (Bit 1) */ + #define R_ADC_B0_ADLIMEXSCR_LIMEXF1_Msk (0x2UL) /*!< LIMEXF1 (Bitfield-Mask: 0x01) */ + #define R_ADC_B0_ADLIMEXSCR_LIMEXF2_Pos (2UL) /*!< LIMEXF2 (Bit 2) */ + #define R_ADC_B0_ADLIMEXSCR_LIMEXF2_Msk (0x4UL) /*!< LIMEXF2 (Bitfield-Mask: 0x01) */ + #define R_ADC_B0_ADLIMEXSCR_LIMEXF5_Pos (5UL) /*!< LIMEXF5 (Bit 5) */ + #define R_ADC_B0_ADLIMEXSCR_LIMEXF5_Msk (0x20UL) /*!< LIMEXF5 (Bitfield-Mask: 0x01) */ + #define R_ADC_B0_ADLIMEXSCR_LIMEXF6_Pos (6UL) /*!< LIMEXF6 (Bit 6) */ + #define R_ADC_B0_ADLIMEXSCR_LIMEXF6_Msk (0x40UL) /*!< LIMEXF6 (Bitfield-Mask: 0x01) */ + #define R_ADC_B0_ADLIMEXSCR_LIMEXF7_Pos (7UL) /*!< LIMEXF7 (Bit 7) */ + #define R_ADC_B0_ADLIMEXSCR_LIMEXF7_Msk (0x80UL) /*!< LIMEXF7 (Bitfield-Mask: 0x01) */ + #define R_ADC_B0_ADLIMEXSCR_LIMEXF8_Pos (8UL) /*!< LIMEXF8 (Bit 8) */ + #define R_ADC_B0_ADLIMEXSCR_LIMEXF8_Msk (0x100UL) /*!< LIMEXF8 (Bitfield-Mask: 0x01) */ +/* ====================================================== ADSCANENDSR ====================================================== */ + #define R_ADC_B0_ADSCANENDSR_SCENDFn_Pos (0UL) /*!< SCENDFn (Bit 0) */ + #define R_ADC_B0_ADSCANENDSR_SCENDFn_Msk (0x1ffUL) /*!< SCENDFn (Bitfield-Mask: 0x1ff) */ +/* ===================================================== ADSCANENDSCR ====================================================== */ + #define R_ADC_B0_ADSCANENDSCR_SCENDCn_Pos (0UL) /*!< SCENDCn (Bit 0) */ + #define R_ADC_B0_ADSCANENDSCR_SCENDCn_Msk (0x1ffUL) /*!< SCENDCn (Bitfield-Mask: 0x1ff) */ +/* ========================================================= ADDR ========================================================== */ + #define R_ADC_B0_ADDR_DATA_Pos (0UL) /*!< DATA (Bit 0) */ + #define R_ADC_B0_ADDR_DATA_Msk (0xffffUL) /*!< DATA (Bitfield-Mask: 0xffff) */ + #define R_ADC_B0_ADDR_ERR_Pos (31UL) /*!< ERR (Bit 31) */ + #define R_ADC_B0_ADDR_ERR_Msk (0x80000000UL) /*!< ERR (Bitfield-Mask: 0x01) */ +/* ======================================================== ADEXDR ========================================================= */ + #define R_ADC_B0_ADEXDR_DATA_Pos (0UL) /*!< DATA (Bit 0) */ + #define R_ADC_B0_ADEXDR_DATA_Msk (0xffffUL) /*!< DATA (Bitfield-Mask: 0xffff) */ + #define R_ADC_B0_ADEXDR_DIAGSR_Pos (24UL) /*!< DIAGSR (Bit 24) */ + #define R_ADC_B0_ADEXDR_DIAGSR_Msk (0x7000000UL) /*!< DIAGSR (Bitfield-Mask: 0x07) */ + #define R_ADC_B0_ADEXDR_ERR_Pos (31UL) /*!< ERR (Bit 31) */ + #define R_ADC_B0_ADEXDR_ERR_Msk (0x80000000UL) /*!< ERR (Bitfield-Mask: 0x01) */ +/* ======================================================= ADFIFODR0 ======================================================= */ + #define R_ADC_B0_ADFIFODR0_DATA_Pos (0UL) /*!< DATA (Bit 0) */ + #define R_ADC_B0_ADFIFODR0_DATA_Msk (0xffffUL) /*!< DATA (Bitfield-Mask: 0xffff) */ + #define R_ADC_B0_ADFIFODR0_CH_Pos (24UL) /*!< CH (Bit 24) */ + #define R_ADC_B0_ADFIFODR0_CH_Msk (0x7f000000UL) /*!< CH (Bitfield-Mask: 0x7f) */ + #define R_ADC_B0_ADFIFODR0_ERR_Pos (31UL) /*!< ERR (Bit 31) */ + #define R_ADC_B0_ADFIFODR0_ERR_Msk (0x80000000UL) /*!< ERR (Bitfield-Mask: 0x01) */ +/* ======================================================= ADFIFODR1 ======================================================= */ + #define R_ADC_B0_ADFIFODR1_DATA_Pos (0UL) /*!< DATA (Bit 0) */ + #define R_ADC_B0_ADFIFODR1_DATA_Msk (0xffffUL) /*!< DATA (Bitfield-Mask: 0xffff) */ + #define R_ADC_B0_ADFIFODR1_CH_Pos (24UL) /*!< CH (Bit 24) */ + #define R_ADC_B0_ADFIFODR1_CH_Msk (0x7f000000UL) /*!< CH (Bitfield-Mask: 0x7f) */ + #define R_ADC_B0_ADFIFODR1_ERR_Pos (31UL) /*!< ERR (Bit 31) */ + #define R_ADC_B0_ADFIFODR1_ERR_Msk (0x80000000UL) /*!< ERR (Bitfield-Mask: 0x01) */ +/* ======================================================= ADFIFODR2 ======================================================= */ + #define R_ADC_B0_ADFIFODR2_DATA_Pos (0UL) /*!< DATA (Bit 0) */ + #define R_ADC_B0_ADFIFODR2_DATA_Msk (0xffffUL) /*!< DATA (Bitfield-Mask: 0xffff) */ + #define R_ADC_B0_ADFIFODR2_CH_Pos (24UL) /*!< CH (Bit 24) */ + #define R_ADC_B0_ADFIFODR2_CH_Msk (0x7f000000UL) /*!< CH (Bitfield-Mask: 0x7f) */ + #define R_ADC_B0_ADFIFODR2_ERR_Pos (31UL) /*!< ERR (Bit 31) */ + #define R_ADC_B0_ADFIFODR2_ERR_Msk (0x80000000UL) /*!< ERR (Bitfield-Mask: 0x01) */ +/* ======================================================= ADFIFODR3 ======================================================= */ + #define R_ADC_B0_ADFIFODR3_DATA_Pos (0UL) /*!< DATA (Bit 0) */ + #define R_ADC_B0_ADFIFODR3_DATA_Msk (0xffffUL) /*!< DATA (Bitfield-Mask: 0xffff) */ + #define R_ADC_B0_ADFIFODR3_CH_Pos (24UL) /*!< CH (Bit 24) */ + #define R_ADC_B0_ADFIFODR3_CH_Msk (0x7f000000UL) /*!< CH (Bitfield-Mask: 0x7f) */ + #define R_ADC_B0_ADFIFODR3_ERR_Pos (31UL) /*!< ERR (Bit 31) */ + #define R_ADC_B0_ADFIFODR3_ERR_Msk (0x80000000UL) /*!< ERR (Bitfield-Mask: 0x01) */ +/* ======================================================= ADFIFODR4 ======================================================= */ + #define R_ADC_B0_ADFIFODR4_DATA_Pos (0UL) /*!< DATA (Bit 0) */ + #define R_ADC_B0_ADFIFODR4_DATA_Msk (0xffffUL) /*!< DATA (Bitfield-Mask: 0xffff) */ + #define R_ADC_B0_ADFIFODR4_CH_Pos (24UL) /*!< CH (Bit 24) */ + #define R_ADC_B0_ADFIFODR4_CH_Msk (0x7f000000UL) /*!< CH (Bitfield-Mask: 0x7f) */ + #define R_ADC_B0_ADFIFODR4_ERR_Pos (31UL) /*!< ERR (Bit 31) */ + #define R_ADC_B0_ADFIFODR4_ERR_Msk (0x80000000UL) /*!< ERR (Bitfield-Mask: 0x01) */ +/* ======================================================= ADFIFODR5 ======================================================= */ + #define R_ADC_B0_ADFIFODR5_DATA_Pos (0UL) /*!< DATA (Bit 0) */ + #define R_ADC_B0_ADFIFODR5_DATA_Msk (0xffffUL) /*!< DATA (Bitfield-Mask: 0xffff) */ + #define R_ADC_B0_ADFIFODR5_CH_Pos (24UL) /*!< CH (Bit 24) */ + #define R_ADC_B0_ADFIFODR5_CH_Msk (0x7f000000UL) /*!< CH (Bitfield-Mask: 0x7f) */ + #define R_ADC_B0_ADFIFODR5_ERR_Pos (31UL) /*!< ERR (Bit 31) */ + #define R_ADC_B0_ADFIFODR5_ERR_Msk (0x80000000UL) /*!< ERR (Bitfield-Mask: 0x01) */ +/* ======================================================= ADFIFODR6 ======================================================= */ + #define R_ADC_B0_ADFIFODR6_DATA_Pos (0UL) /*!< DATA (Bit 0) */ + #define R_ADC_B0_ADFIFODR6_DATA_Msk (0xffffUL) /*!< DATA (Bitfield-Mask: 0xffff) */ + #define R_ADC_B0_ADFIFODR6_CH_Pos (24UL) /*!< CH (Bit 24) */ + #define R_ADC_B0_ADFIFODR6_CH_Msk (0x7f000000UL) /*!< CH (Bitfield-Mask: 0x7f) */ + #define R_ADC_B0_ADFIFODR6_ERR_Pos (31UL) /*!< ERR (Bit 31) */ + #define R_ADC_B0_ADFIFODR6_ERR_Msk (0x80000000UL) /*!< ERR (Bitfield-Mask: 0x01) */ +/* ======================================================= ADFIFODR7 ======================================================= */ + #define R_ADC_B0_ADFIFODR7_DATA_Pos (0UL) /*!< DATA (Bit 0) */ + #define R_ADC_B0_ADFIFODR7_DATA_Msk (0xffffUL) /*!< DATA (Bitfield-Mask: 0xffff) */ + #define R_ADC_B0_ADFIFODR7_CH_Pos (24UL) /*!< CH (Bit 24) */ + #define R_ADC_B0_ADFIFODR7_CH_Msk (0x7f000000UL) /*!< CH (Bitfield-Mask: 0x7f) */ + #define R_ADC_B0_ADFIFODR7_ERR_Pos (31UL) /*!< ERR (Bit 31) */ + #define R_ADC_B0_ADFIFODR7_ERR_Msk (0x80000000UL) /*!< ERR (Bitfield-Mask: 0x01) */ +/* ======================================================= ADFIFODR8 ======================================================= */ + #define R_ADC_B0_ADFIFODR8_DATA_Pos (0UL) /*!< DATA (Bit 0) */ + #define R_ADC_B0_ADFIFODR8_DATA_Msk (0xffffUL) /*!< DATA (Bitfield-Mask: 0xffff) */ + #define R_ADC_B0_ADFIFODR8_CH_Pos (24UL) /*!< CH (Bit 24) */ + #define R_ADC_B0_ADFIFODR8_CH_Msk (0x7f000000UL) /*!< CH (Bitfield-Mask: 0x7f) */ + #define R_ADC_B0_ADFIFODR8_ERR_Pos (31UL) /*!< ERR (Bit 31) */ + #define R_ADC_B0_ADFIFODR8_ERR_Msk (0x80000000UL) /*!< ERR (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) */ + #define R_DOC_B_DOCR_DOPCIE_Pos (7UL) /*!< DOPCIE (Bit 7) */ + #define R_DOC_B_DOCR_DOPCIE_Msk (0x80UL) /*!< DOPCIE (Bitfield-Mask: 0x01) */ +/* ========================================================= 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) */ +/* ========================================================== 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) */ +/* ========================================================= 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_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_TFU ================ */ +/* =========================================================================================================================== */ + +/* ========================================================= SCDT0 ========================================================= */ + #define R_TFU_SCDT0_SCDT0_Pos (0UL) /*!< SCDT0 (Bit 0) */ + #define R_TFU_SCDT0_SCDT0_Msk (0xffffffffUL) /*!< SCDT0 (Bitfield-Mask: 0xffffffff) */ +/* ========================================================= SCDT1 ========================================================= */ + #define R_TFU_SCDT1_SCDT1_Pos (0UL) /*!< SCDT1 (Bit 0) */ + #define R_TFU_SCDT1_SCDT1_Msk (0xffffffffUL) /*!< SCDT1 (Bitfield-Mask: 0xffffffff) */ +/* ========================================================= ATDT0 ========================================================= */ + #define R_TFU_ATDT0_ATDT0_Pos (0UL) /*!< ATDT0 (Bit 0) */ + #define R_TFU_ATDT0_ATDT0_Msk (0xffffffffUL) /*!< ATDT0 (Bitfield-Mask: 0xffffffff) */ +/* ========================================================= ATDT1 ========================================================= */ + #define R_TFU_ATDT1_ATDT1_Pos (0UL) /*!< ATDT1 (Bit 0) */ + #define R_TFU_ATDT1_ATDT1_Msk (0xffffffffUL) /*!< ATDT1 (Bitfield-Mask: 0xffffffff) */ + +/** @} */ /* End of group PosMask_peripherals */ + + #ifdef __cplusplus +} + #endif + +#endif /* RA_H */ + +/** @} */ /* End of group RA */ + +/** @} */ /* End of group Renesas */ diff --git a/bsp/renesas/ra6m3-hmi-board/ra/fsp/src/bsp/cmsis/Device/RENESAS/Include/system.h b/bsp/renesas/ra6m3-hmi-board/ra/fsp/src/bsp/cmsis/Device/RENESAS/Include/system.h new file mode 100644 index 0000000000..363e7b7e05 --- /dev/null +++ b/bsp/renesas/ra6m3-hmi-board/ra/fsp/src/bsp/cmsis/Device/RENESAS/Include/system.h @@ -0,0 +1,58 @@ +/*********************************************************************************************************************** + * Copyright [2020-2021] 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/ra6m3-hmi-board/ra/fsp/src/bsp/cmsis/Device/RENESAS/Source/startup.c b/bsp/renesas/ra6m3-hmi-board/ra/fsp/src/bsp/cmsis/Device/RENESAS/Source/startup.c new file mode 100644 index 0000000000..a16dd0fade --- /dev/null +++ b/bsp/renesas/ra6m3-hmi-board/ra/fsp/src/bsp/cmsis/Device/RENESAS/Source/startup.c @@ -0,0 +1,151 @@ +/*********************************************************************************************************************** + * Copyright [2020-2021] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This software and documentation are supplied by Renesas Electronics America Inc. and may only be used with products + * of Renesas Electronics Corp. and its affiliates ("Renesas"). No other uses are authorized. Renesas products are + * sold pursuant to Renesas terms and conditions of sale. Purchasers are solely responsible for the selection and use + * of Renesas products and Renesas assumes no liability. No license, express or implied, to any intellectual property + * right is granted by Renesas. This software is protected under all applicable laws, including copyright laws. Renesas + * reserves the right to change or discontinue this software and/or this documentation. THE SOFTWARE AND DOCUMENTATION + * IS DELIVERED TO YOU "AS IS," AND RENESAS MAKES NO REPRESENTATIONS OR WARRANTIES, AND TO THE FULLEST EXTENT + * PERMISSIBLE UNDER APPLICABLE LAW, DISCLAIMS ALL WARRANTIES, WHETHER EXPLICITLY OR IMPLICITLY, INCLUDING WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT, WITH RESPECT TO THE SOFTWARE OR + * DOCUMENTATION. RENESAS SHALL HAVE NO LIABILITY ARISING OUT OF ANY SECURITY VULNERABILITY OR BREACH. TO THE MAXIMUM + * EXTENT PERMITTED BY LAW, IN NO EVENT WILL RENESAS BE LIABLE TO YOU IN CONNECTION WITH THE SOFTWARE OR DOCUMENTATION + * (OR ANY PERSON OR ENTITY CLAIMING RIGHTS DERIVED FROM YOU) FOR ANY LOSS, DAMAGES, OR CLAIMS WHATSOEVER, INCLUDING, + * WITHOUT LIMITATION, ANY DIRECT, CONSEQUENTIAL, SPECIAL, INDIRECT, PUNITIVE, OR INCIDENTAL DAMAGES; ANY LOST PROFITS, + * OTHER ECONOMIC DAMAGE, PROPERTY DAMAGE, OR PERSONAL INJURY; AND EVEN IF RENESAS HAS BEEN ADVISED OF THE POSSIBILITY + * OF SUCH LOSS, DAMAGES, CLAIMS OR COSTS. + **********************************************************************************************************************/ + +/*******************************************************************************************************************//** + * @addtogroup BSP_MCU + * @{ + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Includes , "Project Includes" + **********************************************************************************************************************/ +#include "bsp_api.h" + +/*********************************************************************************************************************** + * Macro definitions + **********************************************************************************************************************/ +#if BSP_TZ_SECURE_BUILD + #define BSP_TZ_STACK_SEAL_SIZE (8U) +#else + #define BSP_TZ_STACK_SEAL_SIZE (0U) +#endif + +/*********************************************************************************************************************** + * Typedef definitions + **********************************************************************************************************************/ + +/* Defines function pointers to be used with vector table. */ +typedef void (* exc_ptr_t)(void); + +/*********************************************************************************************************************** + * Exported global variables (to be accessed by other files) + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Private global variables and functions + **********************************************************************************************************************/ +void Reset_Handler(void); +void Default_Handler(void); +int32_t main(void); + +/*******************************************************************************************************************//** + * MCU starts executing here out of reset. Main stack pointer is set up already. + **********************************************************************************************************************/ +void Reset_Handler (void) +{ + /* Initialize system using BSP. */ + SystemInit(); + + /* Call user application. */ + main(); + + while (1) + { + /* Infinite Loop. */ + } +} + +/*******************************************************************************************************************//** + * Default exception handler. + **********************************************************************************************************************/ +void Default_Handler (void) +{ + /** A error has occurred. The user will need to investigate the cause. Common problems are stack corruption + * or use of an invalid pointer. Use the Fault Status window in e2 studio or manually check the fault status + * registers for more information. + */ + BSP_CFG_HANDLE_UNRECOVERABLE_ERROR(0); +} + +/* Main stack */ +static uint8_t g_main_stack[BSP_CFG_STACK_MAIN_BYTES + BSP_TZ_STACK_SEAL_SIZE] BSP_ALIGN_VARIABLE(BSP_STACK_ALIGNMENT) +BSP_PLACE_IN_SECTION(BSP_SECTION_STACK); + +/* Heap */ +#if (BSP_CFG_HEAP_BYTES > 0) + +BSP_DONT_REMOVE static uint8_t g_heap[BSP_CFG_HEAP_BYTES] BSP_ALIGN_VARIABLE(BSP_STACK_ALIGNMENT) \ + BSP_PLACE_IN_SECTION(BSP_SECTION_HEAP); +#endif + +/* All system exceptions in the vector table are weak references to Default_Handler. If the user wishes to handle + * these exceptions in their code they should define their own function with the same name. + */ +#if defined(__ICCARM__) + #define WEAK_REF_ATTRIBUTE + + #pragma weak HardFault_Handler = Default_Handler + #pragma weak MemManage_Handler = Default_Handler + #pragma weak BusFault_Handler = Default_Handler + #pragma weak UsageFault_Handler = Default_Handler + #pragma weak SecureFault_Handler = Default_Handler + #pragma weak SVC_Handler = Default_Handler + #pragma weak DebugMon_Handler = Default_Handler + #pragma weak PendSV_Handler = Default_Handler + #pragma weak SysTick_Handler = Default_Handler +#elif defined(__GNUC__) + + #define WEAK_REF_ATTRIBUTE __attribute__((weak, alias("Default_Handler"))) +#endif + +void NMI_Handler(void); // NMI has many sources and is handled by BSP +void HardFault_Handler(void) WEAK_REF_ATTRIBUTE; +void MemManage_Handler(void) WEAK_REF_ATTRIBUTE; +void BusFault_Handler(void) WEAK_REF_ATTRIBUTE; +void UsageFault_Handler(void) WEAK_REF_ATTRIBUTE; +void SecureFault_Handler(void) WEAK_REF_ATTRIBUTE; +void SVC_Handler(void) WEAK_REF_ATTRIBUTE; +void DebugMon_Handler(void) WEAK_REF_ATTRIBUTE; +void PendSV_Handler(void) WEAK_REF_ATTRIBUTE; +void SysTick_Handler(void) WEAK_REF_ATTRIBUTE; + +/* Vector table. */ +BSP_DONT_REMOVE const exc_ptr_t __Vectors[BSP_CORTEX_VECTOR_TABLE_ENTRIES] BSP_PLACE_IN_SECTION( + BSP_SECTION_FIXED_VECTORS) = +{ + (exc_ptr_t) (&g_main_stack[0] + BSP_CFG_STACK_MAIN_BYTES), /* Initial Stack Pointer */ + Reset_Handler, /* Reset Handler */ + NMI_Handler, /* NMI Handler */ + HardFault_Handler, /* Hard Fault Handler */ + MemManage_Handler, /* MPU Fault Handler */ + BusFault_Handler, /* Bus Fault Handler */ + UsageFault_Handler, /* Usage Fault Handler */ + SecureFault_Handler, /* Secure Fault Handler */ + 0, /* Reserved */ + 0, /* Reserved */ + 0, /* Reserved */ + SVC_Handler, /* SVCall Handler */ + DebugMon_Handler, /* Debug Monitor Handler */ + 0, /* Reserved */ + PendSV_Handler, /* PendSV Handler */ + SysTick_Handler, /* SysTick Handler */ +}; + +/** @} (end addtogroup BSP_MCU) */ diff --git a/bsp/renesas/ra6m3-hmi-board/ra/fsp/src/bsp/cmsis/Device/RENESAS/Source/system.c b/bsp/renesas/ra6m3-hmi-board/ra/fsp/src/bsp/cmsis/Device/RENESAS/Source/system.c new file mode 100644 index 0000000000..2e0f1e1c77 --- /dev/null +++ b/bsp/renesas/ra6m3-hmi-board/ra/fsp/src/bsp/cmsis/Device/RENESAS/Source/system.c @@ -0,0 +1,458 @@ +/*********************************************************************************************************************** + * Copyright [2020-2021] 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 +#include "bsp_api.h" + +/*********************************************************************************************************************** + * Macro definitions + **********************************************************************************************************************/ + +/* Mask to select CP bits( 0xF00000 ) */ +#define CP_MASK (0xFU << 20) + +/* 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) + +#if defined(__ICCARM__) + #define BSP_PRV_STACK_LIMIT ((uint32_t) __section_begin(".stack")) + #define BSP_PRV_STACK_TOP ((uint32_t) __section_end(".stack")) +#elif defined(__ARMCC_VERSION) + #define BSP_PRV_STACK_LIMIT ((uint32_t) &Image$$STACK$$ZI$$Base) + #define BSP_PRV_STACK_TOP ((uint32_t) &Image$$STACK$$ZI$$Base + \ + (uint32_t) &Image$$STACK$$ZI$$Length) +#elif defined(__GNUC__) + #define BSP_PRV_STACK_LIMIT ((uint32_t) &__StackLimit) + #define BSP_PRV_STACK_TOP ((uint32_t) &__StackTop) +#endif + +#define BSP_TZ_STACK_SEAL_VALUE (0xFEF5EDA5) + +/*********************************************************************************************************************** + * 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; +#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; +#elif defined(__ICCARM__) + #pragma section=".bss" + #pragma section=".data" + #pragma section=".data_init" + #pragma section=".stack" +#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 + +/*******************************************************************************************************************//** + * Initialize the MCU and the runtime environment. + **********************************************************************************************************************/ +void SystemInit (void) +{ +#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 + + /* 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 + + /* Use CM33 stack monitor. */ + __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 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 + + /* Initialize SystemCoreClock variable. */ + SystemCoreClockUpdate(); + +#if !BSP_CFG_PFS_PROTECT + #if BSP_TZ_SECURE_BUILD + 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 reset (Soft reset does not reset PMSAR). */ + R_BSP_RegisterProtectDisable(BSP_REG_PROTECT_SAR); + + for (uint32_t i = 0; i < 9; i++) + { + R_PMISC->PMSAR[i].PMSAR = UINT16_MAX; + } + R_BSP_RegisterProtectEnable(BSP_REG_PROTECT_SAR); +#endif + +#if BSP_TZ_SECURE_BUILD + + /* Initialize security features. */ + R_BSP_SecurityInit(); +#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 + +/** @} (end addtogroup BSP_MCU) */ diff --git a/bsp/renesas/ra6m3-hmi-board/ra/fsp/src/bsp/mcu/all/bsp_arm_exceptions.h b/bsp/renesas/ra6m3-hmi-board/ra/fsp/src/bsp/mcu/all/bsp_arm_exceptions.h new file mode 100644 index 0000000000..a8f399026d --- /dev/null +++ b/bsp/renesas/ra6m3-hmi-board/ra/fsp/src/bsp/mcu/all/bsp_arm_exceptions.h @@ -0,0 +1,50 @@ +/*********************************************************************************************************************** + * Copyright [2020-2021] 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_ARM_EXCEPTIONS_H +#define BSP_ARM_EXCEPTIONS_H + +/*********************************************************************************************************************** + * 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; + +#endif diff --git a/bsp/renesas/ra6m3-hmi-board/ra/fsp/src/bsp/mcu/all/bsp_clocks.c b/bsp/renesas/ra6m3-hmi-board/ra/fsp/src/bsp/mcu/all/bsp_clocks.c new file mode 100644 index 0000000000..2f2374b41b --- /dev/null +++ b/bsp/renesas/ra6m3-hmi-board/ra/fsp/src/bsp/mcu/all/bsp_clocks.c @@ -0,0 +1,1566 @@ +/*********************************************************************************************************************** + * Copyright [2020-2021] 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) + +#define BSP_PRV_MAXIMUM_HOCOWTR_HSTS ((uint8_t) 0x6U) + +/* 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_SRAM_PRCR_KEY (0x78U) +#define BSP_PRV_SRAM_UNLOCK (((BSP_PRV_SRAM_PRCR_KEY) << 1) | 0x1U) +#define BSP_PRV_SRAM_LOCK (((BSP_PRV_SRAM_PRCR_KEY) << 1) | 0x0U) + +/* Calculate value to write to MOMCR (MODRV controls main clock drive strength and MOSEL determines the source of the + * main oscillator). */ +#define BSP_PRV_MOMCR_MOSEL_BIT (6) +#define BSP_PRV_MODRV ((CGC_MAINCLOCK_DRIVE << BSP_FEATURE_CGC_MODRV_SHIFT) & \ + BSP_FEATURE_CGC_MODRV_MASK) +#define BSP_PRV_MOSEL (BSP_CLOCK_CFG_MAIN_OSC_CLOCK_SOURCE << BSP_PRV_MOMCR_MOSEL_BIT) +#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) + +#ifdef BSP_CFG_UCK_DIV + +/* If the MCU has SCKDIVCR2. */ + #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_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) + #else + + #error "BSP_CFG_UCK_DIV not supported." + + #endif + #endif +#endif + +/* Choose the value to write to FLLCR2 (if applicable). */ +#if BSP_PRV_HOCO_USE_FLL + #if 0U == BSP_CFG_HOCO_FREQUENCY + #define BSP_PRV_FLL_FLLCR2 (0x1E9U) + #elif 1U == BSP_CFG_HOCO_FREQUENCY + #define BSP_PRV_FLL_FLLCR2 (0x226U) + #elif 2U == BSP_CFG_HOCO_FREQUENCY + #define BSP_PRV_FLL_FLLCR2 (0x263U) + #endif +#endif + +/* Calculate the value to write to SCKDIVCR. */ +#define BSP_PRV_STARTUP_SCKDIVCR_ICLK_BITS ((BSP_CFG_ICLK_DIV & 7U) << 24U) +#if BSP_FEATURE_CGC_HAS_PCLKD + #define BSP_PRV_STARTUP_SCKDIVCR_PCLKD_BITS (BSP_CFG_PCLKD_DIV & 0x7U) +#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 & 0x7U) << 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 & 0x7U) << 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 & 0x7U) << 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 & 0x7U) << 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 & 0x7U) << 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 & 0x7U) << 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_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) + +/* The number of clocks is used to size the g_clock_freq array. */ +#if BSP_PRV_PLL2_SUPPORTED + #define BSP_PRV_NUM_CLOCKS ((uint8_t) BSP_CLOCKS_SOURCE_CLOCK_PLL2 + 1U) +#elif BSP_PRV_PLL_SUPPORTED + #define BSP_PRV_NUM_CLOCKS ((uint8_t) BSP_CLOCKS_SOURCE_CLOCK_PLL + 1U) +#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) + #elif BSP_CLOCKS_SOURCE_CLOCK_HOCO == BSP_CFG_PLL_SOURCE + #define BSP_PRV_PLSRCSEL (1) + #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) + #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 +#endif + +#if BSP_FEATURE_CGC_HAS_PLL2 + #if BSP_CLOCKS_SOURCE_CLOCK_MAIN_OSC == BSP_CFG_PLL2_SOURCE + #define BSP_PRV_PL2SRCSEL (0) + #elif BSP_CLOCKS_SOURCE_CLOCK_HOCO == BSP_CFG_PLL2_SOURCE + #define BSP_PRV_PL2SRCSEL (1) + #endif + #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 + +/* 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_PLL_USED (1) + #define BSP_PRV_STABILIZE_PLL (1) +#elif defined(BSP_CFG_UCK_SOURCE) && BSP_FEATURE_BSP_HAS_USB_CLOCK_REQ && \ + (BSP_CFG_UCK_SOURCE == BSP_CLOCKS_SOURCE_CLOCK_PLL) + #define BSP_PRV_PLL_USED (1) +#elif defined(BSP_CFG_SCISPICLK_SOURCE) && (BSP_CFG_SCISPICLK_SOURCE == BSP_CLOCKS_SOURCE_CLOCK_PLL) + #define BSP_PRV_PLL_USED (1) +#elif defined(BSP_CFG_CANFDCLK_SOURCE) && (BSP_CFG_CANFDCLK_SOURCE == BSP_CLOCKS_SOURCE_CLOCK_PLL) + #define BSP_PRV_PLL_USED (1) +#elif defined(BSP_CFG_GPTCLK_SOURCE) && (BSP_CFG_GPTCLK_SOURCE == BSP_CLOCKS_SOURCE_CLOCK_PLL) + #define BSP_PRV_PLL_USED (1) +#elif defined(BSP_CFG_IICCLK_SOURCE) && (BSP_CFG_IICCLK_SOURCE == BSP_CLOCKS_SOURCE_CLOCK_PLL) + #define BSP_PRV_PLL_USED (1) +#elif defined(BSP_CFG_OCTA_SOURCE) && (BSP_CFG_OCTA_SOURCE == BSP_CLOCKS_SOURCE_CLOCK_PLL) + #define BSP_PRV_PLL_USED (1) +#else + #define BSP_PRV_PLL_USED (0) +#endif + +/* All clocks with configurable source except the main clock, PLL, and CLKOUT can use PLL2. */ +#if defined(BSP_CFG_UCK_SOURCE) && BSP_FEATURE_BSP_HAS_USB_CLOCK_REQ && \ + (BSP_CFG_UCK_SOURCE == BSP_CLOCKS_SOURCE_CLOCK_PLL2) + #define BSP_PRV_PLL2_USED (1) +#elif defined(BSP_CFG_SCISPICLK_SOURCE) && (BSP_CFG_SCISPICLK_SOURCE == BSP_CLOCKS_SOURCE_CLOCK_PLL2) + #define BSP_PRV_PLL2_USED (1) +#elif defined(BSP_CFG_CANFDCLK_SOURCE) && (BSP_CFG_CANFDCLK_SOURCE == BSP_CLOCKS_SOURCE_CLOCK_PLL2) + #define BSP_PRV_PLL2_USED (1) +#elif defined(BSP_CFG_GPTCLK_SOURCE) && (BSP_CFG_GPTCLK_SOURCE == BSP_CLOCKS_SOURCE_CLOCK_PLL2) + #define BSP_PRV_PLL2_USED (1) +#elif defined(BSP_CFG_IICCLK_SOURCE) && (BSP_CFG_IICCLK_SOURCE == BSP_CLOCKS_SOURCE_CLOCK_PLL2) + #define BSP_PRV_PLL2_USED (1) +#elif defined(BSP_CFG_OCTA_SOURCE) && (BSP_CFG_OCTA_SOURCE == BSP_CLOCKS_SOURCE_CLOCK_PLL2) + #define BSP_PRV_PLL2_USED (1) +#else + #define BSP_PRV_PLL2_USED (0) +#endif + +/* All clocks with configurable source except UCK, CANFD 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_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_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_OCTA_SOURCE) && (BSP_CFG_OCTA_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. */ +#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_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_OCTA_SOURCE) && (BSP_CFG_OCTA_SOURCE == BSP_CLOCKS_SOURCE_CLOCK_HOCO) + #define BSP_PRV_HOCO_USED (1) +#else + #define BSP_PRV_HOCO_USED (0) +#endif + +/* All clocks with configurable source except UCK, CANFD, and 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_SCISPICLK_SOURCE) && (BSP_CFG_SCISPICLK_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_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, 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_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 + +/*********************************************************************************************************************** + * 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); + +#if !BSP_CFG_USE_LOW_VOLTAGE_MODE +static void bsp_prv_operating_mode_opccr_set(uint8_t operating_mode); + +#endif + +#if !BSP_CFG_SOFT_RESET_SUPPORTED +static void bsp_prv_clock_set_hard_reset(void); + +#endif + +/* 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_TZ_CFG_CGFSAR != 0xFFFFFFFFU + +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_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 + { + /* 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); + + 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) +{ + uint32_t clock_index = R_SYSTEM->SCKSCR; + SystemCoreClock = g_clock_freq[clock_index] >> R_SYSTEM->SCKDIVCR_b.ICK; +} + +#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 + +/*******************************************************************************************************************//** + * 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 + **********************************************************************************************************************/ +void bsp_prv_clock_set (uint32_t clock, uint32_t sckdivcr) +{ +#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_PRIV_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] >> iclk_div; + uint8_t new_rom_wait_state = bsp_clock_set_prechange(clock_freq_hz_post_change); + + /* 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. */ + + /* If the current ICLK divider is less (higher frequency) than the requested ICLK divider, set the divider + * first. */ + sckdivcr = sckdivcr & BSP_PRV_SCKDIVCR_MASK; + if (R_SYSTEM->SCKDIVCR_b.ICK < iclk_div) + { + /* Set the system dividers */ + R_SYSTEM->SCKDIVCR = sckdivcr; + + /* Set the system source clock */ + R_SYSTEM->SCKSCR = (uint8_t) clock; + } + /* If the current ICLK divider is greater (lower frequency) than the requested ICLK divider, set the clock + * source first. If the ICLK divider is the same, order does not matter. */ + else + { + /* Set the system source clock */ + R_SYSTEM->SCKSCR = (uint8_t) clock; + + /* Set the system dividers */ + R_SYSTEM->SCKDIVCR = sckdivcr; + } + + /* 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_SOFT_RESET_SUPPORTED + +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; + #else + R_FCACHE->FLWT = BSP_PRV_ROM_THREE_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. */ + + /* ICLK divider at reset is lowest possible, so set dividers first. */ + + /* Set the system dividers first if ICLK divisor is larger than reset value. */ + #if BSP_CFG_ICLK_DIV >= BSP_FEATURE_CGC_ICLK_DIV_RESET + R_SYSTEM->SCKDIVCR = BSP_PRV_STARTUP_SCKDIVCR; + #endif + + /* Set the system source clock */ + R_SYSTEM->SCKSCR = BSP_CFG_CLOCK_SOURCE; + + /* Set the system dividers after setting the system clock source if ICLK divisor is smaller than reset value. */ + #if BSP_CFG_ICLK_DIV < BSP_FEATURE_CGC_ICLK_DIV_RESET + R_SYSTEM->SCKDIVCR = BSP_PRV_STARTUP_SCKDIVCR; + #endif + + /* Clock is now at requested frequency. */ + + /* Update the CMSIS core clock variable so that it reflects the new ICLK frequency. */ + SystemCoreClockUpdate(); + + /* 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; + R_SRAM->SRAMWTSC = BSP_PRV_SRAMWTSC_WAIT_CYCLES_DISABLE; + 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 + + /* The PLL Is the startup clock. */ + g_clock_freq[BSP_CLOCKS_SOURCE_CLOCK_PLL] = BSP_STARTUP_SOURCE_CLOCK_HZ; + #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_TZ_CFG_CGFSAR != 0xFFFFFFFFU + + /* 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); + #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); + #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(); +} + +/*******************************************************************************************************************//** + * Initializes system clocks. Makes no assumptions about current register settings. + **********************************************************************************************************************/ +void bsp_clock_init (void) +{ + /* Unlock CGC and LPM protection registers. */ + R_SYSTEM->PRCR = (uint16_t) BSP_PRV_PRCR_UNLOCK; + +#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_CLOCK_CFG_MAIN_OSC_POPULATED + #if BSP_CFG_SOFT_RESET_SUPPORTED + + /* 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 + +#if BSP_FEATURE_CGC_HAS_SOSC + #if BSP_CLOCK_CFG_SUBCLOCK_POPULATED + + /* If the board has a subclock, set the subclock drive and start the subclock if the subclock is stopped. If the + * subclock is running, the subclock drive is assumed to be set appropriately. */ + if (R_SYSTEM->SOSCCR) + { + /* Configure the subclock drive if the subclock is not already running. */ + R_SYSTEM->SOMCR = ((BSP_CLOCK_CFG_SUBCLOCK_DRIVE << BSP_FEATURE_CGC_SODRV_SHIFT) & BSP_FEATURE_CGC_SODRV_MASK); + R_SYSTEM->SOSCCR = 0U; + #if (BSP_CLOCKS_SOURCE_CLOCK_SUBCLOCK == BSP_CFG_CLOCK_SOURCE) || (BSP_PRV_HOCO_USE_FLL) + + /* If the subclock is the system clock source OR if FLL is used, wait for stabilization. */ + R_BSP_SoftwareDelay(BSP_CLOCK_CFG_SUBCLOCK_STABILIZATION_MS, BSP_DELAY_UNITS_MILLISECONDS); + #endif + } + + #else + R_SYSTEM->SOSCCR = 1U; + #endif +#endif + +#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_PRV_MAXIMUM_HOCOWTR_HSTS; + #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_PRV_MAXIMUM_HOCOWTR_HSTS; + #endif +#endif + +#if !BSP_CFG_USE_LOW_VOLTAGE_MODE + #if BSP_CFG_SOFT_RESET_SUPPORTED + + /* 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_SOFT_RESET_SUPPORTED + + /* 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_SOFT_RESET_SUPPORTED + + /* 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 + 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 + R_SYSTEM->PLL2CCR = BSP_PRV_PLL2CCR; + + /* 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_CLOCKS_SOURCE_CLOCK_PLL == BSP_CFG_CLOCK_SOURCE + + /* Configure the PLL registers. */ + #if 1U == 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; + #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 + #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_SOFT_RESET_SUPPORTED + bsp_prv_clock_set(BSP_CFG_CLOCK_SOURCE, BSP_PRV_STARTUP_SCKDIVCR); +#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 + #if BSP_PRV_PLL_SUPPORTED + #if BSP_CFG_SOFT_RESET_SUPPORTED + if (BSP_PRV_OPERATING_MODE_LOW_SPEED == BSP_PRV_STARTUP_OPERATING_MODE) + { + /* If the MCU has a PLL, ensure PLL is stopped and stable before entering low speed mode. */ + R_SYSTEM->PLLCR = 1U; + + /* Wait for PLL to stabilize. */ + FSP_HARDWARE_REGISTER_WAIT(R_SYSTEM->OSCSF_b.PLLSF, 0U); + + #if BSP_FEATURE_CGC_HAS_PLL2 + + /* If the MCU has a PLL2, ensure PLL2 is stopped and stable before entering low speed mode. */ + R_SYSTEM->PLL2CR = 1U; + + /* Wait for PLL to stabilize. */ + FSP_HARDWARE_REGISTER_WAIT(R_SYSTEM->OSCSF_b.PLL2SF, 0U); + #endif + } + #endif + #endif + 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_SOFT_RESET_SUPPORTED + 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_SOFT_RESET_SUPPORTED + 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 than 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) + + /* Request to stop the CANFD clock. */ + R_SYSTEM->CANFDCKCR_b.CANFDCKSREQ = 1; + + /* Wait for the CANFD clock to stop. */ + FSP_HARDWARE_REGISTER_WAIT(R_SYSTEM->CANFDCKCR_b.CANFDCKSRDY, 1U); + + /* Select the CANFD clock divisor and source. */ + R_SYSTEM->CANFDCKDIVCR = BSP_CFG_CANFDCLK_DIV; + R_SYSTEM->CANFDCKCR = BSP_CFG_CANFDCLK_SOURCE | R_SYSTEM_CANFDCKCR_CANFDCKSREQ_Msk | + R_SYSTEM_CANFDCKCR_CANFDCKSRDY_Msk; + + /* Request to start the CANFD clock. */ + R_SYSTEM->CANFDCKCR_b.CANFDCKSREQ = 0; + + /* Wait for the CANFD clock to start. */ + FSP_HARDWARE_REGISTER_WAIT(R_SYSTEM->CANFDCKCR_b.CANFDCKSRDY, 0U); +#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) + + /* Request to stop the SCISPI clock. */ + R_SYSTEM->SCISPICKCR_b.SCISPICKSREQ = 1; + + /* Wait for the SCISPI clock to stop. */ + FSP_HARDWARE_REGISTER_WAIT(R_SYSTEM->SCISPICKCR_b.SCISPICKSRDY, 1U); + + /* Select the SCISPI clock divisor and source. */ + R_SYSTEM->SCISPICKDIVCR = BSP_CFG_SCISPICLK_DIV; + R_SYSTEM->SCISPICKCR = BSP_CFG_SCISPICLK_SOURCE | R_SYSTEM_SCISPICKCR_SCISPICKSREQ_Msk | + R_SYSTEM_SCISPICKCR_SCISPICKSRDY_Msk; + + /* Request to start the SCISPI clock. */ + R_SYSTEM->SCISPICKCR_b.SCISPICKSREQ = 0; + + /* Wait for the SCISPI clock to start. */ + FSP_HARDWARE_REGISTER_WAIT(R_SYSTEM->SCISPICKCR_b.SCISPICKSRDY, 0U); +#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) + + /* Request to stop the GPT clock. */ + R_SYSTEM->GPTCKCR_b.GPTCKSREQ = 1; + + /* Wait for the GPT clock to stop. */ + FSP_HARDWARE_REGISTER_WAIT(R_SYSTEM->GPTCKCR_b.GPTCKSRDY, 1U); + + /* Select the GPT clock divisor and source. */ + R_SYSTEM->GPTCKDIVCR = BSP_CFG_GPTCLK_DIV; + R_SYSTEM->GPTCKCR = BSP_CFG_GPTCLK_SOURCE | R_SYSTEM_GPTCKCR_GPTCKSREQ_Msk | + R_SYSTEM_GPTCKCR_GPTCKSRDY_Msk; + + /* Request to start the GPT clock. */ + R_SYSTEM->GPTCKCR_b.GPTCKSREQ = 0; + + /* Wait for the GPT clock to start. */ + FSP_HARDWARE_REGISTER_WAIT(R_SYSTEM->GPTCKCR_b.GPTCKSRDY, 0U); +#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) + + /* Request to stop the IIC clock. */ + R_SYSTEM->IICCKCR_b.IICCKSREQ = 1; + + /* Wait for the IIC clock to stop. */ + FSP_HARDWARE_REGISTER_WAIT(R_SYSTEM->IICCKCR_b.IICCKSRDY, 1U); + + /* Select the IIC clock divisor and source. */ + R_SYSTEM->IICCKDIVCR = BSP_CFG_IICCLK_DIV; + R_SYSTEM->IICCKCR = BSP_CFG_IICCLK_SOURCE | R_SYSTEM_IICCKCR_IICCKSREQ_Msk | + R_SYSTEM_IICCKCR_IICCKSRDY_Msk; + + /* Request to start the IIC clock. */ + R_SYSTEM->IICCKCR_b.IICCKSREQ = 0; + + /* Wait for the IIC clock to start. */ + FSP_HARDWARE_REGISTER_WAIT(R_SYSTEM->IICCKCR_b.IICCKSRDY, 0U); +#endif + + /* Lock CGC and LPM protection registers. */ + R_SYSTEM->PRCR = (uint16_t) BSP_PRV_PRCR_LOCK; + +#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 +} + +/*******************************************************************************************************************//** + * 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) + { + #ifdef BSP_FEATURE_CGC_HAS_SRAMPRCR2 + 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; + R_SRAM->SRAMWTSC = BSP_FEATURE_SRAM_SRAMWTSC_WAIT_CYCLE_ENABLE; + 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; + } + + #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 + { + new_rom_wait_state = BSP_PRV_ROM_THREE_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; + R_SRAM->SRAMWTSC = BSP_PRV_SRAMWTSC_WAIT_CYCLES_DISABLE; + 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 +} + +/*******************************************************************************************************************//** + * 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. */ + uint16_t bsp_prv_prcr_orig = R_SYSTEM->PRCR; + + /* Unlock CGC and LPM protection registers. */ + R_SYSTEM->PRCR = (uint16_t) BSP_PRV_PRCR_UNLOCK; + + /* 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. */ + R_SYSTEM->PRCR = bsp_prv_prcr_orig; +#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; +} + +/** @} (end addtogroup BSP_MCU_PRV) */ diff --git a/bsp/renesas/ra6m3-hmi-board/ra/fsp/src/bsp/mcu/all/bsp_clocks.h b/bsp/renesas/ra6m3-hmi-board/ra/fsp/src/bsp/mcu/all/bsp_clocks.h new file mode 100644 index 0000000000..68e4a77570 --- /dev/null +++ b/bsp/renesas/ra6m3-hmi-board/ra/fsp/src/bsp/mcu/all/bsp_clocks.h @@ -0,0 +1,354 @@ +/*********************************************************************************************************************** + * Copyright [2020-2021] 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. +#define BSP_CLOCKS_SOURCE_CLOCK_PLL (5) // The PLL oscillator. +#define BSP_CLOCKS_SOURCE_CLOCK_PLL2 (6) // The PLL2 oscillator. + +/* 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) && !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)) + #endif +#endif + +/* 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_ICLK_HZ (BSP_STARTUP_SOURCE_CLOCK_HZ >> BSP_CFG_ICLK_DIV) +#define BSP_STARTUP_PCLKA_HZ (BSP_STARTUP_SOURCE_CLOCK_HZ >> BSP_CFG_PCLKA_DIV) +#define BSP_STARTUP_PCLKB_HZ (BSP_STARTUP_SOURCE_CLOCK_HZ >> BSP_CFG_PCLKB_DIV) +#define BSP_STARTUP_PCLKC_HZ (BSP_STARTUP_SOURCE_CLOCK_HZ >> BSP_CFG_PCLKC_DIV) +#define BSP_STARTUP_PCLKD_HZ (BSP_STARTUP_SOURCE_CLOCK_HZ >> BSP_CFG_PCLKD_DIV) +#define BSP_STARTUP_BCLK_HZ (BSP_STARTUP_SOURCE_CLOCK_HZ >> BSP_CFG_BCLK_DIV) +#define BSP_STARTUP_FCLK_HZ (BSP_STARTUP_SOURCE_CLOCK_HZ >> BSP_CFG_FCLK_DIV) + +/* 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). + +/* USB clock divider options. */ +#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 + +/* 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_4 (2) // Divide CANFD source clock by 4 +#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 + +/* 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_4 (2) // Divide GPT source clock by 4 +#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 + +/* 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 (2) + +/* PLL multiplier options. */ +#define BSP_CLOCKS_PLL_MUL_8_0 (0xF) +#define BSP_CLOCKS_PLL_MUL_9_0 (0x11) +#define BSP_CLOCKS_PLL_MUL_10_0 (0x13) +#define BSP_CLOCKS_PLL_MUL_10_5 (0x14) +#define BSP_CLOCKS_PLL_MUL_11_0 (0x15) +#define BSP_CLOCKS_PLL_MUL_11_5 (0x16) +#define BSP_CLOCKS_PLL_MUL_12_0 (0x17) +#define BSP_CLOCKS_PLL_MUL_12_5 (0x18) +#define BSP_CLOCKS_PLL_MUL_13_0 (0x19) +#define BSP_CLOCKS_PLL_MUL_13_5 (0x1A) +#define BSP_CLOCKS_PLL_MUL_14_0 (0x1B) +#define BSP_CLOCKS_PLL_MUL_14_5 (0x1c) +#define BSP_CLOCKS_PLL_MUL_15_0 (0x1d) +#define BSP_CLOCKS_PLL_MUL_15_5 (0x1e) +#define BSP_CLOCKS_PLL_MUL_16_0 (0x1f) +#define BSP_CLOCKS_PLL_MUL_16_5 (0x20) +#define BSP_CLOCKS_PLL_MUL_17_0 (0x21) +#define BSP_CLOCKS_PLL_MUL_17_5 (0x22) +#define BSP_CLOCKS_PLL_MUL_18_0 (0x23) +#define BSP_CLOCKS_PLL_MUL_18_5 (0x24) +#define BSP_CLOCKS_PLL_MUL_19_0 (0x25) +#define BSP_CLOCKS_PLL_MUL_19_5 (0x26) +#define BSP_CLOCKS_PLL_MUL_20_0 (0x27) +#define BSP_CLOCKS_PLL_MUL_20_5 (0x28) +#define BSP_CLOCKS_PLL_MUL_21_0 (0x29) +#define BSP_CLOCKS_PLL_MUL_21_5 (0x2A) +#define BSP_CLOCKS_PLL_MUL_22_0 (0x2B) +#define BSP_CLOCKS_PLL_MUL_22_5 (0x2c) +#define BSP_CLOCKS_PLL_MUL_23_0 (0x2d) +#define BSP_CLOCKS_PLL_MUL_23_5 (0x2e) +#define BSP_CLOCKS_PLL_MUL_24_0 (0x2f) +#define BSP_CLOCKS_PLL_MUL_24_5 (0x30) +#define BSP_CLOCKS_PLL_MUL_25_0 (0x31) +#define BSP_CLOCKS_PLL_MUL_25_5 (0x32) +#define BSP_CLOCKS_PLL_MUL_26_0 (0x33) +#define BSP_CLOCKS_PLL_MUL_26_5 (0x34) +#define BSP_CLOCKS_PLL_MUL_27_0 (0x35) +#define BSP_CLOCKS_PLL_MUL_27_5 (0x36) +#define BSP_CLOCKS_PLL_MUL_28_0 (0x37) +#define BSP_CLOCKS_PLL_MUL_28_5 (0x38) +#define BSP_CLOCKS_PLL_MUL_29_0 (0x39) +#define BSP_CLOCKS_PLL_MUL_29_5 (0x3A) +#define BSP_CLOCKS_PLL_MUL_30_0 (0x3B) +#define BSP_CLOCKS_PLL_MUL_31_0 (0x3D) + +/* 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 (7U << 24) +#if BSP_FEATURE_CGC_HAS_PCLKD + #define BSP_PRV_SCKDIVCR_PCLKD_MASK (7U << 0) +#else + #define BSP_PRV_SCKDIVCR_PCLKD_MASK (0U) +#endif +#if BSP_FEATURE_CGC_HAS_PCLKC + #define BSP_PRV_SCKDIVCR_PCLKC_MASK (7U << 4) +#else + #define BSP_PRV_SCKDIVCR_PCLKC_MASK (0U) +#endif +#if BSP_FEATURE_CGC_HAS_PCLKB + #define BSP_PRV_SCKDIVCR_PCLKB_MASK (7U << 8) +#else + #define BSP_PRV_SCKDIVCR_PCLKB_MASK (0U) +#endif +#if BSP_FEATURE_CGC_HAS_PCLKA + #define BSP_PRV_SCKDIVCR_PCLKA_MASK (7U << 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 (7U << 16) +#else + #define BSP_PRV_SCKDIVCR_BCLK_MASK (0U) +#endif +#if BSP_FEATURE_CGC_HAS_FCLK + #define BSP_PRV_SCKDIVCR_FCLK_MASK (7U << 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_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 + +/* 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 + +/*********************************************************************************************************************** + * 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); + +/** 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/ra6m3-hmi-board/ra/fsp/src/bsp/mcu/all/bsp_common.c b/bsp/renesas/ra6m3-hmi-board/ra/fsp/src/bsp/mcu/all/bsp_common.c new file mode 100644 index 0000000000..6613c10fd3 --- /dev/null +++ b/bsp/renesas/ra6m3-hmi-board/ra/fsp/src/bsp/mcu/all/bsp_common.c @@ -0,0 +1,195 @@ +/*********************************************************************************************************************** + * Copyright [2020-2021] 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 + +/*********************************************************************************************************************** + * 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) = +{ + .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 + +/** @} (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 diff --git a/bsp/renesas/ra6m3-hmi-board/ra/fsp/src/bsp/mcu/all/bsp_common.h b/bsp/renesas/ra6m3-hmi-board/ra/fsp/src/bsp/mcu/all/bsp_common.h new file mode 100644 index 0000000000..8f25cb6560 --- /dev/null +++ b/bsp/renesas/ra6m3-hmi-board/ra/fsp/src/bsp/mcu/all/bsp_common.h @@ -0,0 +1,379 @@ +/*********************************************************************************************************************** + * Copyright [2020-2021] 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/fsp_common_api.h" +#include "bsp_compiler_support.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) + #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 + +/**************************************************************** + * + * 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 R_FSP_SystemClockHzGet. Each bitfield in SCKDIVCR is 3 bits wide. */ +#define FSP_PRIV_SCKDIVCR_DIV_MASK (7) + +/* 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 + +/*********************************************************************************************************************** + * 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_ICLK = 24, + FSP_PRIV_CLOCK_FCLK = 28, +} 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 = R_SYSTEM->SCKDIVCR; + uint32_t iclk_div = (sckdivcr >> FSP_PRIV_CLOCK_ICLK) & FSP_PRIV_SCKDIVCR_DIV_MASK; + uint32_t clock_div = (sckdivcr >> clock) & FSP_PRIV_SCKDIVCR_DIV_MASK; + + return (SystemCoreClock << iclk_div) >> clock_div; +} + +#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 = (scispidivcr & FSP_PRIV_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 + +/*******************************************************************************************************************//** + * Get unique ID for this device. + * + * @return A pointer to the unique identifier structure + **********************************************************************************************************************/ +__STATIC_INLINE bsp_unique_id_t const * R_BSP_UniqueIdGet () +{ + return (bsp_unique_id_t *) BSP_FEATURE_BSP_UNIQUE_ID_POINTER; +} + +/*******************************************************************************************************************//** + * Disables the flash cache. + **********************************************************************************************************************/ +__STATIC_INLINE void R_BSP_FlashCacheDisable () +{ +#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 () +{ +#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/ra6m3-hmi-board/ra/fsp/src/bsp/mcu/all/bsp_compiler_support.h b/bsp/renesas/ra6m3-hmi-board/ra/fsp/src/bsp/mcu/all/bsp_compiler_support.h new file mode 100644 index 0000000000..b07ca8ffcb --- /dev/null +++ b/bsp/renesas/ra6m3-hmi-board/ra/fsp/src/bsp/mcu/all/bsp_compiler_support.h @@ -0,0 +1,104 @@ +/*********************************************************************************************************************** + * Copyright [2020-2021] 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 + +/*********************************************************************************************************************** + * 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" + #define BSP_SECTION_HEAP BSP_UNINIT_SECTION_PREFIX ".heap" + #define BSP_DONT_REMOVE + #define BSP_ATTRIBUTE_STACKLESS __attribute__((naked)) + #define BSP_FORCE_INLINE __attribute__((always_inline)) +#elif defined(__GNUC__) /* GCC compiler */ + #define BSP_UNINIT_SECTION_PREFIX + #define BSP_SECTION_HEAP ".heap" + #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 + #define BSP_SECTION_HEAP "HEAP" + #define BSP_DONT_REMOVE __root + #define BSP_ATTRIBUTE_STACKLESS __stackless + #define BSP_FORCE_INLINE _Pragma("inline=forced") +#endif + +#define BSP_SECTION_STACK BSP_UNINIT_SECTION_PREFIX ".stack" +#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) */ + +#endif diff --git a/bsp/renesas/ra6m3-hmi-board/ra/fsp/src/bsp/mcu/all/bsp_delay.c b/bsp/renesas/ra6m3-hmi-board/ra/fsp/src/bsp/mcu/all/bsp_delay.c new file mode 100644 index 0000000000..4dd223547e --- /dev/null +++ b/bsp/renesas/ra6m3-hmi-board/ra/fsp/src/bsp/mcu/all/bsp_delay.c @@ -0,0 +1,182 @@ +/*********************************************************************************************************************** + * Copyright [2020-2021] 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 ("sw_delay_loop: \n" + +#if defined(__ICCARM__) || defined(__ARMCC_VERSION) + " 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/ra6m3-hmi-board/ra/fsp/src/bsp/mcu/all/bsp_delay.h b/bsp/renesas/ra6m3-hmi-board/ra/fsp/src/bsp/mcu/all/bsp_delay.h new file mode 100644 index 0000000000..e759e74fa2 --- /dev/null +++ b/bsp/renesas/ra6m3-hmi-board/ra/fsp/src/bsp/mcu/all/bsp_delay.h @@ -0,0 +1,75 @@ +/*********************************************************************************************************************** + * Copyright [2020-2021] 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 + #define BSP_DELAY_LOOP_CYCLES (4) +#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/ra6m3-hmi-board/ra/fsp/src/bsp/mcu/all/bsp_group_irq.c b/bsp/renesas/ra6m3-hmi-board/ra/fsp/src/bsp/mcu/all/bsp_group_irq.c new file mode 100644 index 0000000000..fd1d74e944 --- /dev/null +++ b/bsp/renesas/ra6m3-hmi-board/ra/fsp/src/bsp/mcu/all/bsp_group_irq.c @@ -0,0 +1,121 @@ +/*********************************************************************************************************************** + * Copyright [2020-2021] 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) +{ + uint16_t nmisr = R_ICU->NMISR; + + /* Loop over all NMI status flags */ + for (bsp_grp_irq_t irq = BSP_GRP_IRQ_IWDT_ERROR; irq <= BSP_GRP_IRQ_CACHE_PARITY; 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; +} + +/** @} (end addtogroup BSP_MCU) */ diff --git a/bsp/renesas/ra6m3-hmi-board/ra/fsp/src/bsp/mcu/all/bsp_group_irq.h b/bsp/renesas/ra6m3-hmi-board/ra/fsp/src/bsp/mcu/all/bsp_group_irq.h new file mode 100644 index 0000000000..3a62f1c7d1 --- /dev/null +++ b/bsp/renesas/ra6m3-hmi-board/ra/fsp/src/bsp/mcu/all/bsp_group_irq.h @@ -0,0 +1,79 @@ +/*********************************************************************************************************************** + * Copyright [2020-2021] 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 + **********************************************************************************************************************/ + +/** 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; + +/* 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/ra6m3-hmi-board/ra/fsp/src/bsp/mcu/all/bsp_guard.c b/bsp/renesas/ra6m3-hmi-board/ra/fsp/src/bsp/mcu/all/bsp_guard.c new file mode 100644 index 0000000000..07a0674e27 --- /dev/null +++ b/bsp/renesas/ra6m3-hmi-board/ra/fsp/src/bsp/mcu/all/bsp_guard.c @@ -0,0 +1,55 @@ +/*********************************************************************************************************************** + * Copyright [2020-2021] 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_TZ_CFG_CGFSAR != 0xFFFFFFFFU + +/*******************************************************************************************************************//** + * 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/ra6m3-hmi-board/ra/fsp/src/bsp/mcu/all/bsp_guard.h b/bsp/renesas/ra6m3-hmi-board/ra/fsp/src/bsp/mcu/all/bsp_guard.h new file mode 100644 index 0000000000..40d7c77ff0 --- /dev/null +++ b/bsp/renesas/ra6m3-hmi-board/ra/fsp/src/bsp/mcu/all/bsp_guard.h @@ -0,0 +1,46 @@ +/*********************************************************************************************************************** + * Copyright [2020-2021] 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/ra6m3-hmi-board/ra/fsp/src/bsp/mcu/all/bsp_io.c b/bsp/renesas/ra6m3-hmi-board/ra/fsp/src/bsp/mcu/all/bsp_io.c new file mode 100644 index 0000000000..ad0cbb7ac8 --- /dev/null +++ b/bsp/renesas/ra6m3-hmi-board/ra/fsp/src/bsp/mcu/all/bsp_io.c @@ -0,0 +1,41 @@ +/*********************************************************************************************************************** + * Copyright [2020-2021] 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/ra6m3-hmi-board/ra/fsp/src/bsp/mcu/all/bsp_io.h b/bsp/renesas/ra6m3-hmi-board/ra/fsp/src/bsp/mcu/all/bsp_io.h new file mode 100644 index 0000000000..22b7f692b2 --- /dev/null +++ b/bsp/renesas/ra6m3-hmi-board/ra/fsp/src/bsp/mcu/all/bsp_io.h @@ -0,0 +1,470 @@ +/*********************************************************************************************************************** + * Copyright [2020-2021] 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 + 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 + 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/ra6m3-hmi-board/ra/fsp/src/bsp/mcu/all/bsp_irq.c b/bsp/renesas/ra6m3-hmi-board/ra/fsp/src/bsp/mcu/all/bsp_irq.c new file mode 100644 index 0000000000..212ab48507 --- /dev/null +++ b/bsp/renesas/ra6m3-hmi-board/ra/fsp/src/bsp/mcu/all/bsp_irq.c @@ -0,0 +1,112 @@ +/*********************************************************************************************************************** + * Copyright [2020-2021] 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 + + /* Unprotect security registers. */ + R_BSP_RegisterProtectDisable(BSP_REG_PROTECT_SAR); + + #if !BSP_TZ_SECURE_BUILD + + /* Set the DMAC channels to secure access. */ + R_CPSCU->ICUSARC = ~R_CPSCU_ICUSARC_SADMACn_Msk; + #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 + + for (uint32_t i = 0U; i < BSP_ICU_VECTOR_MAX_ENTRIES; i++) + { + R_ICU->IELSR[i] = (uint32_t) g_interrupt_event_link_select[i]; + } +} diff --git a/bsp/renesas/ra6m3-hmi-board/ra/fsp/src/bsp/mcu/all/bsp_irq.h b/bsp/renesas/ra6m3-hmi-board/ra/fsp/src/bsp/mcu/all/bsp_irq.h new file mode 100644 index 0000000000..7fe448a7dd --- /dev/null +++ b/bsp/renesas/ra6m3-hmi-board/ra/fsp/src/bsp/mcu/all/bsp_irq.h @@ -0,0 +1,219 @@ +/*********************************************************************************************************************** + * Copyright [2020-2021] 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; +} + +/*******************************************************************************************************************//** + * 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); + + /* 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; + NVIC->ISER[(((uint32_t) irq) >> 5UL)] = (uint32_t) (1UL << (_irq & 0x1FUL)); +} + +/*******************************************************************************************************************//** + * 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/ra6m3-hmi-board/ra/fsp/src/bsp/mcu/all/bsp_mcu_api.h b/bsp/renesas/ra6m3-hmi-board/ra/fsp/src/bsp/mcu/all/bsp_mcu_api.h new file mode 100644 index 0000000000..594796c0b1 --- /dev/null +++ b/bsp/renesas/ra6m3-hmi-board/ra/fsp/src/bsp/mcu/all/bsp_mcu_api.h @@ -0,0 +1,68 @@ +/*********************************************************************************************************************** + * Copyright [2020-2021] 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/ra6m3-hmi-board/ra/fsp/src/bsp/mcu/all/bsp_module_stop.h b/bsp/renesas/ra6m3-hmi-board/ra/fsp/src/bsp/mcu/all/bsp_module_stop.h new file mode 100644 index 0000000000..10b26dfcba --- /dev/null +++ b/bsp/renesas/ra6m3-hmi-board/ra/fsp/src/bsp/mcu/all/bsp_module_stop.h @@ -0,0 +1,190 @@ +/*********************************************************************************************************************** + * Copyright [2020-2021] 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 + +/*******************************************************************************************************************//** + * @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. + **********************************************************************************************************************/ +#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); \ + BSP_MSTP_REG_ ## ip(channel); \ + FSP_CRITICAL_SECTION_EXIT;} + +/*******************************************************************************************************************//** + * 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. + **********************************************************************************************************************/ +#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); \ + BSP_MSTP_REG_ ## ip(channel); \ + FSP_CRITICAL_SECTION_EXIT;} + +/** @} (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)); + #define BSP_MSTP_REG_FSP_IP_AGT(channel) R_MSTP->MSTPCRD + #define BSP_MSTP_BIT_FSP_IP_AGT(channel) (1U << (3U - channel)); + #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) + #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)); + #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)); + #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_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_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_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)); +#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)); + +/** 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/ra6m3-hmi-board/ra/fsp/src/bsp/mcu/all/bsp_register_protection.c b/bsp/renesas/ra6m3-hmi-board/ra/fsp/src/bsp/mcu/all/bsp_register_protection.c new file mode 100644 index 0000000000..efab908a77 --- /dev/null +++ b/bsp/renesas/ra6m3-hmi-board/ra/fsp/src/bsp/mcu/all/bsp_register_protection.c @@ -0,0 +1,125 @@ +/*********************************************************************************************************************** + * Copyright [2020-2021] 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. */ + R_SYSTEM->PRCR = ((R_SYSTEM->PRCR | BSP_PRV_PRCR_KEY) & (uint16_t) (~g_prcr_masks[regs_to_protect])); + } + + /** 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. */ + R_SYSTEM->PRCR = ((R_SYSTEM->PRCR | BSP_PRV_PRCR_KEY) | g_prcr_masks[regs_to_unprotect]); + } + + /** 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/ra6m3-hmi-board/ra/fsp/src/bsp/mcu/all/bsp_register_protection.h b/bsp/renesas/ra6m3-hmi-board/ra/fsp/src/bsp/mcu/all/bsp_register_protection.h new file mode 100644 index 0000000000..6c9c89c6aa --- /dev/null +++ b/bsp/renesas/ra6m3-hmi-board/ra/fsp/src/bsp/mcu/all/bsp_register_protection.h @@ -0,0 +1,74 @@ +/*********************************************************************************************************************** + * Copyright [2020-2021] 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/ra6m3-hmi-board/ra/fsp/src/bsp/mcu/all/bsp_rom_registers.c b/bsp/renesas/ra6m3-hmi-board/ra/fsp/src/bsp/mcu/all/bsp_rom_registers.c new file mode 100644 index 0000000000..1df5ccbec0 --- /dev/null +++ b/bsp/renesas/ra6m3-hmi-board/ra/fsp/src/bsp/mcu/all/bsp_rom_registers.c @@ -0,0 +1,176 @@ +/*********************************************************************************************************************** + * Copyright [2020-2021] 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 33U != __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 +}; + +/** 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 +}; + + #else /* CM33 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_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; +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_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; + + #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; +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_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_ofs1_sel") g_bsp_rom_ofs1_sel = + BSP_CFG_ROM_REG_OFS1_SEL; +BSP_DONT_REMOVE static const uint32_t BSP_PLACE_IN_SECTION(".option_setting_banksel_sel") g_bsp_rom_banksel_sel = + 0xFFFFFFFF; +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; + + #endif + + #endif + +#endif + +/** @} (end addtogroup BSP_MCU) */ diff --git a/bsp/renesas/ra6m3-hmi-board/ra/fsp/src/bsp/mcu/all/bsp_sbrk.c b/bsp/renesas/ra6m3-hmi-board/ra/fsp/src/bsp/mcu/all/bsp_sbrk.c new file mode 100644 index 0000000000..fa4e782503 --- /dev/null +++ b/bsp/renesas/ra6m3-hmi-board/ra/fsp/src/bsp/mcu/all/bsp_sbrk.c @@ -0,0 +1,106 @@ +/*********************************************************************************************************************** + * Copyright [2020-2021] 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/ra6m3-hmi-board/ra/fsp/src/bsp/mcu/all/bsp_security.c b/bsp/renesas/ra6m3-hmi-board/ra/fsp/src/bsp/mcu/all/bsp_security.c new file mode 100644 index 0000000000..62d9fe81f6 --- /dev/null +++ b/bsp/renesas/ra6m3-hmi-board/ra/fsp/src/bsp/mcu/all/bsp_security.c @@ -0,0 +1,336 @@ +/*********************************************************************************************************************** + * Copyright [2020-2021] 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) + +/*********************************************************************************************************************** + * 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_nsc_start" + #pragma section=".tz_flash_ns_start" + #pragma section=".tz_ram_nsc_start" + #pragma section=".tz_ram_ns_start" + #pragma section=".tz_data_flash_ns_start" + #pragma section=".tz_sdram_ns_start" + #pragma section=".tz_qspi_flash_ns_start" + #pragma section=".tz_ospi_device_0_ns_start" + #pragma section=".tz_ospi_device_1_ns_start" + +/* &__tz__C is the address of the non-secure callable section. Must assign value to this variable or + * linker will give error. */ + +/* &__tz__N is the start address of the non-secure region. */ +BSP_DONT_REMOVE void const * const __tz_FLASH_C BSP_ALIGN_VARIABLE(1024) @".tz_flash_nsc_start" = 0; +BSP_DONT_REMOVE void const * const __tz_FLASH_N BSP_ALIGN_VARIABLE(32768) @".tz_flash_ns_start" = 0; +BSP_DONT_REMOVE void * __tz_RAM_C BSP_ALIGN_VARIABLE(1024) @".tz_ram_nsc_start"; +BSP_DONT_REMOVE void * __tz_RAM_N BSP_ALIGN_VARIABLE(8192) @".tz_ram_ns_start"; +BSP_DONT_REMOVE void * __tz_DATA_FLASH_N BSP_ALIGN_VARIABLE(1024) @".tz_data_flash_ns_start"; + + #if BSP_FEATURE_SDRAM_START_ADDRESS +BSP_DONT_REMOVE void * __tz_SDRAM_N @".tz_sdram_ns_start"; + #endif +BSP_DONT_REMOVE void * __tz_QSPI_FLASH_N @".tz_qspi_flash_ns_start"; + #if BSP_FEATURE_OSPI_DEVICE_0_START_ADDRESS +BSP_DONT_REMOVE void * __tz_OSPI_DEVICE_0_N @".tz_ospi_device_0_ns_start"; + #endif + #if BSP_FEATURE_OSPI_DEVICE_1_START_ADDRESS +BSP_DONT_REMOVE void * __tz_OSPI_DEVICE_1_N @".tz_ospi_device_1_ns_start"; + #endif + +BSP_DONT_REMOVE uint32_t const * const gp_start_of_nonsecure_flash = (uint32_t *) &__tz_FLASH_N; + #elif defined(__ARMCC_VERSION) +extern const uint32_t Image$$__tz_FLASH_N$$Base; +extern const uint32_t Image$$__tz_FLASH_C$$Base; +extern const uint32_t Image$$__tz_FLASH_S$$Base; +extern const uint32_t Image$$__tz_RAM_N$$Base; +extern const uint32_t Image$$__tz_RAM_C$$Base; +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; + + #define __tz_FLASH_N Image$$__tz_FLASH_N$$Base + #define __tz_FLASH_C Image$$__tz_FLASH_C$$Base + #define __tz_FLASH_S Image$$__tz_FLASH_S$$Base + #define __tz_RAM_N Image$$__tz_RAM_N$$Base + #define __tz_RAM_C Image$$__tz_RAM_C$$Base + #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. */ +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__) +extern const uint32_t FLASH_NS_IMAGE_START; +BSP_DONT_REMOVE uint32_t const * const gp_start_of_nonsecure_flash = &FLASH_NS_IMAGE_START; + #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 = gp_start_of_nonsecure_flash; + + /* 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); + + /* 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) +{ + /* 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; + + /* 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 + + /* Disable PRCR for SARs. */ + R_BSP_RegisterProtectDisable(BSP_REG_PROTECT_SAR); + + /* Set TrustZone filter to Secure. */ + R_TZF->TZFSAR = ~R_TZF_TZFSAR_TZFSA0_Msk; + + /* 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. */ + R_CPSCU->CSAR = BSP_TZ_CFG_CSAR; /* Cache Security Attribution. */ + 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_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. */ + R_CPSCU->ICUSARC = BSP_TZ_CFG_ICUSARC; /* DMAC Channel Security Attribution. */ + R_CPSCU->ICUSARD = BSP_TZ_CFG_ICUSARD; /* SELSR0 Security Attribution. */ + 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 + R_FCACHE->FSAR = BSP_TZ_CFG_FSAR; /* FLWT and FCKMHZ Security Attribution. */ + R_CPSCU->SRAMSAR = BSP_TZ_CFG_SRAMSAR; /* SRAM Security Attribution. */ + R_CPSCU->STBRAMSAR = BSP_TZ_CFG_STBRAMSAR; /* Standby RAM Security Attribution. */ + 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 BSP_TZ_CFG_ICUSARC != UINT32_MAX + R_BSP_MODULE_START(FSP_IP_DMAC, 0); + + /* 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. */ + + /* Ensure that DMAST is set so that the nonsecure program can use DMA. */ + R_DMA->DMAST = 1U; + #endif + + #if BSP_TZ_CFG_DTC_USED + R_BSP_MODULE_START(FSP_IP_DTC, 0); + + /* 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; + + /* Ensure that DTCST is set so that the nonsecure program can use DTC. */ + R_DTC->DTCST = 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/ra6m3-hmi-board/ra/fsp/src/bsp/mcu/all/bsp_security.h b/bsp/renesas/ra6m3-hmi-board/ra/fsp/src/bsp/mcu/all/bsp_security.h new file mode 100644 index 0000000000..0bd1a0eee5 --- /dev/null +++ b/bsp/renesas/ra6m3-hmi-board/ra/fsp/src/bsp/mcu/all/bsp_security.h @@ -0,0 +1,47 @@ +/*********************************************************************************************************************** + * Copyright [2020-2021] 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/ra6m3-hmi-board/ra/fsp/src/bsp/mcu/all/bsp_tfu.h b/bsp/renesas/ra6m3-hmi-board/ra/fsp/src/bsp/mcu/all/bsp_tfu.h new file mode 100644 index 0000000000..2f3e203352 --- /dev/null +++ b/bsp/renesas/ra6m3-hmi-board/ra/fsp/src/bsp/mcu/all/bsp_tfu.h @@ -0,0 +1,228 @@ +/*********************************************************************************************************************** + * Copyright [2020-2021] 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 + * @{ + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * 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) + **********************************************************************************************************************/ + +/** @} (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/ra6m3-hmi-board/ra/fsp/src/bsp/mcu/ra6m3/bsp_elc.h b/bsp/renesas/ra6m3-hmi-board/ra/fsp/src/bsp/mcu/ra6m3/bsp_elc.h new file mode 100644 index 0000000000..c56466c516 --- /dev/null +++ b/bsp/renesas/ra6m3-hmi-board/ra/fsp/src/bsp/mcu/ra6m3/bsp_elc.h @@ -0,0 +1,410 @@ +/*********************************************************************************************************************** + * Copyright [2020-2021] 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_RA6M3 + * @{ + **********************************************************************************************************************/ + +/** 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_ra6m3 +{ + ELC_EVENT_NONE = (0), // Link disabled + ELC_EVENT_ICU_IRQ0 = (1), // External pin interrupt 0 + ELC_EVENT_ICU_IRQ1 = (2), // External pin interrupt 1 + ELC_EVENT_ICU_IRQ2 = (3), // External pin interrupt 2 + ELC_EVENT_ICU_IRQ3 = (4), // External pin interrupt 3 + ELC_EVENT_ICU_IRQ4 = (5), // External pin interrupt 4 + ELC_EVENT_ICU_IRQ5 = (6), // External pin interrupt 5 + ELC_EVENT_ICU_IRQ6 = (7), // External pin interrupt 6 + ELC_EVENT_ICU_IRQ7 = (8), // External pin interrupt 7 + ELC_EVENT_ICU_IRQ8 = (9), // External pin interrupt 8 + ELC_EVENT_ICU_IRQ9 = (10), // External pin interrupt 9 + ELC_EVENT_ICU_IRQ10 = (11), // External pin interrupt 10 + ELC_EVENT_ICU_IRQ11 = (12), // External pin interrupt 11 + ELC_EVENT_ICU_IRQ12 = (13), // External pin interrupt 12 + ELC_EVENT_ICU_IRQ13 = (14), // External pin interrupt 13 + ELC_EVENT_ICU_IRQ14 = (15), // External pin interrupt 14 + ELC_EVENT_ICU_IRQ15 = (16), // External pin interrupt 15 + ELC_EVENT_DMAC0_INT = (32), // DMAC transfer end 0 + ELC_EVENT_DMAC1_INT = (33), // DMAC transfer end 1 + ELC_EVENT_DMAC2_INT = (34), // DMAC transfer end 2 + ELC_EVENT_DMAC3_INT = (35), // DMAC transfer end 3 + ELC_EVENT_DMAC4_INT = (36), // DMAC transfer end 4 + ELC_EVENT_DMAC5_INT = (37), // DMAC transfer end 5 + ELC_EVENT_DMAC6_INT = (38), // DMAC transfer end 6 + ELC_EVENT_DMAC7_INT = (39), // DMAC transfer end 7 + ELC_EVENT_DTC_COMPLETE = (41), // DTC last transfer + ELC_EVENT_DTC_END = (42), // DTC transfer end + ELC_EVENT_ICU_SNOOZE_CANCEL = (45), // Canceling from Snooze mode + ELC_EVENT_FCU_FIFERR = (48), // Flash access error interrupt + ELC_EVENT_FCU_FRDYI = (49), // Flash ready interrupt + ELC_EVENT_LVD_LVD1 = (56), // Voltage monitor 1 interrupt + ELC_EVENT_LVD_LVD2 = (57), // Voltage monitor 2 interrupt + ELC_EVENT_CGC_MOSC_STOP = (59), // Main Clock oscillation stop + ELC_EVENT_LPM_SNOOZE_REQUEST = (60), // Snooze entry + ELC_EVENT_AGT0_INT = (64), // AGT interrupt + ELC_EVENT_AGT0_COMPARE_A = (65), // Compare match A + ELC_EVENT_AGT0_COMPARE_B = (66), // Compare match B + ELC_EVENT_AGT1_INT = (67), // AGT interrupt + ELC_EVENT_AGT1_COMPARE_A = (68), // Compare match A + ELC_EVENT_AGT1_COMPARE_B = (69), // Compare match B + ELC_EVENT_IWDT_UNDERFLOW = (70), // IWDT underflow + ELC_EVENT_WDT_UNDERFLOW = (71), // WDT underflow + ELC_EVENT_RTC_ALARM = (72), // Alarm interrupt + ELC_EVENT_RTC_PERIOD = (73), // Periodic interrupt + ELC_EVENT_RTC_CARRY = (74), // Carry interrupt + ELC_EVENT_ADC0_SCAN_END = (75), // A/D scan end interrupt + ELC_EVENT_ADC0_SCAN_END_B = (76), // A/D scan end interrupt for group B + ELC_EVENT_ADC0_WINDOW_A = (77), // Window A Compare match + ELC_EVENT_ADC0_WINDOW_B = (78), // Window B Compare match + ELC_EVENT_ADC0_COMPARE_MATCH = (79), // Compare match + ELC_EVENT_ADC0_COMPARE_MISMATCH = (80), // Compare mismatch + ELC_EVENT_ADC1_SCAN_END = (81), // A/D scan end interrupt + ELC_EVENT_ADC1_SCAN_END_B = (82), // A/D scan end interrupt for group B + ELC_EVENT_ADC1_WINDOW_A = (83), // Window A Compare match + ELC_EVENT_ADC1_WINDOW_B = (84), // Window B Compare match + ELC_EVENT_ADC1_COMPARE_MATCH = (85), // Compare match + ELC_EVENT_ADC1_COMPARE_MISMATCH = (86), // Compare mismatch + ELC_EVENT_ACMPHS0_INT = (87), // Comparator interrupt 0 + ELC_EVENT_ACMPHS1_INT = (88), // Comparator interrupt 1 + ELC_EVENT_ACMPHS2_INT = (89), // Comparator interrupt 2 + ELC_EVENT_ACMPHS3_INT = (90), // Comparator interrupt 3 + ELC_EVENT_ACMPHS4_INT = (91), // Comparator interrupt 4 + ELC_EVENT_ACMPHS5_INT = (92), // Comparator interrupt 5 + ELC_EVENT_USBFS_FIFO_0 = (95), // DMA transfer request 0 + ELC_EVENT_USBFS_FIFO_1 = (96), // DMA transfer request 1 + ELC_EVENT_USBFS_INT = (97), // USBFS interrupt + ELC_EVENT_USBFS_RESUME = (98), // USBFS resume interrupt + ELC_EVENT_IIC0_RXI = (99), // Receive data full + ELC_EVENT_IIC0_TXI = (100), // Transmit data empty + ELC_EVENT_IIC0_TEI = (101), // Transmit end + ELC_EVENT_IIC0_ERI = (102), // Transfer error + ELC_EVENT_IIC0_WUI = (103), // Slave address match + ELC_EVENT_IIC1_RXI = (104), // Receive data full + ELC_EVENT_IIC1_TXI = (105), // Transmit data empty + ELC_EVENT_IIC1_TEI = (106), // Transmit end + ELC_EVENT_IIC1_ERI = (107), // Transfer error + ELC_EVENT_IIC2_RXI = (109), // Receive data full + ELC_EVENT_IIC2_TXI = (110), // Transmit data empty + ELC_EVENT_IIC2_TEI = (111), // Transmit end + ELC_EVENT_IIC2_ERI = (112), // Transfer error + ELC_EVENT_SSI0_TXI = (114), // Transmit data empty + ELC_EVENT_SSI0_RXI = (115), // Receive data full + ELC_EVENT_SSI0_INT = (117), // Error interrupt + ELC_EVENT_SSI1_TXI_RXI = (120), // Receive data full/Transmit data empty + ELC_EVENT_SSI1_INT = (121), // Error interrupt + ELC_EVENT_SRC_INPUT_FIFO_EMPTY = (122), // Input FIFO empty + ELC_EVENT_SRC_OUTPUT_FIFO_FULL = (123), // Output FIFO full + ELC_EVENT_SRC_OUTPUT_FIFO_OVERFLOW = (124), // Output FIFO overflow + ELC_EVENT_SRC_OUTPUT_FIFO_UNDERFLOW = (125), // Output FIFO underflow + ELC_EVENT_SRC_CONVERSION_END = (126), // Conversion end + ELC_EVENT_PDC_RECEIVE_DATA_READY = (127), // Receive data ready interrupt + ELC_EVENT_PDC_FRAME_END = (128), // Frame end interrupt + ELC_EVENT_PDC_INT = (129), // Error interrupt + ELC_EVENT_CTSU_WRITE = (130), // Write request interrupt + ELC_EVENT_CTSU_READ = (131), // Measurement data transfer request interrupt + ELC_EVENT_CTSU_END = (132), // Measurement end interrupt + ELC_EVENT_KEY_INT = (133), // Key interrupt + ELC_EVENT_DOC_INT = (134), // Data operation circuit interrupt + ELC_EVENT_CAC_FREQUENCY_ERROR = (135), // Frequency error interrupt + ELC_EVENT_CAC_MEASUREMENT_END = (136), // Measurement end interrupt + ELC_EVENT_CAC_OVERFLOW = (137), // Overflow interrupt + ELC_EVENT_CAN0_ERROR = (138), // Error interrupt + ELC_EVENT_CAN0_FIFO_RX = (139), // Receive FIFO interrupt + ELC_EVENT_CAN0_FIFO_TX = (140), // Transmit FIFO interrupt + ELC_EVENT_CAN0_MAILBOX_RX = (141), // Reception complete interrupt + ELC_EVENT_CAN0_MAILBOX_TX = (142), // Transmission complete interrupt + ELC_EVENT_CAN1_ERROR = (143), // Error interrupt + ELC_EVENT_CAN1_FIFO_RX = (144), // Receive FIFO interrupt + ELC_EVENT_CAN1_FIFO_TX = (145), // Transmit FIFO interrupt + ELC_EVENT_CAN1_MAILBOX_RX = (146), // Reception complete interrupt + ELC_EVENT_CAN1_MAILBOX_TX = (147), // Transmission complete interrupt + ELC_EVENT_IOPORT_EVENT_1 = (148), // Port 1 event + ELC_EVENT_IOPORT_EVENT_2 = (149), // Port 2 event + ELC_EVENT_IOPORT_EVENT_3 = (150), // Port 3 event + ELC_EVENT_IOPORT_EVENT_4 = (151), // Port 4 event + ELC_EVENT_ELC_SOFTWARE_EVENT_0 = (152), // Software event 0 + ELC_EVENT_ELC_SOFTWARE_EVENT_1 = (153), // Software event 1 + ELC_EVENT_POEG0_EVENT = (154), // Port Output disable interrupt A + ELC_EVENT_POEG1_EVENT = (155), // Port Output disable interrupt B + ELC_EVENT_POEG2_EVENT = (156), // Port Output disable interrupt C + ELC_EVENT_POEG3_EVENT = (157), // Port Output disable interrupt D + ELC_EVENT_GPT0_CAPTURE_COMPARE_A = (176), // Compare match A + ELC_EVENT_GPT0_CAPTURE_COMPARE_B = (177), // Compare match B + ELC_EVENT_GPT0_COMPARE_C = (178), // Compare match C + ELC_EVENT_GPT0_COMPARE_D = (179), // Compare match D + ELC_EVENT_GPT0_COMPARE_E = (180), // Compare match E + ELC_EVENT_GPT0_COMPARE_F = (181), // Compare match F + ELC_EVENT_GPT0_COUNTER_OVERFLOW = (182), // Overflow + ELC_EVENT_GPT0_COUNTER_UNDERFLOW = (183), // Underflow + ELC_EVENT_GPT0_AD_TRIG_A = (184), // A/D converter start request A + ELC_EVENT_GPT0_AD_TRIG_B = (185), // A/D converter start request B + ELC_EVENT_GPT1_CAPTURE_COMPARE_A = (186), // Compare match A + ELC_EVENT_GPT1_CAPTURE_COMPARE_B = (187), // Compare match B + ELC_EVENT_GPT1_COMPARE_C = (188), // Compare match C + ELC_EVENT_GPT1_COMPARE_D = (189), // Compare match D + ELC_EVENT_GPT1_COMPARE_E = (190), // Compare match E + ELC_EVENT_GPT1_COMPARE_F = (191), // Compare match F + ELC_EVENT_GPT1_COUNTER_OVERFLOW = (192), // Overflow + ELC_EVENT_GPT1_COUNTER_UNDERFLOW = (193), // Underflow + ELC_EVENT_GPT1_AD_TRIG_A = (194), // A/D converter start request A + ELC_EVENT_GPT1_AD_TRIG_B = (195), // A/D converter start request B + ELC_EVENT_GPT2_CAPTURE_COMPARE_A = (196), // Compare match A + ELC_EVENT_GPT2_CAPTURE_COMPARE_B = (197), // Compare match B + ELC_EVENT_GPT2_COMPARE_C = (198), // Compare match C + ELC_EVENT_GPT2_COMPARE_D = (199), // Compare match D + ELC_EVENT_GPT2_COMPARE_E = (200), // Compare match E + ELC_EVENT_GPT2_COMPARE_F = (201), // Compare match F + ELC_EVENT_GPT2_COUNTER_OVERFLOW = (202), // Overflow + ELC_EVENT_GPT2_COUNTER_UNDERFLOW = (203), // Underflow + ELC_EVENT_GPT2_AD_TRIG_A = (204), // A/D converter start request A + ELC_EVENT_GPT2_AD_TRIG_B = (205), // A/D converter start request B + ELC_EVENT_GPT3_CAPTURE_COMPARE_A = (206), // Compare match A + ELC_EVENT_GPT3_CAPTURE_COMPARE_B = (207), // Compare match B + ELC_EVENT_GPT3_COMPARE_C = (208), // Compare match C + ELC_EVENT_GPT3_COMPARE_D = (209), // Compare match D + ELC_EVENT_GPT3_COMPARE_E = (210), // Compare match E + ELC_EVENT_GPT3_COMPARE_F = (211), // Compare match F + ELC_EVENT_GPT3_COUNTER_OVERFLOW = (212), // Overflow + ELC_EVENT_GPT3_COUNTER_UNDERFLOW = (213), // Underflow + ELC_EVENT_GPT3_AD_TRIG_A = (214), // A/D converter start request A + ELC_EVENT_GPT3_AD_TRIG_B = (215), // A/D converter start request B + ELC_EVENT_GPT4_CAPTURE_COMPARE_A = (216), // Compare match A + ELC_EVENT_GPT4_CAPTURE_COMPARE_B = (217), // Compare match B + ELC_EVENT_GPT4_COMPARE_C = (218), // Compare match C + ELC_EVENT_GPT4_COMPARE_D = (219), // Compare match D + ELC_EVENT_GPT4_COMPARE_E = (220), // Compare match E + ELC_EVENT_GPT4_COMPARE_F = (221), // Compare match F + ELC_EVENT_GPT4_COUNTER_OVERFLOW = (222), // Overflow + ELC_EVENT_GPT4_COUNTER_UNDERFLOW = (223), // Underflow + ELC_EVENT_GPT4_AD_TRIG_A = (224), // A/D converter start request A + ELC_EVENT_GPT4_AD_TRIG_B = (225), // A/D converter start request B + ELC_EVENT_GPT5_CAPTURE_COMPARE_A = (226), // Compare match A + ELC_EVENT_GPT5_CAPTURE_COMPARE_B = (227), // Compare match B + ELC_EVENT_GPT5_COMPARE_C = (228), // Compare match C + ELC_EVENT_GPT5_COMPARE_D = (229), // Compare match D + ELC_EVENT_GPT5_COMPARE_E = (230), // Compare match E + ELC_EVENT_GPT5_COMPARE_F = (231), // Compare match F + ELC_EVENT_GPT5_COUNTER_OVERFLOW = (232), // Overflow + ELC_EVENT_GPT5_COUNTER_UNDERFLOW = (233), // Underflow + ELC_EVENT_GPT5_AD_TRIG_A = (234), // A/D converter start request A + ELC_EVENT_GPT5_AD_TRIG_B = (235), // A/D converter start request B + ELC_EVENT_GPT6_CAPTURE_COMPARE_A = (236), // Compare match A + ELC_EVENT_GPT6_CAPTURE_COMPARE_B = (237), // Compare match B + ELC_EVENT_GPT6_COMPARE_C = (238), // Compare match C + ELC_EVENT_GPT6_COMPARE_D = (239), // Compare match D + ELC_EVENT_GPT6_COMPARE_E = (240), // Compare match E + ELC_EVENT_GPT6_COMPARE_F = (241), // Compare match F + ELC_EVENT_GPT6_COUNTER_OVERFLOW = (242), // Overflow + ELC_EVENT_GPT6_COUNTER_UNDERFLOW = (243), // Underflow + ELC_EVENT_GPT6_AD_TRIG_A = (244), // A/D converter start request A + ELC_EVENT_GPT6_AD_TRIG_B = (245), // A/D converter start request B + ELC_EVENT_GPT7_CAPTURE_COMPARE_A = (246), // Compare match A + ELC_EVENT_GPT7_CAPTURE_COMPARE_B = (247), // Compare match B + ELC_EVENT_GPT7_COMPARE_C = (248), // Compare match C + ELC_EVENT_GPT7_COMPARE_D = (249), // Compare match D + ELC_EVENT_GPT7_COMPARE_E = (250), // Compare match E + ELC_EVENT_GPT7_COMPARE_F = (251), // Compare match F + ELC_EVENT_GPT7_COUNTER_OVERFLOW = (252), // Overflow + ELC_EVENT_GPT7_COUNTER_UNDERFLOW = (253), // Underflow + ELC_EVENT_GPT7_AD_TRIG_A = (254), // A/D converter start request A + ELC_EVENT_GPT7_AD_TRIG_B = (255), // A/D converter start request B + ELC_EVENT_GPT8_CAPTURE_COMPARE_A = (256), // Compare match A + ELC_EVENT_GPT8_CAPTURE_COMPARE_B = (257), // Compare match B + ELC_EVENT_GPT8_COMPARE_C = (258), // Compare match C + ELC_EVENT_GPT8_COMPARE_D = (259), // Compare match D + ELC_EVENT_GPT8_COMPARE_E = (260), // Compare match E + ELC_EVENT_GPT8_COMPARE_F = (261), // Compare match F + ELC_EVENT_GPT8_COUNTER_OVERFLOW = (262), // Overflow + ELC_EVENT_GPT8_COUNTER_UNDERFLOW = (263), // Underflow + ELC_EVENT_GPT9_CAPTURE_COMPARE_A = (266), // Compare match A + ELC_EVENT_GPT9_CAPTURE_COMPARE_B = (267), // Compare match B + ELC_EVENT_GPT9_COMPARE_C = (268), // Compare match C + ELC_EVENT_GPT9_COMPARE_D = (269), // Compare match D + ELC_EVENT_GPT9_COMPARE_E = (270), // Compare match E + ELC_EVENT_GPT9_COMPARE_F = (271), // Compare match F + ELC_EVENT_GPT9_COUNTER_OVERFLOW = (272), // Overflow + ELC_EVENT_GPT9_COUNTER_UNDERFLOW = (273), // Underflow + ELC_EVENT_GPT10_CAPTURE_COMPARE_A = (276), // Compare match A + ELC_EVENT_GPT10_CAPTURE_COMPARE_B = (277), // Compare match B + ELC_EVENT_GPT10_COMPARE_C = (278), // Compare match C + ELC_EVENT_GPT10_COMPARE_D = (279), // Compare match D + ELC_EVENT_GPT10_COMPARE_E = (280), // Compare match E + ELC_EVENT_GPT10_COMPARE_F = (281), // Compare match F + ELC_EVENT_GPT10_COUNTER_OVERFLOW = (282), // Overflow + ELC_EVENT_GPT10_COUNTER_UNDERFLOW = (283), // Underflow + ELC_EVENT_GPT11_CAPTURE_COMPARE_A = (286), // Compare match A + ELC_EVENT_GPT11_CAPTURE_COMPARE_B = (287), // Compare match B + ELC_EVENT_GPT11_COMPARE_C = (288), // Compare match C + ELC_EVENT_GPT11_COMPARE_D = (289), // Compare match D + ELC_EVENT_GPT11_COMPARE_E = (290), // Compare match E + ELC_EVENT_GPT11_COMPARE_F = (291), // Compare match F + ELC_EVENT_GPT11_COUNTER_OVERFLOW = (292), // Overflow + ELC_EVENT_GPT11_COUNTER_UNDERFLOW = (293), // Underflow + ELC_EVENT_GPT12_CAPTURE_COMPARE_A = (296), // Compare match A + ELC_EVENT_GPT12_CAPTURE_COMPARE_B = (297), // Compare match B + ELC_EVENT_GPT12_COMPARE_C = (298), // Compare match C + ELC_EVENT_GPT12_COMPARE_D = (299), // Compare match D + ELC_EVENT_GPT12_COMPARE_E = (300), // Compare match E + ELC_EVENT_GPT12_COMPARE_F = (301), // Compare match F + ELC_EVENT_GPT12_COUNTER_OVERFLOW = (302), // Overflow + ELC_EVENT_GPT12_COUNTER_UNDERFLOW = (303), // Underflow + ELC_EVENT_GPT13_CAPTURE_COMPARE_A = (306), // Compare match A + ELC_EVENT_GPT13_CAPTURE_COMPARE_B = (307), // Compare match B + ELC_EVENT_GPT13_COMPARE_C = (308), // Compare match C + ELC_EVENT_GPT13_COMPARE_D = (309), // Compare match D + ELC_EVENT_GPT13_COMPARE_E = (310), // Compare match E + ELC_EVENT_GPT13_COMPARE_F = (311), // Compare match F + ELC_EVENT_GPT13_COUNTER_OVERFLOW = (312), // Overflow + ELC_EVENT_GPT13_COUNTER_UNDERFLOW = (313), // Underflow + ELC_EVENT_OPS_UVW_EDGE = (336), // UVW edge event + ELC_EVENT_EPTPC_IPLS = (352), // STCA interrupt + ELC_EVENT_EPTPC_MINT = (353), // SYNFP0/1 interrupt + ELC_EVENT_EPTPC_PINT = (354), // PTPEDMAC interrupt + ELC_EVENT_EDMAC0_EINT = (355), // EDMAC 0 interrupt + ELC_EVENT_EPTPC_TIMER0_RISE = (357), // Pulse output timer 0 rising edge detection + ELC_EVENT_EPTPC_TIMER1_RISE = (358), // Pulse output timer 1 rising edge detection + ELC_EVENT_EPTPC_TIMER2_RISE = (359), // Pulse output timer 2 rising edge detection + ELC_EVENT_EPTPC_TIMER3_RISE = (360), // Pulse output timer 3 rising edge detection + ELC_EVENT_EPTPC_TIMER4_RISE = (361), // Pulse output timer 4 rising edge detection + ELC_EVENT_EPTPC_TIMER5_RISE = (362), // Pulse output timer 5 rising edge detection + ELC_EVENT_EPTPC_TIMER0_FALL = (363), // Pulse output timer 0 falling edge detection + ELC_EVENT_EPTPC_TIMER1_FALL = (364), // Pulse output timer 1 falling edge detection + ELC_EVENT_EPTPC_TIMER2_FALL = (365), // Pulse output timer 2 falling edge detection + ELC_EVENT_EPTPC_TIMER3_FALL = (366), // Pulse output timer 3 falling edge detection + ELC_EVENT_EPTPC_TIMER4_FALL = (367), // Pulse output timer 4 falling edge detection + ELC_EVENT_EPTPC_TIMER5_FALL = (368), // Pulse output timer 5 falling edge detection + ELC_EVENT_USBHS_FIFO_0 = (369), // DMA transfer request 0 + ELC_EVENT_USBHS_FIFO_1 = (370), // DMA transfer request 1 + ELC_EVENT_USBHS_USB_INT_RESUME = (371), // USBHS interrupt + ELC_EVENT_SCI0_RXI = (372), // Receive data full + ELC_EVENT_SCI0_TXI = (373), // Transmit data empty + ELC_EVENT_SCI0_TEI = (374), // Transmit end + ELC_EVENT_SCI0_ERI = (375), // Receive error + ELC_EVENT_SCI0_AM = (376), // Address match event + ELC_EVENT_SCI0_RXI_OR_ERI = (377), // Receive data full/Receive + ELC_EVENT_SCI1_RXI = (378), // Received data full + ELC_EVENT_SCI1_TXI = (379), // Transmit data empty + ELC_EVENT_SCI1_TEI = (380), // Transmit end + ELC_EVENT_SCI1_ERI = (381), // Receive error + ELC_EVENT_SCI1_AM = (382), // Address match event + ELC_EVENT_SCI2_RXI = (384), // Received data full + ELC_EVENT_SCI2_TXI = (385), // Transmit data empty + ELC_EVENT_SCI2_TEI = (386), // Transmit end + ELC_EVENT_SCI2_ERI = (387), // Receive error + ELC_EVENT_SCI2_AM = (388), // Address match event + ELC_EVENT_SCI3_RXI = (390), // Received data full + ELC_EVENT_SCI3_TXI = (391), // Transmit data empty + ELC_EVENT_SCI3_TEI = (392), // Transmit end + ELC_EVENT_SCI3_ERI = (393), // Receive error + ELC_EVENT_SCI3_AM = (394), // Address match event + ELC_EVENT_SCI4_RXI = (396), // Received data full + ELC_EVENT_SCI4_TXI = (397), // Transmit data empty + ELC_EVENT_SCI4_TEI = (398), // Transmit end + ELC_EVENT_SCI4_ERI = (399), // Receive error + ELC_EVENT_SCI4_AM = (400), // Address match event + ELC_EVENT_SCI5_RXI = (402), // Received data full + ELC_EVENT_SCI5_TXI = (403), // Transmit data empty + ELC_EVENT_SCI5_TEI = (404), // Transmit end + ELC_EVENT_SCI5_ERI = (405), // Receive error + ELC_EVENT_SCI5_AM = (406), // Address match event + ELC_EVENT_SCI6_RXI = (408), // Received data full + ELC_EVENT_SCI6_TXI = (409), // Transmit data empty + ELC_EVENT_SCI6_TEI = (410), // Transmit end + ELC_EVENT_SCI6_ERI = (411), // Receive error + ELC_EVENT_SCI6_AM = (412), // Address match event + ELC_EVENT_SCI7_RXI = (414), // Received data full + ELC_EVENT_SCI7_TXI = (415), // Transmit data empty + ELC_EVENT_SCI7_TEI = (416), // Transmit end + ELC_EVENT_SCI7_ERI = (417), // Receive error + ELC_EVENT_SCI7_AM = (418), // Address match event + ELC_EVENT_SCI8_RXI = (420), // Received data full + ELC_EVENT_SCI8_TXI = (421), // Transmit data empty + ELC_EVENT_SCI8_TEI = (422), // Transmit end + ELC_EVENT_SCI8_ERI = (423), // Receive error + ELC_EVENT_SCI8_AM = (424), // Address match event + ELC_EVENT_SCI9_RXI = (426), // Received data full + ELC_EVENT_SCI9_TXI = (427), // Transmit data empty + ELC_EVENT_SCI9_TEI = (428), // Transmit end + ELC_EVENT_SCI9_ERI = (429), // Receive error + ELC_EVENT_SCI9_AM = (430), // Address match event + ELC_EVENT_SPI0_RXI = (444), // Receive buffer full + ELC_EVENT_SPI0_TXI = (445), // Transmit buffer empty + ELC_EVENT_SPI0_IDLE = (446), // Idle + ELC_EVENT_SPI0_ERI = (447), // Error + ELC_EVENT_SPI0_TEI = (448), // Transmission complete event + ELC_EVENT_SPI1_RXI = (449), // Receive buffer full + ELC_EVENT_SPI1_TXI = (450), // Transmit buffer empty + ELC_EVENT_SPI1_IDLE = (451), // Idle + ELC_EVENT_SPI1_ERI = (452), // Error + ELC_EVENT_SPI1_TEI = (453), // Transmission complete event + ELC_EVENT_QSPI_INT = (454), // Error + ELC_EVENT_SDHIMMC0_ACCS = (455), // Card access + ELC_EVENT_SDHIMMC0_SDIO = (456), // SDIO access + ELC_EVENT_SDHIMMC0_CARD = (457), // Card detect + ELC_EVENT_SDHIMMC0_DMA_REQ = (458), // DMA transfer request + ELC_EVENT_SDHIMMC1_ACCS = (459), // Card access + ELC_EVENT_SDHIMMC1_SDIO = (460), // SDIO access + ELC_EVENT_SDHIMMC1_CARD = (461), // Card detect + ELC_EVENT_SDHIMMC1_DMA_REQ = (462), // DMA transfer request + ELC_EVENT_SCE_PROC_BUSY = (481), + ELC_EVENT_SCE_ROMOK = (482), + ELC_EVENT_SCE_LONG_PLG = (483), + ELC_EVENT_SCE_TEST_BUSY = (484), + ELC_EVENT_SCE_WRRDY_0 = (485), + ELC_EVENT_SCE_WRRDY_1 = (486), + ELC_EVENT_SCE_WRRDY_4 = (487), + ELC_EVENT_SCE_RDRDY_0 = (488), + ELC_EVENT_SCE_RDRDY_1 = (489), + ELC_EVENT_SCE_INTEGRATE_WRRDY = (490), + ELC_EVENT_SCE_INTEGRATE_RDRDY = (491), + ELC_EVENT_GLCDC_LINE_DETECT = (506), // Specified line + ELC_EVENT_GLCDC_UNDERFLOW_1 = (507), // Graphic 1 underflow + ELC_EVENT_GLCDC_UNDERFLOW_2 = (508), // Graphic 2 underflow + ELC_EVENT_DRW_INT = (509), // DRW interrupt + ELC_EVENT_JPEG_JEDI = (510), // Compression/decompression process interrupt + ELC_EVENT_JPEG_JDTI = (511), // Data transfer interrupt +} elc_event_t; + +/** @} (end addtogroup BSP_MCU_RA6M3) */ + +#endif diff --git a/bsp/renesas/ra6m3-hmi-board/ra/fsp/src/bsp/mcu/ra6m3/bsp_feature.h b/bsp/renesas/ra6m3-hmi-board/ra/fsp/src/bsp/mcu/ra6m3/bsp_feature.h new file mode 100644 index 0000000000..aba321c4fe --- /dev/null +++ b/bsp/renesas/ra6m3-hmi-board/ra/fsp/src/bsp/mcu/ra6m3/bsp_feature.h @@ -0,0 +1,340 @@ +/*********************************************************************************************************************** + * Copyright [2020-2021] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This software and documentation are supplied by Renesas Electronics America Inc. and may only be used with products + * of Renesas Electronics Corp. and its affiliates ("Renesas"). No other uses are authorized. Renesas products are + * sold pursuant to Renesas terms and conditions of sale. Purchasers are solely responsible for the selection and use + * of Renesas products and Renesas assumes no liability. No license, express or implied, to any intellectual property + * right is granted by Renesas. This software is protected under all applicable laws, including copyright laws. Renesas + * reserves the right to change or discontinue this software and/or this documentation. THE SOFTWARE AND DOCUMENTATION + * IS DELIVERED TO YOU "AS IS," AND RENESAS MAKES NO REPRESENTATIONS OR WARRANTIES, AND TO THE FULLEST EXTENT + * PERMISSIBLE UNDER APPLICABLE LAW, DISCLAIMS ALL WARRANTIES, WHETHER EXPLICITLY OR IMPLICITLY, INCLUDING WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT, WITH RESPECT TO THE SOFTWARE OR + * DOCUMENTATION. RENESAS SHALL HAVE NO LIABILITY ARISING OUT OF ANY SECURITY VULNERABILITY OR BREACH. TO THE MAXIMUM + * EXTENT PERMITTED BY LAW, IN NO EVENT WILL RENESAS BE LIABLE TO YOU IN CONNECTION WITH THE SOFTWARE OR DOCUMENTATION + * (OR ANY PERSON OR ENTITY CLAIMING RIGHTS DERIVED FROM YOU) FOR ANY LOSS, DAMAGES, OR CLAIMS WHATSOEVER, INCLUDING, + * WITHOUT LIMITATION, ANY DIRECT, CONSEQUENTIAL, SPECIAL, INDIRECT, PUNITIVE, OR INCIDENTAL DAMAGES; ANY LOST PROFITS, + * OTHER ECONOMIC DAMAGE, PROPERTY DAMAGE, OR PERSONAL INJURY; AND EVEN IF RENESAS HAS BEEN ADVISED OF THE POSSIBILITY + * OF SUCH LOSS, DAMAGES, CLAIMS OR COSTS. + **********************************************************************************************************************/ + +#ifndef BSP_FEATURE_H +#define BSP_FEATURE_H + +/*********************************************************************************************************************** + * Includes , "Project Includes" + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Macro definitions + **********************************************************************************************************************/ + +/** The main oscillator drive value is based upon the oscillator frequency selected in the configuration */ +#if (BSP_CFG_XTAL_HZ > (19999999)) + #define CGC_MAINCLOCK_DRIVE (0x00U) +#elif (BSP_CFG_XTAL_HZ > (15999999)) && (BSP_CFG_XTAL_HZ < (20000000)) + #define CGC_MAINCLOCK_DRIVE (0x01U) +#elif (BSP_CFG_XTAL_HZ > (7999999)) && (BSP_CFG_XTAL_HZ < (16000000)) + #define CGC_MAINCLOCK_DRIVE (0x02U) +#else + #define CGC_MAINCLOCK_DRIVE (0x03U) +#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 (0) // Feature not available on this MCU +#define BSP_FEATURE_ACMPLP_MIN_WAIT_TIME_US (0) // Feature not available on this MCU + +#define BSP_FEATURE_ADC_ADDITION_SUPPORTED (1U) +#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_ADCER_ADPRC (1U) +#define BSP_FEATURE_ADC_HAS_ADCER_ADRFMT (1U) +#define BSP_FEATURE_ADC_HAS_ADHVREFCNT (0U) +#define BSP_FEATURE_BSP_HAS_CLOCK_SUPPLY_TYPEB (0U) +#define BSP_FEATURE_ADC_HAS_PGA (1U) +#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 (0x00000FFFU) +#define BSP_FEATURE_ADC_TSN_CALIBRATION_AVAILABLE (1U) +#define BSP_FEATURE_ADC_TSN_CONTROL_AVAILABLE (1U) +#define BSP_FEATURE_ADC_TSN_SLOPE (4000) +#define BSP_FEATURE_ADC_UNIT_0_CHANNELS (0x1F00FF) // 0 to 7, 16 to 20 in unit 0 and 0 to 3, 5 to 7, 16 to 19 in unit 1 +#define BSP_FEATURE_ADC_UNIT_1_CHANNELS (0xF00EF) +#define BSP_FEATURE_ADC_VALID_UNIT_MASK (3U) +#define BSP_FEATURE_ADC_HAS_ADBUF (0U) + +#define BSP_FEATURE_ADC_B_TSN_CALIBRATION32_MASK (0U) +#define BSP_FEATURE_ADC_B_TSN_SLOPE (0U) + +#define BSP_FEATURE_AGT_VALID_CHANNEL_MASK (0x03) +#define BSP_FEATURE_AGT_MAX_CHANNEL_NUM (1) +#define BSP_FEATURE_AGT_HAS_AGTW (0U) + +#define BSP_FEATURE_BSP_FLASH_CACHE (1) +#define BSP_FEATURE_BSP_FLASH_CACHE_DISABLE_OPM (1U) +#define BSP_FEATURE_BSP_FLASH_PREFETCH_BUFFER (0) +#define BSP_FEATURE_BSP_HAS_CODE_SYSTEM_CACHE (0) +#define BSP_FEATURE_BSP_HAS_GPT_CLOCK (0) +#define BSP_FEATURE_BSP_HAS_OCTASPI_CLOCK (0U) +#define BSP_FEATURE_BSP_HAS_CANFD_CLOCK (0) // Feature not available on this MCU +#define BSP_FEATURE_BSP_HAS_SCE5 (0) // Feature not available on this MCU +#define BSP_FEATURE_BSP_HAS_SCE_ON_RA2 (0) // Feature not available on this MCU +#define BSP_FEATURE_CRYPTO_HAS_CTR_DRBG (0) +#define BSP_FEATURE_BSP_HAS_SECURITY_MPU (1U) +#define BSP_FEATURE_BSP_HAS_SP_MON (1U) +#define BSP_FEATURE_BSP_HAS_USBCKDIVCR (0U) +#define BSP_FEATURE_BSP_HAS_USB_CLOCK_DIV (1U) +#define BSP_FEATURE_BSP_HAS_USB_CLOCK_REQ (0U) // On the RA6M4 there is a request bit that must be set before changing USB clock settings. +#define BSP_FEATURE_BSP_HAS_USB_CLOCK_SEL (0U) +#define BSP_FEATURE_BSP_HAS_USB_CLOCK_SEL_ALT (0U) +#define BSP_FEATURE_BSP_MCU_INFO_POINTER_LOCATION (0x407FB19C) +#define BSP_FEATURE_BSP_MPU_REGION0_MASK (0x00FFFFFFU) +#define BSP_FEATURE_BSP_MSTP_GPT_MSTPD5_MAX_CH (7U) // Largest channel number associated with lower MSTP bit for GPT on this MCU. +#define BSP_FEATURE_BSP_MSTP_HAS_MSTPCRE (0U) +#define BSP_FEATURE_BSP_OFS1_HOCOFRQ_MASK (0xFFFFF9FFU) +#define BSP_FEATURE_BSP_OFS1_HOCOFRQ_OFFSET (9U) +#define BSP_FEATURE_BSP_OSIS_PADDING (0U) +#define BSP_FEATURE_BSP_POWER_CHANGE_MSTP_REQUIRED (1U) +#define BSP_FEATURE_BSP_HAS_DCDC_REGULATOR (0U) +#define BSP_FEATURE_BSP_RESET_TRNG (0U) +#define BSP_FEATURE_BSP_SYS_CLOCK_FREQ_NO_RAM_WAITS (60000000U) // The maximum frequency allowed without having RAM wait state enabled in SRAMWTSC. +#define BSP_FEATURE_BSP_SYS_CLOCK_FREQ_ONE_ROM_WAITS (40000000U) // The maximum frequency allowed without having one ROM wait cycle. +#define BSP_FEATURE_BSP_SYS_CLOCK_FREQ_THREE_ROM_WAITS (0U) // 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 (80000000U) // The maximum frequency allowed without having two ROM wait cycles. +#define BSP_FEATURE_BSP_UNIQUE_ID_OFFSET (0x14) +#define BSP_FEATURE_BSP_UNIQUE_ID_POINTER ((*(uint32_t *) BSP_FEATURE_BSP_MCU_INFO_POINTER_LOCATION) + \ + BSP_FEATURE_BSP_UNIQUE_ID_OFFSET) +#define BSP_FEATURE_BSP_VBATT_HAS_VBTCR1_BPWSWSTP (0U) + +#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 (2U) + +#define BSP_FEATURE_CANFD_NUM_CHANNELS (0U) // Feature not available on this MCU +#define BSP_FEATURE_CANFD_LITE (0U) + +#define BSP_FEATURE_CGC_HAS_BCLK (1U) +#define BSP_FEATURE_CGC_HAS_FCLK (1U) +#define BSP_FEATURE_CGC_HAS_FLDWAITR (0U) +#define BSP_FEATURE_CGC_HAS_FLWT (1U) +#define BSP_FEATURE_CGC_HAS_FLL (1U) +#define BSP_FEATURE_CGC_HAS_HOCOWTCR (1U) +#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_PLL (1U) +#define BSP_FEATURE_CGC_HAS_PLL2 (0U) // On the RA6M4 there is another PLL that can be used as a clock source for USB and OCTASPI. +#define BSP_FEATURE_CGC_HAS_SOSC (1U) +#define BSP_FEATURE_CGC_HAS_SRAMPRCR2 (0U) // On the RA6M4 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_ICLK_DIV_RESET (BSP_CLOCKS_SYS_CLOCK_DIV_4) +#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 (0x30U) +#define BSP_FEATURE_CGC_MODRV_SHIFT (0x4U) +#define BSP_FEATURE_CGC_PLLCCR_TYPE (1U) +#define BSP_FEATURE_CGC_PLLCCR_WAIT_US (0U) // No wait between setting PLLCCR and clearing PLLSTP +#define BSP_FEATURE_CGC_PLLCCR_MAX_HZ (240000000U) +#define BSP_FEATURE_CGC_SCKDIVCR_BCLK_MATCHES_PCLKB (0) +#define BSP_FEATURE_CGC_SODRV_MASK (0x02U) +#define BSP_FEATURE_CGC_SODRV_SHIFT (0x1U) +#define BSP_FEATURE_CGC_STARTUP_OPCCR_MODE (0) + +#define BSP_FEATURE_CRYPTO_HAS_AES (1) +#define BSP_FEATURE_CRYPTO_HAS_AES_WRAPPED (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_RSA (1) +#define BSP_FEATURE_CRYPTO_HAS_RSA_WRAPPED (1) + +#define BSP_FEATURE_CTSU_CTSUCHAC_REGISTER_COUNT (3U) +#define BSP_FEATURE_CTSU_CTSUCHTRC_REGISTER_COUNT (3U) +#define BSP_FEATURE_CTSU_HAS_TXVSEL (1) +#define BSP_FEATURE_CTSU_VERSION (1) + +#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_HAS_CHARGEPUMP (0U) +#define BSP_FEATURE_DAC_HAS_DAVREFCR (0U) +#define BSP_FEATURE_DAC_HAS_DA_AD_SYNCHRONIZE (1U) +#define BSP_FEATURE_DAC_HAS_OUTPUT_AMPLIFIER (1U) +#define BSP_FEATURE_DAC_HAS_INTERNAL_OUTPUT (0U) +#define BSP_FEATURE_DAC_MAX_CHANNELS (2U) + +#define BSP_FEATURE_DOC_VERSION (1U) + +#define BSP_FEATURE_DMAC_MAX_CHANNEL (8U) +#define BSP_FEATURE_DMAC_HAS_REPEAT_BLOCK_MODE (0U) + +#define BSP_FEATURE_DWT_CYCCNT (1U) // RA6M3 has Data Watchpoint Cycle Count Register + +#define BSP_FEATURE_ELC_PERIPHERAL_MASK (0x0007FFFFU) // Positions of event link set registers (ELSRs) available on this MCU +#define BSP_FEATURE_ELC_VERSION (1U) + +#define BSP_FEATURE_ETHER_FIFO_DEPTH (0x0000070FU) +#define BSP_FEATURE_ETHER_MAX_CHANNELS (1U) + +#define BSP_FEATURE_FLASH_DATA_FLASH_START (0x40100000U) +#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 (0) // Feature not available on this MCU +#define BSP_FEATURE_FLASH_HP_SUPPORTS_DUAL_BANK (0) // Feature not available on this MCU +#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_VERSION (0) // Feature not available on this MCU +#define BSP_FEATURE_FLASH_SUPPORTS_ACCESS_WINDOW (1) +#define BSP_FEATURE_FLASH_SUPPORTS_ID_CODE (1) + +#define BSP_FEATURE_GPTEH_CHANNEL_MASK (0xF) + +#define BSP_FEATURE_GPTE_CHANNEL_MASK (0xF0) + +#define BSP_FEATURE_GPT_32BIT_CHANNEL_MASK (0x3FFF) +#define BSP_FEATURE_GPT_VALID_CHANNEL_MASK (0x3FFF) +#define BSP_FEATURE_GPT_EVENT_COUNT_CHANNEL_MASK (BSP_FEATURE_GPT_VALID_CHANNEL_MASK) +#define BSP_FEATURE_GPT_HAS_GTCLKCR (0U) +#define BSP_FEATURE_GPT_ODC_VALID_CHANNEL_MASK (0x0FU) +#define BSP_FEATURE_GPT_ODC_FRANGE_FREQ_MIN (0U) // Feature not available on this MCU +#define BSP_FEATURE_GPT_ODC_FREQ_MAX (120000000U) +#define BSP_FEATURE_GPT_ODC_FREQ_MIN (80000000U) +#define BSP_FEATURE_GPT_CLOCK_DIVIDER_STEP_SIZE (4U) +#define BSP_FEATURE_GPT_CLOCK_DIVIDER_VALUE_7_9_VALID (0U) + +#define BSP_FEATURE_ICU_HAS_WUPEN1 (0U) +#define BSP_FEATURE_ICU_IRQ_CHANNELS_MASK (0xFFFFU) +#define BSP_FEATURE_ICU_WUPEN_MASK (0xFF4FFFFFU) +#define BSP_FEATURE_ICU_HAS_INTERRUPT_GROUPS (0U) + +#define BSP_FEATURE_IIC_FAST_MODE_PLUS (1U << 0U) +#define BSP_FEATURE_IIC_VALID_CHANNEL_MASK (0x07) +#define BSP_FEATURE_IIC_VERSION (1U) +#define BSP_FEATURE_BSP_HAS_IIC_CLOCK (0U) +#define BSP_FEATURE_IIC_BUS_FREE_TIME_MULTIPLIER (0U) + +#define BSP_FEATURE_I3C_NUM_CHANNELS (0U) // Feature not available on this MCU +#define BSP_FEATURE_I3C_MAX_DEV_COUNT (0U) // Feature not available on this MCU +#define BSP_FEATURE_I3C_NTDTBP0_DEPTH (0U) // Feature not available on this MCU + +#define BSP_FEATURE_IOPORT_ELC_PORTS (0x001EU) +#define BSP_FEATURE_IOPORT_HAS_ETHERNET (1U) + +#define BSP_FEATURE_LPM_CHANGE_MSTP_ARRAY {{0, 15}, {0, 13}, {1, 31}, {1, 6}, {1, 5}, {1, 4}, {2, 5}} +#define BSP_FEATURE_LPM_CHANGE_MSTP_REQUIRED (1U) +#define BSP_FEATURE_LPM_DPSIEGR_MASK (0x00137FFFU) +#define BSP_FEATURE_LPM_DPSIER_MASK (0x071F7FFFU) +#define BSP_FEATURE_LPM_HAS_DEEP_STANDBY (1U) +#define BSP_FEATURE_LPM_HAS_SBYCR_OPE (1U) +#define BSP_FEATURE_LPM_HAS_SNZEDCR1 (0U) +#define BSP_FEATURE_LPM_HAS_SNZREQCR1 (0U) +#define BSP_FEATURE_LPM_HAS_STCONR (1U) +#define BSP_FEATURE_LPM_SBYCR_WRITE1_B14 (0) +#define BSP_FEATURE_LPM_SNZEDCR_MASK (0x000000FFU) +#define BSP_FEATURE_LPM_SNZREQCR_MASK (0x7342FFFFU) + +#define BSP_FEATURE_LVD_HAS_DIGITAL_FILTER (1U) +#define BSP_FEATURE_LVD_HAS_LVDLVLR (1U) +#define BSP_FEATURE_LVD_MONITOR_1_HI_THRESHOLD (LVD_THRESHOLD_MONITOR_1_LEVEL_2_99V) // 2.99V +#define BSP_FEATURE_LVD_MONITOR_1_LOW_THRESHOLD (LVD_THRESHOLD_MONITOR_1_LEVEL_2_85V) // 2.85V +#define BSP_FEATURE_LVD_MONITOR_2_HI_THRESHOLD (LVD_THRESHOLD_MONITOR_2_LEVEL_2_99V) // 2.99V +#define BSP_FEATURE_LVD_MONITOR_2_LOW_THRESHOLD (LVD_THRESHOLD_MONITOR_2_LEVEL_2_85V) // 2.85V +#define BSP_FEATURE_LVD_STABILIZATION_TIME_US (10U) // Time in microseconds required for LVD to stabalize + +#define BSP_FEATURE_IOPORT_VERSION (1U) + +#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_DEVICE_0_START_ADDRESS (0x0U) +#define BSP_FEATURE_OSPI_DEVICE_1_START_ADDRESS (0x0U) + +#define BSP_FEATURE_POEG_CHANNEL_MASK (0xFU) + +#define BSP_FEATURE_QSPI_DEVICE_START_ADDRESS (0x60000000U) + +#define BSP_FEATURE_SCI_VERSION (1U) +#define BSP_FEATURE_SCI_ADDRESS_MATCH_CHANNELS (BSP_FEATURE_SCI_CHANNELS) +#define BSP_FEATURE_SCI_CHANNELS (0x3FFU) +#define BSP_FEATURE_SCI_CLOCK (FSP_PRIV_CLOCK_PCLKA) +#define BSP_FEATURE_SCI_UART_FIFO_CHANNELS (0x3FFU) +#define BSP_FEATURE_SCI_UART_FIFO_DEPTH (16U) +#define BSP_FEATURE_SCI_UART_CSTPEN_CHANNELS (0x0U) + +#define BSP_FEATURE_SDHI_HAS_CARD_DETECTION (1U) +#define BSP_FEATURE_SDHI_SUPPORTS_8_BIT_MMC (1U) +#define BSP_FEATURE_SDHI_VALID_CHANNEL_MASK (0x3U) +#define BSP_FEATURE_SDHI_CLOCK (FSP_PRIV_CLOCK_PCLKA) +#define BSP_FEATURE_SDHI_MIN_CLOCK_DIVISION_SHIFT (1U) // 2 (2^1) is minimum division supported + +#define BSP_FEATURE_SDRAM_START_ADDRESS (0x90000000U) + +#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_SPI_CLK (FSP_PRIV_CLOCK_PCLKA) +#define BSP_FEATURE_SPI_HAS_SPCR3 (0U) +#define BSP_FEATURE_SPI_HAS_SSL_LEVEL_KEEP (1U) +#define BSP_FEATURE_SPI_MAX_CHANNEL (2U) + +#define BSP_FEATURE_SRAM_SRAMWTSC_WAIT_CYCLE_ENABLE (0x0EU) + +#define BSP_FEATURE_SSI_FIFO_NUM_STAGES (32U) +#define BSP_FEATURE_SSI_VALID_CHANNEL_MASK (3U) + +#define BSP_FEATURE_TFU_SPPORTED (0U) // Trigonometric Function Unit (TFU) not available on this MCU + +#define BSP_FEATURE_TRNG_HAS_MODULE_STOP (0U) + +#define BSP_FEATURE_TZ_HAS_TRUSTZONE (0U) + +#define BSP_FEATURE_BSP_NUM_PMSAR (0U) + +#endif diff --git a/bsp/renesas/ra6m3-hmi-board/ra/fsp/src/bsp/mcu/ra6m3/bsp_mcu_info.h b/bsp/renesas/ra6m3-hmi-board/ra/fsp/src/bsp/mcu/ra6m3/bsp_mcu_info.h new file mode 100644 index 0000000000..36ffb3680d --- /dev/null +++ b/bsp/renesas/ra6m3-hmi-board/ra/fsp/src/bsp/mcu/ra6m3/bsp_mcu_info.h @@ -0,0 +1,58 @@ +/*********************************************************************************************************************** + * Copyright [2020-2021] 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_RA6M3 RA6M3 + * @includedoc config_bsp_ra6m3_fsp.html + * @{ + **********************************************************************************************************************/ + +/** @} (end defgroup BSP_MCU_RA6M3) */ + +#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/ra6m3-hmi-board/ra/fsp/src/r_ioport/r_ioport.c b/bsp/renesas/ra6m3-hmi-board/ra/fsp/src/r_ioport/r_ioport.c new file mode 100644 index 0000000000..f45ae0b2e9 --- /dev/null +++ b/bsp/renesas/ra6m3-hmi-board/ra/fsp/src/r_ioport/r_ioport.c @@ -0,0 +1,878 @@ +/*********************************************************************************************************************** + * Copyright [2020-2021] 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) + +#ifndef BSP_MCU_VBATT_SUPPORT + #define BSP_MCU_VBATT_SUPPORT (0U) +#endif + +#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_MCU_VBATT_SUPPORT +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, + .pinEthernetModeCfg = R_IOPORT_EthernetModeCfg, + .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_MCU_VBATT_SUPPORT +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); + 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_MCU_VBATT_SUPPORT + + /* 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; +} + +/*********************************************************************************************************************** + * DEPRECATED Configures Ethernet channel PHY mode. Implements @ref ioport_api_t::pinEthernetModeCfg. + * + * @retval FSP_SUCCESS Ethernet PHY mode set + * @retval FSP_ERR_INVALID_ARGUMENT Channel or mode not valid + * @retval FSP_ERR_UNSUPPORTED Ethernet configuration not supported on this device. + * @retval FSP_ERR_NOT_OPEN The module has not been opened + * @retval FSP_ERR_ASSERTION NULL pointer + * + * @note This function is not re-entrant. + **********************************************************************************************************************/ +fsp_err_t R_IOPORT_EthernetModeCfg (ioport_ctrl_t * const p_ctrl, + ioport_ethernet_channel_t channel, + ioport_ethernet_mode_t mode) +{ + FSP_ERROR_RETURN(1U == BSP_FEATURE_IOPORT_HAS_ETHERNET, FSP_ERR_UNSUPPORTED); + +#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(channel < IOPORT_ETHERNET_CHANNEL_END, FSP_ERR_INVALID_ARGUMENT); + FSP_ERROR_RETURN(mode < IOPORT_ETHERNET_MODE_END, FSP_ERR_INVALID_ARGUMENT); +#else + FSP_PARAMETER_NOT_USED(p_ctrl); + FSP_PARAMETER_NOT_USED(channel); +#endif + + R_PMISC->PFENET = (uint8_t) mode; + + 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_MCU_VBATT_SUPPORT + + /* 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_MCU_VBATT_SUPPORT + +/*******************************************************************************************************************//** + * @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; + uint8_t local_vbtictlr_set; ///< Will hold bits to set in VBTICTLR + uint8_t local_vbtictlr_clear; ///< Will hold bits to clear in VBTICTLR + + /* Make no changes unless required. */ + local_vbtictlr_set = 0U; + local_vbtictlr_clear = 0U; + + /* 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. */ + local_vbtictlr_set |= (uint8_t) (1U << vbatt_index); + } + else + { + /* Bit should be cleared to 0. */ + local_vbtictlr_clear |= (uint8_t) (1U << vbatt_index); + } + } + } + } + + /* Disable write protection on VBTICTLR. */ + R_BSP_RegisterProtectDisable(BSP_REG_PROTECT_OM_LPC_BATT); + + /* Read value, set and clear bits as needed and write back. */ + uint8_t local_vbtictlr = R_SYSTEM->VBTICTLR; + local_vbtictlr |= local_vbtictlr_set; ///< Set appropriate bits + local_vbtictlr &= (uint8_t) ~local_vbtictlr_clear; ///< Clear appropriate bits + + R_SYSTEM->VBTICTLR = local_vbtictlr; + + /* Enable write protection on VBTICTLR. */ + R_BSP_RegisterProtectEnable(BSP_REG_PROTECT_OM_LPC_BATT); +} + +#endif diff --git a/bsp/renesas/ra6m3-hmi-board/ra/fsp/src/r_sci_uart/r_sci_uart.c b/bsp/renesas/ra6m3-hmi-board/ra/fsp/src/r_sci_uart/r_sci_uart.c new file mode 100644 index 0000000000..7f33e83dff --- /dev/null +++ b/bsp/renesas/ra6m3-hmi-board/ra/fsp/src/r_sci_uart/r_sci_uart.c @@ -0,0 +1,1846 @@ +/*********************************************************************************************************************** + * Copyright [2020-2021] 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_uart.h" +#include + +/*********************************************************************************************************************** + * Macro definitions + **********************************************************************************************************************/ +#ifndef SCI_UART_CFG_RX_ENABLE + #define SCI_UART_CFG_RX_ENABLE 1 +#endif +#ifndef SCI_UART_CFG_TX_ENABLE + #define SCI_UART_CFG_TX_ENABLE 1 +#endif + +/* Number of divisors in the data table used for baud rate calculation. */ +#define SCI_UART_NUM_DIVISORS_ASYNC (13U) + +/* Valid range of values for the modulation duty register is 128 - 256 (256 = modulation disabled). */ +#define SCI_UART_MDDR_MIN (128U) +#define SCI_UART_MDDR_MAX (256U) + +/* The bit rate register is 8-bits, so the maximum value is 255. */ +#define SCI_UART_BRR_MAX (255U) + +/* No limit to the number of bytes to read or write if DTC is not used. */ +#define SCI_UART_MAX_READ_WRITE_NO_DTC (0xFFFFFFFFU) + +/* Mask of invalid data bits in 9-bit mode. */ +#define SCI_UART_ALIGN_2_BYTES (0x1U) + +/* "SCIU" in ASCII. Used to determine if the control block is open. */ +#define SCI_UART_OPEN (0x53434955U) + +#define SCI_UART_SCMR_DEFAULT_VALUE (0xF2U) +#define SCI_UART_BRR_DEFAULT_VALUE (0xFFU) +#define SCI_UART_MDDR_DEFAULT_VALUE (0xFFU) +#define SCI_UART_FCR_DEFAULT_VALUE (0xF800) +#define SCI_UART_DCCR_DEFAULT_VALUE (0x40U) + +#define SCI_UART_FIFO_DAT_MASK (0x1FFU) + +#define FRDR_TDAT_MASK_9BITS (0x01FFU) +#define SPTR_SPB2D_BIT (1U) +#define SPTR_OUTPUT_ENABLE_MASK (0x04U) + +#define SCI_UART_SSR_FIFO_DR_RDF (0x41) + +#define SCI_UART_SPMR_CTSE_OFFSET (1U) + +/* SCI SCR register bit masks */ +#define SCI_SCR_TEIE_MASK (0x04U) ///< Transmit End Interrupt Enable +#define SCI_SCR_RE_MASK (0x10U) ///< Receive Enable +#define SCI_SCR_TE_MASK (0x20U) ///< Transmit Enable +#define SCI_SCR_RIE_MASK (0x40U) ///< Receive Interrupt Enable +#define SCI_SCR_TIE_MASK (0x80U) ///< Transmit Interrupt Enable + +/* SCI SEMR register bit offsets */ +#define SCI_UART_SEMR_BRME_OFFSET (2U) +#define SCI_UART_SEMR_ABCSE_OFFSET (3U) +#define SCI_UART_SEMR_ABCS_OFFSET (4U) +#define SCI_UART_SEMR_BGDM_OFFSET (6U) +#define SCI_UART_SEMR_BAUD_SETTING_MASK ((1U << SCI_UART_SEMR_BRME_OFFSET) | \ + (1U << SCI_UART_SEMR_ABCSE_OFFSET) | \ + (1U << SCI_UART_SEMR_ABCS_OFFSET) | (1U << SCI_UART_SEMR_BGDM_OFFSET)) + +/* SCI SMR register bit masks */ +#define SCI_SMR_CKS_VALUE_MASK (0x03U) ///< CKS: 2 bits + +/* SCI SSR register receiver error bit masks */ +#define SCI_SSR_ORER_MASK (0x20U) ///< overflow error +#define SCI_SSR_FER_MASK (0x10U) ///< framing error +#define SCI_SSR_PER_MASK (0x08U) ///< parity err +#define SCI_RCVR_ERR_MASK (SCI_SSR_ORER_MASK | SCI_SSR_FER_MASK | SCI_SSR_PER_MASK) + +#define SCI_REG_SIZE (R_SCI1_BASE - R_SCI0_BASE) + +#define SCI_UART_INVALID_8BIT_PARAM (0xFFU) +#define SCI_UART_INVALID_16BIT_PARAM (0xFFFFU) + +#define SCI_UART_DTC_MAX_TRANSFER (0x10000U) + +#define SCI_UART_FCR_TRIGGER_MASK (0xF) +#define SCI_UART_FCR_RSTRG_OFFSET (12) +#define SCI_UART_FCR_RTRG_OFFSET (8) +#define SCI_UART_FCR_TTRG_OFFSET (4) +#define SCI_UART_FCR_RESET_TX_RX (0x6) + +#define SCI_UART_9BIT_TRANSFER_BUFFER_OFFSET (0xB) +#define SCI_UART_FIFO_TRANSFER_BUFFER_OFFSET (0xC) + +#define SCI_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)) +#define SCI_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)) +#ifndef SCI_UART_FLOW_CONTROL_ACTIVE + #define SCI_UART_FLOW_CONTROL_ACTIVE BSP_IO_LEVEL_HIGH +#endif + +#ifndef SCI_UART_FLOW_CONTROL_INACTIVE + #define SCI_UART_FLOW_CONTROL_INACTIVE BSP_IO_LEVEL_LOW +#endif + +/*********************************************************************************************************************** + * Private constants + **********************************************************************************************************************/ +static const int32_t SCI_UART_100_PERCENT_X_1000 = 100000; +static const int32_t SCI_UART_MDDR_DIVISOR = 256; + +#if (SCI_UART_CFG_PARAM_CHECKING_ENABLE) +static const uint32_t SCI_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, /**< Noise filter level 1(weak) */ + NOISE_CANCEL_LVL2, /**< Noise filter level 2 */ + NOISE_CANCEL_LVL3, /**< Noise filter level 3 */ + NOISE_CANCEL_LVL4 /**< Noise filter level 4(strong) */ +} noise_cancel_lvl_t; + +#if defined(__ARMCC_VERSION) || defined(__ICCARM__) +typedef void (BSP_CMSE_NONSECURE_CALL * sci_uart_prv_ns_callback)(uart_callback_args_t * p_args); +#elif defined(__GNUC__) +typedef BSP_CMSE_NONSECURE_CALL void (*volatile sci_uart_prv_ns_callback)(uart_callback_args_t * p_args); +#endif + +/*********************************************************************************************************************** + * Private function prototypes + **********************************************************************************************************************/ +#if (SCI_UART_CFG_PARAM_CHECKING_ENABLE) + +static fsp_err_t r_sci_read_write_param_check(sci_uart_instance_ctrl_t const * const p_ctrl, + uint8_t const * const addr, + uint32_t const bytes); + +#endif + +static void r_sci_uart_config_set(sci_uart_instance_ctrl_t * const p_ctrl, uart_cfg_t const * const p_cfg); + +#if SCI_UART_CFG_DTC_SUPPORTED +static fsp_err_t r_sci_uart_transfer_configure(sci_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_uart_transfer_open(sci_uart_instance_ctrl_t * const p_ctrl, uart_cfg_t const * const p_cfg); + +static void r_sci_uart_transfer_close(sci_uart_instance_ctrl_t * p_ctrl); + +#endif + +static void r_sci_uart_baud_set(R_SCI0_Type * p_sci_reg, baud_setting_t const * const p_baud_setting); +static void r_sci_uart_call_callback(sci_uart_instance_ctrl_t * p_ctrl, uint32_t data, uart_event_t event); + +#if SCI_UART_CFG_FIFO_SUPPORT +static void r_sci_uart_fifo_cfg(sci_uart_instance_ctrl_t * const p_ctrl); + +#endif + +static void r_sci_irq_cfg(sci_uart_instance_ctrl_t * const p_ctrl, uint8_t const ipl, IRQn_Type const p_irq); + +static void r_sci_irqs_cfg(sci_uart_instance_ctrl_t * const p_ctrl, uart_cfg_t const * const p_cfg); + +#if (SCI_UART_CFG_TX_ENABLE) +void r_sci_uart_write_no_transfer(sci_uart_instance_ctrl_t * const p_ctrl); + +#endif + +#if (SCI_UART_CFG_RX_ENABLE) +void r_sci_uart_rxi_read_no_transfer(sci_uart_instance_ctrl_t * const p_ctrl); + +void sci_uart_rxi_isr(void); + +void r_sci_uart_read_data(sci_uart_instance_ctrl_t * const p_ctrl, uint32_t * const p_data); + +void sci_uart_eri_isr(void); + +#endif + +#if (SCI_UART_CFG_TX_ENABLE) +void sci_uart_txi_isr(void); +void sci_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_uart"; +#endif + +/* Baud rate divisor information (UART mode) */ +static const baud_setting_const_t g_async_baud[SCI_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_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 = +{ + .open = R_SCI_UART_Open, + .close = R_SCI_UART_Close, + .write = R_SCI_UART_Write, + .read = R_SCI_UART_Read, + .infoGet = R_SCI_UART_InfoGet, + .baudSet = R_SCI_UART_BaudSet, + .communicationAbort = R_SCI_UART_Abort, + .callbackSet = R_SCI_UART_CallbackSet, + .readStop = R_SCI_UART_ReadStop, +}; + +/*******************************************************************************************************************//** + * @addtogroup SCI_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 or selected channel + * does not support "Hardware CTS and Hardware RTS" flow control. + * @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_UART_Open (uart_ctrl_t * const p_api_ctrl, uart_cfg_t const * const p_cfg) +{ + sci_uart_instance_ctrl_t * p_ctrl = (sci_uart_instance_ctrl_t *) p_api_ctrl; + +#if (SCI_UART_CFG_PARAM_CHECKING_ENABLE) + + /* Check parameters. */ + FSP_ASSERT(p_ctrl); + FSP_ASSERT(p_cfg); + FSP_ASSERT(p_cfg->p_callback); + FSP_ASSERT(p_cfg->p_extend); + FSP_ASSERT(((sci_uart_extended_cfg_t *) p_cfg->p_extend)->p_baud_setting); + FSP_ERROR_RETURN(SCI_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_uart_extended_cfg_t *) p_cfg->p_extend)->flow_control == SCI_UART_FLOW_CONTROL_CTSRTS) + { + FSP_ERROR_RETURN( + ((sci_uart_extended_cfg_t *) p_cfg->p_extend)->flow_control_pin != SCI_UART_INVALID_16BIT_PARAM, + FSP_ERR_INVALID_ARGUMENT); + } + + if (((sci_uart_extended_cfg_t *) p_cfg->p_extend)->flow_control == SCI_UART_FLOW_CONTROL_HARDWARE_CTSRTS) + { + FSP_ERROR_RETURN((0U != (((1U << (p_cfg->channel)) & BSP_FEATURE_SCI_UART_CSTPEN_CHANNELS))), + 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_SCI0_Type *) (R_SCI0_BASE + (SCI_REG_SIZE * p_cfg->channel))); + + p_ctrl->fifo_depth = 0U; +#if SCI_UART_CFG_FIFO_SUPPORT + + /* Check if the channel supports fifo */ + if (BSP_FEATURE_SCI_UART_FIFO_CHANNELS & (1U << p_cfg->channel)) + { + 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; + + p_ctrl->data_bytes = 1U; + if (UART_DATA_BITS_9 == p_cfg->data_bits) + { + p_ctrl->data_bytes = 2U; + } + + /* Configure the interrupts. */ + r_sci_irqs_cfg(p_ctrl, p_cfg); + +#if SCI_UART_CFG_DTC_SUPPORTED + + /* Configure the transfer interface for transmission and reception if provided. */ + fsp_err_t err = r_sci_uart_transfer_open(p_ctrl, p_cfg); + + FSP_ERROR_RETURN(FSP_SUCCESS == err, err); +#endif + + /* 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 34.3.7 "SCI Initialization in Asynchronous Mode" in the RA6M3 manual + * R01UH0886EJ0100 or the relevant section for the MCU being used. */ + p_ctrl->p_reg->SCR = 0U; + p_ctrl->p_reg->SSR = 0U; + p_ctrl->p_reg->SIMR1 = 0U; + p_ctrl->p_reg->SIMR2 = 0U; + p_ctrl->p_reg->SIMR3 = 0U; + p_ctrl->p_reg->CDR = 0U; + + /* Check if the channel supports address matching */ + if (BSP_FEATURE_SCI_ADDRESS_MATCH_CHANNELS & (1U << p_cfg->channel)) + { + p_ctrl->p_reg->DCCR = SCI_UART_DCCR_DEFAULT_VALUE; + } + + /* Set the default level of the TX pin to 1. */ + p_ctrl->p_reg->SPTR = (uint8_t) (1U << SPTR_SPB2D_BIT) | SPTR_OUTPUT_ENABLE_MASK; + + /* Set the UART configuration settings provided in ::uart_cfg_t and ::sci_uart_extended_cfg_t. */ + r_sci_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; + + sci_uart_extended_cfg_t * p_extend = (sci_uart_extended_cfg_t *) p_cfg->p_extend; + + uint32_t scr = ((uint8_t) p_extend->clock) & 0x3U; +#if (SCI_UART_CFG_RX_ENABLE) + + /* If reception is enabled at build time, enable reception. */ + /* NOTE: Transmitter and its interrupt are enabled in R_SCI_UART_Write(). */ + scr |= SCI_SCR_RE_MASK; + R_BSP_IrqEnable(p_ctrl->p_cfg->rxi_irq); + R_BSP_IrqEnable(p_ctrl->p_cfg->eri_irq); + + scr |= SCI_SCR_RIE_MASK; +#endif + +#if (SCI_UART_CFG_TX_ENABLE) + R_BSP_IrqEnable(p_ctrl->p_cfg->txi_irq); + R_BSP_IrqEnable(p_ctrl->p_cfg->tei_irq); + scr |= SCI_SCR_TE_MASK; +#endif + p_ctrl->p_reg->SCR = (uint8_t) scr; + + p_ctrl->flow_pin = p_extend->flow_control_pin; + +#if SCI_UART_CFG_FLOW_CONTROL_SUPPORT + if (p_ctrl->flow_pin != SCI_UART_INVALID_16BIT_PARAM) + { + R_BSP_PinAccessEnable(); + R_BSP_PinWrite(p_ctrl->flow_pin, SCI_UART_FLOW_CONTROL_INACTIVE); + R_BSP_PinAccessDisable(); + } +#endif + + p_ctrl->open = SCI_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_UART_Close (uart_ctrl_t * const p_api_ctrl) +{ + sci_uart_instance_ctrl_t * p_ctrl = (sci_uart_instance_ctrl_t *) p_api_ctrl; +#if (SCI_UART_CFG_PARAM_CHECKING_ENABLE) + FSP_ASSERT(p_ctrl); + FSP_ERROR_RETURN(SCI_UART_OPEN == p_ctrl->open, FSP_ERR_NOT_OPEN); +#endif + + /* Mark the channel not open so other APIs cannot use it. */ + p_ctrl->open = 0U; + + /* Disable interrupts, receiver, and transmitter. Disable baud clock output.*/ + p_ctrl->p_reg->SCR = 0U; + +#if (SCI_UART_CFG_RX_ENABLE) + + /* 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_UART_CFG_TX_ENABLE) + + /* 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_UART_CFG_DTC_SUPPORTED + + /* Close the lower level transfer instances. */ + r_sci_uart_transfer_close(p_ctrl); +#endif + + /* Remove power to the channel. */ + R_BSP_MODULE_STOP(FSP_IP_SCI, p_ctrl->p_cfg->channel); + + 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_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_UART_Open call, p_dest must be aligned 16-bit boundary. + **********************************************************************************************************************/ +fsp_err_t R_SCI_UART_Read (uart_ctrl_t * const p_api_ctrl, uint8_t * const p_dest, uint32_t const bytes) +{ +#if (SCI_UART_CFG_RX_ENABLE) + sci_uart_instance_ctrl_t * p_ctrl = (sci_uart_instance_ctrl_t *) p_api_ctrl; + fsp_err_t err = FSP_SUCCESS; + + #if (SCI_UART_CFG_PARAM_CHECKING_ENABLE) + err = r_sci_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_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_UART_CFG_PARAM_CHECKING_ENABLE) + + /* Check that the number of transfers is within the 16-bit limit. */ + FSP_ASSERT(size <= SCI_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_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_UART_Open call, p_src must be aligned on a 16-bit boundary. + **********************************************************************************************************************/ +fsp_err_t R_SCI_UART_Write (uart_ctrl_t * const p_api_ctrl, uint8_t const * const p_src, uint32_t const bytes) +{ +#if (SCI_UART_CFG_TX_ENABLE) + sci_uart_instance_ctrl_t * p_ctrl = (sci_uart_instance_ctrl_t *) p_api_ctrl; + #if SCI_UART_CFG_PARAM_CHECKING_ENABLE || SCI_UART_CFG_DTC_SUPPORTED + fsp_err_t err = FSP_SUCCESS; + #endif + + #if (SCI_UART_CFG_PARAM_CHECKING_ENABLE) + err = r_sci_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->SCR &= (uint8_t) ~(SCI_SCR_TIE_MASK | SCI_SCR_TEIE_MASK); + + /* If the fifo is not used the first write will be done from this function. Subsequent writes will be done + * from txi_isr. */ + #if SCI_UART_CFG_FIFO_SUPPORT + if (p_ctrl->fifo_depth > 0U) + { + p_ctrl->tx_src_bytes = bytes; + p_ctrl->p_tx_src = p_src; + } + else + #endif + { + p_ctrl->tx_src_bytes = bytes - p_ctrl->data_bytes; + p_ctrl->p_tx_src = p_src + p_ctrl->data_bytes; + } + + #if SCI_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_UART_CFG_PARAM_CHECKING_ENABLE) + + /* Check that the number of transfers is within the 16-bit limit. */ + FSP_ASSERT(num_transfers <= SCI_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 + + /* Trigger a TXI interrupt. This triggers the transfer instance or a TXI interrupt if the transfer instance is + * not used. */ + p_ctrl->p_reg->SCR |= SCI_SCR_TIE_MASK; + #if SCI_UART_CFG_FIFO_SUPPORT + if (p_ctrl->fifo_depth == 0U) + #endif + { + /* On channels with no FIFO, the first byte is sent from this function to trigger the first TXI event. This + * method is used instead of setting TE and TIE at the same time as recommended in the hardware manual to avoid + * the one frame delay that occurs when the TE bit is set. */ + if (2U == p_ctrl->data_bytes) + { + p_ctrl->p_reg->FTDRHL = *((uint16_t *) (p_src)) | (uint16_t) ~(SCI_UART_FIFO_DAT_MASK); + } + else + { + p_ctrl->p_reg->TDR = *(p_src); + } + } + + 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_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_uart_instance_ctrl_t * p_ctrl = (sci_uart_instance_ctrl_t *) p_api_ctrl; + +#if (SCI_UART_CFG_PARAM_CHECKING_ENABLE) + FSP_ASSERT(p_ctrl); + FSP_ASSERT(p_callback); + FSP_ERROR_RETURN(SCI_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_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 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_UART_BaudSet (uart_ctrl_t * const p_api_ctrl, void const * const p_baud_setting) +{ + sci_uart_instance_ctrl_t * p_ctrl = (sci_uart_instance_ctrl_t *) p_api_ctrl; + +#if (SCI_UART_CFG_PARAM_CHECKING_ENABLE) + FSP_ASSERT(p_ctrl); + FSP_ERROR_RETURN(SCI_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->SCR_b.CKE & 0x2) == 0U); +#endif + + /* Save SCR configurations except transmit interrupts. Resuming transmission after reconfiguring baud settings is + * not supported. */ + uint8_t preserved_scr = p_ctrl->p_reg->SCR & (uint8_t) ~(SCI_SCR_TIE_MASK | SCI_SCR_TEIE_MASK); + + /* Disables transmitter and receiver. This terminates any in-progress transmission. */ + p_ctrl->p_reg->SCR = preserved_scr & (uint8_t) ~(SCI_SCR_TE_MASK | SCI_SCR_RE_MASK | SCI_SCR_RIE_MASK); + p_ctrl->p_tx_src = NULL; + + /* Apply new baud rate register settings. */ + r_sci_uart_baud_set(p_ctrl->p_reg, p_baud_setting); + + /* Restore all settings except transmit interrupts. */ + p_ctrl->p_reg->SCR = preserved_scr; + + 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_UART_InfoGet (uart_ctrl_t * const p_api_ctrl, uart_info_t * const p_info) +{ +#if SCI_UART_CFG_PARAM_CHECKING_ENABLE || SCI_UART_CFG_DTC_SUPPORTED + sci_uart_instance_ctrl_t * p_ctrl = (sci_uart_instance_ctrl_t *) p_api_ctrl; +#else + FSP_PARAMETER_NOT_USED(p_api_ctrl); +#endif + +#if (SCI_UART_CFG_PARAM_CHECKING_ENABLE) + FSP_ASSERT(p_ctrl); + FSP_ASSERT(p_info); + FSP_ERROR_RETURN(SCI_UART_OPEN == p_ctrl->open, FSP_ERR_NOT_OPEN); +#endif + + p_info->read_bytes_max = SCI_UART_MAX_READ_WRITE_NO_DTC; + p_info->write_bytes_max = SCI_UART_MAX_READ_WRITE_NO_DTC; + +#if (SCI_UART_CFG_RX_ENABLE) + + /* Store number of bytes that can be read at a time. */ + #if SCI_UART_CFG_DTC_SUPPORTED + if (NULL != p_ctrl->p_cfg->p_transfer_rx) + { + p_info->read_bytes_max = SCI_UART_DTC_MAX_TRANSFER; + } + #endif +#endif + +#if (SCI_UART_CFG_TX_ENABLE) + + /* Store number of bytes that can be written at a time. */ + #if SCI_UART_CFG_DTC_SUPPORTED + if (NULL != p_ctrl->p_cfg->p_transfer_tx) + { + p_info->write_bytes_max = SCI_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_UART_Abort (uart_ctrl_t * const p_api_ctrl, uart_dir_t communication_to_abort) +{ + sci_uart_instance_ctrl_t * p_ctrl = (sci_uart_instance_ctrl_t *) p_api_ctrl; + fsp_err_t err = FSP_ERR_UNSUPPORTED; + +#if (SCI_UART_CFG_PARAM_CHECKING_ENABLE) + FSP_ASSERT(p_ctrl); + FSP_ERROR_RETURN(SCI_UART_OPEN == p_ctrl->open, FSP_ERR_NOT_OPEN); +#endif + +#if (SCI_UART_CFG_TX_ENABLE) + if (UART_DIR_TX & communication_to_abort) + { + err = FSP_SUCCESS; + p_ctrl->p_reg->SCR &= (uint8_t) ~(SCI_SCR_TIE_MASK | SCI_SCR_TEIE_MASK); + #if SCI_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_UART_CFG_FIFO_SUPPORT + if (0U != p_ctrl->fifo_depth) + { + /* Reset the transmit fifo */ + p_ctrl->p_reg->FCR_b.TFRST = 1U; + + /* Wait until TFRST cleared after 1 PCLK according to section 34.2.26 "FIFO Control Register (FCR) in the + * RA6M3 manual R01UH0886EJ0100 or the relevant section for the MCU being used.*/ + FSP_HARDWARE_REGISTER_WAIT(p_ctrl->p_reg->FCR_b.TFRST, 0U); + } + #endif + p_ctrl->tx_src_bytes = 0U; + + FSP_ERROR_RETURN(FSP_SUCCESS == err, err); + } +#endif +#if (SCI_UART_CFG_RX_ENABLE) + if (UART_DIR_RX & communication_to_abort) + { + err = FSP_SUCCESS; + + p_ctrl->rx_dest_bytes = 0U; + #if SCI_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_UART_CFG_FIFO_SUPPORT + if (0U != p_ctrl->fifo_depth) + { + /* Reset the receive fifo */ + p_ctrl->p_reg->FCR_b.RFRST = 1U; + + /* Wait until RFRST cleared after 1 PCLK according to section 34.2.26 "FIFO Control Register (FCR) in the + * RA6M3 manual R01UH0886EJ0100 or the relevant section for the MCU being used.*/ + FSP_HARDWARE_REGISTER_WAIT(p_ctrl->p_reg->FCR_b.RFRST, 0U); + } + #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_UART_ReadStop (uart_ctrl_t * const p_api_ctrl, uint32_t * remaining_bytes) +{ + sci_uart_instance_ctrl_t * p_ctrl = (sci_uart_instance_ctrl_t *) p_api_ctrl; + +#if (SCI_UART_CFG_PARAM_CHECKING_ENABLE) + FSP_ASSERT(p_ctrl); + FSP_ERROR_RETURN(SCI_UART_OPEN == p_ctrl->open, FSP_ERR_NOT_OPEN); +#endif + +#if (SCI_UART_CFG_RX_ENABLE) + *remaining_bytes = p_ctrl->rx_dest_bytes; + p_ctrl->rx_dest_bytes = 0U; + #if SCI_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_UART_CFG_FIFO_SUPPORT + if (0U != p_ctrl->fifo_depth) + { + /* Reset the receive fifo */ + p_ctrl->p_reg->FCR_b.RFRST = 1U; + + /* Wait until RFRST cleared after 1 PCLK according to section 34.2.26 "FIFO Control Register (FCR) in the + * RA6M3 manual R01UH0886EJ0100 or the relevant section for the MCU being used.*/ + FSP_HARDWARE_REGISTER_WAIT(p_ctrl->p_reg->FCR_b.RFRST, 0U); + } + #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 <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', source clock frequency could not be read, or error in + * calculated baud rate is larger than 10%. + **********************************************************************************************************************/ +fsp_err_t R_SCI_UART_BaudCalculate (uint32_t baudrate, + bool bitrate_modulation, + uint32_t baud_rate_error_x_1000, + baud_setting_t * const p_baud_setting) +{ +#if (SCI_UART_CFG_PARAM_CHECKING_ENABLE) + FSP_ASSERT(p_baud_setting); + FSP_ERROR_RETURN(SCI_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->brr = SCI_UART_BRR_MAX; + p_baud_setting->brme = 0U; + p_baud_setting->mddr = SCI_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_UART_100_PERCENT_X_1000; + uint32_t hit_mddr = 0U; + uint32_t divisor = 0U; + + uint32_t freq_hz = R_FSP_SystemClockHzGet(BSP_FEATURE_SCI_CLOCK); + + 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_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_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_UART_100_PERCENT_X_1000) / + err_divisor) - SCI_UART_100_PERCENT_X_1000); + + uint32_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 256. + * MDDR = ((div_coefficient * baud * 256) * (BRR + 1)) / PCLK */ + mddr = (uint32_t) err_divisor / (freq_hz / SCI_UART_MDDR_MAX); + + /* The maximum value that could result from the calculation above is 256, which is a valid MDDR + * value, so only the lower bound is checked. */ + if (mddr < SCI_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_UART_100_PERCENT_X_1000) * (int32_t) mddr) / + SCI_UART_MDDR_DIVISOR) - SCI_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->bgdm = g_async_baud[i].bgdm; + p_baud_setting->abcs = g_async_baud[i].abcs; + p_baud_setting->abcse = g_async_baud[i].abcse; + p_baud_setting->cks = g_async_baud[i].cks; + p_baud_setting->brr = (uint8_t) temp_brr; + hit_bit_err = bit_err; + hit_mddr = mddr; + } + + if (bitrate_modulation) + { + p_baud_setting->brme = 1U; + p_baud_setting->mddr = (uint8_t) 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_UART) + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Private Functions + **********************************************************************************************************************/ + +#if (SCI_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_read_write_param_check (sci_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_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_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_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_uart_transfer_configure (sci_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_UART_CFG_PARAM_CHECKING_ENABLE) + FSP_ASSERT(NULL != p_transfer->p_api); + FSP_ASSERT(NULL != p_transfer->p_ctrl); + 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; + + /* Casting for compatibility with 7 or 8 bit mode. */ + *p_transfer_reg = sci_buffer_address; + + #if SCI_UART_CFG_FIFO_SUPPORT + if (p_ctrl->fifo_depth > 0U) + { + /* Casting for compatibility with 7 or 8 bit mode. */ + *p_transfer_reg = sci_buffer_address + SCI_UART_FIFO_TRANSFER_BUFFER_OFFSET; + } + #endif + + if (UART_DATA_BITS_9 == p_ctrl->p_cfg->data_bits) + { + p_info->size = TRANSFER_SIZE_2_BYTE; + + /* Casting for compatibility with 7 or 8 bit mode. */ + *p_transfer_reg = sci_buffer_address + SCI_UART_9BIT_TRANSFER_BUFFER_OFFSET; + } + + 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_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_uart_transfer_open (sci_uart_instance_ctrl_t * const p_ctrl, uart_cfg_t const * const p_cfg) +{ + fsp_err_t err = FSP_SUCCESS; + + #if (SCI_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_UART_DTC_RX_TRANSFER_SETTINGS; + + err = + r_sci_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_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_UART_DTC_TX_TRANSFER_SETTINGS; + + err = r_sci_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_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_uart_config_set (sci_uart_instance_ctrl_t * const p_ctrl, uart_cfg_t const * const p_cfg) +{ +#if SCI_UART_CFG_FIFO_SUPPORT + + /* Configure FIFO related registers. */ + r_sci_uart_fifo_cfg(p_ctrl); +#else + + /* If fifo support is disabled and the current channel supports fifo make sure it's disabled. */ + if (BSP_FEATURE_SCI_UART_FIFO_CHANNELS & (1U << p_cfg->channel)) + { + p_ctrl->p_reg->FCR = SCI_UART_FCR_DEFAULT_VALUE; + } +#endif + + /* Configure parity and stop bits. */ + uint32_t smr = (((uint32_t) p_cfg->parity << 4U) | ((uint32_t) p_cfg->stop_bits << 3U)); + uint32_t scmr = SCI_UART_SCMR_DEFAULT_VALUE; + + /* Configure data size. */ + if (UART_DATA_BITS_7 == p_cfg->data_bits) + { + /* Set the SMR.CHR bit & SCMR.CHR1 bit as selected (Character Length) + * Character Length + * (CHR1,CHR) + * (1, 1) Transmit/receive in 7-bit data length*3 + */ + smr |= (1U << 6); + } + else if (UART_DATA_BITS_9 == p_cfg->data_bits) + { + /* Set the SMR.CHR bit & SCMR.CHR1 bit as selected (Character Length) + * Character Length + * (CHR1,CHR) + * (0, 0) Transmit/receive in 9-bit data length + */ + scmr &= ~(1U << 4); + } + else + { + /* Do nothing. Default is 8-bit mode. */ + } + + /* Write to the SMR register. */ + p_ctrl->p_reg->SMR = (uint8_t) smr; + + /* Write to the SCMR register. */ + p_ctrl->p_reg->SCMR = (uint8_t) scmr; + + sci_uart_extended_cfg_t * p_extend = (sci_uart_extended_cfg_t *) p_cfg->p_extend; + + /* Configure flow control if CTS/RTS flow control is enabled. */ +#if BSP_FEATURE_SCI_UART_CSTPEN_CHANNELS + if (p_extend->flow_control == SCI_UART_FLOW_CONTROL_HARDWARE_CTSRTS) + { + p_ctrl->p_reg->SPMR = R_SCI0_SPMR_CSTPEN_Msk | R_SCI0_SPMR_CTSE_Msk; + } + else +#endif + { + p_ctrl->p_reg->SPMR = ((uint8_t) (p_extend->flow_control << R_SCI0_SPMR_CTSE_Pos) & R_SCI0_SPMR_CTSE_Msk); + } + + uint32_t semr = 0; + + /* Starts reception on falling edge of RXD if enabled in extension (otherwise reception starts at low level + * of RXD). */ + semr |= (p_extend->rx_edge_start & 1U) << 7; + + /* Enables the noise cancellation, fixed to the minimum level, if enabled in the extension. */ + semr |= (p_extend->noise_cancel & 1U) << 5; + + p_ctrl->p_reg->SNFR = NOISE_CANCEL_LVL1; + + if ((SCI_UART_CLOCK_EXT8X == p_extend->clock) || (SCI_UART_CLOCK_EXT16X == p_extend->clock)) + { + /* Use external clock for baud rate */ + p_ctrl->p_reg->BRR = SCI_UART_BRR_DEFAULT_VALUE; + + if (SCI_UART_CLOCK_EXT8X == p_extend->clock) + { + /* Set baud rate as (external clock / 8) */ + semr |= 1U << SCI_UART_SEMR_ABCS_OFFSET; + } + + p_ctrl->p_reg->SEMR = (uint8_t) semr; + } + else + { + p_ctrl->p_reg->SEMR = (uint8_t) semr; + + /* Set the baud rate settings for the internal baud rate generator. */ + r_sci_uart_baud_set(p_ctrl->p_reg, p_extend->p_baud_setting); + } +} + +#if SCI_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_uart_fifo_cfg (sci_uart_instance_ctrl_t * const p_ctrl) +{ + if (0U != p_ctrl->fifo_depth) + { + /* Enable the fifo and set the tx and rx reset bits */ + uint32_t fcr = 1U; + + #if (SCI_UART_CFG_RX_ENABLE) + #if SCI_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_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 RA6M3 manual R01UH0886EJ0100 or the relevant section for + * the MCU being used. */ + fcr |= (((p_ctrl->fifo_depth - 1U) & p_extend->rx_fifo_trigger) & SCI_UART_FCR_TRIGGER_MASK) << + SCI_UART_FCR_RTRG_OFFSET; + } + + /* 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_UART_FCR_TRIGGER_MASK) << SCI_UART_FCR_RSTRG_OFFSET; + #endif + + /* Set the FCR and reset the fifos. */ + p_ctrl->p_reg->FCR = (uint16_t) (fcr | SCI_UART_FCR_RESET_TX_RX); + + /* Wait for the fifo reset to complete after 1 PCLK according to section 34.2.26 "FIFO Control Register (FCR) + * in the RA6M3 manual R01UH0886EJ0100 or the relevant section for the MCU being used.*/ + FSP_HARDWARE_REGISTER_WAIT(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_irq_cfg (sci_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_irqs_cfg (sci_uart_instance_ctrl_t * const p_ctrl, uart_cfg_t const * const p_cfg) +{ +#if (SCI_UART_CFG_RX_ENABLE) + + /* ERI is optional. */ + r_sci_irq_cfg(p_ctrl, p_cfg->eri_ipl, p_cfg->eri_irq); + r_sci_irq_cfg(p_ctrl, p_cfg->rxi_ipl, p_cfg->rxi_irq); +#endif +#if (SCI_UART_CFG_TX_ENABLE) + r_sci_irq_cfg(p_ctrl, p_cfg->txi_ipl, p_cfg->txi_irq); + + r_sci_irq_cfg(p_ctrl, p_cfg->tei_ipl, p_cfg->tei_irq); +#endif +} + +#if SCI_UART_CFG_DTC_SUPPORTED + +/*******************************************************************************************************************//** + * Closes transfer interfaces. + * + * @param[in] p_ctrl Pointer to UART instance control block + **********************************************************************************************************************/ +static void r_sci_uart_transfer_close (sci_uart_instance_ctrl_t * p_ctrl) +{ + #if (SCI_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_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 + +/*******************************************************************************************************************//** + * Changes baud rate based on predetermined register settings. + * + * @param[in] p_sci_reg Base pointer for SCI registers + * @param[in] p_baud_setting Pointer to other divisor related settings + * + * @note The transmitter and receiver (TE and RE bits in SCR) must be disabled prior to calling this function. + **********************************************************************************************************************/ +static void r_sci_uart_baud_set (R_SCI0_Type * p_sci_reg, baud_setting_t const * const p_baud_setting) +{ + /* Set BRR register value. */ + p_sci_reg->BRR = p_baud_setting->brr; + + /* Set clock source for the on-chip baud rate generator. */ + p_sci_reg->SMR_b.CKS = (uint8_t) (SCI_SMR_CKS_VALUE_MASK & p_baud_setting->cks); + + /* Set MDDR register value. */ + p_sci_reg->MDDR = p_baud_setting->mddr; + + /* Set clock divisor settings. */ + p_sci_reg->SEMR = (uint8_t) ((p_sci_reg->SEMR & ~(SCI_UART_SEMR_BAUD_SETTING_MASK)) | + (p_baud_setting->semr_baudrate_bits & SCI_UART_SEMR_BAUD_SETTING_MASK)); +} + +/*******************************************************************************************************************//** + * 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_uart_call_callback (sci_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_uart_prv_ns_callback p_callback = (sci_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_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_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_uart_instance_ctrl_t * p_ctrl = (sci_uart_instance_ctrl_t *) R_FSP_IsrContextGet(irq); + + if ((NULL == p_ctrl->p_cfg->p_transfer_tx) && (0U != p_ctrl->tx_src_bytes)) + { + /* Write the data to the FIFO if the channel has a FIFO. Otherwise write data based on size to the transmit + * register. Write to 16-bit TDRHL for 9-bit data, or 8-bit TDR otherwise. */ + #if SCI_UART_CFG_FIFO_SUPPORT + if (0U != p_ctrl->fifo_depth) + { + uint32_t fifo_count = (uint32_t) p_ctrl->p_reg->FDR_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) + { + p_ctrl->p_reg->FTDRHL = + (uint16_t) (*((uint16_t *) p_ctrl->p_tx_src) | (uint16_t) ~(SCI_UART_FIFO_DAT_MASK)); + } + else + { + p_ctrl->p_reg->FTDRL = *p_ctrl->p_tx_src; + } + + p_ctrl->tx_src_bytes -= p_ctrl->data_bytes; + p_ctrl->p_tx_src += p_ctrl->data_bytes; + } + + /* Clear TDFE flag */ + p_ctrl->p_reg->SSR_FIFO_b.TDFE = 0U; + } + else + #endif + { + if ((2U == p_ctrl->data_bytes)) + { + /* Write 16-bit data to TDRHL register */ + p_ctrl->p_reg->TDRHL = *((uint16_t *) (p_ctrl->p_tx_src)) | (uint16_t) ~(SCI_UART_FIFO_DAT_MASK); + } + else + { + /* Write 1byte (uint8_t) data to (uint8_t) data register */ + p_ctrl->p_reg->TDR = *(p_ctrl->p_tx_src); + } + + /* Update pointer to the next data and number of remaining bytes in the control block. */ + 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. */ + uint8_t scr_temp = p_ctrl->p_reg->SCR; + scr_temp |= SCI_SCR_TEIE_MASK; + scr_temp &= (uint8_t) ~SCI_SCR_TIE_MASK; + p_ctrl->p_reg->SCR = scr_temp; + + p_ctrl->p_tx_src = NULL; + r_sci_uart_call_callback(p_ctrl, 0U, UART_EVENT_TX_DATA_EMPTY); + } + + /* Restore context if RTOS is used */ + FSP_CONTEXT_RESTORE; +} + +#endif + +#if (SCI_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_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_UART_Open(). This is + * special functionality to expand SCI hardware capability and make RTS/CTS hardware flow control possible. If macro + * 'SCI_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 called again just before leaving this function to set the RTS pin low. + * @retval none + **********************************************************************************************************************/ +void sci_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_uart_instance_ctrl_t * p_ctrl = (sci_uart_instance_ctrl_t *) R_FSP_IsrContextGet(irq); + + #if SCI_UART_CFG_DTC_SUPPORTED + if ((p_ctrl->p_cfg->p_transfer_rx == NULL) || (0 == p_ctrl->rx_dest_bytes)) + #endif + { + #if (SCI_UART_CFG_FLOW_CONTROL_SUPPORT) + if (p_ctrl->flow_pin != SCI_UART_INVALID_16BIT_PARAM) + { + R_BSP_PinAccessEnable(); + + /* Pause the transmission of data from the other device. */ + R_BSP_PinWrite(p_ctrl->flow_pin, SCI_UART_FLOW_CONTROL_ACTIVE); + } + #endif + + uint32_t data; + #if SCI_UART_CFG_FIFO_SUPPORT + do + { + if ((p_ctrl->fifo_depth > 0U)) + { + if (p_ctrl->p_reg->FDR_b.R > 0U) + { + data = p_ctrl->p_reg->FRDRHL & FRDR_TDAT_MASK_9BITS; + } + else + { + break; + } + } + else if (2U == p_ctrl->data_bytes) + #else + { + if (2U == p_ctrl->data_bytes) + #endif + { + data = p_ctrl->p_reg->RDRHL & FRDR_TDAT_MASK_9BITS; + } + else + { + data = p_ctrl->p_reg->RDR; + } + + if (0 == p_ctrl->rx_dest_bytes) + { + /* Call user callback with the data. */ + r_sci_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) + { + r_sci_uart_call_callback(p_ctrl, 0U, UART_EVENT_RX_COMPLETE); + } + } + + #if SCI_UART_CFG_FIFO_SUPPORT + } while ((p_ctrl->fifo_depth > 0U) && ((p_ctrl->p_reg->FDR_b.R) > 0U)); + + if (p_ctrl->fifo_depth > 0U) + { + p_ctrl->p_reg->SSR_FIFO = (uint8_t) ~(SCI_UART_SSR_FIFO_DR_RDF); + } + + #else + } + #endif + #if (SCI_UART_CFG_FLOW_CONTROL_SUPPORT) + if (p_ctrl->flow_pin != SCI_UART_INVALID_16BIT_PARAM) + { + /* Resume the transmission of data from the other device. */ + R_BSP_PinWrite(p_ctrl->flow_pin, SCI_UART_FLOW_CONTROL_INACTIVE); + R_BSP_PinAccessDisable(); + } + #endif + } + + #if SCI_UART_CFG_DTC_SUPPORTED + else + { + p_ctrl->rx_dest_bytes = 0; + + p_ctrl->p_rx_dest = NULL; + + /* Call callback */ + r_sci_uart_call_callback(p_ctrl, 0U, UART_EVENT_RX_COMPLETE); + } + #endif + + /* Restore context if RTOS is used */ + FSP_CONTEXT_RESTORE; +} + +#endif + +#if (SCI_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_UART_Open()). + **********************************************************************************************************************/ +void sci_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_uart_instance_ctrl_t * p_ctrl = (sci_uart_instance_ctrl_t *) R_FSP_IsrContextGet(irq); + + /* Receiving TEI(transmit end interrupt) means the completion of transmission, so call callback function here. */ + p_ctrl->p_reg->SCR &= (uint8_t) ~(SCI_SCR_TIE_MASK | SCI_SCR_TEIE_MASK); + + r_sci_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_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_UART_Open() with the event code that triggered the interrupt. + **********************************************************************************************************************/ +void sci_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_uart_instance_ctrl_t * p_ctrl = (sci_uart_instance_ctrl_t *) R_FSP_IsrContextGet(irq); + + uint32_t data = 0U; + uart_event_t event; + + /* Read data. */ + if ( + #if SCI_UART_CFG_FIFO_SUPPORT + (p_ctrl->fifo_depth > 0U) || + #endif + (2U == p_ctrl->data_bytes)) + { + { + data = p_ctrl->p_reg->RDRHL & SCI_UART_FIFO_DAT_MASK; + } + } + else + { + data = p_ctrl->p_reg->RDR; + } + + /* Determine cause of error. */ + event = (uart_event_t) (p_ctrl->p_reg->SSR & SCI_RCVR_ERR_MASK); + + /* Check if there is a break detected. */ + if ((UART_EVENT_ERR_FRAMING == (event & UART_EVENT_ERR_FRAMING)) && (0U == p_ctrl->p_reg->SPTR_b.RXDMON)) + { + event |= UART_EVENT_BREAK_DETECT; + } + + /* Clear error condition. */ + p_ctrl->p_reg->SSR &= (uint8_t) (~SCI_RCVR_ERR_MASK); + + /* Call callback. */ + r_sci_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/ra6m3-hmi-board/ra_cfg/SConscript b/bsp/renesas/ra6m3-hmi-board/ra_cfg/SConscript new file mode 100644 index 0000000000..21af4711c5 --- /dev/null +++ b/bsp/renesas/ra6m3-hmi-board/ra_cfg/SConscript @@ -0,0 +1,19 @@ +Import('RTT_ROOT') +Import('rtconfig') +from building 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 ['gcc', 'armclang']: + 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/ra6m3-hmi-board/ra_cfg/fsp_cfg/bsp/board_cfg.h b/bsp/renesas/ra6m3-hmi-board/ra_cfg/fsp_cfg/bsp/board_cfg.h new file mode 100644 index 0000000000..274684eab5 --- /dev/null +++ b/bsp/renesas/ra6m3-hmi-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_ +void bsp_init(void * p_args); +#endif /* BOARD_CFG_H_ */ diff --git a/bsp/renesas/ra6m3-hmi-board/ra_cfg/fsp_cfg/bsp/bsp_cfg.h b/bsp/renesas/ra6m3-hmi-board/ra_cfg/fsp_cfg/bsp/bsp_cfg.h new file mode 100644 index 0000000000..48c4b5099e --- /dev/null +++ b/bsp/renesas/ra6m3-hmi-board/ra_cfg/fsp_cfg/bsp/bsp_cfg.h @@ -0,0 +1,52 @@ +/* generated configuration header file - do not edit */ +#ifndef BSP_CFG_H_ +#define BSP_CFG_H_ +#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 + #undef RA_NOT_DEFINED + #if defined(_RA_BOOT_IMAGE) + #define BSP_CFG_BOOT_IMAGE (1) + #endif + #define BSP_CFG_MCU_VCC_MV (3300) + #define BSP_CFG_STACK_MAIN_BYTES (0x400) + #define BSP_CFG_HEAP_BYTES (0) + #define BSP_CFG_PARAM_CHECKING_ENABLE (0) + #define BSP_CFG_ASSERT (0) + #define BSP_CFG_ERROR_LOG (0) + + #define BSP_CFG_PFS_PROTECT ((1)) + + #define BSP_CFG_C_RUNTIME_INIT ((1)) + #define BSP_CFG_EARLY_INIT ((0)) + + #define BSP_CFG_SOFT_RESET_SUPPORTED ((0)) // DEPRECATED, replace with BSP_CFG_STARTUP_CLOCK_REG_NOT_RESET + #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 +#endif /* BSP_CFG_H_ */ diff --git a/bsp/renesas/ra6m3-hmi-board/ra_cfg/fsp_cfg/bsp/bsp_mcu_device_cfg.h b/bsp/renesas/ra6m3-hmi-board/ra_cfg/fsp_cfg/bsp/bsp_mcu_device_cfg.h new file mode 100644 index 0000000000..bd6a901c32 --- /dev/null +++ b/bsp/renesas/ra6m3-hmi-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 (6) +#endif /* BSP_MCU_DEVICE_CFG_H_ */ diff --git a/bsp/renesas/ra6m3-hmi-board/ra_cfg/fsp_cfg/bsp/bsp_mcu_device_pn_cfg.h b/bsp/renesas/ra6m3-hmi-board/ra_cfg/fsp_cfg/bsp/bsp_mcu_device_pn_cfg.h new file mode 100644 index 0000000000..fb5ecfdaa6 --- /dev/null +++ b/bsp/renesas/ra6m3-hmi-board/ra_cfg/fsp_cfg/bsp/bsp_mcu_device_pn_cfg.h @@ -0,0 +1,10 @@ +/* generated configuration header file - do not edit */ +#ifndef BSP_MCU_DEVICE_PN_CFG_H_ +#define BSP_MCU_DEVICE_PN_CFG_H_ +#define BSP_MCU_R7FA6M3AH3CFB + #define BSP_ROM_SIZE_BYTES (2097152) + #define BSP_RAM_SIZE_BYTES (655360) + #define BSP_DATA_FLASH_SIZE_BYTES (65536) + #define BSP_PACKAGE_LQFP + #define BSP_PACKAGE_PINS (144) +#endif /* BSP_MCU_DEVICE_PN_CFG_H_ */ diff --git a/bsp/renesas/ra6m3-hmi-board/ra_cfg/fsp_cfg/bsp/bsp_mcu_family_cfg.h b/bsp/renesas/ra6m3-hmi-board/ra_cfg/fsp_cfg/bsp/bsp_mcu_family_cfg.h new file mode 100644 index 0000000000..92ab17bec3 --- /dev/null +++ b/bsp/renesas/ra6m3-hmi-board/ra_cfg/fsp_cfg/bsp/bsp_mcu_family_cfg.h @@ -0,0 +1,76 @@ +/* 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/ra6m3/bsp_mcu_info.h" + #include "bsp_clock_cfg.h" + #define BSP_MCU_GROUP_RA6M3 (1) + #define BSP_LOCO_HZ (32768) + #define BSP_MOCO_HZ (8000000) + #define BSP_SUB_CLOCK_HZ (32768) + #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) + #else + #error "Invalid HOCO frequency chosen (BSP_CFG_HOCO_FREQUENCY) in bsp_clock_cfg.h" + #endif + + #define BSP_CFG_FLL_ENABLE (0) + + #define BSP_CORTEX_VECTOR_TABLE_ENTRIES (16U) + #define BSP_VECTOR_TABLE_MAX_ENTRIES (112U) + #define BSP_MCU_VBATT_SUPPORT (1) + + #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_OFS1 (0xFFFFFEF8 | (1 << 2) | (3) | (1 << 8)) + #define BSP_CFG_ROM_REG_MPU_PC0_ENABLE (1) + #define BSP_CFG_ROM_REG_MPU_PC0_START (0xFFFFFFFC) + #define BSP_CFG_ROM_REG_MPU_PC0_END (0xFFFFFFFF) + #define BSP_CFG_ROM_REG_MPU_PC1_ENABLE (1) + #define BSP_CFG_ROM_REG_MPU_PC1_START (0xFFFFFFFC) + #define BSP_CFG_ROM_REG_MPU_PC1_END (0xFFFFFFFF) + #define BSP_CFG_ROM_REG_MPU_REGION0_ENABLE (1) + #define BSP_CFG_ROM_REG_MPU_REGION0_START (0x00FFFFFC) + #define BSP_CFG_ROM_REG_MPU_REGION0_END (0x00FFFFFF) + #define BSP_CFG_ROM_REG_MPU_REGION1_ENABLE (1) + #define BSP_CFG_ROM_REG_MPU_REGION1_START (0x200FFFFC) + #define BSP_CFG_ROM_REG_MPU_REGION1_END (0x200FFFFF) + #define BSP_CFG_ROM_REG_MPU_REGION2_ENABLE (1) + #define BSP_CFG_ROM_REG_MPU_REGION2_START (0x407FFFFC) + #define BSP_CFG_ROM_REG_MPU_REGION2_END (0x407FFFFF) + #define BSP_CFG_ROM_REG_MPU_REGION3_ENABLE (1) + #define BSP_CFG_ROM_REG_MPU_REGION3_START (0x400DFFFC) + #define BSP_CFG_ROM_REG_MPU_REGION3_END (0x400DFFFF) + #ifndef BSP_CLOCK_CFG_MAIN_OSC_WAIT + #define BSP_CLOCK_CFG_MAIN_OSC_WAIT (9) + #endif + /* Used to create IELS values for the interrupt initialization table g_interrupt_event_link_select. */ + #define BSP_PRV_IELS_ENUM(vector) (ELC_ ## vector) + + /* + ID Code + Note: To permanently lock and disable the debug interface define the BSP_ID_CODE_PERMANENTLY_LOCKED in the compiler settings. + WARNING: This will disable debug access to the part and cannot be reversed by a debug probe. + */ + #if defined(BSP_ID_CODE_PERMANENTLY_LOCKED) + #define BSP_CFG_ID_CODE_LONG_1 (0x00000000) + #define BSP_CFG_ID_CODE_LONG_2 (0x00000000) + #define BSP_CFG_ID_CODE_LONG_3 (0x00000000) + #define BSP_CFG_ID_CODE_LONG_4 (0x00000000) + #else + /* ID CODE: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF */ + #define BSP_CFG_ID_CODE_LONG_1 (0xFFFFFFFF) + #define BSP_CFG_ID_CODE_LONG_2 (0xFFFFFFFF) + #define BSP_CFG_ID_CODE_LONG_3 (0xFFFFFFFF) + #define BSP_CFG_ID_CODE_LONG_4 (0xffFFFFFF) + #endif +#endif /* BSP_MCU_FAMILY_CFG_H_ */ diff --git a/bsp/renesas/ra6m3-hmi-board/ra_cfg/fsp_cfg/bsp/bsp_pin_cfg.h b/bsp/renesas/ra6m3-hmi-board/ra_cfg/fsp_cfg/bsp/bsp_pin_cfg.h new file mode 100644 index 0000000000..1f0bb87fee --- /dev/null +++ b/bsp/renesas/ra6m3-hmi-board/ra_cfg/fsp_cfg/bsp/bsp_pin_cfg.h @@ -0,0 +1,8 @@ +/* generated configuration header file - do not edit */ +#ifndef BSP_PIN_CFG_H_ +#define BSP_PIN_CFG_H_ +#include "r_ioport.h" +extern const ioport_cfg_t g_bsp_pin_cfg; /* R7FA6M3AH3CFB.pincfg */ + +void BSP_PinConfigSecurityInit(); +#endif /* BSP_PIN_CFG_H_ */ diff --git a/bsp/renesas/ra6m3-hmi-board/ra_cfg/fsp_cfg/r_ioport_cfg.h b/bsp/renesas/ra6m3-hmi-board/ra_cfg/fsp_cfg/r_ioport_cfg.h new file mode 100644 index 0000000000..6b4353d238 --- /dev/null +++ b/bsp/renesas/ra6m3-hmi-board/ra_cfg/fsp_cfg/r_ioport_cfg.h @@ -0,0 +1,5 @@ +/* generated configuration header file - do not edit */ +#ifndef R_IOPORT_CFG_H_ +#define R_IOPORT_CFG_H_ +#define IOPORT_CFG_PARAM_CHECKING_ENABLE (BSP_CFG_PARAM_CHECKING_ENABLE) +#endif /* R_IOPORT_CFG_H_ */ diff --git a/bsp/renesas/ra6m3-hmi-board/ra_cfg/fsp_cfg/r_sci_uart_cfg.h b/bsp/renesas/ra6m3-hmi-board/ra_cfg/fsp_cfg/r_sci_uart_cfg.h new file mode 100644 index 0000000000..c785418bcf --- /dev/null +++ b/bsp/renesas/ra6m3-hmi-board/ra_cfg/fsp_cfg/r_sci_uart_cfg.h @@ -0,0 +1,8 @@ +/* generated configuration header file - do not edit */ +#ifndef R_SCI_UART_CFG_H_ +#define R_SCI_UART_CFG_H_ +#define SCI_UART_CFG_PARAM_CHECKING_ENABLE (BSP_CFG_PARAM_CHECKING_ENABLE) + #define SCI_UART_CFG_FIFO_SUPPORT (0) + #define SCI_UART_CFG_DTC_SUPPORTED (0) + #define SCI_UART_CFG_FLOW_CONTROL_SUPPORT (0) +#endif /* R_SCI_UART_CFG_H_ */ diff --git a/bsp/renesas/ra6m3-hmi-board/ra_gen/SConscript b/bsp/renesas/ra6m3-hmi-board/ra_gen/SConscript new file mode 100644 index 0000000000..09be271571 --- /dev/null +++ b/bsp/renesas/ra6m3-hmi-board/ra_gen/SConscript @@ -0,0 +1,19 @@ +Import('RTT_ROOT') +Import('rtconfig') +from building 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 ['gcc', 'armclang']: + if GetOption('target') != 'mdk5': + src = Glob('*.c') + CPPPATH = [cwd, ] + +group = DefineGroup('ra_gen', src, depend = [''], CPPPATH = CPPPATH) +Return('group') diff --git a/bsp/renesas/ra6m3-hmi-board/ra_gen/bsp_clock_cfg.h b/bsp/renesas/ra6m3-hmi-board/ra_gen/bsp_clock_cfg.h new file mode 100644 index 0000000000..a54c3b1c90 --- /dev/null +++ b/bsp/renesas/ra6m3-hmi-board/ra_gen/bsp_clock_cfg.h @@ -0,0 +1,24 @@ +/* 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 (24000000) /* XTAL 24000000Hz */ +#define BSP_CFG_PLL_SOURCE (BSP_CLOCKS_SOURCE_CLOCK_MAIN_OSC) /* PLL Src: XTAL */ +#define BSP_CFG_HOCO_FREQUENCY (2) /* HOCO 20MHz */ +#define BSP_CFG_PLL_DIV (BSP_CLOCKS_PLL_DIV_2) /* PLL Div /2 */ +#define BSP_CFG_PLL_MUL BSP_CLOCKS_PLL_MUL_20_0 /* PLL Mul x20.0 */ +#define BSP_CFG_CLOCK_SOURCE (BSP_CLOCKS_SOURCE_CLOCK_PLL) /* Clock Src: PLL */ +#define BSP_CFG_ICLK_DIV (BSP_CLOCKS_SYS_CLOCK_DIV_2) /* ICLK Div /2 */ +#define BSP_CFG_PCLKA_DIV (BSP_CLOCKS_SYS_CLOCK_DIV_2) /* PCLKA Div /2 */ +#define BSP_CFG_PCLKB_DIV (BSP_CLOCKS_SYS_CLOCK_DIV_4) /* PCLKB Div /4 */ +#define BSP_CFG_PCLKC_DIV (BSP_CLOCKS_SYS_CLOCK_DIV_4) /* PCLKC Div /4 */ +#define BSP_CFG_PCLKD_DIV (BSP_CLOCKS_SYS_CLOCK_DIV_2) /* PCLKD Div /2 */ +#define BSP_CFG_SDCLK_OUTPUT (1) /* SDCLKout On */ +#define BSP_CFG_BCLK_DIV (BSP_CLOCKS_SYS_CLOCK_DIV_2) /* BCLK Div /2 */ +#define BSP_CFG_BCLK_OUTPUT (2) /* BCLK/2 */ +#define BSP_CFG_UCK_DIV (BSP_CLOCKS_USB_CLOCK_DIV_5) /* UCLK Div /5 */ +#define BSP_CFG_FCLK_DIV (BSP_CLOCKS_SYS_CLOCK_DIV_4) /* FCLK Div /4 */ +#define BSP_CFG_CLKOUT_SOURCE (BSP_CLOCKS_CLOCK_DISABLED) /* CLKOUT Disabled */ +#define BSP_CFG_CLKOUT_DIV (BSP_CLOCKS_SYS_CLOCK_DIV_1) /* CLKOUT Div /1 */ +#endif /* BSP_CLOCK_CFG_H_ */ diff --git a/bsp/renesas/ra6m3-hmi-board/ra_gen/common_data.c b/bsp/renesas/ra6m3-hmi-board/ra_gen/common_data.c new file mode 100644 index 0000000000..50036c0adc --- /dev/null +++ b/bsp/renesas/ra6m3-hmi-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/ra6m3-hmi-board/ra_gen/common_data.h b/bsp/renesas/ra6m3-hmi-board/ra_gen/common_data.h new file mode 100644 index 0000000000..e2eb70836b --- /dev/null +++ b/bsp/renesas/ra6m3-hmi-board/ra_gen/common_data.h @@ -0,0 +1,16 @@ +/* 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 +/* 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/ra6m3-hmi-board/ra_gen/hal_data.c b/bsp/renesas/ra6m3-hmi-board/ra_gen/hal_data.c new file mode 100644 index 0000000000..cdcffb3b68 --- /dev/null +++ b/bsp/renesas/ra6m3-hmi-board/ra_gen/hal_data.c @@ -0,0 +1,83 @@ +/* generated HAL source file - do not edit */ +#include "hal_data.h" +sci_uart_instance_ctrl_t g_uart9_ctrl; + + baud_setting_t g_uart9_baud_setting = + { + /* Baud rate calculated with 0.160% error. */ .abcse = 0, .abcs = 0, .bgdm = 1, .cks = 0, .brr = 64, .mddr = (uint8_t) 256, .brme = false + }; + + /** UART extended configuration for UARTonSCI HAL driver */ + const sci_uart_extended_cfg_t g_uart9_cfg_extend = + { + .clock = SCI_UART_CLOCK_INT, + .rx_edge_start = SCI_UART_START_BIT_FALLING_EDGE, + .noise_cancel = SCI_UART_NOISE_CANCELLATION_DISABLE, + .rx_fifo_trigger = SCI_UART_RX_FIFO_TRIGGER_MAX, + .p_baud_setting = &g_uart9_baud_setting, + .flow_control = SCI_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 + }; + + /** 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 +}; +void g_hal_init(void) { +g_common_init(); +} diff --git a/bsp/renesas/ra6m3-hmi-board/ra_gen/hal_data.h b/bsp/renesas/ra6m3-hmi-board/ra_gen/hal_data.h new file mode 100644 index 0000000000..7e3e2152a5 --- /dev/null +++ b/bsp/renesas/ra6m3-hmi-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_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_uart_instance_ctrl_t g_uart9_ctrl; + extern const uart_cfg_t g_uart9_cfg; + extern const sci_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/ra6m3-hmi-board/ra_gen/main.c b/bsp/renesas/ra6m3-hmi-board/ra_gen/main.c new file mode 100644 index 0000000000..42c5904834 --- /dev/null +++ b/bsp/renesas/ra6m3-hmi-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/ra6m3-hmi-board/ra_gen/pin_data.c b/bsp/renesas/ra6m3-hmi-board/ra_gen/pin_data.c new file mode 100644 index 0000000000..cb6dc9d886 --- /dev/null +++ b/bsp/renesas/ra6m3-hmi-board/ra_gen/pin_data.c @@ -0,0 +1,63 @@ +/* generated pin source file - do not edit */ +#include "bsp_api.h" +#include "r_ioport_api.h" + + +const ioport_pin_cfg_t g_bsp_pin_cfg_data[] = { + { + .pin = BSP_IO_PORT_01_PIN_08, + .pin_cfg = ((uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_DEBUG) + }, + { + .pin = BSP_IO_PORT_01_PIN_09, + .pin_cfg = ((uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_SCI1_3_5_7_9) + }, + { + .pin = BSP_IO_PORT_01_PIN_10, + .pin_cfg = ((uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_SCI1_3_5_7_9) + }, + { + .pin = BSP_IO_PORT_03_PIN_00, + .pin_cfg = ((uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_DEBUG) + }, +}; + +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 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 diff --git a/bsp/renesas/ra6m3-hmi-board/ra_gen/vector_data.c b/bsp/renesas/ra6m3-hmi-board/ra_gen/vector_data.c new file mode 100644 index 0000000000..1bddd01208 --- /dev/null +++ b/bsp/renesas/ra6m3-hmi-board/ra_gen/vector_data.c @@ -0,0 +1,19 @@ +/* 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 + 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_uart_rxi_isr, /* SCI9 RXI (Received data full) */ + [1] = sci_uart_txi_isr, /* SCI9 TXI (Transmit data empty) */ + [2] = sci_uart_tei_isr, /* SCI9 TEI (Transmit end) */ + [3] = sci_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 (Received 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) */ + }; + #endif \ No newline at end of file diff --git a/bsp/renesas/ra6m3-hmi-board/ra_gen/vector_data.h b/bsp/renesas/ra6m3-hmi-board/ra_gen/vector_data.h new file mode 100644 index 0000000000..d1ae7d9cbd --- /dev/null +++ b/bsp/renesas/ra6m3-hmi-board/ra_gen/vector_data.h @@ -0,0 +1,23 @@ +/* generated vector header file - do not edit */ + #ifndef VECTOR_DATA_H + #define VECTOR_DATA_H + /* Number of interrupts allocated */ + #ifndef VECTOR_DATA_IRQ_COUNT + #define VECTOR_DATA_IRQ_COUNT (4) + #endif + /* ISR prototypes */ + void sci_uart_rxi_isr(void); + void sci_uart_txi_isr(void); + void sci_uart_tei_isr(void); + void sci_uart_eri_isr(void); + + /* Vector table allocations */ + #define VECTOR_NUMBER_SCI9_RXI ((IRQn_Type) 0) /* SCI9 RXI (Received data full) */ + #define SCI9_RXI_IRQn ((IRQn_Type) 0) /* SCI9 RXI (Received 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 /* VECTOR_DATA_H */ \ No newline at end of file diff --git a/bsp/renesas/ra6m3-hmi-board/rasc_version.txt b/bsp/renesas/ra6m3-hmi-board/rasc_version.txt new file mode 100644 index 0000000000..4eb7dbfd16 --- /dev/null +++ b/bsp/renesas/ra6m3-hmi-board/rasc_version.txt @@ -0,0 +1,3 @@ +# RASC version and installation file +3.5.0 +C:\Renesas\RA\sc_v2021-10_fsp_v3.5.0\eclipse\rasc.exe diff --git a/bsp/renesas/ra6m3-hmi-board/rtconfig.h b/bsp/renesas/ra6m3-hmi-board/rtconfig.h new file mode 100644 index 0000000000..4d8ef1fdb2 --- /dev/null +++ b/bsp/renesas/ra6m3-hmi-board/rtconfig.h @@ -0,0 +1,222 @@ +#ifndef RT_CONFIG_H__ +#define RT_CONFIG_H__ + +/* Automatically generated file; DO NOT EDIT. */ +/* RT-Thread Configuration */ + +/* RT-Thread Kernel */ + +#define RT_NAME_MAX 8 +#define RT_ALIGN_SIZE 8 +#define RT_THREAD_PRIORITY_32 +#define RT_THREAD_PRIORITY_MAX 32 +#define RT_TICK_PER_SECOND 1000 +#define RT_USING_OVERFLOW_CHECK +#define RT_USING_HOOK +#define RT_HOOK_USING_FUNC_PTR +#define RT_USING_IDLE_HOOK +#define RT_IDLE_HOOK_LIST_SIZE 4 +#define IDLE_THREAD_STACK_SIZE 256 +#define RT_USING_TIMER_SOFT +#define RT_TIMER_THREAD_PRIO 4 +#define RT_TIMER_THREAD_STACK_SIZE 512 + +/* kservice optimization */ + +#define RT_DEBUG +#define RT_DEBUG_COLOR + +/* 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_PAGE_MAX_ORDER 11 +#define RT_USING_SMALL_MEM +#define RT_USING_SMALL_MEM_AS_HEAP +#define RT_USING_HEAP + +/* Kernel Device Object */ + +#define RT_USING_DEVICE +#define RT_USING_CONSOLE +#define RT_CONSOLEBUF_SIZE 128 +#define RT_CONSOLE_DEVICE_NAME "uart9" +#define RT_VER_NUM 0x50001 +#define RT_USING_HW_ATOMIC +#define RT_USING_CPU_FFS +#define ARCH_ARM +#define ARCH_ARM_CORTEX_M +#define ARCH_ARM_CORTEX_M4 + +/* 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 + +/* 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 */ + +#define RT_LIBC_DEFAULT_TIMEZONE 8 + +/* POSIX (Portable Operating System Interface) layer */ + + +/* Interprocess Communication (IPC) */ + + +/* Socket is in the 'Network' category */ + + +/* Network */ + + +/* Utilities */ + + +/* RT-Thread Utestcases */ + + +/* RT-Thread online packages */ + +/* IoT - internet of things */ + + +/* Wi-Fi */ + +/* Marvell WiFi */ + + +/* Wiced 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 */ + + +/* PainterEngine: A cross-platform graphics application framework written in C language */ + + +/* 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 */ + + +/* Kendryte SDK */ + + +/* AI packages */ + + +/* miscellaneous packages */ + +/* project laboratory */ + +/* samples: kernel and components samples */ + + +/* entertainment: terminal games and other interesting software packages */ + + +/* Arduino libraries */ + + +/* Sensor libraries */ + + +/* Display libraries */ + + +/* Timing libraries */ + + +/* Project libraries */ + +#define SOC_FAMILY_RENESAS +#define SOC_SERIES_R7FA6M3 + +/* Hardware Drivers Config */ + +#define SOC_R7FA6M4AF + +/* Onboard Peripheral Drivers */ + +/* On-chip Peripheral Drivers */ + +#define BSP_USING_GPIO +#define BSP_USING_UART +#define BSP_USING_UART9 +#define BSP_UART9_RX_BUFSIZE 256 +#define BSP_UART9_TX_BUFSIZE 0 + +/* Board extended module Drivers */ + + +#endif diff --git a/bsp/renesas/ra6m3-hmi-board/rtconfig.py b/bsp/renesas/ra6m3-hmi-board/rtconfig.py new file mode 100644 index 0000000000..f7024ac808 --- /dev/null +++ b/bsp/renesas/ra6m3-hmi-board/rtconfig.py @@ -0,0 +1,102 @@ +import os +import sys + +# toolchains options +ARCH='arm' +CPU='cortex-m4' +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' + +if os.getenv('RTT_EXEC_PATH'): + EXEC_PATH = os.getenv('RTT_EXEC_PATH') + +BUILD = 'debug' +# BUILD = 'release' + +if PLATFORM == 'gcc': + # toolchains + PREFIX = 'arm-none-eabi-' + CC = PREFIX + 'gcc' + AS = PREFIX + 'gcc' + AR = PREFIX + 'ar' + CXX = PREFIX + 'g++' + LINK = PREFIX + 'gcc' + TARGET_EXT = 'elf' + SIZE = PREFIX + 'size' + OBJDUMP = PREFIX + 'objdump' + OBJCPY = PREFIX + 'objcopy' + NM = PREFIX + 'nm' + + DEVICE = ' -mcpu=cortex-m4 -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' + + 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-M4' + + CFLAGS = ' -mcpu=Cortex-M4 -xc -std=c99 --target=arm-arm-none-eabi -mfpu=fpv5-sp-d16 -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' + +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) \ No newline at end of file diff --git a/bsp/renesas/ra6m3-hmi-board/script/ac6/fsp_keep.via b/bsp/renesas/ra6m3-hmi-board/script/ac6/fsp_keep.via new file mode 100644 index 0000000000..d2aed8ac1c --- /dev/null +++ b/bsp/renesas/ra6m3-hmi-board/script/ac6/fsp_keep.via @@ -0,0 +1,33 @@ +--keep=*(.fixed_vectors*) +--keep=*(.application_vectors*) +--keep=*(.version) +--keep=bsp_rom_registers.o(.rom_registers*) +--keep=*(.mcuboot_sce9_key*) +--keep=*(.usb_*_desc_*) +--keep=*(.eh_frame*) +--keep=*(.code_in_ram*) +--keep=*(.noinit*) +--keep=*(.stack*) +--keep=*(.heap*) +--keep=*(.init_array*) +--keep=*(.fini_array*) +--keep=*(.id_code*) +--keep=*(.option_setting_ofs0*) +--keep=*(.option_setting_dualsel*) +--keep=*(.option_setting_sas*) +--keep=*(.option_setting_ofs1*) +--keep=*(.option_setting_backsel*) +--keep=*(.option_setting_bps*) +--keep=*(.option_setting_pbps*) +--keep=*(.option_setting_ofs1_sec*) +--keep=*(.option_setting_banksel_sec*) +--keep=*(.option_setting_bps_sec*) +--keep=*(.option_setting_ofs1_sel*) +--keep=*(.option_setting_banksel_sel*) +--keep=*(.option_setting_bps_sel*) +--keep=*(.data_flash*) +--keep=*(.qspi_flash*) +--keep=*(.code_in_qspi*) +--keep=*(.sdram*) +--keep=*(.frame*) +--keep=*(.bl_boundary.*) diff --git a/bsp/renesas/ra6m3-hmi-board/script/fsp.ld b/bsp/renesas/ra6m3-hmi-board/script/fsp.ld new file mode 100644 index 0000000000..e8da254219 --- /dev/null +++ b/bsp/renesas/ra6m3-hmi-board/script/fsp.ld @@ -0,0 +1,649 @@ +/* + Linker File for Renesas FSP +*/ + +INCLUDE memory_regions.ld + +/* Uncomment and set XIP_SECONDARY_SLOT_IMAGE to 1 below for the secondary XIP application image.*/ +/* + XIP_SECONDARY_SLOT_IMAGE = 1; +*/ + +QSPI_FLASH_PRV_LENGTH = DEFINED(QSPI_FLASH_SIZE) ? ABSOLUTE(QSPI_FLASH_SIZE) : ABSOLUTE(QSPI_FLASH_LENGTH); +OSPI_DEVICE_0_PRV_LENGTH = DEFINED(OSPI_DEVICE_0_SIZE) ? ABSOLUTE(OSPI_DEVICE_0_SIZE) : ABSOLUTE(OSPI_DEVICE_0_LENGTH); +OSPI_DEVICE_1_PRV_LENGTH = DEFINED(OSPI_DEVICE_1_SIZE) ? ABSOLUTE(OSPI_DEVICE_1_SIZE) : ABSOLUTE(OSPI_DEVICE_1_LENGTH); + +/* If a flat (secure) project has DEFINED RAM_NS_BUFFER_LENGTH, then emit IDAU symbols to allocate non-secure RAM. */ +__RESERVE_NS_RAM = !DEFINED(PROJECT_NONSECURE) && DEFINED(RAM_NS_BUFFER_LENGTH) && (OPTION_SETTING_S_LENGTH != 0); + +RAM_NS_BUFFER_BLOCK_LENGTH = DEFINED(RAM_NS_BUFFER_LENGTH) ? ALIGN(RAM_NS_BUFFER_LENGTH, 8192) : 0; +RAM_NS_BUFFER_LENGTH = DEFINED(RAM_NS_BUFFER_LENGTH) ? RAM_NS_BUFFER_LENGTH : 0; +RAM_NS_BUFFER_START = RAM_START + RAM_LENGTH - RAM_NS_BUFFER_LENGTH; +RAM_NS_BUFFER_BLOCK_START = RAM_START + RAM_LENGTH - RAM_NS_BUFFER_BLOCK_LENGTH; + +OPTION_SETTING_START_NS = 0x0100A180; + +/* This definition is used to avoid moving the counter in OPTION_SETTING regions for projects that should not configure option settings. + * Bootloader images do not configure option settings because they are owned by the bootloader. + * FSP_BOOTABLE_IMAGE is only defined in bootloader images. */ +__bl_FSP_BOOTABLE_IMAGE = 1; +__bln_FSP_BOOTABLE_IMAGE = 1; +PROJECT_SECURE_OR_FLAT = !DEFINED(PROJECT_NONSECURE) && OPTION_SETTING_LENGTH && !DEFINED(FSP_BOOTABLE_IMAGE); +USE_OPTION_SETTING_NS = DEFINED(PROJECT_NONSECURE) && !DEFINED(FSP_BOOTABLE_IMAGE); + +__bl_FLASH_IMAGE_START = !DEFINED(FLASH_BOOTLOADER_LENGTH) ? 0 : + FLASH_APPLICATION_IMAGE_NUMBER == 1 ? FLASH_BOOTLOADER_LENGTH + FLASH_BOOTLOADER_HEADER_LENGTH : + FLASH_BOOTLOADER_LENGTH + FLASH_BOOTLOADER_SCRATCH_LENGTH + FLASH_APPLICATION_S_LENGTH + FLASH_BOOTLOADER_HEADER_LENGTH; +__bl_FLASH_IMAGE_LENGTH = !DEFINED(FLASH_BOOTLOADER_LENGTH) ? 0 : + FLASH_APPLICATION_S_LENGTH - FLASH_BOOTLOADER_HEADER_LENGTH; +__bl_FLASH_IMAGE_END = __bl_FLASH_IMAGE_START + __bl_FLASH_IMAGE_LENGTH; +__bl_XIP_SECONDARY_FLASH_IMAGE_START = !DEFINED(FLASH_BOOTLOADER_LENGTH) ? 0 : + FLASH_BOOTLOADER_LENGTH + FLASH_APPLICATION_S_LENGTH + FLASH_BOOTLOADER_HEADER_LENGTH; +__bl_XIP_SECONDARY_FLASH_IMAGE_END = __bl_XIP_SECONDARY_FLASH_IMAGE_START + __bl_FLASH_IMAGE_LENGTH; +__bl_FLASH_NS_START = !DEFINED(FLASH_BOOTLOADER_LENGTH) ? 0 : + FLASH_APPLICATION_NS_LENGTH == 0 ? __bl_FLASH_IMAGE_END : + __bl_FLASH_IMAGE_START - FLASH_BOOTLOADER_HEADER_LENGTH + FLASH_APPLICATION_S_LENGTH; +__bl_FLASH_NSC_START = !DEFINED(FLASH_BOOTLOADER_LENGTH) ? 0 : + FLASH_APPLICATION_NS_LENGTH == 0 ? __bl_FLASH_IMAGE_END : + __bl_FLASH_NS_START - FLASH_APPLICATION_NSC_LENGTH; +__bl_RAM_NS_START = !DEFINED(FLASH_BOOTLOADER_LENGTH) ? 0 : + FLASH_APPLICATION_NS_LENGTH == 0 ? RAM_START + RAM_LENGTH : + RAM_START + RAM_LENGTH - RAM_APPLICATION_NS_LENGTH; +__bl_RAM_NSC_START = !DEFINED(FLASH_BOOTLOADER_LENGTH) ? 0 : + FLASH_APPLICATION_NS_LENGTH == 0 ? RAM_START + RAM_LENGTH : + __bl_RAM_NS_START - RAM_APPLICATION_NSC_LENGTH; +__bl_FLASH_NS_IMAGE_START = !DEFINED(FLASH_BOOTLOADER_LENGTH) ? 0 : + FLASH_APPLICATION_NS_LENGTH == 0 ? __bl_FLASH_IMAGE_END : + __bl_FLASH_NS_START + FLASH_BOOTLOADER_HEADER_LENGTH_2; +__bln_FLASH_IMAGE_START = __bl_FLASH_NS_IMAGE_START; +__bln_FLASH_IMAGE_LENGTH = !DEFINED(FLASH_BOOTLOADER_LENGTH) ? 0 : + FLASH_APPLICATION_NS_LENGTH == 0 ? __bl_FLASH_IMAGE_END : + FLASH_APPLICATION_NS_LENGTH - FLASH_BOOTLOADER_HEADER_LENGTH_2; + +XIP_SECONDARY_SLOT_IMAGE = DEFINED(XIP_SECONDARY_SLOT_IMAGE) ? XIP_SECONDARY_SLOT_IMAGE : 0; +FLASH_ORIGIN = !DEFINED(FLASH_IMAGE_START) ? FLASH_START : + XIP_SECONDARY_SLOT_IMAGE == 1 ? XIP_SECONDARY_FLASH_IMAGE_START : + FLASH_IMAGE_START; +LIMITED_FLASH_LENGTH = DEFINED(FLASH_IMAGE_LENGTH) ? FLASH_IMAGE_LENGTH : + DEFINED(FLASH_BOOTLOADER_LENGTH) ? FLASH_BOOTLOADER_LENGTH : + FLASH_LENGTH; + +/* Define memory regions. */ +MEMORY +{ + FLASH (rx) : ORIGIN = FLASH_ORIGIN, LENGTH = LIMITED_FLASH_LENGTH + RAM (rwx) : ORIGIN = RAM_START, LENGTH = RAM_LENGTH + DATA_FLASH (rx) : ORIGIN = DATA_FLASH_START, LENGTH = DATA_FLASH_LENGTH + QSPI_FLASH (rx) : ORIGIN = QSPI_FLASH_START, LENGTH = QSPI_FLASH_PRV_LENGTH + OSPI_DEVICE_0 (rx) : ORIGIN = OSPI_DEVICE_0_START, LENGTH = OSPI_DEVICE_0_PRV_LENGTH + OSPI_DEVICE_1 (rx) : ORIGIN = OSPI_DEVICE_1_START, LENGTH = OSPI_DEVICE_1_PRV_LENGTH + OSPI_DEVICE_0_RAM (rwx) : ORIGIN = OSPI_DEVICE_0_START, LENGTH = OSPI_DEVICE_0_PRV_LENGTH + OSPI_DEVICE_1_RAM (rwx) : ORIGIN = OSPI_DEVICE_1_START, LENGTH = OSPI_DEVICE_1_PRV_LENGTH + SDRAM (rwx) : ORIGIN = SDRAM_START, LENGTH = SDRAM_LENGTH + OPTION_SETTING (r): ORIGIN = OPTION_SETTING_START, LENGTH = OPTION_SETTING_LENGTH + OPTION_SETTING_S (r): ORIGIN = OPTION_SETTING_S_START, LENGTH = OPTION_SETTING_S_LENGTH + ID_CODE (rx) : ORIGIN = ID_CODE_START, LENGTH = ID_CODE_LENGTH +} + +/* Library configurations */ +GROUP(libgcc.a 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)) + + /* section information for finsh shell */ + . = ALIGN(4); + __fsymtab_start = .; + KEEP(*(FSymTab)) + __fsymtab_end = .; + + . = ALIGN(4); + __vsymtab_start = .; + KEEP(*(VSymTab)) + __vsymtab_end = .; + + /* section information for initial. */ + . = ALIGN(4); + __rt_init_start = .; + KEEP(*(SORT(.rti_fn*))) + __rt_init_end = .; + + . = ALIGN(4); + KEEP(*(FalPartTable)) + + /* .ctors */ + *crtbegin.o(.ctors) + *crtbegin?.o(.ctors) + *(EXCLUDE_FILE(*crtend?.o *crtend.o) .ctors) + *(SORT(.ctors.*)) + *(.ctors) + + /* .dtors */ + *crtbegin.o(.dtors) + *crtbegin?.o(.dtors) + *(EXCLUDE_FILE(*crtend?.o *crtend.o) .dtors) + *(SORT(.dtors.*)) + *(.dtors) + + *(.rodata*) + __usb_dev_descriptor_start_fs = .; + KEEP(*(.usb_device_desc_fs*)) + __usb_cfg_descriptor_start_fs = .; + KEEP(*(.usb_config_desc_fs*)) + __usb_interface_descriptor_start_fs = .; + KEEP(*(.usb_interface_desc_fs*)) + __usb_descriptor_end_fs = .; + __usb_dev_descriptor_start_hs = .; + KEEP(*(.usb_device_desc_hs*)) + __usb_cfg_descriptor_start_hs = .; + KEEP(*(.usb_config_desc_hs*)) + __usb_interface_descriptor_start_hs = .; + KEEP(*(.usb_interface_desc_hs*)) + __usb_descriptor_end_hs = .; + + KEEP(*(.eh_frame*)) + + __ROM_End = .; + } > FLASH = 0xFF + + __Vectors_Size = __Vectors_End - __Vectors; + + .ARM.extab : + { + *(.ARM.extab* .gnu.linkonce.armextab.*) + } > FLASH + + __exidx_start = .; + .ARM.exidx : + { + *(.ARM.exidx* .gnu.linkonce.armexidx.*) + } > FLASH + __exidx_end = .; + + /* To copy multiple ROM to RAM sections, + * uncomment .copy.table section and, + * define __STARTUP_COPY_MULTIPLE in startup_ARMCMx.S */ + /* + .copy.table : + { + . = ALIGN(4); + __copy_table_start__ = .; + LONG (__etext) + LONG (__data_start__) + LONG (__data_end__ - __data_start__) + LONG (__etext2) + LONG (__data2_start__) + LONG (__data2_end__ - __data2_start__) + __copy_table_end__ = .; + } > FLASH + */ + + /* To clear multiple BSS sections, + * uncomment .zero.table section and, + * define __STARTUP_CLEAR_BSS_MULTIPLE in startup_ARMCMx.S */ + /* + .zero.table : + { + . = ALIGN(4); + __zero_table_start__ = .; + LONG (__bss_start__) + LONG (__bss_end__ - __bss_start__) + LONG (__bss2_start__) + LONG (__bss2_end__ - __bss2_start__) + __zero_table_end__ = .; + } > FLASH + */ + + __etext = .; + + __tz_RAM_S = ORIGIN(RAM); + + /* If DTC is used, put the DTC vector table at the start of SRAM. + This avoids memory holes due to 1K alignment required by it. */ + .fsp_dtc_vector_table (NOLOAD) : + { + . = ORIGIN(RAM); + *(.fsp_dtc_vector_table) + } > RAM + + /* Initialized data section. */ + .data : + { + __data_start__ = .; + . = ALIGN(4); + + __Code_In_RAM_Start = .; + + KEEP(*(.code_in_ram*)) + __Code_In_RAM_End = .; + + *(vtable) + /* Don't use *(.data*) because it will place data meant for .data_flash in this section. */ + *(.data.*) + *(.data) + + . = ALIGN(4); + /* preinit data */ + PROVIDE_HIDDEN (__preinit_array_start = .); + KEEP(*(.preinit_array)) + PROVIDE_HIDDEN (__preinit_array_end = .); + + . = ALIGN(4); + /* init data */ + PROVIDE_HIDDEN (__init_array_start = .); + KEEP(*(SORT(.init_array.*))) + KEEP(*(.init_array)) + PROVIDE_HIDDEN (__init_array_end = .); + + + . = ALIGN(4); + /* finit data */ + PROVIDE_HIDDEN (__fini_array_start = .); + KEEP(*(SORT(.fini_array.*))) + KEEP(*(.fini_array)) + PROVIDE_HIDDEN (__fini_array_end = .); + + KEEP(*(.jcr*)) + + . = ALIGN(4); + + /* All data end */ + __data_end__ = .; + + } > RAM AT > FLASH + + + /* TrustZone Secure Gateway Stubs Section. */ + + /* Some arithmetic is needed to eliminate unnecessary FILL for secure projects. */ + /* 1. Get the address to the next block after the .data section in FLASH. */ + DATA_END = LOADADDR(.data) + SIZEOF(.data); + /* 2. Determine the secure gateway stubs address either by the provided linker variable or the next 1024-byte block after .data */ + SGSTUBS_LOC = (DEFINED(PROJECT_SECURE) && DEFINED(FLASH_NSC_START)) ? ABSOLUTE(FLASH_NSC_START) : ALIGN(DATA_END, 1024); + /* 3. Manually specify the start location for .gnu.sgstubs */ + .gnu.sgstubs SGSTUBS_LOC : ALIGN(1024) + { + __tz_FLASH_C = DEFINED(FLASH_NSC_START) ? ABSOLUTE(FLASH_NSC_START) : __RESERVE_NS_RAM ? ABSOLUTE(FLASH_START + FLASH_LENGTH) : ALIGN(1024); + _start_sg = .; + *(.gnu.sgstubs*) + . = ALIGN(32); + _end_sg = .; + } > FLASH + + __tz_FLASH_N = DEFINED(FLASH_NS_START) ? ABSOLUTE(FLASH_NS_START) : __RESERVE_NS_RAM ? ABSOLUTE(FLASH_START + FLASH_LENGTH) : FLASH_LENGTH < 32768 ? FLASH_LENGTH : ALIGN(32768); + FLASH_NS_IMAGE_START = DEFINED(FLASH_NS_IMAGE_START) ? FLASH_NS_IMAGE_START : __tz_FLASH_N; + + /* Note: There are no secure/non-secure boundaries for QSPI. These symbols are provided for the RA configuration tool. */ + __tz_QSPI_FLASH_S = ORIGIN(QSPI_FLASH); + + /* QSPI_FLASH section to be downloaded via debugger */ + .qspi_flash : + { + __qspi_flash_start__ = .; + KEEP(*(.qspi_flash*)) + KEEP(*(.code_in_qspi*)) + __qspi_flash_end__ = .; + } > QSPI_FLASH + __qspi_flash_code_size__ = __qspi_flash_end__ - __qspi_flash_start__; + + /* QSPI_FLASH non-retentive section, creates a copy in internal flash that can be copied to QSPI */ + __qspi_flash_code_addr__ = __etext + (__data_end__ - __data_start__); + .qspi_non_retentive : AT (__qspi_flash_code_addr__) + { + __qspi_non_retentive_start__ = .; + KEEP(*(.qspi_non_retentive*)) + __qspi_non_retentive_end__ = .; + } > QSPI_FLASH + __qspi_non_retentive_size__ = __qspi_non_retentive_end__ - __qspi_non_retentive_start__; + + __qspi_region_max_size__ = 0x4000000; /* Must be the same as defined in MEMORY above */ + __qspi_region_start_address__ = __qspi_flash_start__; + __qspi_region_end_address__ = __qspi_flash_start__ + __qspi_region_max_size__; + + /* Note: There are no secure/non-secure boundaries for QSPI. These symbols are provided for the RA configuration tool. */ + __tz_QSPI_FLASH_N = __qspi_non_retentive_end__; + + /* Support for OctaRAM */ + .OSPI_DEVICE_0_NO_LOAD (NOLOAD): + { + . = ALIGN(4); + __ospi_device_0_start__ = .; + *(.ospi_device_0_no_load*) + . = ALIGN(4); + __ospi_device_0_end__ = .; + } > OSPI_DEVICE_0_RAM + + .OSPI_DEVICE_1_NO_LOAD (NOLOAD): + { + . = ALIGN(4); + __ospi_device_1_start__ = .; + *(.ospi_device_1_no_load*) + . = ALIGN(4); + __ospi_device_1_end__ = .; + } > OSPI_DEVICE_1_RAM + + /* Note: There are no secure/non-secure boundaries for QSPI. These symbols are provided for the RA configuration tool. */ + __tz_OSPI_DEVICE_0_S = ORIGIN(OSPI_DEVICE_0); + + /* OSPI_DEVICE_0 section to be downloaded via debugger */ + .OSPI_DEVICE_0 : + { + __ospi_device_0_start__ = .; + KEEP(*(.ospi_device_0*)) + KEEP(*(.code_in_ospi_device_0*)) + __ospi_device_0_end__ = .; + } > OSPI_DEVICE_0 + __ospi_device_0_code_size__ = __ospi_device_0_end__ - __ospi_device_0_start__; + + /* OSPI_DEVICE_0 non-retentive section, creates a copy in internal flash that can be copied to OSPI */ + __ospi_device_0_code_addr__ = __etext + (__data_end__ - __data_start__); + .ospi_device_0_non_retentive : AT (__ospi_device_0_code_addr__) + { + __ospi_device_0_non_retentive_start__ = .; + KEEP(*(.ospi_device_0_non_retentive*)) + __ospi_device_0_non_retentive_end__ = .; + } > OSPI_DEVICE_0 + __ospi_device_0_non_retentive_size__ = __ospi_device_0_non_retentive_end__ - __ospi_device_0_non_retentive_start__; + + __ospi_device_0_region_max_size__ = 0x8000000; /* Must be the same as defined in MEMORY above */ + __ospi_device_0_region_start_address__ = __ospi_device_0_start__; + __ospi_device_0_region_end_address__ = __ospi_device_0_start__ + __ospi_device_0_region_max_size__; + + /* Note: There are no secure/non-secure boundaries for OSPI. These symbols are provided for the RA configuration tool. */ + __tz_OSPI_DEVICE_0_N = __ospi_device_0_non_retentive_end__; + + /* Note: There are no secure/non-secure boundaries for OSPI. These symbols are provided for the RA configuration tool. */ + __tz_OSPI_DEVICE_1_S = ORIGIN(OSPI_DEVICE_1); + + /* OSPI_DEVICE_1 section to be downloaded via debugger */ + .OSPI_DEVICE_1 : + { + __ospi_device_1_start__ = .; + KEEP(*(.ospi_device_1*)) + KEEP(*(.code_in_ospi_device_1*)) + __ospi_device_1_end__ = .; + } > OSPI_DEVICE_1 + __ospi_device_1_code_size__ = __ospi_device_1_end__ - __ospi_device_1_start__; + + /* OSPI_DEVICE_1 non-retentive section, creates a copy in internal flash that can be copied to OSPI */ + __ospi_device_1_code_addr__ = __etext + (__data_end__ - __data_start__); + .ospi_device_1_non_retentive : AT (__ospi_device_1_code_addr__) + { + __ospi_device_1_non_retentive_start__ = .; + KEEP(*(.ospi_device_1_non_retentive*)) + __ospi_device_1_non_retentive_end__ = .; + } > OSPI_DEVICE_1 + __ospi_device_1_non_retentive_size__ = __ospi_device_1_non_retentive_end__ - __ospi_device_1_non_retentive_start__; + + __ospi_device_1_region_max_size__ = 0x10000000; /* Must be the same as defined in MEMORY above */ + __ospi_device_1_region_start_address__ = __ospi_device_1_start__; + __ospi_device_1_region_end_address__ = __ospi_device_1_start__ + __ospi_device_1_region_max_size__; + + /* Note: There are no secure/non-secure boundaries for OSPI. These symbols are provided for the RA configuration tool. */ + __tz_OSPI_DEVICE_1_N = __ospi_device_1_non_retentive_end__; + + .noinit (NOLOAD): + { + . = ALIGN(4); + __noinit_start = .; + KEEP(*(.noinit*)) + . = ALIGN(8); + /* Place the FreeRTOS heap here so that the __HeapLimit calculation does not include the freertos heap. */ + KEEP(*(.heap.*)) + __noinit_end = .; + } > RAM + + .bss : + { + . = ALIGN(4); + __bss_start__ = .; + *(.bss*) + *(COMMON) + . = ALIGN(4); + __bss_end__ = .; + } > RAM + + .heap (NOLOAD): + { + . = ALIGN(8); + __HeapBase = .; + /* Place the STD heap here. */ + KEEP(*(.heap)) + __HeapLimit = .; + } > RAM + + /* Stacks are stored in this section. */ + .stack_dummy (NOLOAD): + { + . = ALIGN(8); + __StackLimit = .; + /* Main stack */ + KEEP(*(.stack)) + __StackTop = .; + /* Thread stacks */ + KEEP(*(.stack*)) + __StackTopAll = .; + } > RAM + + PROVIDE(__stack = __StackTopAll); + + /* This symbol represents the end of user allocated RAM. The RAM after this symbol can be used + at run time for things such as ThreadX memory pool allocations. */ + __RAM_segment_used_end__ = ALIGN(__StackTopAll , 4); + + /* RAM_NSC_START can be used to set a fixed address for non-secure callable RAM in secure projects. + * If it is not specified, the address for NSC RAM is the end of RAM aligned to a 1K boundary. + * In flat projects that require non-secure RAM, this variable is set to the start of non-secure RAM. */ + __tz_RAM_C = DEFINED(RAM_NSC_START) ? ABSOLUTE(RAM_NSC_START) : __RESERVE_NS_RAM ? ABSOLUTE(RAM_NS_BUFFER_BLOCK_START) : ALIGN(__RAM_segment_used_end__, 1024); + + /* RAM_NS_START can be used to set a fixed address for non-secure RAM in secure projects or flat projects. + * RAM_NS_BUFFER_BLOCK_LENGTH is used to allocate non-secure buffers in a flat project. If it is not + * specified, the address for NSC RAM is the end of RAM aligned to an 8K boundary. + * In flat projects that require non-secure RAM, this variable is set to the start of non-secure RAM. */ + __tz_RAM_N = DEFINED(RAM_NS_START) ? ABSOLUTE(RAM_NS_START) : __RESERVE_NS_RAM ? ABSOLUTE(RAM_NS_BUFFER_BLOCK_START) : ALIGN(__tz_RAM_C, 8192); + + /* Non-secure buffers must be in non-secure RAM. This is primarily used for the EDMAC in flat projects. + * The EDMAC is a non-secure bus master and can only access non-secure RAM. */ + .ns_buffer (NOLOAD): + { + /* Allocate RAM on a 32-byte boundary to help with placement of Ethernet buffers. */ + . = __RESERVE_NS_RAM ? ABSOLUTE(RAM_NS_BUFFER_START & 0xFFFFFFE0) : .; + + KEEP(*(.ns_buffer*)) + } > RAM + + /* Data flash. */ + .data_flash : + { + . = ORIGIN(DATA_FLASH); + __tz_DATA_FLASH_S = .; + __Data_Flash_Start = .; + KEEP(*(.data_flash*)) + __Data_Flash_End = .; + + __tz_DATA_FLASH_N = DEFINED(DATA_FLASH_NS_START) ? ABSOLUTE(DATA_FLASH_NS_START) : __RESERVE_NS_RAM ? ABSOLUTE(DATA_FLASH_START + DATA_FLASH_LENGTH) : ALIGN(1024); + } > DATA_FLASH + + /* Note: There are no secure/non-secure boundaries for SDRAM. These symbols are provided for the RA configuration tool. */ + __tz_SDRAM_S = ORIGIN(SDRAM); + + /* SDRAM */ + .sdram (NOLOAD): + { + __SDRAM_Start = .; + KEEP(*(.sdram*)) + KEEP(*(.frame*)) + __SDRAM_End = .; + } > SDRAM + + /* Note: There are no secure/non-secure boundaries for SDRAM. These symbols are provided for the RA configuration tool. */ + __tz_SDRAM_N = __SDRAM_End; + + /* Note: There are no secure/non-secure boundaries for ID_CODE. These symbols are provided for the RA configuration tool. */ + __tz_ID_CODE_S = ORIGIN(ID_CODE); + + .id_code : + { + __ID_Code_Start = .; + KEEP(*(.id_code*)) + __ID_Code_End = .; + } > ID_CODE + + /* Note: There are no secure/non-secure boundaries for ID_CODE. These symbols are provided for the RA configuration tool. */ + __tz_ID_CODE_N = __ID_Code_End; + + /* Symbol required for RA Configuration tool. */ + __tz_OPTION_SETTING_S = ORIGIN(OPTION_SETTING); + + .option_setting : + { + __OPTION_SETTING_Start = .; + KEEP(*(.option_setting_ofs0)) + . = PROJECT_SECURE_OR_FLAT ? __OPTION_SETTING_Start + 0x10 : __OPTION_SETTING_Start; + KEEP(*(.option_setting_dualsel)) + . = PROJECT_SECURE_OR_FLAT ? __OPTION_SETTING_Start + 0x34 : __OPTION_SETTING_Start; + KEEP(*(.option_setting_sas)) + __OPTION_SETTING_End = .; + } > OPTION_SETTING = 0xFF + + /* Symbol required for RA Configuration tool. */ + __tz_OPTION_SETTING_N = OPTION_SETTING_START_NS; + + .option_setting_ns : + { + __OPTION_SETTING_NS_Start = .; + KEEP(*(.option_setting_ofs1)) + . = USE_OPTION_SETTING_NS ? __OPTION_SETTING_NS_Start + 0x10 : __OPTION_SETTING_NS_Start; + KEEP(*(.option_setting_banksel)) + . = USE_OPTION_SETTING_NS ? __OPTION_SETTING_NS_Start + 0x40 : __OPTION_SETTING_NS_Start; + KEEP(*(.option_setting_bps0)) + . = USE_OPTION_SETTING_NS ? __OPTION_SETTING_NS_Start + 0x44 : __OPTION_SETTING_NS_Start; + KEEP(*(.option_setting_bps1)) + . = USE_OPTION_SETTING_NS ? __OPTION_SETTING_NS_Start + 0x48 : __OPTION_SETTING_NS_Start; + KEEP(*(.option_setting_bps2)) + . = USE_OPTION_SETTING_NS ? __OPTION_SETTING_NS_Start + 0x60 : __OPTION_SETTING_NS_Start; + KEEP(*(.option_setting_pbps0)) + . = USE_OPTION_SETTING_NS ? __OPTION_SETTING_NS_Start + 0x64 : __OPTION_SETTING_NS_Start; + KEEP(*(.option_setting_pbps1)) + . = USE_OPTION_SETTING_NS ? __OPTION_SETTING_NS_Start + 0x68 : __OPTION_SETTING_NS_Start; + KEEP(*(.option_setting_pbps2)) + __OPTION_SETTING_NS_End = .; + } > OPTION_SETTING = 0xFF + + /* Symbol required for RA Configuration tool. */ + __tz_OPTION_SETTING_S_S = ORIGIN(OPTION_SETTING_S); + + .option_setting_s : + { + __OPTION_SETTING_S_Start = .; + KEEP(*(.option_setting_ofs1_sec)) + . = PROJECT_SECURE_OR_FLAT ? __OPTION_SETTING_S_Start + 0x10 : __OPTION_SETTING_S_Start; + KEEP(*(.option_setting_banksel_sec)) + . = PROJECT_SECURE_OR_FLAT ? __OPTION_SETTING_S_Start + 0x40 : __OPTION_SETTING_S_Start; + KEEP(*(.option_setting_bps_sec0)) + . = PROJECT_SECURE_OR_FLAT ? __OPTION_SETTING_S_Start + 0x44 : __OPTION_SETTING_S_Start; + KEEP(*(.option_setting_bps_sec1)) + . = PROJECT_SECURE_OR_FLAT ? __OPTION_SETTING_S_Start + 0x48 : __OPTION_SETTING_S_Start; + KEEP(*(.option_setting_bps_sec2)) + . = PROJECT_SECURE_OR_FLAT ? __OPTION_SETTING_S_Start + 0x60 : __OPTION_SETTING_S_Start; + KEEP(*(.option_setting_pbps_sec0)) + . = PROJECT_SECURE_OR_FLAT ? __OPTION_SETTING_S_Start + 0x64 : __OPTION_SETTING_S_Start; + KEEP(*(.option_setting_pbps_sec1)) + . = PROJECT_SECURE_OR_FLAT ? __OPTION_SETTING_S_Start + 0x68 : __OPTION_SETTING_S_Start; + KEEP(*(.option_setting_pbps_sec2)) + . = PROJECT_SECURE_OR_FLAT ? __OPTION_SETTING_S_Start + 0x80 : __OPTION_SETTING_S_Start; + KEEP(*(.option_setting_ofs1_sel)) + . = PROJECT_SECURE_OR_FLAT ? __OPTION_SETTING_S_Start + 0x90 : __OPTION_SETTING_S_Start; + KEEP(*(.option_setting_banksel_sel)) + . = PROJECT_SECURE_OR_FLAT ? __OPTION_SETTING_S_Start + 0xC0 : __OPTION_SETTING_S_Start; + KEEP(*(.option_setting_bps_sel0)) + . = PROJECT_SECURE_OR_FLAT ? __OPTION_SETTING_S_Start + 0xC4 : __OPTION_SETTING_S_Start; + KEEP(*(.option_setting_bps_sel1)) + . = PROJECT_SECURE_OR_FLAT ? __OPTION_SETTING_S_Start + 0xC8 : __OPTION_SETTING_S_Start; + KEEP(*(.option_setting_bps_sel2)) + __OPTION_SETTING_S_End = .; + } > OPTION_SETTING_S = 0xFF + + /* Symbol required for RA Configuration tool. */ + __tz_OPTION_SETTING_S_N = __OPTION_SETTING_S_End; +} diff --git a/bsp/renesas/ra6m3-hmi-board/script/fsp.scat b/bsp/renesas/ra6m3-hmi-board/script/fsp.scat new file mode 100644 index 0000000000..3db1452f53 --- /dev/null +++ b/bsp/renesas/ra6m3-hmi-board/script/fsp.scat @@ -0,0 +1,670 @@ +#! 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 + +#ifdef FLASH_BOOTLOADER_LENGTH + +#define BL_FLASH_IMAGE_START (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) +#define BL_FLASH_IMAGE_END (BL_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 + +#define FLASH_ORIGIN FLASH_IMAGE_START +#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 + +#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 +0 ALIGN 1024 +#endif + +#ifndef FLASH_NS_START +#define FLASH_NS_START +0 ALIGN 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 + +#define OPTION_SETTING_NS_OFFSET 0x80 + +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) + } + + 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 + { + } + + ; 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*) + } + + __tz_RAM_C RAM_NSC_START EMPTY 0 + { + } + + __tz_RAM_N RAM_NS_START EMPTY 0 + { + } + +#ifdef FLASH_BOOTLOADER_LENGTH + + __bl_FLASH_IMAGE_START BL_FLASH_IMAGE_START OVERLAY UNINIT 4 + { + *(.bl_boundary.bl_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) + } + +#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 + { + } +} + +LOAD_REGION_NSC_FLASH FLASH_NSC_START +{ + __tz_FLASH_C FLASH_NSC_START EMPTY 0 + { + } + + EXEC_NSCR FLASH_NSC_START FIXED + { + *(Veneer$$CMSE) + } + + __tz_FLASH_N FLASH_NS_START EMPTY 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 + { + } + + ID_CODE +0 FIXED + { + *(.id_code*) + } + + __tz_ID_CODE_N +0 EMPTY 0 + { + } +} +#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 + +#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) + 0x10 - (ImageBase(OFS0)+ImageLength(OFS0))) + { + + } + + DUALSEL 0x0100A100+0x10 FIXED + { + *(.option_setting_dualsel) + } + + UNUSED_1 (ImageBase(DUALSEL)+ImageLength(DUALSEL)) FIXED FILL 0xFFFFFFFF (ImageBase(OFS0) + 0x34 - (ImageBase(DUALSEL)+ImageLength(DUALSEL))) + { + + } + + SAS 0x0100A100+0x34 FIXED + { + *(.option_setting_sas) + } + + UNUSED_2 (ImageBase(SAS)+ImageLength(SAS)) FIXED FILL 0xFFFFFFFF (ImageBase(OFS0) + 0x80 - (ImageBase(SAS)+ImageLength(SAS))) + { + + } +#else + OFS1 0x0100A100+0x80 FIXED + { + *(.option_setting_ofs1) + } + + UNUSED_3 (ImageBase(OFS1)+ImageLength(OFS1)) FIXED FILL 0xFFFFFFFF (ImageBase(OFS1) + 0x10 - (ImageBase(OFS1)+ImageLength(OFS1))) + { + + } + + BANKSEL 0x0100A100+0x90 FIXED + { + *(.option_setting_banksel) + } + + UNUSED_4 (ImageBase(BANKSEL)+ImageLength(BANKSEL)) FIXED FILL 0xFFFFFFFF (ImageBase(OFS1) + 0x40 - (ImageBase(BANKSEL)+ImageLength(BANKSEL))) + { + + } + + BPS 0x0100A100+0xC0 FIXED + { + *(.option_setting_bps0) + *(.option_setting_bps1) + *(.option_setting_bps2) + } + + UNUSED_5 (ImageBase(BPS)+ImageLength(BPS)) FIXED FILL 0xFFFFFFFF (ImageBase(OFS1) + 0x60 - (ImageBase(BPS)+ImageLength(BPS))) + { + + } + + PBPS 0x0100A100+0xE0 FIXED + { + *(.option_setting_pbps0) + *(.option_setting_pbps1) + *(.option_setting_pbps2) + } + + UNUSED_6 (ImageBase(PBPS)+ImageLength(PBPS)) FIXED FILL 0xFFFFFFFF (ImageBase(OFS1) + 0x80 - (ImageBase(PBPS)+ImageLength(PBPS))) + { + + } +#endif + + __tz_OPTION_SETTING_N OPTION_SETTING_START + OPTION_SETTING_NS_OFFSET EMPTY 0 + { + } +} + +#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) + 0x10 - (ImageBase(OFS1_SEC)+ImageLength(OFS1_SEC))) + { + + } + + BANKSEL_SEC OPTION_SETTING_S_START+0x10 FIXED + { + *(.option_setting_banksel_sec) + } + + UNUSED_8 (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) + } + + UNUSED_9 (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) + } + + UNUSED_10 (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_11 (ImageBase(OFS1_SEL)+ImageLength(OFS1_SEL)) FIXED FILL 0xFFFFFFFF (ImageBase(OFS1_SEC) + 0x90 - (ImageBase(OFS1_SEL)+ImageLength(OFS1_SEL))) + { + + } + + BANKSEL_SEL OPTION_SETTING_S_START+0x90 FIXED + { + *(.option_setting_banksel_sel) + } + + UNUSED_12 (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) + } + + UNUSED_13 (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 + +LOAD_REGION_DATA_FLASH DATA_FLASH_START DATA_FLASH_LENGTH +{ + __tz_DATA_FLASH_S DATA_FLASH_S_START EMPTY 0 + { + } + DATA_FLASH +0 FIXED + { + *(.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*) + } + __tz_SDRAM_N SDRAM_NS_START EMPTY 0 + { + } +} diff --git a/bsp/renesas/ra6m3-hmi-board/script/memory_regions.ld b/bsp/renesas/ra6m3-hmi-board/script/memory_regions.ld new file mode 100644 index 0000000000..836a3b55c2 --- /dev/null +++ b/bsp/renesas/ra6m3-hmi-board/script/memory_regions.ld @@ -0,0 +1,22 @@ + + /* generated memory regions file - do not edit */ + RAM_START = 0x1FFE0000; + RAM_LENGTH = 0xA0000; + FLASH_START = 0x00000000; + FLASH_LENGTH = 0x200000; + DATA_FLASH_START = 0x40100000; + DATA_FLASH_LENGTH = 0x10000; + OPTION_SETTING_START = 0x00000000; + OPTION_SETTING_LENGTH = 0x0; + OPTION_SETTING_S_START = 0x00000000; + OPTION_SETTING_S_LENGTH = 0x0; + ID_CODE_START = 0x0100A150; + ID_CODE_LENGTH = 0x10; + SDRAM_START = 0x90000000; + SDRAM_LENGTH = 0x8000000; + QSPI_FLASH_START = 0x60000000; + QSPI_FLASH_LENGTH = 0x4000000; + OSPI_DEVICE_0_START = 0x68000000; + OSPI_DEVICE_0_LENGTH = 0x0; + OSPI_DEVICE_1_START = 0x70000000; + OSPI_DEVICE_1_LENGTH = 0x0; diff --git a/bsp/renesas/ra6m3-hmi-board/script/memory_regions.scat b/bsp/renesas/ra6m3-hmi-board/script/memory_regions.scat new file mode 100644 index 0000000000..7642abb104 --- /dev/null +++ b/bsp/renesas/ra6m3-hmi-board/script/memory_regions.scat @@ -0,0 +1,22 @@ + + /* generated memory regions file - do not edit */ + #define RAM_START 0x1FFE0000 + #define RAM_LENGTH 0xA0000 + #define FLASH_START 0x00000000 + #define FLASH_LENGTH 0x200000 + #define DATA_FLASH_START 0x40100000 + #define DATA_FLASH_LENGTH 0x10000 + #define OPTION_SETTING_START 0x00000000 + #define OPTION_SETTING_LENGTH 0x0 + #define OPTION_SETTING_S_START 0x00000000 + #define OPTION_SETTING_S_LENGTH 0x0 + #define ID_CODE_START 0x0100A150 + #define ID_CODE_LENGTH 0x10 + #define SDRAM_START 0x90000000 + #define SDRAM_LENGTH 0x8000000 + #define QSPI_FLASH_START 0x60000000 + #define QSPI_FLASH_LENGTH 0x4000000 + #define OSPI_DEVICE_0_START 0x68000000 + #define OSPI_DEVICE_0_LENGTH 0x0 + #define OSPI_DEVICE_1_START 0x70000000 + #define OSPI_DEVICE_1_LENGTH 0x0 diff --git a/bsp/renesas/ra6m3-hmi-board/src/hal_entry.c b/bsp/renesas/ra6m3-hmi-board/src/hal_entry.c new file mode 100644 index 0000000000..f7e96edd88 --- /dev/null +++ b/bsp/renesas/ra6m3-hmi-board/src/hal_entry.c @@ -0,0 +1,28 @@ +/* + * Copyright (c) 2006-2021, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2021-10-10 Sherman first version + */ + +#include +#include "hal_data.h" +#include + +#define LED_PIN BSP_IO_PORT_02_PIN_09 /* 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/ra6m3-hmi-board/template.uvguix.RTT b/bsp/renesas/ra6m3-hmi-board/template.uvguix.RTT new file mode 100644 index 0000000000..692abf01e2 --- /dev/null +++ b/bsp/renesas/ra6m3-hmi-board/template.uvguix.RTT @@ -0,0 +1,1860 @@ + + + + -6.1 + +
### uVision Project, (C) Keil Software
+ + + + + + + + + + 38003 + Registers + 140 90 + + + 346 + Code Coverage + 1010 160 + + + 204 + Performance Analyzer + 1170 + + + + + + 35141 + Event Statistics + + 200 50 700 + + + 1506 + Symbols + + 80 80 80 + + + 1936 + Watch 1 + + 200 133 133 + + + 1937 + Watch 2 + + 200 133 133 + + + 1935 + Call Stack + Locals + + 200 133 133 + + + 2506 + Trace Data + + 75 135 130 95 70 230 200 150 + + + 466 + Source Browser - *** Not Enabled *** + 500 + 300 + + + + + + + + 1 + 1 + 0 + 0 + -1 + + + + + + + 44 + 2 + 3 + + -1 + -1 + + + -1 + -1 + + + -8 + -8 + 1928 + 1058 + + + + 0 + + 60 + 010000000400000001000000010000000100000001000000000000000200000000000000010000000100000000000000280000002800000000000000 + + + + 0 + Build + + -1 + -1 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F40000004F00000090050000E0000000 + + + 16 + F40000006600000090050000F7000000 + + + + 1005 + 1005 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 0300000066000000ED00000042030000 + + + 16 + BE000000D5000000AE010000A2010000 + + + + 109 + 109 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 0300000066000000ED00000042030000 + + + 16 + BE000000D5000000DA0100001C030000 + + + + 1465 + 1465 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000370200008D050000AC020000 + + + 16 + BE000000D50000008603000066010000 + + + + 1466 + 1466 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000370200008D050000AC020000 + + + 16 + BE000000D50000008603000066010000 + + + + 1467 + 1467 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000370200008D050000AC020000 + + + 16 + BE000000D50000008603000066010000 + + + + 1468 + 1468 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000370200008D050000AC020000 + + + 16 + BE000000D50000008603000066010000 + + + + 1506 + 1506 + 0 + 0 + 0 + 0 + 32767 + 0 + 16384 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + BE000000D5000000AE010000A2010000 + + + + 1913 + 1913 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000008D050000C7000000 + + + 16 + BE000000D50000008603000066010000 + + + + 1935 + 1935 + 0 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 03000000370200008D050000AC020000 + + + 16 + BE000000D5000000AE010000A2010000 + + + + 1936 + 1936 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000370200008D050000AC020000 + + + 16 + BE000000D5000000AE010000A2010000 + + + + 1937 + 1937 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000370200008D050000AC020000 + + + 16 + BE000000D5000000AE010000A2010000 + + + + 1939 + 1939 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000370200008D050000AC020000 + + + 16 + BE000000D50000008603000066010000 + + + + 1940 + 1940 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000370200008D050000AC020000 + + + 16 + BE000000D50000008603000066010000 + + + + 1941 + 1941 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000370200008D050000AC020000 + + + 16 + BE000000D50000008603000066010000 + + + + 1942 + 1942 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000370200008D050000AC020000 + + + 16 + BE000000D50000008603000066010000 + + + + 195 + 195 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 0300000066000000ED00000042030000 + + + 16 + BE000000D5000000DA0100001C030000 + + + + 196 + 196 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 0300000066000000ED00000042030000 + + + 16 + BE000000D5000000DA0100001C030000 + + + + 197 + 197 + 1 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 000000007303000080070000F0030000 + + + 16 + BE000000D50000008603000066010000 + + + + 198 + 198 + 0 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 000000002002000090050000C5020000 + + + 16 + BE000000D50000008603000066010000 + + + + 199 + 199 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000760300007D070000D7030000 + + + 16 + BE000000D50000008603000066010000 + + + + 203 + 203 + 0 + 0 + 0 + 0 + 32767 + 0 + 8192 + 0 + + 16 + F7000000660000008D050000C7000000 + + + 16 + BE000000D50000008603000066010000 + + + + 204 + 204 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000008D050000C7000000 + + + 16 + BE000000D50000008603000066010000 + + + + 221 + 221 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 00000000000000000000000000000000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 2506 + 2506 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + BE000000D5000000AE010000A2010000 + + + + 2507 + 2507 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000370200008D050000AC020000 + + + 16 + BE000000D50000008603000066010000 + + + + 343 + 343 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000008D050000C7000000 + + + 16 + BE000000D50000008603000066010000 + + + + 346 + 346 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000008D050000C7000000 + + + 16 + BE000000D50000008603000066010000 + + + + 35141 + 35141 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000008D050000C7000000 + + + 16 + BE000000D5000000AE010000A2010000 + + + + 35824 + 35824 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000008D050000C7000000 + + + 16 + BE000000D50000008603000066010000 + + + + 35885 + 35885 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + BE000000D5000000AE010000A2010000 + + + + 35886 + 35886 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + BE000000D5000000AE010000A2010000 + + + + 35887 + 35887 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + BE000000D5000000AE010000A2010000 + + + + 35888 + 35888 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + BE000000D5000000AE010000A2010000 + + + + 35889 + 35889 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + BE000000D5000000AE010000A2010000 + + + + 35890 + 35890 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + BE000000D5000000AE010000A2010000 + + + + 35891 + 35891 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + BE000000D5000000AE010000A2010000 + + + + 35892 + 35892 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + BE000000D5000000AE010000A2010000 + + + + 35893 + 35893 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + BE000000D5000000AE010000A2010000 + + + + 35894 + 35894 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + BE000000D5000000AE010000A2010000 + + + + 35895 + 35895 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + BE000000D5000000AE010000A2010000 + + + + 35896 + 35896 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + BE000000D5000000AE010000A2010000 + + + + 35897 + 35897 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + BE000000D5000000AE010000A2010000 + + + + 35898 + 35898 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + BE000000D5000000AE010000A2010000 + + + + 35899 + 35899 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + BE000000D5000000AE010000A2010000 + + + + 35900 + 35900 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + BE000000D5000000AE010000A2010000 + + + + 35901 + 35901 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + BE000000D5000000AE010000A2010000 + + + + 35902 + 35902 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + BE000000D5000000AE010000A2010000 + + + + 35903 + 35903 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + BE000000D5000000AE010000A2010000 + + + + 35904 + 35904 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + BE000000D5000000AE010000A2010000 + + + + 35905 + 35905 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + BE000000D5000000AE010000A2010000 + + + + 38003 + 38003 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 0300000066000000ED00000042030000 + + + 16 + BE000000D5000000DA0100001C030000 + + + + 38007 + 38007 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000760300007D070000D7030000 + + + 16 + BE000000D50000008603000066010000 + + + + 436 + 436 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000760300007D070000D7030000 + + + 16 + BE000000D5000000DA0100001C030000 + + + + 437 + 437 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000370200008D050000AC020000 + + + 16 + BE000000D5000000AE010000A2010000 + + + + 440 + 440 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000370200008D050000AC020000 + + + 16 + BE000000D5000000AE010000A2010000 + + + + 463 + 463 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000760300007D070000D7030000 + + + 16 + BE000000D5000000DA0100001C030000 + + + + 466 + 466 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000760300007D070000D7030000 + + + 16 + BE000000D5000000DA0100001C030000 + + + + 470 + 470 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000008D050000C7000000 + + + 16 + BE000000D50000008603000066010000 + + + + 50000 + 50000 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + BE000000D5000000AE010000A2010000 + + + + 50001 + 50001 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + BE000000D5000000AE010000A2010000 + + + + 50002 + 50002 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + BE000000D5000000AE010000A2010000 + + + + 50003 + 50003 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + BE000000D5000000AE010000A2010000 + + + + 50004 + 50004 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + BE000000D5000000AE010000A2010000 + + + + 50005 + 50005 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + BE000000D5000000AE010000A2010000 + + + + 50006 + 50006 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + BE000000D5000000AE010000A2010000 + + + + 50007 + 50007 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + BE000000D5000000AE010000A2010000 + + + + 50008 + 50008 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + BE000000D5000000AE010000A2010000 + + + + 50009 + 50009 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + BE000000D5000000AE010000A2010000 + + + + 50010 + 50010 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + BE000000D5000000AE010000A2010000 + + + + 50011 + 50011 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + BE000000D5000000AE010000A2010000 + + + + 50012 + 50012 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + BE000000D5000000AE010000A2010000 + + + + 50013 + 50013 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + BE000000D5000000AE010000A2010000 + + + + 50014 + 50014 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + BE000000D5000000AE010000A2010000 + + + + 50015 + 50015 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + BE000000D5000000AE010000A2010000 + + + + 50016 + 50016 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + BE000000D5000000AE010000A2010000 + + + + 50017 + 50017 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + BE000000D5000000AE010000A2010000 + + + + 50018 + 50018 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + BE000000D5000000AE010000A2010000 + + + + 50019 + 50019 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + BE000000D5000000AE010000A2010000 + + + + 59392 + 59392 + 1 + 0 + 0 + 0 + 966 + 0 + 8192 + 0 + + 16 + 0000000000000000D10300001C000000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 59393 + 0 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 00000000F00300008007000003040000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 59399 + 59399 + 1 + 0 + 0 + 0 + 476 + 0 + 8192 + 1 + + 16 + 000000001C000000E701000038000000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 59400 + 59400 + 0 + 0 + 0 + 0 + 612 + 0 + 8192 + 2 + + 16 + 00000000380000006F02000054000000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 824 + 824 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000370200008D050000AC020000 + + + 16 + BE000000D5000000AE010000A2010000 + + + + 3334 + 000000000B000000000000000020000000000000FFFFFFFFFFFFFFFFF4000000E000000090050000E4000000000000000100000004000000010000000000000000000000FFFFFFFF08000000CB00000057010000CC000000F08B00005A01000079070000D601000045890000FFFF02000B004354616262656450616E650020000000000000F40000006600000090050000F7000000F40000004F00000090050000E00000000000000040280046080000000B446973617373656D626C7900000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFF0F53797374656D20416E616C797A657200000000D601000001000000FFFFFFFFFFFFFFFF104576656E742053746174697374696373000000004589000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFF9C0400004F000000A004000030020000000000000200000004000000010000000000000000000000FFFFFFFF2B000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C000050C3000051C3000052C3000053C3000054C3000055C3000056C3000057C3000058C3000059C300005AC300005BC300005CC300005DC300005EC300005FC3000060C3000061C3000062C3000063C3000001800040000000000000A0040000660000009005000047020000A00400004F000000900500003002000000000000404100462B0000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFF000000000050C3000001000000FFFFFFFFFFFFFFFF000000000051C3000001000000FFFFFFFFFFFFFFFF000000000052C3000001000000FFFFFFFFFFFFFFFF000000000053C3000001000000FFFFFFFFFFFFFFFF000000000054C3000001000000FFFFFFFFFFFFFFFF000000000055C3000001000000FFFFFFFFFFFFFFFF000000000056C3000001000000FFFFFFFFFFFFFFFF000000000057C3000001000000FFFFFFFFFFFFFFFF000000000058C3000001000000FFFFFFFFFFFFFFFF000000000059C3000001000000FFFFFFFFFFFFFFFF00000000005AC3000001000000FFFFFFFFFFFFFFFF00000000005BC3000001000000FFFFFFFFFFFFFFFF00000000005CC3000001000000FFFFFFFFFFFFFFFF00000000005DC3000001000000FFFFFFFFFFFFFFFF00000000005EC3000001000000FFFFFFFFFFFFFFFF00000000005FC3000001000000FFFFFFFFFFFFFFFF000000000060C3000001000000FFFFFFFFFFFFFFFF000000000061C3000001000000FFFFFFFFFFFFFFFF000000000062C3000001000000FFFFFFFFFFFFFFFF000000000063C3000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFFF00000004F000000F40000005B030000010000000200001004000000010000000000000000000000FFFFFFFF05000000ED0300006D000000C3000000C400000073940000018000100000010000000000000066000000F000000072030000000000004F000000F00000005B0300000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73010000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7301000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657301000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273000000007394000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000000000000FFFFFFFFFFFFFFFF000000001C020000900500002002000000000000010000000400000001000000000000000000000000000000000000000000000001000000C6000000FFFFFFFF0F0000008F070000930700009407000095070000960700009007000091070000B5010000B801000038030000B9050000BA050000BB050000BC050000CB09000001800080000000000000000000003702000090050000DC020000000000002002000090050000C502000000000000404100460F0000001343616C6C20537461636B202B204C6F63616C73000000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031000000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF09554C494E4B706C7573000000003803000001000000FFFFFFFFFFFFFFFF084D656D6F7279203100000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFFFFFFFFFF0000000001000000000000000000000001000000FFFFFFFFC802000020020000CC020000C502000000000000020000000400000000000000000000000000000000000000000000000000000002000000C6000000FFFFFFFF8F07000001000000FFFFFFFF8F07000001000000C6000000000000000080000001000000FFFFFFFFFFFFFFFF000000005B030000800700005F030000010000000100001004000000010000000000000000000000FFFFFFFF06000000C5000000C7000000B4010000D2010000CF010000779400000180008000000100000000000000760300008007000007040000000000005F03000080070000F00300000000000040820056060000000C4275696C64204F757470757401000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657300000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF24536F757263652042726F77736572202D202A2A2A204E6F7420456E61626C6564202A2A2A00000000D201000001000000FFFFFFFFFFFFFFFF0E416C6C205265666572656E63657300000000CF01000001000000FFFFFFFFFFFFFFFF0742726F77736572000000007794000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000000000000000000 + + + 59392 + File + + 2930 + 00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000400020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000004000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000004000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000004000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000004000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE80300000000040000000000000000000000000000000000000100000001000000960000000200205000000000124C45445F434F4E4E45435445445F504F525496000000000000001400124C45445F434F4E4E45435445445F504F525412496D6167652053796D626F6C205461626C65346378785F6372745F696E69742E6F282E746578742E2453756224245F5F6370705F696E697469616C697A655F5F61656162695F29185F5F6370705F696E697469616C697A655F5F61656162695F0A6472765F636F6D6D6F6E0C6378785F6372745F696E69741F72745F7468726561645F7377697463685F696E746572727570745F666C61670852575F4952414D310A307832343030303030300A307832343030303030340A307830383030333761340C41524D5F4C49425F48454150025A490A3078313030303732663508484541505F454E440C72745F70696E5F77726974650A535441434B5F53495A4506554E494E49540468656170087761726E696E67730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000004001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E2280000002000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B46350000000000000000000000000100000001000000000000000000000001000000020021802280000000000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B4635000000000000000000000000010000000100000000000000000000000100000000002180E0010000000000007500000021456E65726779204D6561737572656D656E742026776974686F75742044656275670000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000400160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000003002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000000002180E50100000000000078000000264B696C6C20416C6C20427265616B706F696E747320696E204163746976652050726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180E601000000000000790000002F4B696C6C20416C6C20427265616B706F696E747320696E204D756C74692D50726F6A65637420576F726B73706163650000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000021804C010000020001001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002180DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002180E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002180E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000218018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000021800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002180D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002180E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65C6030000 + + + 1423 + 2800FFFF01001100434D4643546F6F6C426172427574746F6E00E1000000000000FFFFFFFF000100000000000000010000000000000001000000018001E1000000000000FFFFFFFF000100000000000000010000000000000001000000018003E1000000000000FFFFFFFF0001000000000000000100000000000000010000000180CD7F000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF000000000000000000010000000000000001000000018023E1000000000000FFFFFFFF000100000000000000010000000000000001000000018022E1000000000000FFFFFFFF000100000000000000010000000000000001000000018025E1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001802BE1000000000000FFFFFFFF00010000000000000001000000000000000100000001802CE1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001807A8A000000000000FFFFFFFF00010000000000000001000000000000000100000001807B8A000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180D3B0000000000000FFFFFFFF000100000000000000010000000000000001000000018015B1000000000000FFFFFFFF0001000000000000000100000000000000010000000180F4B0000000000000FFFFFFFF000100000000000000010000000000000001000000018036B1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180FF88000000000000FFFFFFFF0001000000000000000100000000000000010000000180FE88000000000000FFFFFFFF00010000000000000001000000000000000100000001800B81000000000000FFFFFFFF00010000000000000001000000000000000100000001800C81000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180F088000000000000FFFFFFFF0001000000000000000100000000000000010000000180EE7F000000000000FFFFFFFF000100000000000000010000000000000001000000018024E1000000000000FFFFFFFF00010000000000000001000000000000000100000001800A81000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001802280000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180C488000000000000FFFFFFFF0001000000000000000100000000000000010000000180C988000000000000FFFFFFFF0001000000000000000100000000000000010000000180C788000000000000FFFFFFFF0001000000000000000100000000000000010000000180C888000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180DD88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180FB7F000000000000FFFFFFFF000100000000000000010000000000000001000000 + + + 1423 + 2800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000000004000000000000000000000000000000000100000001000000018022E100000000000005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000000000700000000000000000000000000000000010000000100000001802CE10000000000000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000000000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000000000C0000000000000000000000000000000001000000010000000180F4B00000000000000D000000000000000000000000000000000100000001000000018036B10000000000000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF880000000000000F0000000000000000000000000000000001000000010000000180FE880000000000001000000000000000000000000000000000010000000100000001800B810000000000001100000000000000000000000000000000010000000100000001800C810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F088000000000000130000000000000000000000000000000001000000010000000180EE7F00000000000014000000000000000000000000000000000100000001000000018024E10000000000001500000000000000000000000000000000010000000100000001800A810000000000001600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018022800000000000001700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000180000000000000000000000000000000001000000010000000180C988000000000000190000000000000000000000000000000001000000010000000180C7880000000000001A0000000000000000000000000000000001000000010000000180C8880000000000001B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180DD880000000000001C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001D000000000000000000000000000000000100000001000000 + + + + 59399 + Build + + 976 + 00200000010000001000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F0000000004001C0000000000000000000000000000000001000000010000000180D07F0000000000001D000000000000000000000000000000000100000001000000018030800000000000001E000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6EC7040000000000006A0000000C4261746368204275696C2664000000000000000000000000010000000100000000000000000000000100000004000580C7040000000000006A0000000C4261746368204275696C266400000000000000000000000001000000010000000000000000000000010000000000058046070000000000006B0000000D42617463682052656275696C640000000000000000000000000100000001000000000000000000000001000000000005804707000000000000FFFFFFFF0B426174636820436C65616E0100000000000000000000000100000001000000000000000000000001000000000005809E8A0000000000001F0000000F4261746326682053657475702E2E2E000000000000000000000000010000000100000000000000000000000100000000000180D17F0000000004002000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000002100000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6EBA000000000000000000000000000000000000000000000000010000000100000096000000030020500000000008546172676574203196000000000000000100085461726765742031000000000180EB880000000000002200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000230000000000000000000000000000000001000000010000000180B08A000000000400240000000000000000000000000000000001000000010000000180A8010000000000004E00000000000000000000000000000000010000000100000001807202000000000000530000000000000000000000000000000001000000010000000180BE010000000000005000000000000000000000000000000000010000000100000000000000054275696C64DC010000 + + + 583 + 1000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F000000000000FFFFFFFF0001000000000000000100000000000000010000000180D07F000000000000FFFFFFFF00010000000000000001000000000000000100000001803080000000000000FFFFFFFF00010000000000000001000000000000000100000001809E8A000000000000FFFFFFFF0001000000000000000100000000000000010000000180D17F000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001804C8A000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001806680000000000000FFFFFFFF0001000000000000000100000000000000010000000180EB88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180C07F000000000000FFFFFFFF0001000000000000000100000000000000010000000180B08A000000000000FFFFFFFF0001000000000000000100000000000000010000000180A801000000000000FFFFFFFF00010000000000000001000000000000000100000001807202000000000000FFFFFFFF0001000000000000000100000000000000010000000180BE01000000000000FFFFFFFF000100000000000000010000000000000001000000 + + + 583 + 1000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F000000000000000000000000000000000000000000000001000000010000000180D07F00000000000001000000000000000000000000000000000100000001000000018030800000000000000200000000000000000000000000000000010000000100000001809E8A000000000000030000000000000000000000000000000001000000010000000180D17F0000000000000400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000000500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001806680000000000000060000000000000000000000000000000001000000010000000180EB880000000000000700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000080000000000000000000000000000000001000000010000000180B08A000000000000090000000000000000000000000000000001000000010000000180A8010000000000000A000000000000000000000000000000000100000001000000018072020000000000000B0000000000000000000000000000000001000000010000000180BE010000000000000C000000000000000000000000000000000100000001000000 + + + + 59400 + Debug + + 2373 + 00200000000000001900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000000002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000000002A00000000000000000000000000000000010000000100000001801C800000000000002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000000000002D0000000000000000000000000000000001000000010000000180F07F0000000000002E0000000000000000000000000000000001000000010000000180E8880000000000003700000000000000000000000000000000010000000100000001803B010000000000002F0000000000000000000000000000000001000000010000000180BB8A00000000000030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000000000000310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380D88B00000000000031000000085761746368202631000000000000000000000000010000000100000000000000000000000100000000001380D98B00000000000031000000085761746368202632000000000000000000000000010000000100000000000000000000000100000000001380CE01000000000000FFFFFFFF0C576174636820416E63686F720000000000000000010000000000000001000000000000000000000001000000000013800F01000000000000320000000E4D656D6F72792057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000094D656D6F7279202632000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000094D656D6F7279202633000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000094D656D6F72792026340000000000000000000000000100000001000000000000000000000001000000000013801001000000000000330000000E53657269616C2057696E646F77730000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000000013809407000000000000330000000855415254202326320000000000000000000000000100000001000000000000000000000001000000000013809507000000000000330000000855415254202326330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000001626446562756720287072696E746629205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000000000007200000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380658A000000000000340000000F264C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E0000001526506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000E26436F646520436F766572616765000000000000000000000000010000000100000000000000000000000100000000001380CD01000000000000FFFFFFFF0F416E616C7973697320416E63686F7200000000000000000100000000000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720000000000000000010000000000000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720000000000000000010000000000000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000013800189000000000000360000000F26546F6F6C626F782057696E646F7700000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730000000000000000010000000000000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000010000000000000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F72000000000000000001000000000000000100000000000000000000000100000000000000000005446562756764020000 + + + 898 + 1900FFFF01001100434D4643546F6F6C426172427574746F6ECC88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001801780000000000000FFFFFFFF00010000000000000001000000000000000100000001801D80000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001801A80000000000000FFFFFFFF00010000000000000001000000000000000100000001801B80000000000000FFFFFFFF0001000000000000000100000000000000010000000180E57F000000000000FFFFFFFF00010000000000000001000000000000000100000001801C80000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001800089000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180E48B000000000000FFFFFFFF0001000000000000000100000000000000010000000180F07F000000000000FFFFFFFF0001000000000000000100000000000000010000000180E888000000000000FFFFFFFF00010000000000000001000000000000000100000001803B01000000000000FFFFFFFF0001000000000000000100000000000000010000000180BB8A000000000000FFFFFFFF0001000000000000000100000000000000010000000180D88B000000000000FFFFFFFF0001000000000000000100000000000000010000000180D28B000000000000FFFFFFFF00010000000000000001000000000000000100000001809307000000000000FFFFFFFF0001000000000000000100000000000000010000000180658A000000000000FFFFFFFF0001000000000000000100000000000000010000000180C18A000000000000FFFFFFFF0001000000000000000100000000000000010000000180EE8B000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001800189000000000000FFFFFFFF000100000000000000010000000000000001000000 + + + 898 + 1900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000000000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000000100000000000000000000000000000000010000000100000001801D800000000000000200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000000300000000000000000000000000000000010000000100000001801B80000000000000040000000000000000000000000000000001000000010000000180E57F0000000000000500000000000000000000000000000000010000000100000001801C800000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000000700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B000000000000080000000000000000000000000000000001000000010000000180F07F000000000000090000000000000000000000000000000001000000010000000180E8880000000000000A00000000000000000000000000000000010000000100000001803B010000000000000B0000000000000000000000000000000001000000010000000180BB8A0000000000000C0000000000000000000000000000000001000000010000000180D88B0000000000000D0000000000000000000000000000000001000000010000000180D28B0000000000000E000000000000000000000000000000000100000001000000018093070000000000000F0000000000000000000000000000000001000000010000000180658A000000000000100000000000000000000000000000000001000000010000000180C18A000000000000110000000000000000000000000000000001000000010000000180EE8B0000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180018900000000000013000000000000000000000000000000000100000001000000 + + + + 0 + 1920 + 1080 + + + + +
diff --git a/bsp/renesas/ra6m3-hmi-board/template.uvoptx b/bsp/renesas/ra6m3-hmi-board/template.uvoptx new file mode 100644 index 0000000000..fe95de0b9e --- /dev/null +++ b/bsp/renesas/ra6m3-hmi-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 + 3 + + + + + + + + + + + BIN\CMSIS_AGDI.dll + + + + 0 + CMSIS_AGDI + -X"Any" -UAny -O206 -S0 -C0 -P00000000 -N00("ARM CoreSight SW-DP") -D00(5BA02477) -L00(0) -TO65554 -TC10000000 -TT10000000 -TP20 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO15 -FD20000000 -FC2000 -FN3 -FF0RA6M3_2M.FLM -FS00 -FL0200000 -FP0($$Device:R7FA6M3AH$Flash\RA6M3_2M.FLM) -FF1RA6M3_DATA_C2M.FLM -FS140100000 -FL110000 -FP1($$Device:R7FA6M3AH$Flash\RA6M3_DATA_C2M.FLM) -FF2RA6M3_CONF.FLM -FS2100A100 -FL280 -FP2($$Device:R7FA6M3AH$Flash\RA6M3_CONF.FLM) + + + 0 + UL2CM3 + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC2000 -FN3 -FF0RA6M3_2M -FS00 -FL0200000 -FF1RA6M3_DATA_C2M -FS140100000 -FL110000 -FF2RA6M3_CONF -FS2100A100 -FL280 -FP0($$Device:R7FA6M3AH$Flash\RA6M3_2M.FLM) -FP1($$Device:R7FA6M3AH$Flash\RA6M3_DATA_C2M.FLM) -FP2($$Device:R7FA6M3AH$Flash\RA6M3_CONF.FLM)) + + + 0 + JL2CM3 + -U831004110 -O78 -S2 -ZTIFSpeedSel5000 -A0 -C0 -JU1 -JI127.0.0.1 -JP0 -RST0 -N00("ARM CoreSight SW-DP") -D00(5BA02477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -TB1 -TFE0 -FO15 -FD0 -FC800 -FN0 + + + + + 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/ra6m3-hmi-board/template.uvprojx b/bsp/renesas/ra6m3-hmi-board/template.uvprojx new file mode 100644 index 0000000000..09c7c60fe0 --- /dev/null +++ b/bsp/renesas/ra6m3-hmi-board/template.uvprojx @@ -0,0 +1,422 @@ + + + + 2.1 + +
### uVision Project, (C) Keil Software
+ + + + Target 1 + 0x4 + ARM-ADS + 1 + + + R7FA6M3AH + Renesas + Renesas.RA_DFP.4.2.0 + https://www2.renesas.eu/Keil_MDK_Packs/ + IRAM(0x1FFE0000,0x020000) IRAM2(0x20000000,0x080000) IROM(0x00000000,0x200000) CPUTYPE("Cortex-M4") FPU2 DSP CLOCK(12000000) ELITTLE + + + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC2000 -FN3 -FF0RA6M3_2M -FS00 -FL0200000 -FF1RA6M3_DATA_C2M -FS140100000 -FL110000 -FF2RA6M3_CONF -FS2100A100 -FL280 -FP0($$Device:R7FA6M3AH$Flash\RA6M3_2M.FLM) -FP1($$Device:R7FA6M3AH$Flash\RA6M3_DATA_C2M.FLM) -FP2($$Device:R7FA6M3AH$Flash\RA6M3_CONF.FLM)) + 0 + + + + + + + + + + + $$Device:R7FA6M3AH$SVD\R7FA6M3AH.svd + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\Objects\ + rtthread + 1 + 0 + 1 + 1 + 0 + .\Listings\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + cmd /c "start "Renesas" /w cmd /c ""$Slauncher\rasc_launcher.bat" "3.5.0" --gensecurebundle --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 + + + SARMCM3.DLL + -MPU + DCM.DLL + -pCM4 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM4 + + + + 1 + 0 + 0 + 0 + 16 + + + + + 1 + 0 + 0 + 1 + 1 + 4096 + + 1 + BIN\UL2CM3.DLL + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M4" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 2 + 0 + 0 + 1 + 0 + 8 + 1 + 0 + 0 + 0 + 3 + 4 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x1ffe0000 + 0x20000 + + + 1 + 0x0 + 0x200000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x200000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x1ffe0000 + 0x20000 + + + 0 + 0x20000000 + 0x80000 + + + + + + 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 -Wunused -Wuninitialized -Wall -Wmissing-declarations -Wpointer-arith -Waggregate-return -Wfloat-equal + + + + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 4 + + + + + + + + + 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 + + + + + + + + + + + + + + + + + + + + + + + + + +

!Tkh`$rKWUH(h+%@ z!Ws$BwueO4pii_D!yC;QgIHGTvR zfz^-&@)I~7MD2Z?GIk{xoSv3v3mY&Ur1{v^q$jmApA|%4-`L6>0r?#^t5)1P$Vor0)E6AS+V=sr1g}*VGm7}jW#p+AZ7KpuPIk!%$w1&|&szv%!XQtDBStjl%>Q_8zSd?nzBWZ1HGk#N#%~xStLdJ1}0$nd8u2K^C zvCfMYc~{DFJ-O2gd>Q%kB-we1Vr$z`Xc0DS<36trg+6F>>}xB2eE17*kUsxWUHTft zgEp!0S*~ZVo+R#VB4l0SDsUg+>1YEasUTZ!be>gW7|_{_6oGcw;Ohg-S6{gmb=nwZ zAyck6FfAjDbsOWj^m0dEGi&FwnRg^CmOG?Dn4Sp5e`myrWU-A;u;mTl4YdTM&PxUA zOqQ9|B^k;}|lV&<`O*gcATMCf1xAZ+ErAQD*AkUu`kIu z)6*Nlyfaz=NAC+KDypoX`x!sLEI$-lGIPohY-(GFm@c4GHO}NQU6K|0c2s^ofZCkC zyYQ)febBdGduIWZ^@oKwYC6Gx|1%n?OCP+i7ZBHh!wn2)w4kd@@zzmQX~==(-wtzM zjbp!v+iBf5Yi;Er+04(!k3Vr~w#0%ShV?(K>llytFQ5Di6nfl7b%YC~VZRN|l*3!9 zUAe%h4ML}mDxNh$$?m550V??>zLO&9Tf*%d|2@fMS;(XzXEUyK4>@!5Yd0Wjhxnrf z-9x^0Uc$_czt|BpS)B&h&!4E8Y|_XqbpMFF@F-TGwas=_+-vq7BK04T#pvKYGf?kQ z?W1zQJ=$2f$!V`x$s7Y8Q$QU+Fym}RnQgHPHSBaw@3DX8R(;8`0^Y7oA68*Q zVLvbk*?o(>(GJhY$N1&1eS!n&_BpqM4QUOootk(wKV;Ini}ZB;*{^CU&qIYT^?#}c zpQSnETPO?ZYGH&2PI&+XN;@Z>un_Lm(L*(NtEvz~bm38w3TO86n68hB?Vkn;is{5+ z*MB1)3dgk9y9L7Du5D??bqOwgZ41t|P<_5&oAi+PdL`fQ^>{8kPO1YC|IJ z8gOAOg0cu1tZe1C$=HRdG!^>X>saPR*8qK6oJJYbBTs9ef5f#NsM3G#(C<#na<-$gM!B zEh!jup1+JJeg*~oA}tA%D6a<`lS7_-Gwv4lh%CS`vLor68BpT5!?8kQZbre7RyqJt zMhxf-{0}xASA}aCX|bj-Bys+2vP-ILP)9#$&DI8<;zw2NBkm@*c<*q!Wca!|OYmOW z4gb5I0}{_9yvJosOrp2n8sn>p4IQ|TNH3-DPC>|DdEOJ4e#m5s{6=-6ct9_@227=p zzpm6FRYx;a(3i$^RAUI(?LWjTo_cLh0YG?>Zhu{JXhRv7&@@7f1$R4;Go`Hqz)e4F z-CbhMYuv{@O>mV>JAI~}vc_E+r*gnF|5IFJf>vZbMFX}5rgWyA; zn=uS8BAqvU8mA*Tkz#iGEZmud9u_SEy{jt>afB&Zw_I)LZXWJA<|QctjkSB&rqV?! z(e1a3Obkz3hU1Je*wDv>PGtr^q}vc|DtXwm%e5(xdL~%D-^g0HG#`XJ(+E56J z_GLKGIz(Vhp%d4~>Jj$}G%&x25J8m?s*+xE%Aw^3A*dI<=^l^jKoe3>+`#GQ4d^&J z8hJ86Hm0Eu!ZGRW#w=Wq>4yo_lF%@|x0O;~QccIkqWpClWIF~b$0fufVJ$eF%BRPX z)vndZOc`m2&dfBiC1&3eiTTwRABQEU&DapFOE$|ikhcw9`>es_Gr6eTx(0*peQT!d zp!==#Der#}?nb~+N+<)Y%&4s{PaKTQfV8-t3lMZbdU1c`*mnhj)8K$arN+9-r|N-bvt{F{tJONl7Ai_*3E4AGK%v~ZepZ!mf4mx%Ax8? zO!(#Nvi@^mN;jI}ixNX`30kJpC+Hk7K(cOSd!0Uvr^sR%fA4_m(_zCfV$<3=g~nhR7C}vQ*I~2d%P3m6j^XLq0Ne{PXHJ z!d5I!w<*03h?Ir7IE*R0GNroJ-AXc`I$suN+4$48PfT~Tt7?&g({g~c8%o3h7|W3h zI*_7_O^6;g>grO4xz*; zEaho=c9vQU?!5HD1LghGc5RbYdw~t38Cem(_fXx+Wf1hB>ERzZw2k+qlRU*63Lb|q zIeGlP(!`KKxR01UU?!F4ubDfw{m$w8+xD?DKEvlJAth~0Wnn{p#i&a8_j~9q)MGBp zp=&DhWrlIe8ijb~O9#PH!^Lz1Gi_$tfv3h;N}34~x71zxHv^+!b>@;~(Sx**aGj$W zkj*Z0y)T5y(Hg|E*O~q{VZtD>((OxI8cz-4$r{UhuB@qff}RnczPf8T7pQ64~d$lMMV|Uymd|*Wi2c$|NmJxGOp3;&i=tx`K!DZ4FT>PQqS*_cpg?e7nWc#KmeFg z^+)>6NjXxV9{%N5Jv>jSTnmT=%2*c4pF*l~d6kH6s+#=7bT$#9c0GKnbHEYq=tHeA z5pI$&g@FIRm4ekG9Z!x+n>t(}r6YGPhUfgIt;wTO~at3aO`{v449c5-^|9J{gH+ym_MY5Ybqrm&n zV>3rq$TC4#FA!dzeu*)4Ni~MjK$@|-*LG(cUjp$cpgZb|2>ka%9CkvUqkaRwb50+8 zfKr2u$urk!@fA)mNBouVq=&bjnSFKHrLsc--Fz~Cq05)51YLcV=I(Nv z=q<=3=o#7ega_-^R#0ISt!3%kRS8Y|3g(jyHY;2vJ3k!yA)Jz`g}FRhV}fh5j(W1% zy%P+hrE;84GTUNshpU`B7OJ;L+3NlM62K1bEJf%}hZU(r4QX){?F$pDMVOoXPNyR4 zJRKYFBT1Dh_a(6+Ap#gm&bNLBOL<(ir=vYyo5`#3ajZ z?O-H5-eIdncC@=lu??yG8)<83EP!i`YkwpjG*NNLLbpUzk(SBipw#R#7wL_|&J2a* zF&NuEY(r+up1nrUDhluDjaCdv^RZ5>FBUCYIOl=-qKmXvq;r}RWZj2$@VBaqQDPD2 zmk1NQNqxK3Ef>)NjD@EoV`v{tNbAdG9g_8|xrwcWfW8;X&6Vkg9RQA>H9kQB@SM?6 zVX>JPmK6TTH8A_?msfXXN)J=8Rwd_4FIOrNM5VP^aU;BRHJ#2QvDC6im(;T5MH18 z;us#Ei3f0FbL7?_;{|3Xdj|a&?a(;8eY6+#l{U>gxge1AeO__3lfOAC?#O8!%WgK< z0z;W6(4=cznc&iV^)L_*&?vpC%EdzpX4<>}C41C6YqT*2Bqo$nVi&2%dsLo-AKM@6 zSeztTSSF1b8*>VR;CTL+s*`Nqp2i^t>W>sZ_WGiZLZ6|fbk^REOJrRc74g?k*9!vB z&*gwvNVD91=E$YGyf@XFd7wdb+3T7B{LKXc3{t7ReOq@;r-rocB1jmo=Bpx*Rslp9 zDII~ZFEP*Po~5+ARzthvwM8P&h{GCdeHG&6G?@Y}n&0Yag~m^-b>^A(VR1eftkR;|QusWT8NxM|ZuW%y=&)kzPB*E=eUjX;kdWh8 zzF3E#Xzp|!<(>Uv5ByOrjGC{|C`f8FT_!1`i!Vn_vW1li+0Ow89yXR|+x$usUqs2G z+56yF0R)7-T}U2g4T#P~FKS$8#!+1g|I{C!~O&D#jgL2;_ z2Zf&=NgIIVHULv>ljRa?&}-_f^{MZPIz%j}c;svctZ<|``(4~V8ts1dA zr^kqI@C6xFX!^?`Hx~xb0P*wDs<4?8bo8LO){PEzC_YOMBUz|aI&vW+_KKll;QBaC zZIoj+82wib=*%?;7rv@pd~sQ%H8`pC%Z$+3sD;KC?fE7<4ZD^N_nkkPGBgX*+xa~( z&eDWLBDJ=(x7BzRv{X#cB+($gK1R8u`_-U-M>8KdK9-Co-px=c?Jk%5DsQJVPu1(I z;wly2f{dJW_)Nzu&L%l|SAMsnmJgk>8r_?&?ZAbnJ$kdDl5o63fbdyITopvfBer0YL>G_oL`_3GF``Q=?Y)&6n_l1F?QCz1p#LFiPKMo9FEcf zX&>EFb~2Ty?7oy;hNeg*Q*vvnI<*%pJ8!@#0PsmDaNEhSG#wmej4J(0hAxLJeDk1G zJNdhg2&RJRliEkOszq5}Ot`EW!Dwor{I{MbK_1g!j}j2h=4h5LA-Q4K`#);aL*Q@X z*NgFG2W5X)lWxLm^zlW06aY*$4|-=O0?k0+*^{gH58Mn4kOP-nw4`Ib+}2?v~ob6B-B`WW3pqVI!5OIx9}VvEYvHM0a<%OEkiO zwbYv1hCqL4=jN@RBbXt6!(=)7X*qN@l%%sc1sK>#$qMj|i1fUycX7cs5?Y@fS5nwGVaX$V=yeWa@0z}U$Ruk* za+}GyUd++dmaWVDRq~&4g(>VP;;pUAOFvv}dKxq;rc+I|Ab#h%{Kyni317Da4_UjE zeiYxHk>`A5ji@&f2$ze%NF}Kw#vG|mPfJti1#)2|Af%GbB^&2v?Pz>Ahb`%2*)xre z1l$PiKyUF`>r@hZ?XB2L$v7&dRw!d0K}r~KCH+l<$vB>l>h)%IT0Yb1nzet3@gENe1*u8 zgXwXRzTopb#~XWFp#W#HO2F69&%7-c6CsPZ)1yT zK`>tm94jSso%^88I`sn@ev|i9x1eUhcH}9C^}}p8lK2g|l(1q4&rnrcC=?g%@3M>L z{$u))b((3Zqj$p&)0Xo6+LLssfMM*yj(zSk_?JFdNzNvcJkyX*i=yDgC%*J?!4@ia>I=) zarWn|feRpT=D)yCx;v~TC*kKZD9hOBk&AKp{cd^M#iJ?P_zuaBdM481%}89;FTMww zS6cAV>r6S2>36`BvpVt_LNJugKTy4heYRX92awaRsJ-vP=V@6K`@`;G9pB>%fR?plYEl%kiau>U)xUx45(V2^5D7&D_te0l8Nsc4bPk{5edSPesD8rLr&E6Ud z<620x7vBcjhSqKKdqZ#*Q~m>pry5M_f?}}6h@ZUTzIiMo%~g(}@V)MpZc%A^8HuC- zB?f@%`TSS5eSrr(S&Z4MHHQ;OngUt&#;6TV`(4|mM=pjg2hHCy?NyXf$xFuu2fU44 zL%^d;@gXovR9S8A>0J-0BK1{+0Yzb;O@yQ z!3`1ZfUO6zupE0{i_z@FJ_~;fA4}h=>C3tMT05?k_WoGvS*T3~T_SuP3}!t?BjGxo zEJOt;*1~X(v#3nyfkIGgdNz7UjAK?XJ95nqS!<9k$vwIq?am02ZdLf$Sm_;*^y5dm z{yWaze2i zBv9>=`evj5NApu-z_;EC#jutY5A?nDwFg}*TIOd#Um`54K-|^56~_7@q4##1?(U8l z2|n+48N~gWa-p|7suCUzvr9At>4treo0{LNv`YHAIt)%``My~ny z;(&BP@P?DZM0;L?n8NGNQ5&e%2fTV?^FqFkY!fI%98nT`jsWsK_wl1mzc1}Zh)C%J z-pvy4L%NujIi5(p_i(sUMwpQ(hBxm83w13ThW5;cNVp<4G9Xhyi@QznjX##L>jBK& zCgg?>!DKN7pq)!=$2@E?bV4@Cq;f-|`|}{3NSE--C?Bcr?`{-Qj+x1Nr8r2x;453o zxq5UW9$3^v-`nboxHw65Gzb?fpCgL45K)fp7H02=Pe0=X3Uh|R94#9gg+#DB$&+$k zeqK22+He#{35O64hMd@PtwkZLP!V9^dQch#c#Hf35{W z%!P@{#Rb7>^awoabpDBsYbw@_KlQ>%n{6n~_kBDU$kz3*tflf#WB#ox)x3GRrOg0o zoK8T55a;g6;WB`u{^;za0*$zxzZ2DuphFKFv_M|m$%PaXT={S5w%Ld|yKa2$Nt)zm=)R^p!??8&gd#Ds)GFAuZU0WuxHjQrpHL@A}O4 zW3a^tloh9BDNKwJDG$zZhA(rkur*KPj<*@h!B zBPpCIiV2OfILig>97hNeMh8U~I}j%Xc#pQULs+>-kKC~VH~I$ zZZoBJNJgg`CTdkR?tG;29N`&3(sBy)l4M+>k-o|Y73ttR1hF69Oq3MZA9=&CC;6&O z%B1_tO;pWz*`v0ANiIEZk&zXUe9uxuUYo7VR+3w$W}m&_4f5IOwO}fIu6>GtU{v~O z&9Y9fzYnhvO41z7w1sF}RPP7VzcS2gDFxle^y(ho^WH(nEP{iL8!Tk=qq=vr zz?MR7JOmO!V3@>Trqfl{ni4;esCF$C)e~*<@V)L)iMv`t#dDgVW8|his6puLC3iyL z%q)Cu8gmh)JZbq#H_de~f^UcXRC76F@dY(!AZ9Lc^9x9Czk^359-z^!_7i}OV=An;w_}a< zsp)9a&|zpUxtAfbR`F1y%p_>nbW{KqH83a6M2mgR0kg}C5%!aiYKQuvI`zd>%$UoyL@^Aoa_8}LYZbW>b<*1&$4 zEmf}Ly!&o3+aaVI&+LV>wh~603e4E4AFa5Bv9JLP;eA994YC&`kslKj8NEHR#%k*b zdBhIvpDsgYLI^IUCbJ{|_a{ln56_1IBWob3Yl)Q`D_<@8_$zqDbL3% zg%|c~*$^8mtcIKomlF5Suz(z3h&8h{?cBute-nlhXHQ8G4K$%ppLY$F)M>4Gj!D<6 ztn)_YA#qjg;#yUP^$U-MIc{$=!KvO;{hIr0XMv$Joi=gy3zhGM6^egWJ)A%$-SNFQp1$y5s=Y*kgZ>*0R^oZb5S3zo&r_hL}80dP5&p-*PACbG~r51R=42AwK z;ogdQZT@chwxf!BZp{vcFxzQHOHwq2mwNWI&o}2_@^214i7a!J1r*8}l7rIGUPm8* zsSgA!gbx8SSc1JNI6&*=2KNXif-rw?Ik1rS-X0 zet&~>aZ)a;DCt|1ipM9@44)te^?m?MCBbsD_UV!Qt-VA;^qM*{z8qyxBTTyQ$3UmyI}%5j z>+7-V=#R_sc_f)E-84ULanibg%8mXw3+bk ztxd3Rb=;2%N7>@Z*G}~&mtP2|3-PV%=hHC;ZKl*#%iAK?1}GH7#`5{nF~vSv@3L3(`U@6R6FfMun=`JvwskR0l~AfXOr}GaT(*qJ&QNV~^>7Hj`_cS_4Nv zpf1M&SJF{~@3##BGyxfag~!E}qpuW&1;yLF@LGUv7^8Kv0wQsL#a^eqvLsL~Yx2O{ z6jvU5SLgw3lxxhH-u=3Kma&Dj>6-z5c4F|#!0X9*UFR(sUb~1Kfw4Zm&2r_k?{g-C zpqR}81@=z+y{2+wg?n?OsI)r^#<+V$Wu^1Q#ZClmO<%RtC8j#gmm4$2I)9w^i)%s2 zEJOs2j(n@r-g`F{`+h(A3sHdts1>~P|MHc%hg{`v9xx~XY3Dpr-srAgcp%^&0FQneJ_3u!SQzk zCj{5@vDczqTo1TQTi0flxFl8GhsVrmwee1Qn}QE1vlWN%tOx#$FS5UpOyi2|3_DK6 zfwv>j&+V9#%3?Q>5h%`g6Is(g->{gy9YPJ|M#-IF`Q?QUWPZFk|27Zw8L=b!7{VExy8jLV8zNgH!2jsK_HZkVCjvh@;0hh7r&tRALUJ>Dch^rI(m zB?qI-DMkU6^xO$?*jPLO9UXh~m?mY#WIEW#Y$hC<*(L=?d^)%DJN zBK+XmRXjyA?6$L59$wFW3_N=uM|Af^f>LrD%jU=^ zh?3#FUCMtOAIsXfMF4Wb5_^?MSKiI^0TumkE%bWuF@ctCUI@Ho_J*?mH>TsMb zI}A2%1+S4u)<5x3J0psM?`^44&^fzSBrTjeIqZ-J$Oe0|N@rUvOXd|v6mmx87YU_2 zP?2;w!rk{hZ6RGhZ+$$G0FmpKQkCm<2nXNTphZQtXCQWO!_DB42oarm2xxNn-f-j&5lB(T z6RcKXqt3ow@FawHE zgKyUB%hZW@q(0|}{m7hZH0-WhPTQ)agLy!w*uhMiMxy_J5P`^U9SJFj%fuf|%ixPc z=hZC6qz79})+w;-ac^??U9D4W%DNwokREp9jV+(Iupq8lub`S~D>0vJl&CUIYG1ghZK4t@4y&VdsGF~H$24-X7+s}Oo zL0pOtZMkzHqWOGcE;_0-0jbx-&@5rZ&zEAs&oyw2AOBq@IPQn=DujF*`6UWoJsi#P zcjq&O+54NEsD+O!!lfJXtqZR!!VQ9b+ak^Q-`ZqStL@P&S?Cv9T(g;`+-{NZ@=nS1 zTjd`Eht4NW^+>At{l7#&X|_0#d-x)!C|>BEJrvmJkp*8rAEmhxb4?H#=bE2NXK{$D#nOdbD&0hzDm$f z)53yT!jt}RHrLZu7r2Y;&!O(i+p?OWAjpDWt{emwfvSfcz&Z_jUqC^ALCZk! zJcc{ZZQ2Ns44YIE!^QOjTL@>Neq5b{AwDfvcqXha@dvmGA50Zm)s%xrRM??{GTl$H zs1Qq}M_j>pfQ{Upl&{^uPAYs-ifZ;PLZrPVw57E=-sGuuTr{>*M2li|m8v;hL#si6r9G2DkTog}5&dXiKD5*%=7k_!JtdwbSA zyO+l9J^vym{o#lE?70;PG(i0qV}vnIuU*3`qACr)sHXHxjg}mvx>!xZwb-lh81Amz0a# zq)X-Lql1OQKm=B*cZ&J-v`%BFdNM%>aj`D+8dN>E283w)kV^QVyT)WRa-tv0f-bSGe4skzQzkd92=)t>%d1S|LzhNWQ zYiT52tS!m86N2I(I8NBTu7w}?Bt8ZOZR;Y{m^OWjFE6ziqW&$}RR zH+Kb}dVgO|Zjlna&N$HU{!NE$Acu3TSM2=8XF5E@RP|k`ZWUhCUaNTg3`0-`H(HQ- z@}DHK-BJcagsvdyqMTujABUAw?B z05AqMn0^Lv>G}dNuosLRV?%D`4MKzIQ&#Eub(F{i^^Ix{a3D;TxuR$Sw(U~Y-tF!H zlzH(OTaU2ESDbANVItZ@3>n`rN}kKd1zpyA4WJIYiu%&)LfQUjw22)cusPZO!zH?pB*I7G%X|_}`K6^WMVxQnlf7NytF2;U zZ#?1+$B#bhO&rfN+HIaS_DSBc&c`f>4+1iH2^Z)}PS_I33v_~G2VK4dyQ#zpBo3E7k8Bxl?8U5v)SE#Gm@$<2Tb!?1u4A7dk9?2Z z+sk20EK#kuuS3$w>HZiG>bTx}&h?R(6ml!IL?~AE+~#Xf)4&U5^+7vZS#lQe z9K{~y{}yoyIFgBcK1n(Nkl5-AEO0e()Li3E*6TH-dwQWHzQFK8`EE=3&wK`n$`br z%eCoUaH06R_73lVLz97)qQNBb+h%CaXSD>2^t9TkZhi{;cM^!DeeO%OT6keVmSm>G zaEZ$ed1iV6MBRy+iDtC5k!FD-pta;i@qYnKhgeW@Q~FDFQrBqfwwLbXObAU!V}@W9kN*TFw35|*LiX=`|WivDm!kGq;QW?aiJT0x24 z!t&#jK9Pti;9fsqiv(^LaZ?RV2X$0Qg$EHEshES6p@F`u&0*q#-#!gB-rVhIcGmNb z%?(Gq^D}rlnuH+wjUQ75FUj;!tN=LLak&Geao0&HgYJQS=!;KO;%bZKRdR{-lY_>Y zvNxnihtyYDBPe4w^(g;J$Huo#svvp%LV8cCO((`zHSxXq&K-+CV6qS_l1A{dspF@Uz9$5-cM}(&BZi94~e?p5Ab#(tj7%2n4W`pX;{v zno0Rgn(~KoH?({swrNM$w4fiQ6WuIdZYFi}ju5zzNJd%h}ABVe@lwXu@MfRY|kQ z?qMwK7Qi8+sWMA6v7(twDWvKb4FtnlO*8^|8Tq_g({fcG!{povlSTrvaq9N&*(JS5dmSVfUMf?DJP zNE^cRkG30N1?{y}o$vBlrbngXYAKNWk(NuIPSx-KtqV=qfjLZ#%gV{OxLa7&CUG7T zF$3;%5982hlkS_Hjac1A44OQchF1I}NZk7bP&r;E6ZD8(q9Sqn+W5p^i&shMgPww{uN~rK!alzLgHRZn&;D^@p$O-N+x<~(@oX^Oe3$^$e{l*I z_R1!cJgOP@Fj^-oyrp%O?UryJ`g(tGr0&cALpz?bFeY_-7a5m=+b{eXeG{xZdyQ-w z0~`u+%sQ?RiSosPXkA?7XL|g0nJl*Q<62r_Xlo>ti<7eotK;4!q^670^ZsL-I_ohe z{WWjw9u3ok3_P`Qx>CzVJYek%43N01nCHXV^$-$8a}mPq4~^cqKLKOiNy^Ze(%Qs8 zIb#iF62>F!-~!PAEu#wNS~iTep%JZ(?(`*7)imQrdZm>j0z~x!?vOCkk5Uy5Slw9s z;{-ic%=@FD0YmAH=_Kg42mAEy3zoKObpVl)UPU zQ7x{iC_XbOb-H6o>(27enx+43 zL`Lv(szU{1#k&{b9}u)oEuJw}ZxC~a=QH`v*Y~p;S=gVbv+%dPrA+6D{YIh z?O`JeHNL%DRNbP0u+`<#UelR+z00a7nfq{PcdM4@9QgJ{7+Z*E=k=;v^Hb3+pqf=M ze(m0SYqi$l3(Osl;_t%*HIiA-Mt^p<^`+;Swnl<-cEHm{uC4P2h_!c0LB2))CF;x+ zvHadaJJrTBThAT^Q|y&|deUQ1CP9%8-^p+hN~*A=3ZgrF^U$ZAzOUe^_%|#ENMU(T z2>Eha;_5;rj4MZ#O^trxI(@gYLkwP=cvRPg0h@yBDOF}~9or&cAL_q<)e{uq^by?X z`e{S@5}#2`2%`F#@)|qYkdsyJ^#I4JegoCf)`$(Noq9}PhK{GaQf!qe>NYA9fSKOg zLyE&5vP{iMvm?GT6Jod&%DP$wavZMBai>!-IWuBAmd;mK9l+h1Q0uAS@En?yZJeXf z27}p}O6d_$LYkCz#^i)uQ+*5sSiU}v5kkzGbEuF;#nwI2#%Y235H)*$-Sid(k?ji= zH1nBHmm?{~3coqkO|cjfWSc&|+o}3L7C*iG8ouZLPVNxW!tY-UvzY?FG({CkG<9rt z0;e|+Vu2aM)){6tWg*{vs20$1{qPgaEj}NYTy(99ms|A}6N`GMqvhh6&JQVartt4A zLRHX~OaxY!(%PVQh%(5vA?~~;_>BZ&2tF`MY>)PRcbrfi{lx4;+EzHhK`7;9-9|l) z3WWl3bjImiU*Z%yoA@Gr#(V=V&A!0jHQe-{A}Rxucnzor+{VVsE)^)@SLZQRND1CeIZ5nH>FQ7hS*%1;Ua5nXzLqu^gS4g`X4ZsS{i- z9;WTySfiW`m2uaF;}yB55Eb9A4x{Og`o7W>Y2VGRdaR?=NEU}0n-?*~^3K5u=cytb zb#z+JKVDilQn7jc{3W><1Q}y9-a#-;6jOW+z7&X86Q3;KxmK?|d``$Rd?ewnw)QN9 z5MvcBcXZW}X^+DvCPXA#k}iY;($glI#WhcVLxxf8z%fxhBd#8a=NA2`?*bD3q!Gkp zMPD#AlMeaii&=Nb^uehDz)hxsU(Hnq;A6*j`?)2muwv!`(e=;Xvz-`k)@Z_51$#m?d$+ruDN80yBdV?Y(d%NoX8^V! zhCMO)H!q8j8f{4taV6=Nl+-p;TBjGxRy1JWFLZ@J2>WdetUE-KEWodK>s4Mcv6mRu z=p$3ofu>svYX13C%W-4Hv)C*-7hKlUK%8xZdHy6j=iN??iLjF|MF0M2*_)bqWUn7k z%_sr$-a%j5;CacD1LneKr*D(HSX28_ z;SKWy$bzS#9r%Y1Y(TPlAsoZYOFVz)HE;NUMAE-IDDdsBD}xmEM<$42sWN?Vl-v8U zR^&BXuyqMf8?!1{n8TXlRAKrPKknUvQ(sBQBQEByIw{{7X!7~FCKRVI?HV?pvfHDO z=NkYPIi+3#$=Iidh?-tTzu^>mc*|!r&I1UVpEPHbV>ZMt^5vFr8_FqpG!Y5fZDMSG zHtBHkCrS&==46F-3fO4UjM}{X{kfON3a>q)cr^A38BEQ074DrTFP4cis-ggx)x+X;eN`hmeaLxJR=yr{miVZ-)c z&w1Gv+EVwRyWZ?w`Okn8Tv!q?rrag_XJY|@U65CvubHA#q#iqTYFAmNkt1IW1r&FO z@(fcU?!hQR_MjII;eCS}$7@PmiIgB?{XRn16Hu#`X2~LYRlm4*8%z(ZuCA}G2iQwP zoEP~}9)EAAZV0D0x?@daooGqC$;?yrR3WtgyR+ zteLVXennz(zZYp&5c*M(wzAmlk`10!^f*a8babV8@K?^hWo)$vz-_hw6*+o@)FfS8 z?=Jsd`f>4Es?QY+dlJGbLP@i^6%Jh36_mZ$z)ly=iJe+J|kG zdVeE&?SFz1kCiz{SKOz~5D?xhzMsc)b5fR)tsb0KJr|Le_t2t(Nuwp$H{N1wU(4y^ zIq(5PkDjiYUBK*wz|;huvOT31pXD^^>|NdTuZz5s- zTfvKBiHz5EgmoOlRX2D5AEPUFYV59(=nDDdgK5JDAZdnm$6Me*gn5f=@|r!?=CI3Z zWKI&Q2KBy{>&J7IZKv$c#d-^|m%1Yj46B2*& zu+7OT?M>`b?(s7{`ZS+m0xdnfVu8zg#tq^wv(G>Qva5~Kb$P+ig;&Xz!E#u@58-5= zNny)JbQApCYj-DBylT_SyNhHVRik;W8r`H}XkVX9*x8Cm86l4Mif`l?AGIzTcwm+* zy8f7F(keg!QT$@M!$l^0fl&nsYb7fwIae+}tG@DOl^J3z6Q7^(l1|*0p{TNA32&*n zAt4drOi6;!lbohCNA~5|8)O`e;HpG*Ue7_;1W9rc8tV!rSQsc0q$Tm#SXG-%pGCYD zFy&uO6Rdl&t{t$)|0_z4+qc!Y1%2zy%A1XFVB5THE2zHd2e*MmWjPov>Q&C_rk&s} zG3u$iXcv@(%ePi^cS&K$OfK=GK8}_RM3})L6XT|%V%_5M`a`d0TXVc)>*p`R2IC4NIRH;@XarcH!y9<_w*hr@$6Wt zadcG^uD0sM^pZWx^;&oc!N2h?s*vn{So*s^zUx$XM7j$tR(x2k2>N1vc2>gvkbU2> z62;jbnX{Ul7ZQ{ikJ27k=jQ2@f3<{1c3ZW)7;q?`MeF&dm#5cEl97jL5e*_Oy&}8nQm_;^`Q#q zjX^SShK9rUIWC<012<6rG^}ps5R;n_NA32dxw|OFIMLjB0RrCtpV~-1TH27APP-b+ z!#Tx5q(Cx%hDb!H4E}!J&5V@jXcU%M3`1yrQ+597giN^st1KfQd^Ut1m_Y%aWJMfY zB=olb3;Yv<-&!yM8j}Ce)<8eSz8CniBGP|}{WY09nkpt3l6$m3U;nDbecDX4KZluQ ztpL&q7RYS!2G@GMc6a3N=hxAIG++72;5JF$D}*65VPH+rT0nZ8p9)*RFI2CQ${-zz zusSC@;;3K_!l%;&!pDe2oW$Z1-4CneZIvU!O43fe7w?o-exs$%m+ITWprv8;OK=tU z3*92u6xT7X&|vLd66emno)7Ys_}KIYb;KfdYj4T0$<}7?zo}>_|9UF zSVSLa(7vJ=sxs8K!nwLSxm4g4b0QQ}^R)2jpJEfoAx)s=%Lpm(eh59=mgSqLI@M0;Xoh+t1CdeKwW@>X}Fujs#eHtR13(UiInJVuk#6S$M)R zk9*saW5FQ?-m%f__y@(U!ThV}V#jjL&8xJvF8+OqR?Gd0iI?@{Hk<80Pu#_9-7py=p4?F&uq0dEB4rw1IKpcWtnTv46iA46@p>337C9+5zlC* zL@IGyzwyTvIV5{vi}F=~Qj6GXzQIU>y(M|7ZW}+s9{6phUZvxcAaMw6`35-pP?c#PaP5Bx5MsWyh(?6*4HS3 zZ)rTbAqs^x5P-{j#VM?obGCwMIxvvPpujV1Jt!9(oOku1 z;%C-2cm;~!IF0q?>1a4RxUwpsM>>Te3E~|qGes6n=XV!O%faajS5Kq!_U-{&z@&y6 z!((nu=DyH#2jzSnrDj%jCt`}IcHD!rqb)(p z9yl5~uOU>_^QVJ5Y}E2H5k4>qXecTy-)URODY)9iS>D4zKVxEp*JrK*zaju0m$eh8 zd?jYP*|bQ8^%l?_$o4f@csw5-yNlgN*6nGrsYD#dL}aTMv71$yKvV#IFSKop*p5_^ z!z{I?)TNwXHR1XI9riHLY$5%+&Fbk047Vmv-M2?LOtu6N1=O7Mn{ViS4l4Y&0iFoq zha6iQ`9xIe+(p1ao zi7BwL{pY>8)O8#AB>M9fM&Px#U1&48qzrO7uuDKtM8h#L55qj_u-3@e@9;WD3zgYs zL0!Lfdh{uHjpW>&LH1fYO!{_(vvInr%ak^&0GJmVQCxe^;dFN6(q(^ma8AH+Wqm3{9+6Sh z3Mzs*?qX?BVN04Y=Ho7s@%_$-F)nF@(+>#QAJku?v`P&$<@E=$q&L97*-T(dfF0Xf zxKG*(_cb$AZ2o}bBIS1EEp0%_G~nIZ5G0M*_}{)85Td@xaH{^722L>U^5b=iV`wt5 z!hn=KYV;!VDD>!8?`(2rJ5YrvKwh2E{FVLsb-*R{blaa7@d7T_IWJp;k5Sh^3}*xD zH|FP5b4(Ow5iT;aA0NZBhyw}SX0pUxCWKsCsde)FqF!hhjn#uA&v21;1^s`kwMlP= zINmb4tR4h67M*Lbr5*KUF`RCXBIGHEcZ-m$MY21c)<~k%d%+C8+)B`KUgXnAr8e) z&y?&ZZ2yBMS+)D(+Q)2!YB7B1X|LrWe}v87Mtf+@Z+PI{7((4NJFLMecZLE;n37G^ zH zWMwb6`GVDZ5Py6<^wu$xFVIivlC?_qR623Sl#AZa;3R7SDAnKwNNd<-(`2$lF$^6@ zu$!YuT8B;YH?~ocSR;2Rz|O4@L!&Fy!nEf8yB5B>(_#0r9}Z+$kS;%J{X@RPDuL@_ zQ_nx$OI-v;VwBCv(ZvTHztj)oe%QldI8Zwyfk0(|W7De2w)himk;z62mU{tuUku!u zZ7>58xL<^;EX4{6VQvZL@h6Qow(7nByL?boVK&a(Uw#ihl0q{lolMAX6Wi~y0uGI~ zAQ%T!QCC~Z(?Jk^$L}?oPs8y?B0056iM$o;`Kz;}SfFkoI!}8?2`;QDaAOG#Y&VzU zC-Vaj`QmO4RsE@Hk1jx;6$5Hk9}n-RfZV+Q%ZnK-AfCm9pTd5HGkUWUbBTih(j zC95dU;7Cd^u&;Z?Nc4s6=#1^)T#8^0315})BpT-`|gctjLWBh$<>CYDenytCRl8)qmF#4J$fr>T<>pmn) z#d_2+5O9Mdp~82o=I#vLTyAbGtsp~gY;_pum50-TYk`ruU_yT$lA-UM*ZJANdszAb z8xcpY% z)29Rp_J@Rtp2TtKi-_k(xQqi#jzHt<1M*B)Fm)V*D`jV#9}ODOeTt=kmNv}C!FwA> z1Nt5A$6kd>tz`4UYKnY}m@zjEt>zvKy$J7(Bp><)utYRoCQ$-(wFD;x(WeYJAZJmB zw03z7{WJSa+?aB)N~SK6)b|YMUdv4le_Nk#thDoK!p-ux1fv)xn##1LqEZ^gdRX3= zMGrOtiRsB@nn2vy>kx7!vnLuHu8m!cjZn64i#Eet6kK6|20d7}RH8F;0qgq0{(=m+ zwxhdmqdMc%ch#>gI=Ln$X%eekohLaD*2u+ms4Y=Ozx--=;&gg_{H()~n3vH!YVL8x zb9>n4GTVmhFu$>xL0-G35v8pfbQ3Ha#>KZ_lFpES5Mh)^>NbKU$^3uXQ*+X7-O=j2 zZ$_8^`p0R$k+uD{dUJCU8C2%|w~EoU^Ef{<;4JfB8@GG=*Dgbcdo^1HIMYJ9eJ&wRR{gZL?+TLNuF0u?9D-57WNEqCJRrX)Q>i(_6Jw~g&+V= zU`$6=mBvaYCt{fX3bbvkXNn&XfEGrRPh*9je}RB1ZV-&@D{8gCNb<3vWVlZM!or^M zRn*V-M0&cO5|dB`X}i+Tr|4h8onNKB=5ywmVtL$~M`(D(^DmZv?|KDcloG=UXj)gF zxq+whPQvNieU~du4+1!0=8dlvL4)aG1pRQ&7JiFwo){wwJ?L}KyHJ1-MR}m$=CrWt z3Br*u*FSxoKcaMqGlGobA?$iJzoq-mKn{`JG*0X%%6AVe;i!^wgm1~R%F!urnE3s z{tGYi(b-_rQUU%YgHtC@!lhoXG-@xb*3%^J(pH9v3fQ2@m;e}#wkD*hQt?l{1tu>h z0_y*CI9OT9`(hH5-YZntBa=JoF~P~*jrY1n{TsEKWkh4 zFDiJ9czDozg9?=*NKj?x1-;r;nzu~t-_fQ`07OW@E6Q3PY`-m1e@bkC#b>1`tL*(6 z&wV+`Q5H-L=@41OT$aKmYx$nfz6)mFbf27d15gFemaGph!C7QSlKh6@x;BS`*`Q3b z?Jz?C7KU)&kb^_PYIyeG2}(vWv3(_!(_D}f&%rOP}Kd>&uRU6YC2hCg&kLjPIzoj3Hi<_a@VXI`ub)3GrjUxy6f2)*+koGIXK z&n`Y#5Rw(rV05vv7Gj|TO1E+E4?CWM8^GA;0R5+$HB%l7i8WWQWLHS-w2exVs@=U3B2zG}u$O3;~)2#lgWFK}<=fm__v zFB+YDL0OgU^S1dFk3kC&2(UW3J>7T9@k}2+XRs}^cMBa+sa->|JwCQ}W5adp_G1vF zt3YjdjNCDa@|PCRCbj?0DNz~>W_#XxNA>z3NI1{ekd8o|{<~aBg0G4HnJJg{&eIre z=^LKS@ECFxvaY2v3z1sL8u7ooHs+xdV4SIzWaKWA(WbSwpCkxOHI!++gLbz3N@EWg z2};4steLO9nhb8KlZAVSG%!bNqO$Cjs}SkN)UDm|bCk0HNJ+!_mc<;@=S%}hj|B`d zcQMQ0JC7T7RethzZAT|E0ZPkFebL%D$tx#~XL@Pcx{D|7Rx=|dpoLO6jk?-9r z3>o%;0tD+f(Xb-D|Itgg3*Ajxc-=wQu>Ae8=f}*{Xo(GmI}`w1Qk~Z7n)}0FBDJZL zZxXbv@FKI>2jsR7t z2BlYu%ASBRV3g?7KNH2sF&F0KUmoO0n1cb6diad=7i;+<8G@d!O6)J~#6d<3$6FPC z^2PMT2sD%dl(_6enDl^KH#%1^!ou`fiyCsk69L$hpacY?Yhwrcs@1O1S<>9JhvwwG z6VrX69fT8PqD(%9RR&oYPRTg}7wo@}fm{vFu0hSyVI4$E)|g@pH69>oWb8=b;PFpV zbhu(wjt4XkD_)sgj5csk_cG1(GT&<{v939wmvd99RC4`Hq)h0Mw70n1v@o}W_=FCY zRCCZ!xS@=#iU0|uK17Yeev8V=4yUTGIy}#!{JOMSPb~ZnV9m7@+ZS#3=yRfvn1SFm z!kRiFBsF=nv^GcOe_z_eHRsfu^BJ?=LjQX#lfs7b$0ylfe4&s4>Uy(wIJ#&9`t)|b zoef_ExGQeJcFs(&m=T_no0R9+O%Jo^Gz0KzgU{I7s{#RoNCqEv}mK)I!A2RKzaOwRo#bhN!KM5O;)d`Lz9M$FDcr4@*Z$H`V z+zAX5|CBR4QmB;2C{uKO&>6vQ&u9m2&rXODH^mH(L342y;95RheV7Mvp`(hVTxQpH zk}th`l7a3Sw9@m$ALgL8D;u?U7}Lh!56SIPb1Y=Tz5F?jHto(b>SF+`XH;Pie1dow zCGiSVMAA#-Vazt3ysW3Esd%4=x950RRxT^^QRe6sK<f{ zM~&P~ZGJoZ!Vq+gnO(xU5vhx{CbAuYE|KbA)0SXNBD`4jfxvU3XW|=QZ5K(kgOX4}Tyl&+Pmmcr20l`(|A`*TdDHJ=MX9 z(c!LI5;%6AI<=^`HZJrnK4ljgEy(NI-Oy%pY>J);@)N|~RM@|{y^M0WVr4=#_Z}iY zGvVttV>b8Y{7Yag?`*d?lEnTr2ZR>#?YVm2wktT(x{7d+&E=%RxL++ZWBF*-rJk(}(g{CYMZ=ylBx*Y)QFke!T58oCAu8og`y zJoI5=zS+CyY1g>0hu}BcG)4f!9IMALz$VS1zOE~ zY(H}PYd;&5{fX@%bjv2P39mG6?* zp6pY_wrrZ22MCfOG09ayu&e{n^2rL4+RjiCR7{yZ^u$0}8bC#a^c2%7ui|JVtZ~6_mTa_XI31zR;?HM+7t~CV=iwo1gl7Eu$S;+fSYJc^PKw(R4L&rBBxqJ+xh-)l)CQ4+s-#4S&V_3a)I*+ zXOcq#?EXVM)@-d9_5R!W1fxxhf6Tf712em&B-xHiDw#iQ*jFZE`W@w05cZyIDpRaW z7ZRz8ZDB#{ki+${cWTpx#9@+7k-4@zE-#~t;2gpa;#zZIfS2WbnFuOTU9}2cq-qYu zzrS3zzdZ_>3EQenLG+f`=A*RL*2V*S6emkeUQR+@Q5ql9+vDhwgY$r{LWPAH$nlaS zBE93dep#Q)8lp}_=DPyb#dp8!HHE*zkZ<{rInG>e+oRm&iqnf;{9OT!hr zy$maFjTM?~ezzD)^8-9>7fo%zC}9nt6>K-Ha;|gx5Nw`NWxr=>vc4DRo-o*uc)bp3 zb&z4waw4FaO-%IjeL1ezW*2?06h&m^;0ox9ZsJ_RvX>)-B6*C z%v8Geds?;PLjl7UO{{QIV2onQq(|kkK<0Ko_qe{&^tJ<*$M9sx7HOVS2#5|%PXnCU4*M+Y%*FsDUJ`DV!}61Fe70n5uZP~-&W(%3w7?EN+QH?LqRq{*KsQpWCg`p#b(bo8Rg^7@xT56-XD*iNEq|_@t!~H3v48c*&D+e zbl7^eo^;V}-2YLkz!BfNJE15R>lPlFoLi^{aABy-R1^1rF<0UbAM=RT?1Bm*LPP=fL>P@npL` z_)cr=)fH{7y9d02v(Og9`~@m!3cu%G`*=6Rsy3)t@JATVj`&0T{xP^}P(w zX|up)pYn@iifDbZ?)@JT(YBpy*3nXe(woVv&6!iDOh%CW1&J*r!%7A?XLRDy($j|< z9r1ut^?~BpylrlHJ2N>?S~MKoUzg;m^GhrTKVPk>pU*e&CnXVWhl;q4SBbHLpNt1D zyf0(Xq(Y??$17{h`@EPeF|QK=Jtr4qxU_dr5Itqkl(RSpMC?PoLyZ?7p2G4d((SVotpCyQnJG~|@>Oq;It#!paCYQ}YFNV+gS8vBQ4P0R7Ls8+ zRX0j}4fO#Cw@57)$14;#zr#P~vXWf%3YYWR!0Um)~McAtcY5yM@g_226|i*XUl z9-4(`s&t{-bYz;YH2)O_J3mJ&_V?&Q@~+FW#vT2Ct_i9bM6^R!cVmXJ<(2!xrwuUl z8xn^xE@YdkiIk7gW@T3}f*hj&or*t}+s?$vYhIM1iA;4hg?S-okHU0fDJR)3(`B)? z$>kaVJ$b|lYvRSLU5fRix_)q<7k3?gFgh&fL{PE_wn9hOY~>e*MD%%gLkbz{?YX4w zB0U3XhS_|t&LO|J?AhMJ*vudV8dR3$x(P;rhGK2T0@*_Rwy2&Tj)0nQ4v1Mt{S*Uq zA%Z+~O>M&Aw|^29R5n1n!I@F*7uPhX3g|LxA<>`jYbI1{BDUB3)4MqSeI$UYqY8<5i(UkScMu+qYxL7 zRW!E1*NY1CrvOzM9ceCCgM+#{t@@L_dU{J2}e&yDFsYy*vLPl{oHmEr79d=2)2P6zC&B+c4 zpiv;}@{|YOuGQ^tG(uA2UW5b86MLCJ5^mvsGuA3rK%}R_h-*=Vbvj(GG0_}RsEK^R zc`Im6`cU@XOA3thZM50Fnw&J2JHT&8)psNY!uo~_;Sa4xYf(al-DV^Z*j~pV%{q!W zhd?!O*sE&!#j2N-U*3}L&3mS>sekXHz$&2Dr~r9G8qHbMNJp$0IemI`*||C99yJlN zZv+78NVrm+#$P{Zffl5#Q@_cZCv2(7#i9;+M4t^as&nI&S(tJ`ANf+V&*I|gQ6a@n zRaQBZBEC)J|1BCC^FPQ!UY@ddl(u$`bCYoZh`RyhzJZl^n3J{=2o8sqXQX*Ner!Rg zBQMR6>HyU0GO|2pyx$R?zzWjOvBkUJ&FMEyXE&wOnLxK?+Bz@|1GdyI*x&6n))P4f zi*772drcfnJi*1jOUqD=|IZoBpmBs>*JSE6i! zmNl12B&pQ902FYV{>2XLjQnOhLf=qYh`SMNwDc!Z3^q3mAM{HJ;AF*Bew*_a?7oFL zSEGw<>Gzc~_uuz%O@HSvF3w20En#sBN1{_BBL~wrE94GF8nz1^_)_S+i!(jd;EZ$)i(|9?4w9%W z1lXCylk9vYe6~qbuJ184>fET5x%Fd*izHJfL0+E%SD!BhmLA;78FQR9$cn`jgF5S) zz#q=`&Q9mXb;xZazwS>GSrb zyW+X@i9(ZcZmrZr`*H;;FwZW{>+I=ZepPUA$HING|I$)CIX*%0a1u&KKqo=Cg5PZ9 zwa1PfPYs*Q)=zUPZ)d)*a1Mye;a@R7h-jq`4gwnY9(DHqMUbtL^HJ6YT!4pQ92hZT zgFk-_qwdd#Xy>`7 z%zf4mJ-u;Cge}M<(chwh57Y#i6P-^RW!*=W*t+=|bSEfd-5pkahFC0IH{j2H8T#u1D~Y z`?q~4%+o}?l#NciUC<~$l$quymDPzN;Qg6l*2}rx)ugoJ zJXHGcShTX^Ms(1K4YryhX{|im7l^2jgn(2zEJF=lIP$QQi&jwH$xb+5g^! ziABRWR9oCsL!r}kYVb4<15knRhhR;ZOg^ayTcS7%@j+BRwtxt?jo@VzwZ%ZuA0jHt zq^`vfLHQ;kBxgC=Nr3sB5~|g&YoyVxpB%$Kx&MI9*9RV`pV}*}r{Yiwyg}1A=X%A{ zv)q~=3NrEW*7`lW+RKj+?;;9CPcExJ-5Ky(EKAs-thcMTW=xa;>OYTxqZG#s5D@oZ z&2eeDZ|#FIGNp$JyT@+I z^tj*o8Pmx8_?_`G!x}K;8=kZ=xKHDN^{BdNm zf|8nuj2YR~72MeRx(eBfeG78M7hTZ>3bJVTbdj?T!911c*_|ZMK3^4s;$*vR;GjLx z&5(wzh4>_w$h1-EiW@H00+x?YQcR)y%T1}3#8&AVkMz3S5_l8LlMS>A#=*V*kM5FR8yPEzV!&Jcs$ahPswL8T54fck&5@JiL0hsg-SB z1)$1A_;A!FOrJGoABa!e1RV2;y8LI4UheNWSN1Ih=Zgb=MechLhnKt@-+_@gDyZp= zsI;z9UpAm_XS5N28a2j#anWf=9`A>wV4mDhY#d!}zYWO^E6)t&@h>qTMzMY}W|AM- zY1t!~+#6@w4A-?BloW3OTkSZY7;rBQ**;6lms5{&O|Wd2am{w`Tu+M^i<;G6xXm~Rf*mYo<;cItAPg9kfK2)S}ou~h0__Sef!YZ0no+MO@$X!ZW$~&q&qi14zR9$VHBl}7A^lV^$tJFr^4$& z8({wfkA?GFi4-mMvJ61%6`&#YUQjJqhfGgz3^kPZ!eoHhKWf<>ufls;# zBL>+X?D#@OGlHA;0RI3bX5&SH7|Qwpyt$k)N_hZu>%9CNSbn%IcfG2GsND7ZGl@Km zo^b8MQXNCDr+1YunV^Y5nuE*`u?@&F%{zp(iur6JRbioDyGV^}hTiZ86({VnCzO%@ zaRAPOERO1j75CA}gF|LW|L+3?W>sY3Z;3%&6J6>A7rCvZLamFcf?!48zz}b01X_>A zBj9WG&)P_^cNt*$dGp7Fy3PRm5i5X4D|{9<_w_AOe+JSJ}-%6J}0%2pjZfd5nF z5+;%o5iC0DiU?`e#}y)DP5Q`Qr`i+NW}?Mp2m@gt!)Q4t@KSELFmq8lSe)0kY#!Wb zcDvAmt5=l=@m<{v6;fXW8JI2*E!~Jrc(7re=8CGLi8r#=9Fj`JFXG}C`u4W@Mkj96UI^{`J?_!l*%yi;sF)w*q za(IsV+O33o!!njquX6SahIB&UW7n&q(f?eYbb_sCB?YC^6ImP|g|ONfCpP@ucZv|S ze|He~#^~gWz*a*eV^a{Pt%`jytUsuRYPY-4IhyqO;!!uB$&30H__tP>h?v>*izK+uoo!%S%F0aF^^2a1|IfR@iofW9DomXkQ!+ULcO@0; zZMXQ)=2U23Pr93hK0n^UJot}qKGdHP$-MLp3`=DzHg{Bw9`e7Yj>Y(p2E&BSn}*^I za{&(8!7`pBxLlmB<(%BA09WK^0SOJTrnfYOKG%pYYvX7`iCjQ5fj{Od7d8BVN2oV1 z0FS|1lFra{MdRj6u3|uC-}!ZWW`3c{kA1YK7gFM8_gnZO;t*YWF|lKuyoE)=;qU!% z(I3D=1koCzQaBMoSgV=fhC~klB=fX+6X^gGqL@Z*B@)WlJZk(d73{s*(Ju$v7GdKR z>}#1|49F{-0Tsm+z;zwPrm>N9Q!-=t15vH?g0rh5wR|R0Zyv0Qm{lXp`m32>D{91b za6qN*+Ky07b2xg3`8;`W)$S?sn>{+N`hM0$3IBS3`uR)~JdFu`ua94(jNRz7H2{_E z7VAm`oN@gn1q3dr!H!I)i+uE9@W{@^oWZ3Q`RC*_#qjbuBSuB#yxxDxOsp8G{nwso zDL`&F6R>5xi|#8hM1ri!sBU)jYg6DT0)l@UiR>~dEZC6AvfxTlr?sU%R5fGqx>6Z= z>Hjup$#Y7x(IofT48PW~4J+50C$8_?afo4irpfe2(|ytm64?9Gg`-a$X^w?*zw?Yr#4Jj}OQt z+@-`VjExJ>(Xh2X;08|2Tk^maMc?|C9S{*Iqt_wRaQmA+2I7(F<|lJtw85OSSUD7h zvFae}nW(JSqzIrr`%>B*f*}v}E9s17ur7gvR;pyy0Q7;R+MsY3gEcbdZ-R7F@FITv&BJoc{Hvou>58U+$SBG;EoLa~Ixl-Hs-R|Fl*w zmH+8cHT*xVT#DwH0f4s@t_O!f&>{Eum%*-9m~RA%>;})r?YZ+FJmtR;>D8y93BA6j zeFZg;#9i&qjeW?v0;KZlEO}x`ZSDkF4<&ZIuZ7=}@;y002xS>VNOig|2N&`g=~T)T zt)w}@X`NJBDdtPC3`)TIs(s*HX7DLs{C`DC?9HVutRt;#%s1O)C4H8DAY!#AqXlkRB6k`CJ+MsPqNfw+GGRMjDHx#pRU35<*!Wn)-Lqbx zZbOSm)9k&{gH#E~QNAq8TQa*;&c%|FM0KG+H1srZo4H{nn3^mbx{y z9$*(UsO42XG+yL3Q76Ceq$i_GE@OUnvi=zU0nMeNdypOpXnQ7=7wMC8zxUmD`LCuY zrM^TvgsvL%jlJ6Dfp{*Ifro`s@uDkSou=R|1s}%)PsaBc(^6wqqU#`%i*3}@tT?;3 zLQ!v-ehh1mYWmWR-E5x*DEm|PwfX=2=|DNkQpuDS`(>=!ybTe z(m<-WXrQK~8P|3WG+IsIz={q&mUurs|`C3idA> z6_I>w-<#cgQQ;58#&}nuUaT=&=j0QgS>Q`|H_!W33UDqTQov-?0 zX4UXq%W>AFn07RM<3BypZHx<)^*xDDFO~X-pHk6O`g0ExN1NxfnjJoo-U0nFQ;uU` zjh?>Z)H--oec85I9cgK*4&6aG$gFq3F&K`f;NOFjK|^j_$Ers=22PD`@F}QjbeY?#%glfp)!$~zSaY;^!9c(>!Gr^=oawQsSA;l?~+Rr;9uHb zgVQm&o$U1Xv3UYuD^tXx{R;TYC#cZz2J5lx5T=x=Zo@Fr1PwJev0WUf z>>I4rQ|j6=z$-e%<{oT*l_NEp%PGkNu$f#KgT(MXTiQ==(N)CMa6MM4IXita-;#FG zTFM{Zj*HP*Q32#0#B$O6ctLO(LlBlnQZ%JrU6gG%%l%!Cd%AZ8Ok% z2fpHHzotCC%fkQY#w2hF5|XuTVUe|Ht`W!I)|pS28gwmpumjbQ;Ma2ya!n)I z76T%h9!CS$E!$(P;&@Nyb@9{cA(b18#%x%=!onj=q`HL@T9oi+Rs(556I?e%sv??< zq|bbp;glA3r(xz(DLqJm%BX$o75f{oD1hGH96KIEbwy@o0+i`;^_CI-WS}m5g*}ck zt|zqHGieNob#!8LP<|8Sm)_w8TH(<=L}eLowmIDFN-lK)iDqZ_ zgRgA<089nZYo9e*N(EBr_d(%1H%A~jUuEV!!p@UZE0{`FnpC8+C;mBGqFx0b+Cak> zn{yB#(2;K)k(1qTOh@6w*XCaIXp(`pw5LoBlH28Yej>-p>IkdjGzimvvMJBC|7#un zE-7u`N4R9dXc${sCk$m!8OH&E z5V+u|aQyHvfAo6bcuoZ6aw6UTsHi2W6}VjEQZL|1yKZaR$ls|y;ye0rIH5f#R!|bK z6MB=T>a;NZV;BTED<)P<*eKe`LA&)6hgk_tQ87&^(+DulPD(fJOVjj#Rtr1>fWTvO z^u!rzX}okNKQU_P*{&uk)p6c0-m~?{0~-7wk?#@ZGin z^=ems!$!k-6-3x}ml9#GZSw@+pM2NSDxT%RCTPAYjM=!piAcAWzzgIh7ypPXn&3y$ z=E&^-2qMrPy?fFGuWss8rxoKncK{bPnjFo6uU;($R&2s9$4Mtm0iABai39L%IM>1a zgi?<7&CL&a-r@_e9vc3G1!Aj|mGvnv&vs5e(?TZCIEVhN33vSv&O?AIubzp@sy(o% zAY+$bG$w7wy*&uPkcMh-)r@;0s4OUF=*W6}boQ%xE@7`_Iq;316-I(0F+5n;d-al% z>V2l;<%OMunZa$ya2*A;o3sBcxz)DSL#m;ge-RDgN%4d&X1U!pL|`~An~*nE>JAs7 z_fC&c<^a`m_fH2vTP&@rvYlv5;o`|0?~h((AbqQ)2j3e9J__FsK`52L#a62+unM3D^xrmc3asm4?eU>F0q-$M&bcG@5@sT95+FNUp)6fp>;dscE6Z^ zO0w$C*5!EvsLSPC8={?ipT5W?)V0G31TZ6di}vtI*QD#5Pku!Cu%l+xG}Nqw+xroz zH|qvwqcM%JCfzWvjU5J~3!ab%b3#0SJtn_^^Zz)20i}LD8N}JjPt>2plK!ib4`?^F z_CP8U91yF|75+qS8;`fVBL7CwC4ITS5!G^IZ!?Db)zY}?@I$P$x$=cOKu4v_cuiX} zAy>NpJ?DTj6Y(GC1TDdrE!-%_52E3PzJx#idfy<87gbwL)+nnhh>wE%#4K z!y4Y={9O!Ql0iFqDDS}ksPpOvV~l{nCBqSvXYyaL-|mp@hW(O16{z6J>H&Hv54wDd z6$tWgP|i>E5W@E+#rSkBq-}GPl+M$P!!d(E0A@LG^A(Bq6oud zre?U)GZ2<0-mSRl&g(l@*snw+MaYv1RY?mC0@`JE+RkiMmkbqIM}eS0TUq4 z>jRw@HX%YsU=O^*(;OM2$+OU}lBEcAp;N-MAIb`=-zF+9NUXAl73s2CPm7e_*j#hN z<454%l++k$5@6Hw12v(%prv29h+w0BSjUX&YjhcPhMH)OPdXD*zCiGZ{&>xXF8Ar#O?rlt0-9eU`i4M9Agj1usTi9f*z zp(&a}ltvEUQCv0z-8_L~)^-vfmmqjfMiwg81G}b4->OE4KwB^fffboW*jin(34deE zxU#0Ct_*>{{y95ao#WDdoqp2Id%~fP?WX>Xac;UQ%uz)>_S%TxVP9=ic|Oz3wO)0Z z4E598Iqfy?WhmTI!lZm^QrN!*z5{t)dp{DEMk8oDJ!P8ePEK?+%KI3}`mZl_!rAMN zK!XyR=`K|%LnSBmde^4$ToJYEt0ON^va2z=4v}Ypj&On*0558^eg5Mxrb}pUOH`|K z@HKXr`s}B4F5-BVNi7gGeUk0Do8b2|O;!|}JdR{v49e&$m#^z&*ZH8LAoIdu##Wsy zXk1@nw=ir)rpjX|55&ATj{Vcpo(#w*p-Za$sdBj?VcaNBQSEXKk`X zryU(GD0~PTg~(n1Sq%C!B5$j=`|?)-lC;wjVvq1I6Y>}y;0mG-+FVs}QMw=MuxA5g zlPYP`sM-Gt(-zWUV!mEO=7k7N^iww&i*eI3Pu*aJ!FzvJVq`02*5n$%pFtExe#%mY~t-p8E+KtWgZ z=MA9|Z7I1{)(s^r!FdRxm|<(HQE~g6iv27I{~q~tfx^MEJpS%UcklG)dK2A)3G$$aWj#vEFc;G`0Xz5mFBY=kTs`H0KFx_Sw2-$L%9{%sL# zcxvy&XHG+<+c;XFr?|$hCwwZJ>Y^9!d2KNnt;(X;_JME;SDk2eQrVcnvh3*(fZK-% zYBEi7=-Kq6?AUIfwVy<_SBPz5{bALoejTqUF+O7_$00Dt$+)FQ5*tn%!$S5FHzdK> zqe#7jGB>#Ye>)A3T7R09|58-YBiGl=toO{Jbh5?6z!*t7kK%wCogPoA-8Ej}@G`y* zGGKKeXh)RUr8N3@qsBre$=J4b zDag&jyoP8D#eCN6?e5oiR=V0Qoa-w30=R zB~y@AlAY}<7P8WXAs^Cr`3~YIYt)psrKgD@v5?7wGRSs5+K7?kzj3=j%bRCg_G*T; z4MOx6Cc%fN1_GK*{{xW0Wc!ahq`q`8jtmEng=w>J358rMqgG(;4^j<+O~o+=J{ulU zHHmI3$08!9>)tmj?d5HWPJ{B;ps>{Uk5I&^AKWqvdN#|=!P&btF$e!U+}J47YyDjV z`sUwRhdb;oBQEWQ3|6M&r`|eEG_Z`qu|(Oz@K?nW5&T%QNxdyu*T)x>O^kIe#DS3; zAn+&E4;(U*?tHOK{ka`G8(+sTz197#)c9Yx3_Ckf^Hl2#>$)WV%)-&J(%}V|Gl0c8 z{=v^1EvdY2CI2vy-xiVdY$f+gYmyU3xX+u6Yt)VmN0HIk3qRP z-j&KLz!$}B%)g*(1K2{3IT41`IC9sC!`*8i4<9_3^0Uq`iD>#en}_BK>N;i#)wYbo zC*tg`sbh8QwPknZlZ6RuIvO0Wg_-BqecKh9iFd-HR#Vy2O|^ze<_t&(k%N~%9fZ(P zcycZkAhD8d6mrcz867|Ul&m)8dyroINB*TJ`RPlDE0A|WJq!ub`!ev0AnC+wgt6HT zhe{xPzb2&r1+i&YTt{*P_YwcVRx)K${nMuv^k+N&m(Cd53Zp2#fRujcO%&!pY#U`( zA>)t1eRjFvDqo&OX3Os6?2ZBS0SeI8Ly@~%0;$Iihw?l+-3O1LpS#Rj68eO4R1A6E zY@XYp+-jaY*jG_pUYh<&bN$1+_NBg5Y}6L4-}JG;8WU&CK85p+$qe;?TCKjp^|DPF zc3W&VMbxPE<+u*lrl6GfE<+f*k$oY)`>vpwB!?EiE$MP8LZ*)jWqr&WHXZ4OQU@gb zLz3FmP%QS<%jq6*dlPRRP@jKKQvg3NQ2t@k6|gt%z0rJ0r9o8D2Mj72CYNLh&IExb zrIZHkC#Uyf9?bKIB`m9&(3m6VayfC;5gCEZN{*BXL_e`F(EMa_2iV(*>+!1fSwc$4 z?!@#mxA4re7Zm4E7`$^}`j|s){t~tMmZ>_ma(y&j`6D@5+G9NBR+_Q9Gz14AyJ%&P zyNIB0e*}U`rw1ffB9U5XHO2s9P;Y&`Y0=@Ps8W{de4YozxVS$Xbt5L6tmCxt-D?~X z5bp|+gI4jx7Y1Pg%S}8vDddl3D;G@g|K7m_Wt>nkpB$Ahh=I9xN-BP|`;+JsG*OH1 zwr9y$7nx2gkPy?#(iJ4aQh$gHlN?To9|q{L>AZUrFqJRSNkI(*YvtI~a$x?Dt4Tks z>J=o@i!G#RDx4 z_&EHA^p_@&h9tDU3BVR5g{I}k2yemf#ZD+^6TCvNiieI`xp}D#>|Sp3sQxZl>5R3> z=8_zniwECpS?Ozd&v(g-Im6#3;Y|giV9zqp>e{5;1XCQuLgm8qzYN{+b7ojG7TqD3 zS~2<~-H({twQ;2dMH)YO+dMDU8Tib7Jrq^W*1unu zCw*pD2=G>e$UZb}6z}nCbq8MuoPwZ#V56*$I=2GzP zwP{y_;QVJUyH(=V z1enuktVd6dYJOZ}lD-9W3_bEZMlIxX7j8i>{ATNR;ASXp$XcjVb0Td9pvj!OlHPjJ z)L%B%Qm= zgJFLE1+u>6c2=LuyxO58Ivo<~v)YUy#q0RsRsl25=E1t{bq@e?!4mxbqKy93biwsF z-7Hj!FT7ID(|)MTpW+)lBYVs9gEg-#uBBM`Y{<*LG-T`Pb4qr~Ki15v?v2jT6BUmS zsS6CpPVpMkJ#s)6&-h=SLnh@5{D%Ik-5@wLA)F8UA64~MXP1@++C#j9pLDJHF~MQ< zrqG5s?Q|%|KTTy+jul28t{~1RVFJdzCx2hHYE`**ST!D4Z%|0#M8kLQ_8u+!mDP%& zBL#729bCn-f7en&KQ@}$H#Bgz6Un8n8#m2t%^+J1~87TC%5Y|oNsDbmUBKQ2ilh_9!H+<%%XLbtc6TCF7H#`eW6_$2rj=ZsJNlm z@@)Cmnd489x@CoqUai6@FbH<+%&a+c^oEo(#+=<{z|uP+{Avfb1eI#c2=Sz#oXzHA_f@ec^d{aGi6D}|t2H;LUcq;s zw#)*T`<3HYrWyyojMn;|F+8>nO9F?36!0TwIw=Z{ESa9vUhaMP$IrtBf9Ku)hoxW? zwvp#JSk0MxhQdz-@IgKGOy0_kEeFGqhCk4#Iz){$Y0vf)H|U^ACP;S~({szB(1{aq z>siji4alE7Nu}#Z*f0O2B-W1XT+4_%|juVmzDR+=0AY@Z%rFm zfKw5auMhSDlUg~C$7XD-E}2Zg(B3nIb=4pp?vDQQch`$hl?X~7m1??w$?zobkCXMq z-{k1s%@N^V<}*fp^C?>%mD(@h+2#(+E>nKKt=IfR+iG|;4}SfHjBvPvzZ*xOetw%b z3+PzaEuSm_CA=&FQRx|!IJ^Kpr=?5YYW6etkwq8kry-HPBK%p!kKvJ04g3NwRbo5&jRupH1U|LMD zX7^wgC}XU=%4DLogKJu@tLwOe(XL!bHhFgS;Cw>C%;7&@*l)C_qjENkeVf!pquLEB zG-z}Ut=q%0cfN|2+2%KM}^iS_NsN(7E z*3TGxEt+0)!`oF^g{9dxE=OqjJ%okrsMPO=X2c>O zS(r$cpZDmP0RStKj#i6YvohL08OfnI%e+NvnfGLYB|;zoXFjIdgUGTG8{{rmKC;+J zc^zO_POd{u9&!dMpKwSbG}C`15SOjh@e{lIWo{s7#b-i(cWG~G9u=(=Zgt4ZMm~BF z=Mp&`Cny(KjTCVswyu-3B9TU5qgZ)5islXb;+d;jdzU}IqYl_Y+;}TZXMuN+!G!S$+ z-$OQiH&gMGK-iM-8m=f-(d+Kc>@kRDBtd1yLKbul3FZgglo=2!I+(<~Q|^@ScL#8x zZ=Mi(4bcC9B3jB~(j(P=Bi*6INaqc^6gw_&&0{6{SH*mZSK4ry zCE}c06@SowJsca9qj943r$?8vH)MZ3zCUNEpG9u~lAuf3(OnIXXeM{hV_BqKDCo8T z*e+Z44-1@xwR4X-!X2bM^Qj?*9Yl(ukMK`i`dtwFXS8c7N_tm`8ZhXNa| z{#^;UG$s07#NWQo)XayVI>l%s&^5c_Rc2vhg@O=7d6orpr&ZI0hdtoQ!gPxZbn|Is z!xq{l0_d$Et??u4))^B$c;*;vQbO;A=|PBcSJQnOHB%AX1-w9eN~=*5X&Hf|o=2+P zHS;p8YLM)R+u@$4JpS73G^4bb7vX+v@O|9mJDgxVq|_RaXcOT3*e#^b*slfD0kdPii6?FJ+MB!r+k7I7y+x2H3XqbKOmCD5bOmQDL8Nlj|rsWmLVMW;yU@> zgE+EHXM#W_Qr#;XUVAPN<6b7Ug-KVOtc6mc$23)`l{A3#uvvop#b*A z>?6!}WsgA=<|slpj(p5267+>jn(!-PYCZ4mx|au4ZZ6NNJ>RcWAv!@&rVLsPEDjtz z3>D<_lUMPz`-sXb-1co>4R$DSHUx&@&m<4 zE4z%YU({F?1^chQk^Kh6smSenR_1m>RFT0<1uJo&pZOixKO%0_VB5EpRT+U5Oht6y zgi<&_;LN`|-}}o4xDo+lM$qiwDEesP|6WRAt^JWj_@dq$KI~B@R=t31Z7ObTT+%|W zV(i)kVRvvrwxcUq`Yimm{=T*Yi&!5b0hLv^IB(#hys=Gh@G;GKpSZaOtVKHRGII4U zVikiYWlcT4Dgt29qM=(imV_e$=nFh5Ky3@1yxNvth(~_Z)W^wKagK6CZk>^y&Y&Ro z)<1P83!~@=bqR!ni8hFp2;5k1A42%IX)#2vmpM)U5@pC_XbB2b)VzW>xr$q^KxzQV z-fw*Ga*L4M=R?ClRIEKdpR{mL4UZHJmRa=sRp0@QE745zT*4e9O$#Q5vTOLQc1N24 zcOH=7@CrkYcSK4B=rS^B`%c12S2azj8>Cu|cO9POf+?ntFo2@9p2+CfSV$t)zA`V? zDLI2xl_TgQKz-$z+?0e0IvF_oL55uWf6GM;0QXg>=vABZNZ&4)x?$>1OgSryi3-bK zMH@FS(_7;b_7**<9<{q3)kS4+Q1YQbxcH?&O=2w~DLWmj*H&vT zMkOtEETXit(ZmY%H7L9k6(>52z}wRee^nmFLG91hI@q;d=J|rHrQztowveo@xO|ts zksAVQV~W=z&RwJw7Ka0Tfudwli+MOHzL;H6FH=Q}V9qzPA_$M0wE6)1%XP2GPv62V z2Lrcq{@VV$zJj~KlLFRxv7J{((N7i|0TM&^@q(ucf#d^sSq+QZBnp3+4&T=mwRcc0 zo>u{GsB(>@|!BaLtUeV53~6jVC~zbe=hZSCB!4!KU!&HP4~%2M*A}EvCslk zxEhXoQu57lupI7!^9V@H;G3w`dRgSr2oOk5TpNoDXFy`Wmm0GJ3sb~woXh^Ob z`v`C0wd+e{1W(~ZVbN2i+*s`gX@vA= zArbY6@wFO23Rb$#v8K_~+^6L{$mlS7 zs8Vfiho64U^0zX^|AUDIf*xzB^zUNHYkrXshCzG^UMEv)$DPLMbEl-nntSZ0rU(tm zvTc-Wf3DcNnOhkABeC;=Fk+fFNQ`-9PAm3!i5|856xD2(*raK^>q%QW|N0VuR{QB1?+M;HeBM_Y0q^(HXsG(ly0i-7 zKqcsiAzFZl)uTy@wYU}CjdO1unTHCYk!{wZV&E^o?P0+Hv`!v;n!sR+3H zx{DYw;$qy6tb+GDJHgRiGYMh;RkS}ES!SKZsanOm0q7o z*9}on2hPXt^>O9%RPt3OIz;LKOKnkF{|H##~#U2pK21+48H(8K*PT%YoW=HQb&mhK{eDgK@q@t$h6;n3YV~Nj*>M*v^kH|oEq}I+J(YrC5Hh&TkD4Z)o z{$-k-xB1x~Mh8ELQMx3Bc6l8_ZG5q%6&e+7b*Om>VRRLO7pBHC3iZ^M0MsfiyGV4q zm^9*J3M`q}fA{?|_5DyP^=iJftZ-4Rd)2I?n4Xi{jJ#;>-Lm1;THJQb8%gUl3qJMU zI-7=uP990ohUr&Z9Cm$0Xoru#@a13%D7H1M4-*U45q<5`1sbdUEn>?xm#|)Lx31QT z537ehej02yB~%g3qOX7@8hK7AeuE3FO~~qLuDh`%@60cewN#JT^v$aXtr=t)1tN5T z9vZU;y-Z0=qvo=E4en9eEqnx#EjTFcm7GI+VFmb;4QpedurRTN{-A^#V87(k@XrOW z2v#^pb^pxtp~({bv8ftE|H`NdDeh^$-1cugaCDriW4S^Yq22TtBO4o)UIa8Cv1?#w z>0pCw{U9uo{J#6vMChM*k=gE8M1PV&jgNw>ktt zpu94o9Z&ZG4|Tpv!9M@tySLFewoger)=w}Vk#FECE{{J62%5*+ZV@5$oci45=#faNYY8N;h%kNgQh5P-uG_3P#i1L$_GjPuGmNe(&TAX@JJ$&4j)JTJx;h ze3NzJ=KLhl^J!gTCz$=un9uK@iIH$pGU!+};2R`S;*jM*J=Vkb*A{kPJ>zi&oPz1fDX;56Yjoa?8+V5#0(xuVrH(-LDF8b*Pb2 z0{?QeIYn9CoP_nur<9M`|HAgkeHORr$WF{2ZTqmIW}86ds~qlN=&OnV*jUT4GH7V{oEJK zd>NLV_U)K`r>FZ8tK$+!9S8$+b_3a5qWvF3v&?^!3-V=;AdL1S5IG0hhnJ{y4_MGN zzi-Tf&=O{vgF&L<>@jCB8zfKnK_d3p_ewX6Ck_+*obQ)j*di0ZpipQka>KC(x_pr# zHbiK$MeOcdfdHfVy^3|Hh?5ZbeeBq)SSuB8w~H}kD%}-|VE^f*_=mUIo-EZDSe~g| z*`N6I)%22Y$$?$aL{1dO20#sL+tjk^@M+QFp3)vi-u*8C@5kn2w&C1c5FjHV)axp* zsco1sySxE^K3`mcf~A5pdW8u%{(+~Dvx0qW(lEK3l~c**%H)Qr8h;!DB#kWXWjiPE z&#}!8!w1A2qSnz#*!#vp{To&FKir#3^ZdE73d3H5!1*o|`=4gmmc$7LVOHuu`>mC? zVjXoHV+phTT8|<6NZb=ItG=NX7myq6Zb@Y-70U$`4&3)T)5zAw0MS%}jrQU(fR({X zFV1K{pDq~=!#B!6lJXq@mE~IQ9_ZNw^1PG+R6fPIZ$P~?y+uDJWpz;K<6Sf(OFN~s zC)g7ok?eC~uPRf)gi!{H&TqW(mYlRqOdAk`HLe1&Ai<{*`Fi$Rapx^zgNrHG-fjNd zOe6?_j@4`b-~ERmg%Xz!E-Y_Aeso{1yONTV5%GP6tfugt-xtfALn$FrH?s5$!r=fb z|IJXDUr$Geq*#&kBNVQ+4@!xi2#P7>tO&VOvqp}p+qF`*CN0DLt*VXav&VR2-ujmAE43?vRGnm_If zeO*hl!RN*g@@svB4?wTdQ1AYbm?%)l-7rQUw-Bsg(kgKxtaar5psGNnVSgC3q~+Xi&A}Re@2t(@__+~QJ)Tb1@<6W1<4+ln8-hGz5Jtbr|$kt5npZ%-j8K|E@ z4GTaU!-pwDl~JlLo5(izn?Y;vESK6I`|WLKk>!AiNH>>$pUx7v>#l=MoCn1bG}KO( zjIQrAZE#=w#6Vz`Fb3ZzEzE~JBK(yOYvvNpPy6B0hRQSC6AAZ*+`-7MD!s#qhe2Dt zTP+r2T!)-whZ)s)?wS!k0IwNP5Gq6T>ozSTnLWct%2x!cDW#FC_e{WdZ|EJSqI zD!(UP16oHTZ*oy+*bW;UX1|R$a+y5M+-V@Jqt(l!(BD*c1+mAtvdK%|A>yb-j*GZ- z2lRUdjRt{>C4)S!4J9 z-4Z$Am_*Lr-gBfJg1gc@{kzNS0q**_?9Yf}#XbGNc!!K;99hHQ2#g=8=Z9ShWoZwi z>A7E;x+1+LFZuWkk*I;TzrgioE77=kJ!edN%p9Ap(h%d7Qe-jn+;UcT_W>Rv?>*+1o8rp^_svyrusr@WRsuelyZ%UUg@9dX#CA7%Cu zLbJ{G^e0$!D3!TU@PM$}VJWEz!!Y?2x5laeb{CMxBD1ff0l zT=L-efoHQKF5}@!`&J6WmRR%c64f z$y$ngr}u!LHgDy@E+>$8)j&^ie&&nv1$9tls_7#}rSKT4XRz10V2{2ujc zFIV;(b>tx?@u`!2{&It(OZ2GXvAJTZfbaLM9fzAZlj8cTN%S*ScbGe`_IjF&msZCUhi>jo0jol^GIT~Q3+9Trb>Uf0ya`blm4ur;Tw za9)LEl}v?Clw~g(qRxk{v5czn7rTB99)I1??Lu2ARn0%PRWx-CWvlqLI7^%xmJJlu zQm-tN{9e*FZ*fi?M9dQ*=YfabD{yscVa4-UGvhH{biY|qkqybI=LTi3B&Z1qjl5Sr z>ik(Ga&$FkfLwx--hlI>Y*5LG$jD_~My!n~TF@A&R9c3fX1Be>Lj(}1aS4UQn^|I9f5FM ztxBC5kCzdIGRh_0o9;I(4KKFC2kFhr0KV$?kl$3!g^c8we&O%UCCM>tuT2Pu0XJx|zT<8rBd(RiPm`5spHGV>Z6Q zE(l5tg%iIGxCx)PTvzwIUV_(DUm)xsTpnPmofNEK=u*nv{(W1}OZjcGMtmLgt_oET}(R0~?( zO)Ei>q`CjVPB`{KjF@t*fovKI-;eqOFe?!}_gN*qcrRcfy9PI~V-OviWWkmq%AR}i zg{29jm7D?MzAo}@AspxKFCok_)u;Whm%2_KWkawuB|Qx(;ffM>VkX2{iw-fWm}zGm zpC5e-UaZhl0Q6|_>m;t+%513$yFu?_xPx1z1(VpAcV3&0`loDfCFBjrUqG0N@)=`m z)mKm^69CLk{Tq#V(a8m73-RVXr)Edm>9-x3DYCS@`m03Kqtv8_7faI?Rit)TpHYgt z6FpFwKcW}{Z<<1l!nCNScSlDK(MmQX1KkEzUWdaJ|>8MVTMk*2#Q#_Jh@ zP|mgOZUZs$P?aO&CoIKp8*JLhIr6lMHgSQTy7OJh03aRbE7yO!;PmW@A_3X6Q(p~o z|C1tRGK32!pQJgVSc=z}Tj7^*E()tLV-g#6oI1!KURya^=kfbZcnMB8Ev0JM^&O6Uvx9Byc zbXx=XizL4p=y-B|NWNk}-Ya8N6$akyNqZX$&rbXz_=dl}$HzKI-qoxDi(;fX&h{yc zvnBhx7&}y10^k57l}v_rFU_2|M0QP8GlPyPo253&pGP9cj4j^9$vUE{`y6~K_wjoU8xGXAxBQ?7{~MZ~=w7f1M`6)2@-BvyxtbeE4Z)-<0LBW9 zie)>$;v?Q&F`dt(D3>FR4>kz&TAbz^YTr|h{W@4Vj-~1L`m8xW@b4+N1@*6+xJZ(` zXV%I$n6A;0>I0G|Ix($#-#*D0+{eMnR+qa0peXSflf`L`ytPx9T17!LIs;~#^V)G4 z&5X@tBoWu35PtHD6MJEt#SQ%t8R^Ith#R+Ah>AtrKTo;PcoLXypIIftsktojQ|H@3 zn;!pj?)MRKlV!DNlQG0|w>#tQ&X!&Ei1{>;0Jcm>$s&rirF7M4JaBz;G~bez=-+wi z5NbiQO%f%N!DQG|>B$lbAsJ;+v}ya$*4Iv`NxBtvt*!Uh)X8Z;#KzglGk6@fk0Sh>_kwvW=5Yhplia?YIZen-(M$=u(S8dMHoNo~gj#Ut2V zHYez;bFlloto4BAxEVox=W$fdh^<%l-hd?9Uc#_awJ6}C?cuz6N z`pfBzb2EE&=>aQJM5LTosGOHw;ZDObwLM$^SU_m4A}$sE3Mj+{?rUZq^u?IFTH(kO zupolxwbBrBnqFeQt%AVDW(^pu)jn0~I!#oaAL8qJV_2}Ou1k>sJg;qr1xX*JA8C`Va@bW6WIk<5=I|cVEQOzQxny&j|{$Uf2@TYtg%)?P0eRpzWbenbJ+8 zJ;N3FReC3zz@>drEd(Z$q_#$Am;~GtCcvd1jRNK4^}rmt17jxh|`qd_B(SxdTkh zWQANx8<+0G^NK<){b(St)>XR1qZP2&V1_gg9}wP4w8()s2(h8|)v~hBm}#`*t?$IL zm3lMqwR~ZV>_9WTf6p=tN-kpIEkVcBlYI603BV{pihp&oz3Zb2yy!Y@@L`V`#Woo~ zLg4g6iY^Kj)(g$xNcG?w*9I!L#D=_8CBKb7LuX{&2%`!@eIJaFswo6mj)#)hYA3otCw@^o2H{1YA#%SD_U2*b8izPwyv5PC{Gtgyu23`g5yvb%jLjW9@ z$__0(Eipvdo#@xb!UFpLj1!V(%feo~2^yGg1+q(DWysyM6Sqihr6med-9&2tk2l)H%eEAjsS&YF%q51asbx+G#W z&&8QzW23XU{r_(0^Q|sVV_lK=rJjY+~dL23Au zW>trp<%ds2M_unpc2C16$J;G+^yuuXBqX~-_s>0FrWO##!i_r-bCK0WwU^uNzp?yT zkzjZvM>6+xl&8P=`*?eN(67sej7A|H640DnMOz<%0uBnFGsBB2L(M5z4PO!yt+9zP z{y1^A`GQT$j8z2V`5qHMj%`h0EuhbX;JsP&!1av)=Za1CCjF+ zgit=AUB`*zxjSe03W;(g&X-TKOC)4hEF%pWpA?D8@)&)Dg>a3xLET8FW4em zclmL!8jFD>WbX2M8(Q37!`2FwcvG$XYLBL6Dlcf18MBkZ3}cijH>0f2(9%#UZ?V5P zA$a2X@FhRBa1KwTjLQLZIoqX%UPQAO?85W1^%7wTKEaE!Bp}iL!z|?lw3NB*GGGt_k zA8?NA{8GrZ+wq@EQbS3+6HT)3TD!=~sXA^!yz@+6>fq;7H?&SGz80*r z)>-`E#rGb6YXuk|+DN!om`&sP!ZlAp!0b&glEmRyZ}=FaYyl+%a7pEpZ`;t$97c=O z-D#lf{>db!tiMk;J=+Pi9Rdoj7E3>=iuBFUB1jNZnW0CDXFSed9sf}*PII#F)@1bO zgUP~{&A7w4)-3Obmn#Vwf?~S!Q)}U&*Y{&Sp&0s@R#@muI`3n1TP2ZGCKH-Yxwxxj zZf-U#>=9Z^6Pt3vmcmfxcI$Fb(V3$NrQA8H>1-x-&^x5rhi-Z*5*2%)6h!Hyj`$=Z zD24n#^W9<#tsn5g2GaRBL&3kbX>7 zI$?hI5F8rJ%A7opQI`fgoHGWxXn^~E#j?ho?6u4q?w6pSUw0s`jY+D0Z$tfzlDJbv zL)XA(OVxxyGj_r`yKG3`y$rkLBW=0I?i97zcCkD}@I&-+G%>G!g<)d3X)IB#IMHj} zZ7L674w;v~tx%{`TLyB3#ituFTbOfB1|52yQxjQobL^XdwwvmGjRfOE$C=u7GElGs z%~^8;ta|N7xmhR_Nk+H}E^_Rn=%{aop6*=V44yk5IYf^|N;8R9H^EsC87h=A@)I=o9D z;{qFz$;jFt3#14;t$0MpT=a-X^|tl4n`h&aR^A{hnm<}<$$9*vzg^_EaPjI_2?~$l zaz-e;x%!$%>BgIh-r#9dFE25V5P2Cg`(gLbNv8GhU7F8h{$s*Zv%T#toKdu_pT|y7 z8N^Zd^347DzFn{?aQvQsfosnU!%+92tu^Pl8vvRV3Z_9j4A9j-$t-E@iLoHY!!&|S? zuB(TA-*j#f5zPADjpI&zRB@@08=P z6YDZhvc{w;F-LHcmPbSgK?$as8)qZA(ydr8nmMa?RRa9k!&Yeq3562jM+~dHF@sZs z(ZVL!qaV6zn;}8*KqliO>mLN4R(UTuYmd_rIW}BZnV>s?^QN&fqjS3i0!*`SN}Wb5 zFy6{G^Rf6_L+jD($0pWn#+0lM%*U2D9!O8^;JHTBuRxKV@#`+C*VT57@;%YSwWQd2 z&p0a#H!8tEXSnI$DLX2G=n@j3BS-*DISbwNJvX?E_WP@keMA@2{s$uF=$Kd_VoON* zT`Ju#><6i_-y$jr0m#?#gTneSI4j#VIL{UZkPh zpSMVvc+NH-%yuiqBgqlHQt-4DXGGGaK4j<7uc`AvnL|EvKKs59Vh+3-j_1AD>r}!` zeo&6uquTtO9pzz(@9o){+w*+9hyoOdqh~$Bey3l*_)3(Q2Ms}Le*+H~T;NS{`jkC- zZKb3Q*XB6qr@+inNqJ)gj4ztxFZw@l3p*+j4~-t{feKQgHq|w_FSWh?#ryE&<*bE7 zo%loJTBZ#mQYc>8I{$_c1^bGXd2M^ruD3~zY=}7H5mIP#g#7Bg;uRsmVYLgc-R^u3 zGHxDZkQp{2acse==6fd2(iF-AL)C8Sk_y&+y4tPW@lG7buma@=m1P2j-oaGZ*yPIf zQ;Na)R6>txq425@?5n#1r!x95B5Qhsi3)a)O3Pes(9yU%K5u?dEFSUb%g9>$Vq6?^=M|NvN)zk z2$MNhnV0{y-iu=&a4Cw0&cwUZjiEmPGNp*{FgdYN=Q{(^T4f_k7k&1!N0mH*!K(^d z&Ly@?Uy{{y$a))}D&J8mP zz;7oyl+^VVC00Ug$p+8+BG)A5b#)?BlfgWzJFt%@PRb)=1kXE2lsiBSF5nol?(klp zZ%|Y_F(w#TQp%z(Mm&(GCX-7=JW-yw_L@48r)|5ruFvd@?H9Fjv8I`FwkKiJYOJ#l z_;Ro{<*Do~2;YW<1}5<#uJn%C9{PFUd{aTYs2n3FRWi0J&^fA_fGAl#llohYC+` zZ*EeJ#%AhGwo4@Rb zH$S99Mf$|L`vRdK%g|PzDx2&ki?j(Ed04xP-)8HZwJs6kdTQ_Zm!r&rM7c43W`olTI!Ov~2X62Nfwef^ z^XSAd!c-mamfVHA)~&;g(lj8h;G z=n>FBLyP8KLrzw(^j*4@g%PT*7$y zsxu1x7xM>|#X!|D^br#afQdjM^x-JToqZYcd`cd7yPtg2E_h_y*?ngIeGm4F3W(PS zI=cD5x%>#1$(U^seBLBGi&b~U3pe%ae5(o8Z>~oPMOb|+bAk=+-&h;e-aY!qm4W7w z5(`@vl4SJE={69fK9O1sW1+4M(q&$g^0V1}i&0$(l%JIi#pUnNPMEST{HK>&RmS->0aH zAUZ!^UgaSX$@3+-IDb&txAMJVn`~e^8 z*KceDiOLjcJg;Eik*j-!7gRBo5Ax^r7MQ(; z*a_+*?j_fSZFzN?N=L7}d#|z|iXlt$Kl}OfPN$baF#USWIrE?jZq@X9cc zKrKMe;pB3g1u`lTC*#4Mc||ZQ0NEi}Jf+p17Qb>Xqc={@wLr2m{N7ot&~B2Wyc>n=8*8Rof4)>^na1r(c1o$yqS`@Et{JU`g3g z2jqef&72x1J^LPr?&HEX^@A$+CkjD$UR@q?0L?*!qcg`xk=Jc#CoBh_a=o_dbPdRJ1#mO};(l8(GqmDLSKC3vJ|( zNm(hv{hYO0&&z@_>2@M=A^pp(DE;JjU*5{z;(CMtiCKRl4y&X8Kg8QNqG~PzN?1|f zoY=uvlS}tLS_GyyN!P24u~m9l_w(W-=$qQ@+hAZO>UpI>OMs?&k}|>ML6-lu_$!9- zb^OQB(P+2m=C{PnRV~?T>^RdwtUo>Am(`z}Q8K_#ri3rWio!k3pyY%!7h*W@x`CQE zj$Rr{=i$%>7^-Jc2qiCifu}?O%`R1v(`*n>1)n1*9}$T{--&q~<-a3A$Nd zyVId96Sg_TBdDDj)*z=`lP}}+7BR8Aty~{VZ!oyLC}LObcRP)1QEn{mXIvrFF@;-| z%@Q7I;{IML*rWL9bSR|F>VI6vSH~e1^SKbAQre1iSX4ZMF+_&tLbz%9f;`bOgGjGf zc=Km+VijT|1edLN5_#~|rgVbcC>$FI%h?OJcCg4nP=YVB^x-Q@*4Pv>IWO^hoW^VU z(Q3t-NtRwrGgjml*bNjTxsGB@6BJop&yq);`~QLiQ!wPS%{z!RO`v6AZiXaV@gGw? z0^~_M-1wnGdh#6b0%MADHX3!lUNoj0-Lb8*y2Xb~tY;h*Ot%b@2~=j;c9=DvrS4`G z6-NLmrc|zTtDKbDKhkg1z)coIt@ZX~#&|mICnETU7Am-}bey`QmfK(hI=K>PMF1GM zxBbM}pqTr?Inv)m0T$!kzCdI%=HKtcs3+e+gHAwRrqCQfdTsIb&u8c1FD5|g=KNvJ zLmM~Q(7V=ZX+0cI0Wl0nX0NZE)f-0yXR`t@5VwwHyqsxVbWrncmlt&R2OC3 zG^C5;qKe|Lzz|fz8c!i8B^|U84V~7vcYz@hdZIjPPviH||47;=DwqhPkGhyTI(j*; zob6fmzuhFsdM7sj-U za7#_y;HiQ%E)S91f(64>RXiCnyHb%jr+@W~n2M;@f?J{lZJNP!xq2k~l)#H%cAY*K z<_PzC0{$#@n7yikmsn?B3*;Kc9a6~xcjGhE0XHYN%98jr>eFgpD%!+AkBTP9C8Lmb zpBp_dQl`>CK%4x)&jBl79h9b=kI!%p$8b=)_<4K#Ubcy++S|d4a`_@iIh!3TL5iv) z&aEc1@7SOk7-Nra31LITrQ<>Oc@Dw;W}C1vFO%80le!ne`j|C@?>bvM zn2YqHZ@fM*@u|pZpN;@_Jv_~kr(`W4eA&2cPmgWe$INcxeYmbVt8^k+GcgKuZXyd3 z6?ThQo#*PrmW+&IO*Kue1Sv|RCC`4^WV2Ab(@V2Du_e~ zFp>yEj#Fhd71&?-k}3 z?M`Rrn}Y8#eg24Kz&-GCb0cU=|3QLEdZ#TXS~JN};dwz*w_y!WO60+F4OSoxHXAV5 zZcOa}`Qt`mcRSHyb`ZbM1%nKCUyGnSCXY?#=m&k1U)HG-nE5eYsBcRz&6F`QSm3t* zbR7JVnojJ1yky7J=P6CBCcjg+rP%u>0w}-g&Abb7mtEDlYLpK!gh)E>m%R_E=k8%N zTQ(|Jx9_MThnzXjW*Y4qWvA#*w633seL8oG6qsee*`S>pU9c)J406r?&6_&r@dZhA zG@2pBoHW=~JEeiUxCWcYis!`$pJ6=v=Kj9qEt6P(8^Jl4^TCK<9!zlbQu{+h$xv;^AR*RnBc%> z{`rHZ0*dvxl6%>8!6EorqPKrTpLF6aUo2QG zQ6>YydWzMA&Mf-^%65jvg%wVjwwtofpIWXW%!b^Wzyt>*2>I#E583l=O^i;ztQuii@(s{<1q9oA~eBq(c?T{Z1%|;K>23oXYl+qiRV>b3a^aOa z`j;wgk*>OxW6!{qCB{0kMpWS`XD309i<$_V_gl{+yI6ezA7=je=KPH#Rps~2A z7{k;+yFcoC`EQ44mBI7{?TI_w=2LVcPwQ%tgjBDEz-yb9SsX=Z5U%7DO0 zcVS-Uos70N_%)ws_lQi#+PbUmYa>oxt-pTBFa<<3J~Nidl6U^4g--0uYOQNx_>$I> zI*fsxR*xoHO|2{rwX`x~yugKt;%#emzG^=`?t-V(Ukp3Ul)}D9u;Kt26#*v?ERt-J z{457Vv=h}SymakDygoV>B^|uYuoOmbDE#1{d`wS*Fc2+q9&C}7VQ$QM zDR#UnR&5K%1KO!M7L9O7*E&!xShc(QEkD zw}za)tHFX0ui^f;HGoBm%3t%i7(iR(gA1Lb_!cdILHSGY*k5>>1qdR^N0Bh~? zSJGK`lQpCJiJsa?8%WJ4(Q-h?z!-8(td?(WjGoTt!1VE?TYO&tM4kV62v!lFoe^cs z+}~+OVA(JDq>q^!npQOT+T@|?_9Hx38|9C`jwjPbLjt?SBEu+z0WGG$$dRC!8wx@S zh7*Vkqr!*94y!+g&5?9M{*yVAl>b;4Qpl0wBHZ8wOlP28C*{3ds8{W0om9R+n(Djf z%f5f!k4D|pMn{i@5aznzFgvp))vP~?k1QaQBltn`BW+(|g~@AN!MI9p)h`s_2RLg) z-Y-6wc|DsVJf*X(v?)%jpLxJS+r&TQ>l||!v7u6$$?{P?G+|&=?m`d~$WugTQ5)(b z{NR|dVtO|QM@!fEvyxU`stopr?=Hpp8%@GWWG5)iqCy6ZHCU#)p_IBcc z#9}&b_DfzX0?DgS{6qdV$av5-gN4NCR_in-Sc<*^a?b*+IvqM z^C!8DulUf^^EgZDp{!~Wl1y>J_sFx(%zNAKuB87I)<=YZI2>J=c#5N~R)8Z3d7OAT98L5(|J_acg&w#a2_N|5@Ekn$#|wGCU%jX8!rV zu7UJJZ@OJT!y9lkx3;%@=e+?dpr!V?7dLkuf%V12Us`A#*#^G675xpDSiS|i`F9j6 z8@&!lClb^zrKB)D^>%^P)HOYRMw2HVT1LXIt~+*-C()o=oU?Gole>bBx8nOA#(5b9 z?k2)tWz+Y@&y9dA?#7RiWmI;F-Ni5#)v%4#UYRKYE8D-X9S++P6w~z2D6(EM^6-NBDc)j_>lbz-I!#A1YOGxBJx4_quvW15~ zMX3E*eeA2z$`EqHzS_hc4ooj~2J;1e;DMqAZ^}%-iOM?mVCMJ@A_j1=y1z^Ls&d&} zoCEp4v85%SD_YJL8}nD*keH#60R!UXGj5jOjW%FrtSJft ziA?5~*B4QGXNrr9{A}zVQ@68TO2&=bLuD~IBccJDCMaw7m&(h#f~rVP+2YE37G`4fFHQ_F#ov8<4kH{yfYe!U9j= ze{+|iz?}hMv%skA)^u!AiBZHXd#L0~$z%Q`QQv~DmY(d^(`Erg`2_8Exqd20iuEq2 zP;@#~8cSTSo$H1=lCx2z<_c6HFgVA4Is4F!c{Op+2|rTc-XZMMPTBz)aC>nG^I@nb z?L{Y=Gk2{8V3IKxw86?5DRAX@U1NN-q&cE0CaG!oQ>$bT)U8Q$uFgA(IelQBzgP9% z!Dm@gN%(FWek?iS-=VJhk@wBOLBY$fXa;t%=20X*5l?I{;~UXsY-0F28TVI_X;$mS zm3n225OLIrY$v#P>^XVExmnT)wt(W?%{(009$k5zA0riX&)TIb|A3ezi*` zI=xze&yJ*39B8|)E=#U0-Z*B#@a(624JjOSLFq8W+E7p5v=v)D2{!Ey5=vv+L(m6 zoZLnaHP1OoXCY?(4bKPwB5ktvKEcyi9|3Oz zo#4|ATRaq0Rg?7d_)>s-tzzP3AX=LVI6TQ0yYg+LZ#TqNw*O76j%u1l1`uOJ|47II ziawuONe||pzoo@BP%ur$yaT9pD%kcU@((x0q?zbA-H>~@OUTCqGvtNj@4_8SsQqLG zr-$1}5E2S>#l;SSD`~uTzTZYs$PvE~4~6EICb`xWurYSvM%jgM#$3aUsratuF)y?8 zpeeqtrdjDm#rj8eiP`ZEv3WZ_u#RHwO2MbBZ1I<34XSu|y=geH<~KCR`~u>7w@*|FA!mIB zwwXL-eZ>8eTfLwPFS2JlMqo!F;imt(M0%=9swMEdAeu(vhq;5^^3;S|USLONd`h3u zGN>!n?}I6>gEFEu?74)Iea?!`4tGcgNkJ{YC7Zk zHJHgxUguDJSmt&_Rye{I=`OZ-xMA>ufN|i$g&D|H{#a+=D7DaF(<3>9GwmD4!)sk}xNw(2}_Do_~7nouNcpNe)8%7qB1S zM}yH<6Du$Vcq;}t9J~%};+@zM;!gDOBiMJob()~I?|S8T-USt6ZYWJsvH#i?%gomA zdZtOg-Uw9+r+xCImCix6(9wS(GrN7KM&0Q0jbm<}<|B088S+lbL0f_cpAMnI%w?Id zM1U&`@3f2e61MqHEZYhxf1nQZU1HbMrDT5V()vkmi-^7mx3~j%^0U$Fkihk1JC~^x zx+#ifxbe~CAqTtaSEh27>u=3OiuA{_9{1E8{=LXtT-*hPz0m7E&1zRQx93f2O0b5W z(_`N2A-TF!LP|al@{_RWhqQ-vVN<$1@Q8D^-JX`t zk#JsQc%gGvN`HuoPe06=u^ig`n@%+H)EeegTE;V1^}9{SJH$Zkzid&6`fk-q`BAB^K!Wu#ZPD4f z^WB#Q*djV6oD@LDrJOwgII_jf*HVE>7bYyQUOOnY6nnY}yMlsEEAFXIo9K$n;;_|CL69QF z{jlAvhmgl&Ci>FDI)OwLC@hfqEw3jhDfid=11wpf#Doz8PV4gzdC&K>ksYk}B1j+L zF)~UVJx)O)Js#LS^3x7HHrj|`UrQ-%Za%-oGd{3z5e=`YGCeJZ%cg&~G#qTWWAMz@ zj1Y|^K*)R?l2V2bW!a@!@i$77n&xDYgfd2iC#b~T@T(36aA0-)-okw0fEqu(ZrW<- zx%fcsBsp{hwx6D7VVktQ8VlZID_GH?5`L2pBgu{cM(0mo5}dggXNX*wI=)M91CP)L zxzi`|*7ec1g6Y8ur07^0wUM_S#dmn%J8REF|36ZA+0oJVMRyTCVHIrG32kMR8O?ym zU83U4EvZ~B*L$|!pCZQ+qWeV-;6= zdkLPm+_qaEGtf|M9;N#(-S{i{`v5J6*g2!$2EfNU=fXg*|6FXo&n3KS;O?%O9$(z? zbH}2Mj-%r$wETseu#WbC-CGTeM|v?>TeImuSa^O{)Q2b>vtC_FH!KalJ;YM=)6nqQ z1J|62%p%)}{X+-RE)9b>oWeDIN*@Tp=sV-&g6W-;pPX<3riO3~yLNdvX4sN9Ka)9| z(um?jQW}yW#ATI2yoUd~)aB#osx^8yYOH5LxMo<>TKngHGy^z z3)}~o6NMpN;0TPlMePCO?o4&E1z>NknQEDX_$dE6DLszQm0~rRL`WFanMwV!Ik0+w z1Wk)Ia}zj^HF&+Ux%ZCjN?g(oklL(2e~c+V3jh_+;ga70tpQpE*!h2eRTYyNO!vTb zQ=s@&=nga)n*QLL6cAzay&o=&Md1f#m~ca)Pxg+3 z^-xokhiK85eyY^inceR|5I_uUPNK_Rs_%a2t$$+0ge`~lj@7=9cHFnWZkfI#$FAn2 zYFZ46_!;O|k(0M@F`N*x^f)0`V z0o1H6o+XZdzeaO0<;PZTct?*xxoh&5S{gN#6iXn;o@YYWc45p{76fWhC4d^cc%FcT<7cdF zFqQhf#Kf{9R{kd5P_0oXRS*_lO5IHRNwbO7u!r1ZAm?oOh_1<%L9j??cyICM$=1LC zHlUfUQebR8c6`T~YRVuG0L@M->?&t9IzS+M82E@_Nzf49$t9DyXT#DG2)BY~ri_(1 zn9`phk=Z6e?RncF`<2GzZwQTwIUW;eekZ-$A-+zCqORp!ZscA|-qevTfkX{=c_2h$ zh#LAC+uJ%(mTeHauPjPzoWM+DbcI2ySqX5A8Y8puTX=uC%@4NH2b7ShV(z(L87bAk z34xw4UE*Sv7o{@p-H)xrj3aqkJmu(SXrh+Sg2dG7U*k4*{bkypaTDLbRno&purE0L z<{?=*Pjrsdw;s6>IB9)WbNP(@&?UX2i-)3Dx1o)gT>!W`NIQjc5yU|DJ+bLCYexmnBhl<{Fl+Mdyr6mP4GKUGlGVH(CzMQy*Ar^XRzPYe^(7A9 zW2F#3?JE^mJP1(NeD23N`xN*xg?^56>T$2!mrt~K67!?z5QB!fq?T?hXusu0uq{MS zfGur9*lF=aytDJrcN8VN`+3%4el>l70RY5Hk`$-vgYqjZ(JgR6rxKaIJGubtn)d+C?(GNaSoS0nFNnYb?I9x@gYHRQS zm0+Ubo?I;X>u1r6%<(=W&YY<_k~R1p?5*-tB5Y%M4_c*cLO3-nG(1KLIP*`Q{`5Tk ze11X%8!1_YQYYZKGx`>vCF)p_0t^oO?Da+Hs1}P_Ds6lZKPvWkAZx-5=q$hmyl#$V zkR~$oEm4w?SD8OELDip807Hd`DcaP)b_$Jx`cqguDxq9q_jrNHL#4+QcSGeu1%!GM z*k+0Hr3#C>R^>I&+I=Bc@UM%O(`s+S7wR(=z6dJHzQU+7p&Or6e%o)kchmx1mj`hz zDg!+u(87bP6L}2&#gh(sU?GBj*lhT@N1{6$@J@~$h?3xW;owrN7nE3BR31rI%=cI$#DoLXLNHsQ_4j~n-u`sE+4L{> zk;_ZM)suKm!0Ax%#<5U$0=b{EcFwd_#+Tiw{Bh`_lymN`*|!PfA=q~{APAGwB2o5) zlCz3q;}`SkA_VE%-+I@l$CZA<1}hWXHekaJjzqt=pw33xEbj9WNIS+o$p+n0lR-Th zVe&pA$=2rv{e#}=_AM>cL%%3%CK%;iAWpVty69c0LyGBpmY)ZdUBQeaSuABODiDsa zI`J`2hl0bA-|ams?}yVf8C?hs{IXc=hf5+=mm?kvf_@8?DHbSpqp;p& zQFbvIaPN$_`;G?X4{behV0W7(Lk%yNhME zi06sVnLbXu2YICxVW5H_cF#9)DXp)Y!K~X?yHccG8pJr)IO6N+K^|v$-8}tPJu1$R`9y?k!xkg*G`hB_X^V) z(rAEPJlo)R#mV(jo!c+#*9g&=&HD^AZ(T?yQP>`{HKtsY7Z(FJFeE6733MNXS@O0h zilQhNYmBJDE&>=TWZ^m1Cf|ODG^#?$Oi7&a<}+@(-426bS#lq%EVd#S123CCl$Hec zJ;Zx5BZ6i<(eR_FnUcBoa^Ynz`o2u1{`&4?I@_drn;^G}Od3e5;IwL~UO~qAFa(D6 zEeXP~zU18`40B?T@KH3)Y#Y)M`&PzbrxL7*(Vkc=I%nK$ly5Wv6!B%Q8~hFkp=DT!;;)8V z7U>TyG?rWFB42St5`~=DQmd>S#QY!32BidWP?S~??YTg}r$K>(7nOSK7ziCB7Ke~> z7}Q|9e&7Sv2dELhNyld8&8>HY_sE8>4^#8>D?fG>Tzh7?!&$+#5E91~;AFJHYCEbm z0G6eg@*_$ZcPV2SgE}{m2f84?Hdn@jL;`ke=>{vI@4C6l<$tZl!)8Lt7U)uzq*LIEzb9TR2bh+^2cq z&L6hq>Hm+P$AjVOFu2n-?(9&f7}KXN9uHIkqpvm4D}*qfWg2|vsZ?rH6?#3+#`nf6 z;!HZpNEy?_`dI2f8%X2|#wZ5(H-423o-u5KolF6mvlR3%K;a|WkgqnztVx_W8olCm6YjK?dK*phxv50_KNT=j)^wyK=0yEj3sRD5H*>t4NJwtmO=MV38nj zF=6I~-#4`hsV+5Mi{zHRyLdaU3RCY%(yo)~Bs89tGZ=t{wgvfjjWu$Cc13`MHy7t2 zDL5aGF$`Ez*j(-0zv<5Y1QHS7+o>wzHpL=Pbp-4d`nYYPQcUO(P@e5&{Z=c;53Cem zX(VeUsdj}C4oJ@d$<7bn3U;tjh;S`5vvcNQStQ3V+8KvqF9Lf;zZi{j6#=>gw|0^V$ z@5yYy_i~FtetGmP%SMQfaIX4EX-+>9)#gG2sEzVqM+niX_Dk)0Ux}_bHf(PVUNP<> zm9&Y=&7@{z)e~lJA~ImgnxA#V(%9!!Woa}|a8r&JK zLx{bF4IT3lA#%BUH&>>qbQWOa%24fS# z8$STHYcRVt4|*bzBCl4CCNxru>mc6-J;P<}wn`rk#dqlMk`9V{D7t}Iv?Wso7JRKV z@ES+PIR*Or#%J?h%dWbKR&Eu#rmo}+f!rIYi`YOE9C1L0`j~q3#UtPDP@$udB}Fo? ziXq&0Y~@|l*y(ccj>g9#+~#-C$!55jg^mHL3j2=#a>5p)JAo8*`F@N!Pr6XY`B)xU zJ!P-+rF47BI^TG8daNjYNaULW1(G9;DIF^#IyCZ4Rq;q)mCp zmb<*ek!m{iH;Jq8INV^!14ocCa_jIEQ*sZ|13)!D8THXegGmCK-B1vW&>#LNK}T0A z=+lw_ykWMfW9)bSQ$Pw6S?nw!)_v7$LY-x&(62~He}gwp0LeJ$GP4DOBK~@&P-#Gg zV2@hOE_{12Xd$YK<%kYQ(y-;eFKFb!gv=KBRJrnxa6j+2A1Z@K{s{dTz&n*bdKE2! z7pbfuCDhK`H+t(Z-(d~ebOmIvv#eplt{I~-_+RMn=mK{D1QNvv_{IS9ivb$9q+(W8 z(`xUq6nz9csctCWboVJCHqq%V<~CX8!X}aAf5W(vX4K^;9B|VHN{c}#y8y9(rUoXE z<(a(&KM+|7$0Y723?ub?T>}@-Uy)>&=9uc7dHP&%4RxLd)R5zU{RH;V^7~r!E@R3{ z=wWPFir=SF#&y$10=|DPU25%myluL>HxUa+CHT+)s?ypb9Z=L|k@4Dkv(uxo&WveH zOiByp7|3G(E;V>wH*8ZxWB}ui=lA%;=>Vj$eWcA|Fi(nbbiF&JykURC;ll@I6RRT}O zYgIo615}QAc2;*@gzfRwe$oB`Qr+`ISw}x(omDXW4Dol@F1%Ar{Q}x5b47_v7E6C$ z6}j%~%a)&ZEqpIpbR3_o>znOs2ut~3{!u(^xGf$;j520a&_LkdkgF~rLM5%{^hRz{ zjHk*`(hih^St94m_*K5Rfej5|&W3e_sAAJJl-4?lX<_JXngSz%;Z1NH;3 zK)l%P_0JeLmag|t;yzXK3R+GGsuoetWrCbGW?R=)Xo@KNc0O^Wtgq{h zR+%`z97-6sr^c!+453`vUT&#D7-sw4yw`-8&mANh;})QpjyKW6hDwXfC0H9ox3rxX7+ zQD5A%0KiAB$vUf|;UdFi-i})Z6T&9or&64u>f43M!!eC&;7rI52A6yt2ftSfxm^b5 zgN(4S#Nri5e-C*VU=TI zQy%u7>Xpij1TvK%ZDma5I}1)tT#d29;_x){)5bue)OWRFRj$~xKW&+TabqayF5Dm< zK$8Cnon_p36I6Tr5G(toy@tMA;p$F3iT|@6({e2GpMt{$8|J%w+2@-Lx>pN`297n0ddV2gSt6*!=$&b8Z zGG^HGWb!;i>&k?=j8+5e%g4%!{tD~%-|UXNnyJrMpg=vo@bF4vz39^!8asBaf4Qo| zEt??6gVaOg&MbCQ={}1=z8m?ZF%>#i^YsqSoy%b>l>2G#QYWgjV= zro3|Z$I-2Ysq1}doX22rSt%8CMwzYUxc&f|OKb1{Udr=O_s{HWgeWvFIK} zM5&POmef9XEC+@fxql0zpA&Fgbqz^%kbH#6kV_8ykD>g|e%5ZA-{oxnKq{d)UGb6a zpMcvWJr*QD*ZMiqBF@tzYU_MqyGT-E=T@aZGXBCPDbWDz{0MqxUDMx}$pdk!ZAWjr z`Qy3|In7G!N8omILTDigjdII*ge+Cd?@kUJ|K26ecg2I5XnD!aD`3}roUn53!QVu# zxf?S|>Z)c}gO0$3W}E)cq#i+(?jo7l)V*w}xBs?Fb6^>)gmKet8z4!ql<70uGafvp z_}E|ck%@*77TZa6o&Okp@^Hi~9O@R&$`kW)1Giei;^{kd7rnS=y z$jX|FD($GBfR{rSCXElTW3o*_ayoUSw!HsDx#iqQ*=l8-aJZW*pNI$bSfOPiLMPqJ z51~&|ffAxOITJ|-yw3l5a=VHq#eaxZFb2(K$Zpa^>5C9T4VBYCo~t(D&${gIKe-4% zw>7XZW#ZA1ICz4re0I|-fVMUo=zqUh?F#q*0I68_4|%a3TtV0M3s;GyIV=t3{RJzM z?#{@4X^JtnqJ}w&{uj(#`?J~Tpg7>G(g-q{mK+|}#=dT&rg|c4lO~Sf4+Qhc{?eE#U2-B6I@p3H?S7`;24o=G&k@62{C3Qqsj33qvA> zvup0SD;dc{-D2)Gk`9%4L4P`qHmhX+VIj zLOS5h$m96S@Cli(C(^J_o54t0SsgN$Tzh(X6Odj`HeU%Ye(bw3$7C8&dV@|44=Z>m~& zz9K<=@lPRO>KLDGTw^}+lxC*>X2K3aJ|p|&k`nRBCX9==!H6$@La~DGKKTEN0weTb5N98`i+Al5+Au>P)+gd!M(WYcZeD z%U=mtaUrUd7fk@hVw4)U|ZZRl#_76YTC``kNRi9HodD)7hANsrfe zX(k{@ikhen8?J%1aY#*PNIkh$&&)$FGzfH(U8`|c)(%urHa5mB&lEe}4s#m<;!;Sm zXAml-fG*=JnhQMUpiG>_c>PZIG-A{#V4$YAtwRZiD_JCW6IRTLbm{X>yeaJmo&1D? z)d%^KY@ey%lZc0Lm)mf3xkD5}MUmUn+FBf*Q|c08XSOGs$;Asrd&VNFd6Z+_$nIrq zI=1R~-|Ph+OWQ@#OM?IwRMJz!#zO57lzT$mV<*U!Z$T?c=zolMOPyOug}%>j%VKQE zyAThaym_}EIqVkn!%!gIlIUZMzOu4Cyn;2A>^UozayW16kOSwA%`#W?J}fnK_U0Co zmQ3p)D<1L%!&rO>sbN^wiG@A>85ojvNNqBu%k$|!s|h7l`>WCce!;Vh0{l5iLB8y? zLIQ;h7})tgpQd^1VyFMf*A7fLqr~)s=Kx=D2*~V?&@#tmY26#9lT9*p=U{N#fQm6` z0^e_W+$SXTnvXfw7s*_LeGYvY*wsk_x~`drRInnxgFSa_8bD1d6il@Y?nw1m&OBn5Q{SM-T~eio z6q!d}J1t2tJ&?B`awdWqxtC>HgqI7O)X>>aZS>>(f|@Ohe2$GWw*D13wWzx~wsy=3 zZu(uN>XOi<5Ux?Knm?;3Ykk9V=JRJBAmNR;C58%F8V4<)S_mkJPjx>*?{S4-t@NWK z63Ryx;Z)bu%L{=I${l+?5-`4b8Bwr=CP3t!;#6VM{3?8{43mqW7q*f(8J53s5N!jd z9t_>?txA?J8;B+s3vT$j@my_OEE*-Pac;{8M{-y|EaUdtyq{DgT=kG)NdXD5sP&6Py zZHjVA>Hq2zbG%Eni~Wix#&QgPX5bw1RnvDA(s*cbn2HEc;Q7gW`ivXY3Y|M-i5qTy^NbpkA1m^P4-q*1Jat~bHJBS@# zOoGKs+^6d$u)~2TYlNnq~s8I7^#Nf0fZJWh7Y1ov%A#y2j5NkOmCU`XR?>k$}LA6AUO z`F?0)P>C{5j=)F<%pzgse*eXCM4g}+cyxgD@*gmyTv$ZgF4Rn=!avuolT!IlMkpq+ zx^U3TfmV{P`cD4`mGouc=kY4kZ;wDYpUA4#lHq2xLwbiZ+A zAXvQTbb(~W2iHb~N9jU8SGq+Yf56PVuxRiNdrn-&aq}t=t5UzzcRFW z*>p2~S~hAagKc4r7^L3VEKJ9!5(L$m$tAsGxZbnVeT&1&DV~Q+wG+_P=^O zEm^Gu_Fzc*!v)eg1wF2^*Po!(4!2qSUFC)7)R}m&K2k6?%H_E|pc$knsWCpVjsQJ! z;cd7iF^Oc|9CX@x=;p79Zl4ZN6I(FHoiJH9l_D++(=hPI!S|iX#}DnM)2Zx@(&{=W z)IzQ}$j=VtprO?~=^fIO{5v)^jex2OAJFiiV z9rY{aH+jfqxST)~G`}FNJLj)#uhs9!I+S|8If@v+ZVRs$7EMLHCwq&{s2S{iH)zIQ zO&CC8ax6-CHkd#voSXr2WJSa}bg?428YJU8dp`SR&Wf=Y$Z&g1l3SX{97M6ENbD(A}TGYhq%bzU;9Qe zc_;CoKt2oRrd=Q<85^aYTtT&+uZDh|Gd9USTj1rprx`WoF0VBq20rPU85Fwc=nv`k z1z<6)r&GD|Z6672yJcMPT{vWD3HX`B;HgfFebB;-LLpkzSVwE?2pJDdzSMnXk{&rd zrf9!)t(r%b0{}1~iz~Jl0dcfldrhpOerDpE=_B`aogxvinnE&jrCk{XXPAZ3cU!%B zM*80aHSk$vW^ly;N^3nX%1N0^BnyfWEb3<`X%ZwA=vguh0X8cixojY zFny0)58zWZliO66%k|4sVq+7tbwzx<+7Ic2m7Of4Zs*T<4^iWu^33*!JMZoef68>Z zU`RAVQv(lI5^19`AOGX}PQwqe7^PEqJ>f@ilqr(|Elg%z(~=s!Po%+j@?$|5iVQJ% zepb#1U&f%y#>LB6r?ok5X};x%Q}X<|)9U$WqF1Ojipky}3{~}bHXim?O34=zt^JTI z0$C^L@TD2EJx8}mFQj<2)HtxiK7R9=)>fz`Cyf;{{1OH2z>!9(@9IfODkR6-06&ff zIQlPPO8`4rK)t}HJu-7A)D$(~WI3fhe{f^RHAP3A~F{7|6m|3flN+% zPp_^3?@+oaMY`A+@7e2#$@H$KK=nl8C)FXfJ*-B<=T`{3)TUFYjffMjAdA35QVQkA z-6TdR^H2`oC_~Zvcbe_9y&%oIQlD8{TSsB@sr3Yg_9xAfC}TgvIY7kqVTc0CJmes& zZ?25KmIXCxrs&ARF@yTCqEL9e`&l5^c%zEru?sX(OrFP}h091q0ERk%!>dAD65hE0-m{@$GAkhymZ#X z^Hq#EgnlR-x=H*dQ8SR=qf)p;=8=@vvH9Fpd)WTJyY0m&!mgSk+qpxAqTN8 zf_?9jmdIUeT0Kw30*~c8Bj^9_fN_;VOh+r^UJk+)+|h`zdI;3kfBk7iJCS2``atun6qpwKbbkx5HcSH@F5NhshHR@dr(Utzx?WSw9X=RBUw~>JM&UV6!3}p5*W;5g>=J?#h^gtUR4T&dVbGv)r-e zm^DIL$dmMOUHK{V?9J<^Qo{+Ta)f4i&aB^*)onKFK|0Q*h<-=lLGD}+k&k#Js-Y~{ zLaf9{Uk9;|m>~-OB(?2ra~K4=>gb-FLz!;(N4Omh9vr;Y*E1}4NTUR*)Od*2}GVEPzD?Lf6rVzqnSKrNDt0Kpg0 z!Zu@vPINn-$>8``y>ilLFD41#`ezrU{dfYi-&x^R8Dr z9C`g4l)1?0V+M$|wi6+;vr#GuiVxF|D&Qp*BXZmmvM&K|g|3v?RWT&LU(3W#EyHmv z*&8M&$fMUvI?RnzfT7{9%`-|MLF@V_Vq#*J(A5keDU<;vrme-bH)JR7ANQ6XM9y}r63t>2?PSoc7!!T}Xv{`ewVsl`4|W)^ zn~B(VxYfpAY0^u4IcKD^S3Ai6uCrFg_e&SIT?WuKcy>H<#0!dJ`9GZT-{x1@>yR<_ zdZm&!M^A2&GcHpAW>lqXvNX+C#>;ER>vsvM+p*{o1g=h=tz zNoA;;glOfUnU-MMs2ni-oPh2=qjA5B>ANf>s(xMmJR!Yyrqz&nyXqJjAH|c^!sOi1 zJ{*%>2j3^@@JP_Z<)m9^U~d*llqoTkuJM=H#T=0E?9Nn6xat}0 zi4g|My%q(-NwCqnFJo9m{in~SE+I8?y8r_r)6e?cnlSlDqoF^74BF7)XEmjjJ%DOy zzaj2;MvD+t)Eh-EH*U?vB8zUSIw_N^1HvEj*lbmyNKYpP`1*=?U4IXV5UR*Y; zIwf$FC`VNbIsV?N>%rU`&uDiDeq_I@lb+)VC4+)QCen2f=Rgp{kdxFF0A#AW zG>r*Vy>f(IuDX@`=X;p01>_$XDlnr+hu15g>I{lbV#K}CdYou4OVj+UL9)%IGP%Q4 zTM~VSBShsu`nfl!QKwfQHy-XgoS^0%3GGpDh`H> z?Qe5%Sb&l{Va1-v;i8o#H(+Wv!PMIUaE8z=3W?(zSF$@cbECEaYQ<%=#sV<+on580 zES){eJ)MHVK|L`NVG?63aHq>jMZZP>hrTEnep{Sih3r7}0SJhUp3*Ul|Hwky^u-9I zBJT?}^DpF|3%MD(rqj=9uoR&2892oD86KBH&z#;>(ujyf(xJ}ocy6;w+$X(^lbG$E zMm2}C2QcERPbk_%j@}wSEuo##GQDy5vx#p;+cp9qa{BK{1f0tH=;eTVgeou>#U$=G zXNZMHUGGa)SSp>ze>c60a%!&d$8f4G#VynB=~Zg6a?R@sd$H52!f$lhge4lh5i=C4 zo(xrNKBl+r4I3NSN1Gss!xgZvdAdrpe~6}LO-_BVhpsaZlHkr zU;}db?tz+lwajlJyZjXq#INxYe^BD zcQJuiB(l0ybzPUM&nEq~36u4+3Jw zn8s}?5h>HE7XTiOa7r}?JQq;|e)1ePRQ(Gl+t_T9MR<&qRtce!9HjSe?tnZQdL}h0 z?<`3oY0|eLQQr;2>(XgS0W9|8PmY+^l(D6)T&z3;MTQ&JD&4)9X_h`v>cKF&rI+9C zl^^YALRqiV@~SXG*FG$`)j1F3WwWtQtF|@f$vDL_!eT_(F{Dx#0@zbxkg<*R8xt2l z0EB*idmpck3H9*3ti{4z?;nYW`6-3ei~7$LM#voXpvcmHJb5?Z)q6Z-Fj@~#1r;wH zySJlq#UN8EM)xbeKs&}%P=qwEJ!Sso372OPh7FV8!^R)VD(~x~6rbaSZRHZfsA7Ct zXBb4H%a)9A>~=SnqFbjOS7bH6KXrzk4naGu@F?SLn=+`HJ7&BJw_fT%tLrc96*V_% z+|au|ZDAy^*{)`7x^|1bSu5^#DOzuEMquauff7C@HJ8qdT^yY^T<6pV= zSrOjo0>)e|`7->xY7+Er;M%a$FSyCLRMe&(TOF#6Hg>%;13prVlck$ zdmb_`gFnuP0@$HMq8eSzT%B**CGB>f6Qw51^YnbWuuKVPG{gEwk(=+(TWT0EK+vw# zSbL?XT&ucvds?e72~bE1^ykbmTCWML=;p(fE9lx{>cJ-qnIuoTApC!n3kTta`o{>v z8HmT^fIv~S5_)3uf#@A1e-4rBJViQSW=h=sl@^Q6%F*~C3)tQ#Er^Qb&I3h;7JlUC9n$j@gzJjo!Wc7zZT2{Iuoc5T4a>FOJKTD3UM2~DU(?pqXrcEpF43%GWj1p%C7uxXNS2Y8{ggSZRB_G zBg&e#T|YqxAZtSe*oa4R0&;0YTegK?dsr`c(oq z$y!cPT`R2XI-ZT`ZvO$P2fqpaLby-p#SvrdO>0S+AV!YncT#1%yBDG>Z*<0)vHUF< zfdo?>2>w+OC^Or6O{)8!Z27GRLM!%Ks4z(0Otnx-I}OV5DG|Mq@jkH5X7sZ~K;XGu+5+E&}i10?@s_lhLyzFqnQG;~!O zfhoa(CX}Rq1G^UEu|FfG=`F3b&Y=47t(R%72*e3AYDkoEoY5aRt`0q001I|2xrD1g@U<8xoxx?C z7h`PSiDj_aYi^SCOWHNld||4tjSoCxkWGLZA^|6x&zE;7(Me15G*N}>v74~8Fg-O; zJ+~oLuLNluTr<@!#Sy`|b2HexQl%)HUOAC=vV{b6`J}__r<6~%{lF|hy{D|O?L=0`YKi8~c*CPx z?rTl|kg!MNn=n8Y3*+n6C-=R{Y3~yvu2V*KX#*G2g!x`2j26-W)+~y7S;wbmK|lo# z54A(;90Oa5DBkZYdR8BjKoSF)mP|w7(iNklrf$5#z`W}5yn`<>ch@ug8Q{e@aId1* z0Zw*Y=t8qWI%4-ja<4Xt@IZp@U~6^lsKgGTLywF7%lCSCj)P3*(v2h?b zGMGzjAT9vrxPAKEbENC}KYNi*Lv^HZYByf1D2ad^_D7*-T2F-Vl*HD6SJ8R5ele!> zr3$19Yy~HsJiaHIJNQ*wz znT1n$QIDpYAO`|u8Kd0|>7XoF13^XWs)`8JjA7+}A&$?EAA!-FDYIMzWSfNK8=<<~ zyD@(;5hE_y{y>aubNslTrh1A^U8YYzc$PMz^LK823v4IMcDbn`dKe?QToE9UsPgv? z*)|yMyfqBlCxs)7?tT4KV%02gI&#eiI3FQWx4te??qH>sr<&QC_fL-*5MUa z$auaxsiKG-WecN+c{uLds76*BKk-9uR{7IyT!2n$qL~71F%DTnKEh&s8TFt<96TR5NaZHqq(7Hz-Kg-) z8ch=-5msffjE#rZMn+V+-(np1-dHgqdf`T7c{#(vD%OSwd;+zmV1(bb`aSyJEa>@Q ziYTo6TpDdZiRv3!1dKPnUT+!2_F(6AEz#dbOdlfLrbU;j7CpM#yW9A)LdZ7`20()mKe+5I*Kf}msa3tFC=h*1OCkbbwR8Md!Mt5bl2S5&IE9IHBpg(Jpwa8tQw)z-Z{_9`pB_7Tm+T2&YRpZ81g|8}3);K&RI$0SiVt zI6a!K^AYB3dphv9u;3ZDTn%znr+cn@@cNm}jSMkq(CG77B1uMXqSzc-aE7Eff_M#j z5mM~f=aXOej_%ByPi)&K9Y8dNh992wnhi)&@K@wk0t}q|rK>KKyTCLyyYLXqFdxp; zaLL9eEl!;;!#TYBE8{>|3S6*BV(qUsC2dVX!CqM}S)>oo8+Mrb(F)>=Odc?wTr3?_ zI0XI>_sRmjNSzna(|3g?j~B0Q(JhbXUVNsB{S=db_cf1(%QRC8ii1Ut`|33=ST--@ zy^aVOp{`q86^5v&f{zx` z{ayiI5`Y)!Omb76LY5K0^HXkwDI_h(3c6sPRc>r|HUQxRVNS2qL=!nl_q-=)7boIz z*zD_{&eGnHo%hZd!G91w-_DpJLZ0Ye~-&TCWJxRd;_U7I?}F{KEX=JkZw#b!i+`0 zuHEr-UY`G9ZHj2K*$j?^VgspUo0$|GXY(2Scd!3jZ^b(025Cw%J{v7%3r@EEl`)_2 zYh+Oy%A!6NDSdR<+jeAjyTsnbFEt(K5==TqIo*(4Dscv(dlVD=9b?SN<#4}sv+V0^ z95934ZUe9<2DF75ow>Ye+g40iJ#zfKE}8#j>Mg|&jlKTJI3Tfd1<1U)VVq*IMb*le zic`^2dB)imq?7vN+neg*V(}Kr*d@@l4Fo%(ePtF7=@Mj(WF1_Y{F-Rin`r;e*V+@u zWk{|PRk}&&YSjVvZ_}ijJr`aMp;-;TTM;=B)%LNaD3`dBY+stD?8ONi7$1(kM5b`_{hKN0TI z{&{u_yE;=T1!rLMO^vqnqdB>b*6OK^qZvDKIAiqWQoAPz8iIh9bV>-twpOK5xPSRQ z!==7?=ZO}Vg6haX&u*+G19G?neRzLHeD#KRHd%k*#8Jbt|r$H3&kLCr5hOU@| z9}<-dlC;3Tf1i{s4P*^iqpgN7%f4#waM!Zj>bu8T!N>{S8^1J2=n16yzG<5bA#Mhf zVg5S}Vx$tBteHL9%Iqd4&|ieFP)VHy(zZ;5kR3$BoMzD=JO=XaG+rVbE7fy2w6>DBnTHd>0Jgx z-c}CR4C?lw)iX=+df^%WnWjKt`>m${J=WSy2`E>6F6O5g-wa3U&6w0E(HPCnMH>)E z>97$t5m0Q<)JgV8HXfX~j_N~kwT;k`oF|4XtTWe2fo!UTt@!~3ymx1{U;c=-{eK!| zj+)V^M?1KKh=xb7Z>J6N@y-0U%J{3lDt~CLUG5T-JnLyc@2Y&Im4`v^ScEah}+nEKnDO zgc0cKb2dw8Q(Z~YyR)tkHOQcaP%Th!djvXp!1OUiL;OR>7wroxQO~q(lk42Ee}f7Zv3Q>;<9Kw%odckHhq0 zar8hjOWV8kN?BC2#T;a{u!<0b$J4?ACMiBH0^FseV$-yp4 z*yy!uwul~)T&O-2$AZ~6%ZfDI6Dk=?JJnWl{hnk}Rh>{k8N)fKH;NrNBlwdr|02W` zlm!e;Pi@;aWp1QaE1IPrmGomxJp~5WGlIoHb`P4gu=Bs4p;prnf#})4QR4ish64%X zy;v&CMcREx=d@U_G)LMnQ>}&d4=WBGm@0XQ;S*)e>Pze^Z5bsxJ>o3MTh_GotSOu3 zL1T8w`1kG6pKeh`$ucI60qM%~wVL=xgv+f|dvJSWILnkL=fGrMdR8Im#UGMcK#G_5 z{A3<;gO(##Zb2Ke{&n^u%GzoWFNdHF8$0rmqQ6Hj7Hxwmd^g=uWm-ErJQixx*N7OA zOPwRtEC1HoN;nYh8**3%v*x&cnA znbS{#$^iJe@6FZYB(L-3#}~?O#Q~s)4J8OfBhIY}qEE>b1wXIxafnnKYK%(b8FrdSN(bYO0bU?uo+zoi ziq1noC1?Q3;_X|lf$;2v;;<~O85k3?E<6b$GLA=)%IzeQ5gpe z+`3jb-Ja^E2>33pteywYM-=9ph%k~yXyhEK03_uIO)7>4s%1WytWBj2b z>hdG+akbt%0+=wdDPWh?4F^_I?k6PZBq<#5&r$IV+og3HW5tBrM8!8qHxwc^@x&#* zJutWk2BvtBPjXsZh=#MIB#1 zsDxDZgJObCUTPN?P-S)YhygN6d2PRC(LiKq6r5d@LEvnnc6|CA|!khMI%xUux=e4_GMSa z*@!9R#ec7={L%FbtF*~xL(F_Uqimz3)w{LIHI-GS)>izmKNhE4h_T{4XV=829F_KQ zYgUteypnrFg@f~w!Rp}^=y;A(HC4ZgVVGr7;QpZD1o-1Md1s!El3Kb02`>r|@o`_X z7Wc{rTazrN%1eQbQm)Om(YbEK%Ppm&BD9XfKIj*RdUkj4JdDq(D{rqph3aMG#MBs zeh;6H(^~yls9=f)&q;JT@sn}Rv`_fNpB_NAtnuy0WZApN-dW79NJ2v)rDtd>oE63K z1H*aAQMqRDj;pmxV-fwxhM9nv*Ej;Yu2-K--}0@TUumZYL69#wtuV1Ff|ga!9bo{6 zQX-W9g4?LTmHUTrO*?IH{5ASl2U2~^1eGu6I{>|t%N3d3^C$J=SRm`6_#P{8QfxJC zugEIlKM*i#wQQ#75F6aml1F|NyMm=YlUkZAq|^8f;yGD;{O`+ZT?OfkmAe8-Q&Op= zc)4{jnC1MVJ~#KdFXj%~>OKgxWct6=j1VpY0`>s!Wc~tEAgM+>p85G65pFIE95Pc7yrKhLB-Hc3~1Yl+McPo>TXHp@p^}Un| zSOeq4!%#tqSEfnhHm@BCl~SCx13?GLk7~JRY;mKiehyw>=fB*K@-b^vg@Jef7@Pmu zwbotC{e;J>#S*u%FUMALS$JTD;`}=2^2UEKL}ntPvcY!TTLcLMZVr? zfN)jQ;C5XRnTkR-_1JH_zkBs6fP}h0*bxalNe>lDa(OSH@<@Vo6}v`X7e;(uk>eRY zibwy@Bc^UtRbqfk7I1E=dW$c>%4Z82u^;8rH?|0?Z6&v5QrT9*bu= z)Sseji8^3}-1WrEimsIJ$Sc>)W*Xi`@r@ds%d(*zH^0mOtfn;mfe;`f!mZmG9MAu7 z45ndA7v=d;dRb0U&K<%st+d91y)-H%QMrd+3D(8zzc(NeT$Jybrm)c4CNEpFSI8O( zfPM5(kn86P`ZZ`AYJ0oqu9gD-XFScCb(f0b=Uw6+CE+E_8QR;Lh%6R3OYocoYF%TB zg)50x`iwQ!k*>@7 z6Cs03GE`S6#N)M_&x8KeTUyyuFS9FVptlK(I}}N`Us^rebN6v`REA>q1o!`>h!_V zg;JRI-uhQCa#JC@q9J%dIQR^k3c<3Cd$gj0aUct%0<5cB=sJ=>+so14GiR6tYEg@1 zVw>KJ@vT?8Uol8PQHSFTQu%{&JIuroZvGE!>oY(g+?EH|D;bYP0EmVtjGNbrteYF+ zRqddxgSeht>I=S}ZyGWTCaA4maq!r{^dPR|tKqkwNh-rLwx3T z5%O67-~WAIwv`tqnN_f&F9}Q>azLZv;bVBm zJxcpw5`Jr?@CZ&8Wgxt<4p;6@np7MlT)oWo$(jQ81zq9*XXf^KVg{&DyOpoEuU){4 zUR?dT&9!=uy)2;RtEc3Ijem8Pj$U^9o|Z{dr6*ih9dHZUl1^K3$Y+3CXP-O&00b=V=QM)jh5%EjeB!VIhj4qC&Xak8(f^M^AibHq3Ay;EkM zTC+}@;@J|hH6My}Vh#DkHm90N#TqG&JADyN$LA~C{ulG1+j_KS`L)xh(;3ASrK%=) zMZ1EW8&aA16JcU2SI!%#?)x`{-hiA%2)2)$cy;ZTs5SDJf*~zvs6G1yv}+{mtc zRDnBB02N<|m^$>oUi4N=X?t2MYo)wjXQyxEn?p*{sN!Q)xnhFLi@;}je^x*Us{-W8 z?O`Kvey_8{3gOfmH!UoN2a&^@@$5H=;OS!IB)vrwxNmBx_TM5-?i4KvA2Q9EuD=o=1!~TMfbgp z=H5BmI3sqAUMQCK(?+d^pQ_Xj%51|NS$XM5|06|7Yoxr|AA=n^#Xm7^pjQ|2YwJE0 zz9Iq@6rxii!I;f$sJ(1etUYTWKu@2vppm%hE|2XFx4id=yp^G|pJcEnPbf|}Yh zA?l!YlO{@r@7GoQdlPMDa&S@tFIP5_vvTr+j~TrtIqJ~d4s9kh0BO-bdJ+S_Ba;Ow zYYHfk%cU%A#%P9eux2gtSU!$;{OU@%JMWE(AORK?v3mhmx__>p_fzRNbl6Edll8aT z9pONON^B{}hftg-)s)Nh-JiX14T9e-~TAI<%rC{^EDEmObc;NNG@&_yy6W|9;@O{u7lD(|p2h z$N81->7qp<*S(G!WjGGt+L%siZ!SRczRO<8>Yy&8ow+&*ECLSoUfP;WCXLxIC<4UP zdRmhQztB-4@!*(HNp*Rl9pBRKdQe*`FI!IFcjInCbCBR*meEsC?bg1q0`mXQiXY>v z3?~}@Cr%dRl;}CG3^2c=W2?k8$MocRSb}-XnQ++=yJ`g6r&oa11}JGok$JW+zN-58 zgc2C@uhIzEeBR>=(@Qx{~1dzP+WJ2L8D z(AH^)a^pQROKzewPqc>X+RDoz;JNehjS*8b6ov1)sDjd*l@SZ)UB{u*GkyPz<-EvGCdzR86c=r^*qwx_seS+2Pf}Wq1GK(L-aE8T9 zpSqS$<&F^ZF+ktGeNQ%l7FE5Tj!5-woEg_q4uy2!c_WOQXg~9K^QT?_7FOm<7_GE; z=XbR{=po2H^lT119il8kHF$(JzbkLD#5^@hX@+`AABs>Q5~S0gmSR22h9#D-siMUjqCZJVo{r5z(c}XO z>^_=vNgYU9OjIFSJ(Ii1kjP}P!Tt`J4?P$nVKq^d5lMn%MKUqwAMjsAAdzhAq)J{G zDpQ@Pj=G?@VLd~Y)ZM(!4zI3P{nYHREOGzD{AjBi1---738Cfx!3t8C1ikI)=f}AW zOq&V@@no^>A)PdU#r=6(bDK-Uk!fZ*ofZjW+JIXBfxMT+D_Lw&&J-HRHNmuS=Mjcv z+ZX3#hxWT0Si9d-7V3q1E`aZOJta~*KL2odlYfySq` zP(a99^KiI9eJx!kQAK^&T)VxgEvk$b7@&mp8kNTmCSpo|B)l&`a`aiO_!vK1re9+B1UJ(gYUv>nv8H=_(I}kcr zaOU&|W@5wi>!|81&Er{#BPtt#0?9|YK~L<`-Y3h#d3wzUAl1i<`j5(dUoRRB(q6b% zv2r?pd@>uhRX6{E4HhZEB>D^2l4uCz0_S^j(k z5GxxUHVlu0+E&JHM%(a;0xp=DTiuL43$fEP9iDXMW=A0yFgyoDSbP$+E*jTV6CEVe z(dV(z7D`7{-w=>EQ?PBo4&X5Mtmmx>oSN_*< z6Y5iEYzt&l#;=T1oP^x%QD{1ZnaKn*c9n#=vD|NlN)6e10&{<+ZYKANY?cc=$T7Q7 zDg$?9TboM_=Q5quAk>}8OMhWI1tATt>+6o0W`|JMY^*wsavSu)|Av_IIUA1`ia-+R zG{4&Fna~Omy5>XLB<^V2j~??{0|4usUpQB>lxW41Gbt91D?kkodZ$!NS#}IM){R@p zuT72Ku;dh@!hQfTSsC-BW02Y?vy5FXJ(_Y5 zD>ta_>2qAkr^^{WGEd9TbEQD2Ggxp6q*d#P^@{#_=r=*&a5Cwz@iWTIb9{w#U}H0X z1N~-CNoGW<-d%D#9bSiEyn?YaIBc1Mro*vOhy={h8|1ahd4kt}(zAMYb?Q&L-3Ybq z9=ILisX*neWVZ-(s5S~vYxmYq{&x;g15+<`b6!%>SY$mE7Fk@dy$J!l6t6Ea{g0-?u3 zIwN#%;)W~R;kIhWccy7!(CjJE2q^XAL55ut!8)_0!sQUT1eM#LbSc>+Pmay8^Yj(U z#)!RHBdW$hjm^SII+UUj=>C3ww?qhUTv>`}@EMea@nY%V-FYB^l17f>xe>| zaJD(|)~`*&Ck<}4*AB|+jOo*#{9(N)7dcr?+7kThw!Fhymif<@^4bOeY^R@r40b+o zIM=eG`|?S}wxcd$+xYRqj37RZ_(=4;su^BG#P^@&D-8xw2A++tWM)Xl(h*zaC5@*N zBW0fgX#IkOkNH(6%Qg3$5U?ACc;VkR`s5jt@XPyjS&M!{w-2^Cx5UbI{LH2ao9xyw zE@ha?FGgIoZTEw#{eG7ck%?6un9chmb;Tfah-nJfcN$iCKT zYUQTfic^N?m=dUvg9aTlRmT1JbDTmByW^1t-5AsuLj_RStWK;!_Bo^R$nd&Te23=4 z%LQjD_JE?bxUYoAtY~1>$ZK-#jHW7iF{uNE44kc-J_XQh-6a2W2^w1M(rh6Do)QGu z$T$!xFej3l<+rcpiorecMT&q>O|V zwxsoVBTt((=IvwJCcww&z)%ma7^oEcpDoJIxm>UQaKd4L9^bHG4vXQ~|5v;rb30iuo9QKibL1C+H=!|w+JD1~*q#dt+q0>toSE9d zfv?($Np4kqxko@vif{$x`EF(aWt?b-PJ=Y@I{it`!j$$J#sD~*ohuJ|r-a7+h>W4>^y0Z~ z4`iFI@!y3agjv*Gy>!vQL%?idlVxQ3n|mW489v}9)RbCJzn{; zm!xDSw-VGuepCLh#hWDncVx|Y->p1@9*=~>%{i4AHqurGNvfA*9mG<%paBV~L8$nI zFHA5RLkZ4m=Sa71Yp|XT<{3!o30U1|Dx-5rx(*lQGph?zA_{g1X0;j0|%<9 z+lt*nj!c}UME!o>v24!c4F&D3t1%$fZ=!}CalWko0Uh^6j|)=7 ztXHpF7iq3K_TC2j4P4R;GG9)#0MN3ij*kTTWPDEaS8lSZEOL?O?kS@WOx2rPqhD=y z>2eljZ6<;;Ci<@35ec}XX$kMvR-iuqmCX8o4>#$+0ZE{)goG_n>#=#}t6>NV{T;5K z5~iO8iD~OE3K~pzLkCtU1VU;l64mI;EqwmUQNgGHUonZ&Zr%RfIi#P?arp8XV`cT@ zZ6srMqk}qP@LO3ruY(Fh*pP+L<-bxd7_na(q>T&HAXV6qS37jlAaf_hvsB~P(jmO$ zWRK`RDN-~*+%HUzYv}a8eXWet^{vte3VggpirX}|m?qx-803|={1Y8Q94Boo_)qbV z4{IP+0Gti=Wc8Y3K8(|QUqli6P<~Vu)F7_`1*O?6to?Y&UOAu`CiE;&EKrE#OM+O$ zCLhwzcX1>b3epb|bm2~`*K{RvNI$_FBk^;U>89v2`x57zS~Ic8zT>Q4DQeLn+q7!2 zK)+uKQp?fUpPF{S9vzG7{a|sEHiYuQU8$nqnq1`+G}FOALn!a>_)P7*OU-M@9Sg)G zs-{mm(%BQu9?y)~0UkUgiAV6kv@ctDc-!At)NWXw5$WU7lLBuE);X(XjF~V8XaUD` zy`yn^qEk|<7vGKGOUqz$@u71!e^l5k@hRtvy$Ai8&Q7$MKMVRTG%l#~=oonD7j_Kp zj=xus>T;RWpGA&+QDN8oVw`-J9Tt0iP3b85c)8xzR$(P!$0I*+`fdNX1e$sFDXI^F z@@iq#YG<)3liwPLY!lh~;ZIPMj@`FOBI_MttVi?)u<=;E72!U*-7v_rL?S5fm&&}< z(U1GafKD&fBb=E2ig)`6=zuMfkS1geBF?H;(3|uWC~+{L0(C*H5TLqu02h)FgkA@c zMG!bf-o|)b5PP6B7(gCRLBskdtK zW5%AtYQbkt9SxdxgC|=0(Fu#I5-v;DEf-6Du2yi|jzkPu?8HaY24#2i#zeNn%(+FVr>AqfC#Ke+|z@Z{r{|Ty`Q{QR9*7Dyby>+ak?t zCxS($%?40c71IRh!Rdr_vKq47G-gJqi>RY%+fM1-wMBaJUHo%LUbdSm%N}`+ITqP( zqg=x_0z?3)qVUygS=Q=W6h7pAb_fs3y!~bd0A_6$Ug<>(pshMF@AoDi)M69(<8glQ zdSWx+=A_6x0BitXW&Tz5Ij44Aft#szzJNKPPDU z%`{POc`}BTS8NkfUgDS8r`K43gDJu8-1qm~L-FRusDp+Lv{(J!npF0!-!gjeXg%_i zIItNw<)qibv}>(v+mP7hAJm16jy@P};sQI@#B0ghO&fy<1lV>6DzT+nq5$n=#1i9u z+LY>i$Wd(mi3px#9;8kD04Dg`ac|j{*NXtIz*jQy;a=)J97)9F=KzrIJWy@%|89@U z?Ps@|9pGd_uMKGAx=)`k)PuU}b_!7T%-W|c>z#GRZnw(?IdXKQRXWK|hD=G68(wFR z4d>-bJv_ST?um*`;LSamf~{9;qfxm1=wgjrtZpY>9BctQW_AzWw5Jd8+M*64ofJdm zfp7+5_D!j1!2Q>Wyfhq5L3~8yjGS30bd7?2+ImIy>pNv?hzG z1)+y>2B_5E@C-i(hp3@h`4(m zJ=psk&mXzr7n}Q#E4jDtZlfbSWT$Py?SN#!=h!7Ey%(}A>WTKCLT#7C%A$a}dp<78 z;_5vzjHB%(ApyRf!wU8Rpvm*GLV`Yl6^ZDFM#?JHo?4=Rqc48#| z*HspAQ>Rg^58RNxWcUo>KfO=7?b2iA-N(S2;{41uL+Pm0J#}CJ&$i~bvL!}JOpHcr zcqwz&Lw%SP?<^Ogv>5k*pY>H^s)6vCk%X^w;pYfnsns}v5=~5F#36bCo!GAHXVZ;uIMU5GdDN0dQDH9%-?Iv+S zzcZ|kDxS6;N@3aIc$`W*DP3x^;v?Jc2K+2KXZ{_gBdY`fw0YMoW|i&kd{mfr8S{Rl zYesT({Ug_Yb`1}AFc2)O>rgYrRXloIu6`BMD!y0vW){OWg*#Gt5+xnmyY}=a-j9r# z0!E0!zJ!kEIk_AO(pgWuujHw^ET+n!H*Q%MZiQLu73eShOSqAB`$oHYM_iF0W)(Vm zwP_ctGYovcl$zE`nOI#3;YP*X0{`P+*6en`=<~`78;K(+Q*tV|E-36>4zkcm$GDi| zS1?Gq%l3Te{fO&WIRMH{9CpH_nafw=^|5>fr zFvpy6+_cHeo#+1k;bDm(indspXJ7t&S3p>fY-GsV5rK2pZ<5r2qFJhF7di(5b7?VM zOFn|7;4upipSSc91Cgr)tTD@VXD6n$IxfKGrPW?B@g-MVL4Ef~r50Qz1B1j;H3}4x z!#6TAoA5?EH=~pPaG8do6VbD!R-&+md%-VAHqwdo%j@y5^H5qhiiSG-UAZ3EMVWg3 zG&>J*ik0koz0f^;y#5=~%OaTE_!q!mjZ4;~JhFzj5=oJ-@%~>>aUY^OYs`g2V@4n- z=Arc5K{>Cx#W2kaHhazrR+EW)4HJokc5wzn8#=EVf1Uh!9srp|A|XBrm{ygbE8CKa zL(-;AdmoVX^EWOxfJlu&2eT2mm;e$)3At&#jtr~B8rMWcCNXWyM3T}}d9X9wLj!A`g#P$d2^l9TPyiLw^3Q8}-$LO>U%hrsO@mY!_Lb zNxx@UNuvgV;zaZ^yMH;>b-JAq4~xPB7;II-%##Nyio8Sx=icuxz#g8XgNZhFOvrk8 z$3hYkjLc4cZ$c1P0pS=&%Ice|<9^lP{*F#+jlwy99-LYgFvJ>^O4SBr;r3A#h%<*) z#jcahRG^PI>SIIY#qwR;37wbne(>mg`h)4L?vv84I@`Cf@+4?t(6{4iN?0w75QADO z|5~dUysK%(E<2k&bYX9||1h(N`<-)0E!_@8n6nTA#1e_x8mHo`qS<1nR82ntek!UU zq>ak5M3BQ4iU~(#$I@cq5yYX0Y)z&R(<~KTlrLdQFMhEEkkhH#QRIF_$IQad$Gmv- z#hlzy=OuS-Ki*kvX)_wRNs>?a#ja_mOraAHhUW}1qa0e59Fs3D-_b$asSuWTC`g^H zx5PorW7PPwET+FTcwlKOTugP=+2F+d0Cww!-8N|{6{7?NDA;?{dyzdW>(xM%;uB*!!_AWeju zxQ0GU`5tB@GHt;ZP~5`;;I|Dkr7gaDG;c$DQ91PCh)!rr@nOK#)ajRaEouEOe$HTP{?r!tMBIKQbtZLPdUpS zT4%EYthv|S2`FpOJ<8uB5_{i0a42+r{29Dmpq)@WmWJ0nmzLCJ%zZ?}5T|4&OONVh z1&ESn&tT(0eBM5^v*~gwsmUTk58m#iQW2$^C6m>FZ7m-8#u61VVDLDts2w&GrO(G9 zjakSmu`XdBDh8&jy@Km$&pHqSaC?OV0KUTLP$yYk+#MuWGa%w!04d~Ks*1RuM~pL- z+J#m9(Yjed7WB#>BhDjG%1K^l_O_LLsFjO+0~8!6lU!HJCl2!NR7l z!&qYUNpNsIVQ|2N01$ARP(PO9g-Df$YG&ur5r3Z{kIHgX*S9CPU(ZO8yb+hgr^ zUV8f&5RhMwmw)9j7|XTnc<}}(xu^ixJ*=10)(1!12HPxoUW`9EALXRu(=gAA8M&@s?WtVh_5ahP*Ted{N)UJ87QdI!zvHM-BQg*T?kKt z7p`&O&nc5~oAx?R3Rx6EO*4hy#crk!7~?Tp9H`I3#Eg9lz+HxArOQ;&Z8h z(3o(mZ)NL{M~=(UrL5RCtGv!Q)H<@hC{**X0fG0qSXl(!1SgEX@Jm8c5m*>*c&ZWv zCc5&5_-D8_I(%aTkpk%Zx1g-NxjECJ2M$xVPGc^17yEMFF znbkQ^KkECf64Exn`Z;Wee^oRQ0TP}~iK|=t90%Qh(?wLy2i{xP(w5$i!pQ}ogT0jM z`^lm^aNG96!4mj)EZ#*Ry6kX%t_G-me!)b;l{9UAjDn4_j^NjX%&s(17X3DNDds3%Jahf zRyn@zG6!_Hcx(Y9Ls{I3y{k8OC+G&j^Y%wgiX?T9-5JfzrID4Np{6Gz`yWRv3!@El zRqc$Frl8m7Hz$2lRYqvo${=-KU2H;vaFN!2HGa9;&wm0DxW7H*fSB?VVS_R&Tn!CwXZbho9%$d2 zXKgOtO&-!;$QI0%=DdYI-AN~i^7g*@8(3dUm7(xCPSFbd;{RoW;TD5CC#9nXljCQ^ zh$znn$hE5ZdT^5ttkN$t_`Q?TG5%6<=Yv-uhY199hD9G!6CJrP1V^qn9P=KuOGYmN z@HvA&tkkfVVUla=qe}$0uEBx`0u=qpVc6}7k<}@B1|YM?H84QV7-;gDl|C+?i{9;^ z5UM4sK0SWg&OtA@ z*XBJOKp`CHOU5o5FI)TR{*WW<^Xm9m8%9VyYu!4+;%a;x3fgqjC?WNoFzymYH8lw- zOUgw2e%C>guNu(~>fz%>K?9I{HsVmR3GH+^LPJ4~8?Vl+=)5aO;<+h)lz4nh96%*= zOgVy{H)Xw8Gxr_XitIPb!4t^G-Li(kMKlGL5c(FUB3ksYvSk96P^$#9fsLr@I zv!eLo?N}ik%%i1-vJ;`^>B`KwZUx9H!l1k)qdlj@JgpyI0yei)F_HMka3^t{&{|r{ z{8uzLThR$JmNwxf=p2`Q0G}`4oZ^3Rj%5OZd@`=UTj$OfLX&)e^8nip?w1ReoXYPW zs?QiFh2rTs$`0WVWGbX6M66eu9eypb_{EyxZwbIM9Ue88mnyY{HBFiqoe!)3uU2KB zf`*kGi)V^m95A@ZGB=cfW(L>am09Ir_r)@mct9m5aI+Ws#@%JQC`eB2^8%X~9jYp3 zLED-)S1j@s;mm#kNA0-aJ)RmJLXI=&!rnOiovrOrEWT8=78NAV7&Wcrsi7)@H44}( z92k%MoQxJTU5;+s&42mw1|Ul$_R8Q+ z%_7unN90gr=v$6m!H-JevvcS0ijq@M$=lH(O?f(q9arH;<1+4oGV-1aW>+MRnm`#U z0Bl@JW5F14zLvDgdnm(I;dZJ);W2@xy(;jgs9vMH^i-uTfp(bV4+Hno`}?-|D|X+% zCLE=1LUa@&MF|eN7l|8onIL=SU04-hi~0L|Kp?x*n*X|ZSa_jvz->BUH@y+RkDIm2 z=TmTAeTWDN28C5_u|0)7A`qcg5^v-O;xyiC{a&Yt?{easMfE?=uKv;92mJ@xql4;o!wMA0+Dzu}n zOsZZ}BH3UpG(K?J*a3EFeF%>2k1C=J9!nq)W`$xFcoAn|3MEqSxUun}{2omfk&@AgdQSZb)D>q; zvhId1x*%p(7GvF66BB0AFx_FT;+~g?2ZlLBd{6JJ5Qzb0 z)tD7h5jmxAl#0#vK7gubtXI&tI|HUl;W*+ zc#^Wg5i!o3i;}!8;PGCGof6see(@U)#Bpt*QrT#;!^o;k?==_6TxkL?n!!LOJ+K>YbQT3>dH;{OnB>MljsA`R45Y9{@j0P->g)mp)vrDou~ z=lJq-sPl-9MVt<_$w`9aCMOet_FDG%Idx`{m0D<@fe~>KEt2(?G2p$jAuynEj}NMg zy-A7Zwb0nl(qrL$-{u8_NuT{k-e5PTA*#S!b1 zr=s5|;X}M$MxtkYFlKO;ES9y3YCc~Gik?FRd(5+!7>TGs);?Gujh z2k4}EOcXo~r21S>nh>7#;)Gz%>At zRsv~5xtqO~Vr`QTXxIpR@;R?=^32T>t|%>dH(ew;T$L6GgM5WEoyp^unit6NPsckk zu$uvQi7DV#o^G#rUyX-ndfcSsAW0DT9&c}wv+q60Jmg;a6e}0KSCE74f}^20Z^ahh z#UOUXwP3$`zn2H@E=iwR>T;^kZ%T`O#C^ChXZJ_NiNctF$}8XNs7Rg`5Sap=gk$*+ zP5fo!*V}DEGY?XivE%Vi+{<6Zd|Gr6MhQNl+jo_sZ<8&xEa@%hp+uloZyg*Nv-B6q z-4vm#7!;*jYs|c2J^P=S-ep0+bNBsfHgjkND%z4!!R}Hm!P#4#OKy$xpHTkswze}1 z%}_1bod2GKt82+l82LcqlM7hj^YxPpFF_mKLQEsDgs>$%1L3f3c{p|^Kn2%+p5uct zkd6v?{z}Vo$hCAVE9&#Hdw(};=O6IF@boL*e@qasJT%;5opIP)Y`VGxB_5_-IZ&{K zr)fDcRSqW8yZ+LdX70X2Y<^IEW=K=MmvJnfORT?!S7MXDiS?uBoaj1|dFGXe0iJ{} zdT&~6n~@19cj}vGlH?(aU@hz{k~44h8$1v+8(v6?oBmF0I?5mKZ$@*dN&SU>=<{w$z?s+ZYB|V5QAM$o-&v@jxMr9QDXHyQjo=DnYy@c;9ePmWyA`qfduf86j(L`~ z^BBR@ZAhm_m{M4?a|eJRwtlr(u6fdqqZ)$4hMhVPbIvADpU6jwP1joZJA?)ygMqU* zfqT~OLxQ1q#$R6L%pVP2NRyKR6%(I=qzc7*&&Tx&nYKs+2Yk}@#+Q%kAe*u5OcI?s z|I{Fr+&Id%Oe`B9!YR=-f4CrBEFW`RaZTVG_%mYeZ)uUJ^MLW@iS14r7E~&jI#Sxa7ndp@ikT~ePu3^^!3Wf6Y^y( zS7<^LKbZJ@kZ|e+%(1o-&yKGV zML{Yx*D*j_rhb6f3C`>@L{CpdR^)gSVdQBX=pPFOeM|wLYapi0V=ydK6STh|XW?*? zN!$3X;dMMpUR{h|kyXQ=?)V^zPWkgl%$aW@=04SSG56Y%H7P|6TZK%YLXZPhOdL!> zFR=t~SHU#I_@>r|-a~b``gZcZ1jz#5S`$GLTAg0D#(7KY9tL&DSkH{&zyVvYwHV({ z%G$9d_lJ%O~*R9G_`rT3@vhRXKpF@VeC-yQ7%G&Wy zpF!5qW}7g$ml6ffuJru3Son*P+$-y|o`>eJVCq6=#S;_t=dwSHYUVP6!T@YX|7_EB zkXlzPH;*|Ut-kfI2#8#56SE%{{7>IZ&K_F{&6}h&g{rV>MR9CS!dB; zZu@5<)jQD-Wo@8zOV$vbC{ zUngERd}Jw_4p#powRh*PHP;1M0LoJIt0-y8<}T+N9%S6YmI$8Kh*i{vahNmtNn36H zZ@Zk$;OohCH^#?Ztl|WZ-TByV$JGu{4=d45rc9LF9=T*N=PAF^T%C)~Jd9b_OKoj- zcdA#?tz^G8`lsZ>%h}JDv4k~Ob=oiQZ}NBuN1K2HCRD#qAX6+=m|FMak^k$1E{|7H zu~ApLo|aoa8SRtAv@%9HE&y(p9NxzqgC#bIUQ_$Alf5)?ZF>_fe~-!Xr=!ktZQ}9X zUN>A*x}*24LxdaP%j@x!0cY$7mW(sXm!PmxKucf-L)wZ=Wz~bMEh&g+M4DU-nok+W z!Y7HWMoeogbJ)nCw?mPGKEumX9>5%=H|zwC!c%wZhtqZl_?>2?xZ|qt4Lgti4TjD) zQuceV!=7uw2`*+HSvE!s@~g}Vgg}=gG2ge*Qaom&U^N`6rR1zr`w8Yv$`rJZtFk}O^S-L`8|yW4Cs|IIse)ZjY{(BHGG zs7LB}DXw83Cm|qD-jf*u-`+MS|H5emLF@hgsEOPqByhFQ9W14>sER(h93oX@!j--8 zl+Y&z2Wi>4VMq6RAM~*tW?pT!-=<)f0P2>U+;!KS^>$G}J~lC1fOfZH@2LpsjV=}0 zM!8YU4H^q6!5c9gg2GzW!=5f}4;nY@RyV6(EmLM93r z1*lRJ>iI+2GK?DIj_ThEyJtzTo?7aWas%LkI#Z=IBTi!&dbSx|_!MwX&K$1P z$W%1YN2FX4kW34^&!ZYKXk|8Hs6>?ugS9GX;N#jAAd8LeOGS zH_ein=Gc`5bf_SWoth#@ErUjV`l&-$;gn#LJiA;vj71qmT_R^}ALZjSEeABNVEHIb znklUL6I6|1KHI(sJx4ie8{NhBK`a+ESEH)y_i%OsIIPg=6B9fA2JG~@B2rCmP}G_B zgq{+IP5(J*6*+Xc_<#e)?o0=hfS~msAgok zRelO_c@Al22#~Y`D!!>N8+TD_`d>jK+#C@9kh z6mOyk`af8Tiq|F=+K-bXW_xrpwc(dkSWx#0$-7tT-{rTlS6WvBl{;Dq z+zFEl*U7|xdCc%EfE@UU!hO2l7|dXd+2+_Ic<)x~$V7$Uy*Xl?X-Fn72ROsQ@uxpG zTz^|uBoQdi(DP%<((TQ`V%|+)mI-qmBu6M+iW^h1HNz41Ao9uHFu9rag(|+4oln;y zDMNb9#&vDBx%ct3@*}b^Ezo<3a}zJRmQzS9DIV0nI73mXsJ43U=ql8#Vjn6a*KUtP7TGSRKfvj^ z{+LOq$65vZOl5fMe{VFH_OOzohhPtd=(~}hWDR^)v4L|+#CY03*}8loBZ!0bB*f@( zAS1Lp1AD69Kz}9~QMiHv$+AigbEF8?(*VD{zizA+o>0T!sLZORXQjRc?U@n&0xZZ+ z)wVJoB$xGw2n2Xx?A6HduP9E`KYCOJz86Y_B)*}U9o)2N5gy2(Xtt~h0`}VrNh?J* zNC=uK=JSabT>4QH6OWYI(4->H%{X97b2h_vh9j-5t@6s5Hm0twS+tpuWHg{!d1C3|YUMnOJ{eKVe#@mo9}! zwe7c{FTOgTRZ}@nP};>cCma26wx^DMt1g6MmlMEbA~f3lB4XzUTtw{{W{W+kQYiz6gfP50sD{-LnZfo8F=DS5xMZ$^7?wW#4i2}i?wE$&_V zge%?^#0-N1*ZFA&Oxse#rqgy*Oo&L!hfQaRM3^G}AXH5&nHiUhZ32#lFf3w*ziLVu zm36OMDeALcmU0s$#N}Bx2b#d-5jl3o)|VM+o)P?>RF-mBBk0aV-DsX3SV?ZGuh>L9 zx&T2yzQ3io1QFglnY)55Fy?dX1a~k?)jf9}dXh4&l-!wLiZ zg!wZq&u+B)0v3gPB*-q3&jEMK){r56cRL{rp|8#&uu|}i>>jqVkp19Xmxw~GMYPSF zH0bfPSD1^I12f4W8x*p(gVS52!Iao;ZO{n%32vc^k6ugoP6Ad|}FnK|1sJ^lhXfe=Tu@+cGHP#>zCF1kpx&<0CCQ z$_r3*h+ydUzR*vuxgPEanp-Aq z2W4;H<;su;)Mv$HQ84amd5$fwQ>)Kf79?>UMbnhh9{p6y<neFwe_e$a z-y(8Gsv@KjL@bx?u_p%1{dod!XNE=H9R7jtV$#EhxAEPhU0MCnaN#PxuhS~V&?ZUK zA`(SV;e0ySpg-XvSd#^|`Y0Nl^@xs0B-%q~6udG+8ClY`j4k%^@{%T&;(30U2E(`; zOZvlvut#!zfw4`7T_m?b{`ueux2}x^4Da)KZW#lWGk@*{z-|Y9hqgmnj0=>QCHE1eioQO>Hmac&I@ zDoa%wHo;k}zWn2JN*5T#ezVP}FZ=z2h82$q4T3rqXIq|*3C$BIb*FGmeY`g+dlA}K z;nA(=ClGgcp!MU|L9$FT#mVjpp;xqnOJ5uvV>D;Ty%MUR7!i7&l%K82WVVV%+-4z! zXJ6ksT$OV}(xUhWVhTvJpzKKYk_yJE)cfNg9ikUq_fN)|S*{$gKwgX#=eYW5$=}f) zJJWELR_Dzg70vMj5T>e38kat|%jyqy*a8So$LG7JN#r`(^CDYHtqKminoza{sdK-_+kUl;+-&JaUz26<0c zMDT-il~IQ-aFFxWCB4}g@p4i>#p%KU7_@}-v2uY%&5-4~$g(y$uUs5Wv`uj1?{RHx zY7>^LPz2)qUkVg|$XLr?8;RB>9fk5ylFs1Dn35hhyN})XOA(j8UTElLS|8y>Ad9$a zi9N5vKUE@EZO#wl3`8iAPWa6fG-*44rO|z*FcI&y2qXn(Nb!q{qwTT@2Q0wyL;&+} z&@#DmDB(MYShs4XmRC0Rm3LGWf#lI3=Vfv-a%gtK_xHJLiONquo5qEKt*hpV@0Of% z6Qr)+TX*70Fj(ppqH-5iA)mZyYOpBgQOhd)`zc0vb*K&0H<@bMGUGjT*JN;129V^` zO6*6V@S;{4tuU(JHw3Kn5k~5Kha}5@{J>OpHowW+$b!Ot+}Yb=DFXsb{^jmzqTIY) zi8zQ((wBxW-fF%B?rs1Uejk#ibot`-(D|=}aMc{TftKo!(E(8%sQf5=g$nkwSmV#H z^}}ha>M(pzyO@R)hD5WU6EWgl8El_o6i`r|2Z zM|8cIHzhQ(I}B~|hzHDWte(U=yy=?l%upe-g0M<_ju@>gzu!JvrgFN3WO@lp{vZe#B-O))a8WZTjdQi=>YwAEjzO}?s$K{v)=Y^{s(QT(lI|U_v$3H)~ zG#Pkml9QcLBala9B1>U zYL%YhfT!N|GwH-QQ&qGVrY#ey=+C(ABU!z#z~GcBVdB+LmH(MuAR0b&%+J^9F4C)x zCFPU-xZXdZS2+z}b2e)(xv_!kF3$W?LIt9z_D4WMHlfo%TkKjWuYNL7Yytc2z9gDc zK5RuX!S3~@Onnee3Q%3cnuA?ghMee5b~{HeXkjs-EUU;X-}ez4mms-vY@@Yn{G6`H zDG=zx{^y5s`*+>z(Ug}dkP6^P;IjZpR-fjzz|*`(nx{mitmp#wM{rx~lW@pGeG^4z z-A+lh3^!_`P?5Rv8xcP5ORNGx-L__{?NqLD{R<%E%bVUpq&VC#2K99N;X-jDBDyE~ z4i+lLNe>6QE!7#GPeKrbBMl!0y~nFpTio*~P;QLsx3kg)515Osk1OM&wO!sgO-j0O z{etRlGQB>-iNUu1qq z@NfTcn#HaVj9VtM=2@S5R5`{zWl=hYy}2S+Oh`BPj_?ydq>z1W z!fyVrYLbQ!ZdO?AxJ&+lhe|{~KTa%GcyF1@lX?_;X&J?VxvnVKgkEre^qD{7VzsNU zmH%&UJZr!MsV5*Xy}~SZly{WwYJjG{d-p)!V@}c+3S#VlLj1=x&xXnOJB&|YRJDt6 z5#hEz48Y)A8xExV13Jn_2RceuOLzkVQXjSqvYDc`_jp8HG_%fS2 zO?ZihblSL!RnVF2%lBbV>fUBscO%it$S@o%lpBKZznDkF839$v=%y6SH_h{e9j zL`=czp5}3jKZ!EKPk>qxw3iI)sCfLVk!}t)iU-58O2nyX+>_&;rF+3&j3?Gnk|!7B zUPF)!P_^hdz~AC|3|P{X?9pquS~LR8i&bpB!IIh&MKHn;&1(H5ebU3w!mS$CJ+kIF z3a&MU%Nt&x#YQ&0RJ2ei#a)g91eo>@jGiZ45$5=$*5xsyU5 zHI&;laEDew>#o^SC8^1`Z7{qbElC5wJ{O5Bmtwof=c#;9i!ZeQG3Nk{v?l$gr2E;> zze#}-ZIPI=vn1_Sc z_i-8KwDjyZI1-QA{e>~_8R+lu)~8IYOnO{uW9l$jfgqZXc>rQClhnH%c#abK*_YND z)S%jyIrVI6q(!l8q36W0R1+}uN^mIuyh`g0tUPFW=2Gd%o$1$VUBWiK~WHQgdPN%}sefBSv zVxhjSjhEEGhBSRLcK20jw5EW@OsFAQpqhAWqM*_3GGKC}73YbJE2V?VE67c*^}tj8 z4#iNEDaSH_yON;$Bn$>!hv*bppNIEWUZ$9tMr)`GX*t$yp?R?N}=8qukVN zTI4Etiewy4H}nHHeOyDfMG89nK`w)|*3p5$_zrA>+*6{DO-4&*D$c)Up~%6A?UzNT zhcACNsOW>IkC{``O5FUU{|r`RPx&*{A>9GB}RG@KyvB)m1&?Dve}hkGT&#|qEPyN3I6k-R`~a`CE%2g4vOfl zL@4GW2uIKh?ohVg^zOKy&NdO!P61mU-rn3B+-l7Gjx9e|ksfPZty5dw$>fsO~sxXk)F`v%b&LU%n=W@ z9C&|9^UPCjsH5r{rS&oP#|-mKP{^347~B3)v}*YrHA4gd2ldDFSYk{$7FjZ4eCpfK z`)1SH-wg}{=I-?eTIt9ERpW!=cNC=P7z&gYZ$E2Gh(=NICYQ%8_j1R6;f37kGo*5w z-T3igJQE5L&ITOeNLnPs#s)`yYTnH0@ z0~~{)IK4|5+TwN3nC=z=?Vkj2Ah)4ftM`3o!-gi9!&o#aLd}KAzJ8V{M-Zz@F zr}b_kYYi*b_nJu~Bs5+f0NxIfPW)JS34lAC3D`bl{wLcCG3qdCdqXN6?XnHxFqT|I zN;8!r?}*j8bkVXzKW9_dNE@-_EDQq@%%CF+b&H!_d*mye3gS6!L^5PasNy4q{T9U; z{CBbB6I&}{gZ1~f2LBxFBC@zP@MWb))UN8Yd;-&v!cER985)fwsjTykf6|&KISrb$MUj1l&=O*Lqx$A=Jg4E$d)h3S$sO1_-747C3aikdU8@mmPFZr9pcC z&;7BAPkA${DtLV83xU-6P@FxxFnunHT5=Yo5LB{%wB&N|!Olm`z77;d#z#SO^bjMkFE(B@2_jDZ!iE zp~bd)!!14nGL&|K^XJR|&UboZt`=iZB~QL8;CSNf{63YFC-qZ55>-CFf4Yv@-h;#~ z_5UQmhN`g5vEm{aO=kiY!rM!1i#quS_6v1KFKFvT>8kwf&;K{rlkE<)PhJaN{A}RN z{j3XYEHRh~mR^9Pgt$FpahL~i6A$o|3e9jB%pOI8c|1m_9<<=&iQB*3=E~&VQP-d4=PGXAQ`ot#W#3u?6@`w*f(8Al<$&VFE8fzZn3hHgAx4RQ)o zvRW8<)>k$P_=zDoUp$OEzp9FP8q2XhgB1=!M75Gh-ZMD z;ebE?oBV`F!xz>VQKOU1BmY`5H4Qv&G-!dW=IB2VH5Wjy%bMZHh$u@+D+@6IA1kYV zF$~rPoBetQ&4Z+fz9GF|fI?9#J$d{h!lSk3IyZtFSeygMd#0yYck$d^b?E=d&`N>T z-(^Sr&3)mVv)kBE3Jp`%by62o+%DZUY}(dgpevOm0SAiug1sd@3F~RwIUNmCgA+){ z){wrX9_VBeLpprh4ROs>j#^@E`~y1R882uxJS}fK@$u(s5rT{lc2tX2A_vr8-&qQX z>UrIl_o0u|$McxN&oM>#vkv`n30u0ypAvYx&e1si*S7Go?i#mjugJkW#H9~rE@rss z?sT37Y%04iEno$&g7WU-0y`X-DIy%IZ{ojmDW`(08xL^`e# zubPo0ob7NS!sG8{Mg zmKWhaE)CC+kh69Y63kFtAsJR8p1@3JPR0cW7&^6(i4S;}YF|X_3nng1^96?w?|k5R zEG9WOd$DS;_cs_h?c;Jgviz6MttkBArQzOZMLV!Sq+mO6?Sh-vg&gjWGbvzJ_edpN zzt~+0ks5xe4uj*S*!?6_LEDOk^9JUx&^C2|#1Mp6Qm;rQy^*n^38i<>(YPUB?hNyl zZz)?X1;oVKTB@66_|E=DUyrSsY6&$-SFd-d<}UH%5a;T~2I;9>+MS3$ScDJF1RRNM z8rEuZD`pD%pxHo?JRb|Re5fy4Uf^?G~N7`LUsD3A*#gx;v%^xv%ZgvY^H{<*G zw}@gWvw|NsBnENntS*IPipvQjS8eNI_9viy;nq|YBS9DG8?E{F_y(Tl+t7?tOIc>q zz#$B1;pn;mLxzTA=2gx-rcNkn2;Ie3J+mpa#N+*1oOuuH&YBf_2$Pcq`rN@j16(VKzm8CW($rg zP^Ju!Y5bRnRfzP$Y~L!DgG4~roB6l&SJ|Sh9XNv#+rIpjpAcI4SDA;OG zs2-IId?v!_inbaZG+yJVH5~LA_x^A{plAgU(pi4AdiJ?Yi`87R>HX;TkYZJ#5YqyU24?EtbH^i*$;Q`F$E%W zsI&TD4pHz+K$FOQq=DSL{3{Wrn$}L^(b(SwS#f(qL@k&^Ak?yjR7*7)OKL?U;c5GU zrN*gOF|}`7a#_=hJORq-SJ?$=t5HvaKv&A&FXwJW z&)&O*BiYNNyR&$zC2guB0}MbC72%x9<@FCzeJ;LpoP^QANq5t9sUS%iV48pDhZMXA z7Ka<-VZ>phPdV09dW?wG$N>t%w zYZ99?rgJdrePp(nXh(;z8{d;aQjtev$N#y*ezR!-7mQV@*noc?P-3;dT0%F3!aQ(B zzTkuie>Ux>aZ{3MN7W2I;R({+v zh6s)zNA62yCDqNJsYwl5tzMvzE_rDwLE@q8Add;4Bq6GDibT;PY zUNV9eSRSMskZlx-H(Qf9FM{8Qm(LTE+ico3fMtWy{ikWBnMkF0 z3jo0oz^~Yj*!}hkvb>k>%abrs+Qeq_(#+lUR!>I;g+@piimrZ^>sN6-%HM4Wd*1i0Si5705)CTeG!7_?R3;>FcLPigiCZ;_6OF_DI)Ay+&n&|LW zg+k6ojEr^e82_dJz*d46O3Hw4m-Cg|f#)*9AjiPxuP2nLe@W4#VA@Vk!O|?}+8Zx^ zeqb6IIetc#WV#|LryNW^4;<_e>I_(#p5tl_-GLT?`?WL2;ZL-~F|;nMnPrEvjT^)5 zEofnRgNCHh$*>Ueb?zUkrVVngrieuACPjdK(-@CP^Qkps19f)TSToQXw6(cKg{F3N z)FZs7jiZl;-?vVOQqa_{q_O1De9YzevZQ$dGm$I*)#+L3`!2vosL2grqMa2W!<>s^ zC^x^eZ#c5}UicTo_#c+?Qrww$3e*KRgS{=8m$?(HsJ2=p|5#U!OSE+yX6|t6j?(9? z7Su4T|Eu(d)=@l>y%0@f-)p079Ox%CHygL!6;B0K(2d_3GmIuys1u!B?k#B*|LZoB zdg~J2Qj)m37sK9$sp9NhF+F4N6N88JF~;I?3T%X_HezZBw54d^H!bCujC_%`{b6d% zLU89^<*{|gS8pg6b4$TdY22UiCMrS7jac4MG#?{h@J#l6>fz>!m`tv3;4}`wKbnu8 zFLYT@BtOmgE+O2;PvZUXu{~DmCf~D6wfxA|O^9ua7nBh8tarl3aVnwm0DGkJ;b&o3 zLrS(0HL_|&XRqNmrkVt?xfiS*!lXp_muIs?%qENIk`Yi~Bv{hnaq(Nc8aJ7IPfuow zmqGD;XnHfsmFu@$QNJE(9Iz^c| zj83h)-EcUci+06~T`aDgIRjm~j1H=Oy#a}CPk!xPey1*$%SGG#@c}8=J4}S8Ek2w~ z7~;}S&WEm+_THZS3}IiVXM&$)Q|NTVxRnaT5PQleI-rU*$>JEF%bx{ya1UlOa=6jl zvQL=M7bGqy?Sk^tKn42^0*_oKfrB#8i<8d0hnd$ZQw}nXiokiLL zAz6J}c8=?+n!$cSYA-~^BgybOHsi3} z@vT``;Kec~ndna;F)2AmUwwLy^bt+wiK%aSgEEyk4xc_C()W1*^f=!yH4*!hYzomq$XO-#{7kN(4S}u%_@e z6Jz|o9R!w7iY}FRA^a`72@gJd>(ol7Yr3Hy1uF8at*1zhw3Nm?z)Gj+1Yv1x{VBsD zfTSsGHWQy7A;iT=~F-|Haor#@d%yPHrsxaG8kFxd?2h|%#ZYfMz0JDbJTZ!`Tf(cu5ih& zU_Nu!=z!IG9tj8@u+!gP2?)+eZ`EsMQ#j2YyyFi0!kfDHi`IqHIx(v+J^Y5-A9}wZ zWJJmw0AJC3vr*%u%Ct3-dtI_Dz-q8J=D&WqVFhy*6bQ%}=+1@RqzzD|_66oO56ePHF7G-PpezI; zscFS+aYk~ksI+13*Jiz{;83{G5DBYDY>f>Z*wZWv!1jtUAg zMH(+MQXn~KGc^)rWB4X<^y6_;Pn?ZfDRkCm1ilv?#Ki(5=*IQhIe)+I^J^dd_l;d6 z>G(FIBaFD}cJxA?1@`E|yka6J@OHcRo_8mw3(1s*p>w^TP$Z*i4PT_;p2Sl|^0J@n zkz$NAZS6SGpP&VK;h^m$dN|;klP6!B{BDXXtE@W`@&=ONA-?T#u#%gCm zXY-DQUdY88ZWe?QcE|jcRkq^^u+Gj_gvF9*^BSWj)t}5qq2^+5-x%xuB;OVObvN7P zQPRI*PbwiIbXeCZcH!9La8;yd=kp*cayi-INk|1?68zzIvEDp1sLvLVKxS%wiJ< z;iNwm`-35Zb#%Am>d%Ufgf$}JATW23z@|V_%;w9C@@}{jrk+_Am;N)EoKTKD+(V;B z0F7^(4Pa4k4BrLZaq{Vg#Rk#p=(uD4rso{Lb@`B9ATCBOjN_ZD8lS01zZzjsPX9Ii zFj}!(r7feSvH|$EY&I6Q7J#m=5Ys=)Jh~@cyCl2eoX($xwS0moFw8Zf>}Yw1Ly|S9_5XAqhn?U->vaIXnHzrV4k6OTgJi(qCcu=A~D6w&8?Rd&(-NFs~n- zSMftV-Mp_9SgvJ!p zZzc0B?-E{3Sb@&fCmJx$6x~*+-tXH%ta)U+2+@z^5KpHzcQF0h8_;o&NtHIX?xi=? zf{5{hlC9dP2_A`~GajFaZ@WMPnpu7gQbg05#7VvSY~}AqoM~$O;GZ9aK6VVyWSO;d z&buOTI9|T!fl7^y!h!SOjDARc$B;AaxZ$%=jpZ`Lw{)mF*N7p~@Ok7Fx_7YT=Psw= z_Tu@dSq07wps>B>mU}3N+i?wpNE%^GN0~bt$-2sl8G@4yz#-V864zby1j< zt*T#gH`IIX05&5)U@2(?#!S~q&kr@KL0&R{KQ*y8#vWHyFU_QdM8~-7Am8FnvF3Q5 zAt(Q$srRTnUjXo!_*(52?-0_Hf5?$1>i+TQT2=HohQ1ntNdANVk;YpMz23 zMQRNDrZE(qb2TK(H9EhX)U`C6YvEh!z#4v~_u=n3dCO?lIFA?-X-6x}E=b_5<99es zZdfjlG0STflIY$zPY2cH8Ln<8-muv$1bc9nqHGPvNfY;*M+SPdO?`zY3GBEjo14|?UG=j5BE3YSOZoY(h zGDfNQg^}8fx_kVz=?;2_5X^G05=ZjFZtWylpK9PopvDhbnP$rrED2{nrd~7i&1ATBNk>|lZOmr z;Vd0iZAk~wkP-2c#4_N>lT2nv42L*TQG@bcus||6Pji$QdDycNK%7n0Qc`ETXNc-? zr|_3uJoN70NZo8aByaCRuH<3AJE7Y|Mwt4FBl9U{;)o=~lje%%I2 z7#{VZKrP{)20I*dTFEXWvh+Sh_%7?Tm3RKJ&H;7JuG-971t`$PtnlGzVpaI=X}59= z5SwS9SGx*n0fzWQWXGcVZ8m}6x>da3<8;1P@}UQ6dgC3ux$i0SGek}-&J2J>QSJk( z8~5p@#4;?`$iJO`e|=%{H7<~n9|0;HSq!op1H@-7mI$p>r99yI#}qnj>|Wg3O8gN+ zql2epXQ5Yg&v>iU!F5Zv^>b~Zy!gKh8w0J{^~c#Oe$;U?RzSz;X2OnNbU=`KxOx4P z`+e^bjTKbWgoBiYq~Kw{rx9+ctGTz|B((bbB5gSJyMn2?CTTlYz|gY&fq8=23{I@P z+xHog8fExF+LQypkchW2X1)C{lwO;Z{e;yp*{XImMz!%`cDG|rO(qJr?60=&T9dcn z)~(yMceHHjYJ0rj%{{w08&vc7Z28>3!$iywSK|<1H1A?{8N7yxe2hieeoBI{(D(*n z$v#3YLMR3S$Td`8_nU;kF=ef`rnYKsL6XFwt7^_XUX0t;*zH>(;doXl&wZjnYrofx z?r=zQRC-0Pg)-pLMueDJV$X&EfC6W48EBA&s+?HEN5>?WfA&OS3Ax1~CyAhk%@j^i zabGQ0qlGxu1WhxNJOjXZ6ov6J}l^g72y1YI7HpuV0MWaBlAzh#;=Bp^IEbZT2@v zX_U5Vfz>&lg$_a%H!hG<|9pB=@*Q^>X&oXcFzbmdP<=U|*eHnH9WEby@lcpAkHw`|}s&GCwrz=1PedM&xl+T;8>M9n`$<(1*F&S6C zzIPkTve}P7c1?Qhpr$@ua%Y^_@c9aTWmfC>Uj3!BKifuXKEU-<`;w!j6&u4DWwDMZ zY^N8s-pS1Nt|pmrAUevegoG~aMk=kQRb%Lz++3fGfT21#e<7C*eR^6)tNi!RIgFNX zihFUFTSw~r7oLEX&XC}dj{lTM*(uP|9k)iC>KBh8ifHIx*^xJtAO?qLYQ^zTbn;rt zXV_A_D(NMYkV%*XY)r@8pu`z|Pis&#)gb}Js6;Suix50rQyDb(D|s5vBvujfT8Ti+ z>(|)_S&*s_ljM7in#LN{#Zjv)4lf5(q*`N!o8u=}N{P?c-E;N%;h;+pUg|$@6H~s~ z+00Afnjx-^f29}#omN?+`=EzPq{9OgdWZ2H-?vKh!iLtgPU%=(v9A3cQmLO>-4G_Q zF4TqUg2DSbe6zlPBT9hIbT!TS`u3XwtfPiK{c%zH`yXRPl3O^r%pt{G&$_z3NUqvMYtewbb{{i~iNe9knv+&?PSciPxT|CB!?kHIgqkhDl9OJFcPw^FKF)7k!W_ofz zZlzPj&~Al4B7=-%$j3fP95a*T^|z7Epv@vmsFjMe;pilRqvnb~9?F20+F53c?R6^D`%)|F{}C6?W|jskt?XJHSqCH|LQ>rfgl zTa5O#UuA~a0hug^jbFDnu!<83!&H9Gf~E%WC)YVN7cV%JeJSd5@(72dnDoi3Mk+S! zGnoaY?&4qF$jmjRe+*jJE7eOoN*zaKMq2N%Vgt}kjDr04uwAu+gwjylOG!9<;|QNr zp^1YRY+)At{7cMwh|!g0dr5I9m-7N_b|5{w^G=SSM_0SKH=-vaKhFs33fhDQ3chLy z%wYTXz43Q|&uDgcj@EgO$Vaa10h@&px5iq0<$yWrzB#*~A5?|lDWw-ETST$-P znkWBTLco?@{BwJ%@($Qev?fu}LGQ~_P$r?2WiuJ0c?uGK$y0hJ?>kuzZGGzuXDc3b#3tr<)0l+d}2RpUY+#5^hP zi^r)sIp6DEf!>k^9XY+L=Kql*5+?Z&1{j`mUrQBlM!4>vaX3J)Ek zlgY~y;KT6(C3iw`txuf);gne%DqDFSYZu?TuFVFDd4hGQMXb%}rxRQoo7B$RB5xuL z*8r|vwVKaO<09i43I6m+xm7ntIf<#oTokJA5Bxq8N=Rp|BO6q`J7?befDHy|=QDdnCQ@mCS~?vPtpeMRUWW zbT_M3>WLlUWm+SaIj@TAcL{6>QJqab@H9r8B#wZX_5~PAN~tMWU5r&8 z(ydV(;4tz1%zWhwgiIWWb{fo@4vpeiz((sZXbIDE|bi6WMFrUz?a=QzKJxI{z`dj0exQG%)I_Cal_87w^Z} zfBYW%E`Yw{)sKUra)~^b;>0^E&Wz)!T{4-B?+%fjyazl)MPlLSUyr)l>WfgS|3*|F zRTyZlF`0%`^TG^z+FPY?YCE-NeXx7j^UcfwIh;p+l#vUYzg%f=zbs{8lZY5P!s|4A z`Pp<(u?L}J(QS(Ya4ltvfw`Q=QQ;hbUoxShilOK6?uUf%5>U<#{F&M}K;@FFZV+RA zmq>B;xeLbjzM^n52G?(NzYuzsJZI4Fp%gTt$fnBpeTN)>kE3rbpG*@DFsE@s*&5L1EoWa8Uw`$T?tBMr*8w+%ZOFjLR0 z(>dS3?y^`;W699I5W#ku6$K!CG8{8Q5UzXh#IBOntcXmTb2agN)r_`i-v)&i_kAP< zucKPPh%@$}=B9lGg`+Z46}dn-B$^q02@5n$ZnP z5q5j0xim!;rY}gGGLoWGpiy;E<%4)k3%?}y0}C<99)ATd_ssGq^O0$0(f7~d=E(=J z%iR&@WAM4Ez!47{E;ECp>vkz<_c{yDlz~s8(YN9ofH`S8Ta67+__04hFZq_zJd%?Vb+|HN!JVh5;mE!oIYZ%!J->n2V6LH=dl7oj3xloAX`Q^Gu z!5=VGF=YQ=U?&AicVM1n>YdP$|CQQ2 zluZ@7`{A9u^EC5DtT`|krMMtlbQl_ogyWZy|i0*6?hD5RJOFlE`k~wi%O> zC&6QZm);VRa(9}CcwCR@sQXNNjW{rpBm`z(Rf8-0!tLirlp<=!rUW!}Z>LHJ6B9LWIK?=TREfr;^EJKG|` zb{fEJ33F-c_ zKO&KCyyfSuhJl$STPhD@CIstV1-KKOfR3F-51v)}==?_{jya|gB?3dxc)YT+)F*8; z$D5g|RTjUC4wymL0n2=B#Tl{=aNzzOJ98@^w$iFUc6SX1^*IGPeWB38Nip}TcKY2t zX2dk(2Ta^D&5mk00jupZB$=3pX6EwEtQ5wHJ z>A<kPDrZD8)?6}MSwR`5W>xA=oCT~N6wk8L5cvO%}EFvaCIOk{HB76s1 z@gQ6(pHtBNOXH8^b?%|YI}(W=>;KM2zTtIz_r_W^9=1jR^#l|(D#^tph9Gu748RzEfcz&jCiL9ZzOiUu0;Z9UCr|%GU8I|f!hs%hMH~t ztz=6b%AN&o0+;S(Z(uD z2olat{HJT}dBN%EPb-rjgB(<_IKV^U*?11NnvqE<4p*P9Adw2XE4~*H1-tYazm~)= zBJH!|h*V+|4SSo$^Hhl;=9HYa^H~mf%t{ilAI%g_wZBO6oPeFpml+%T>Hqy7 z|Bqsy1n9P!Pb+C5&|w12m69tO*wkG6l=kwMP;}b7AW@L!;uCACFj`_E@23X>#Sg$d zuWKK~J2`DIZl+FE_YE~Pz-&8ZuA#FcdogIt_T~u{q-aQrOUG?N*d0MPGO1r^=K5o6 zvT{)?>Dfy0#4x(t4V9;8)&^ASw7wv0^EB9_WS({vrNi~W(Vg*50Lg53BeooGuuPM8 zsg-9a5!8KSt03JFA%^_ycUu6Ewcbv7A_L{qNf7()Zl(x19ZRpIj$#P_Dl;1SDd=dsA7GP88OC zNxiNSQ?8_$^JqQ!ZJWMa_*<|0%+F`MrK`{3%}TzBRUiSOYKrwzm~TvZfU(91o%gie zi+l;3Nh{?8nQ;d8-N0BTRZNGZn-%g{NuN6;=5nSG2B6*-KPbCO`}i0Jo{ekvbA)i1 zu`h{2-w87O8G_gCC_UdBrI~c?pV+l@u38WjH3>F8W}DTRogHGbX<7_G>$NR>%Ow?i zz#~5KBpSEtYFcJ7nE*w&taYvvjnj5sCPUxAg4B*ZAz=7}-6_J?{+(r!c`&C38g;^$ zm|e8O|{f_q({|)`5iy$(Sl>t}%@!j6W41p-Fvs;;x#HKncU!g& zCL1^dC+plZp|s@Rb%C=Ewx#>tuf;m-UHf`(KSO*Tc{nJH`VC~i4p!^?#=mGWG>E=E zPhYPt>DOu6Tb_AhYFG_#!)>C;duqGx%b+bqlM|zcOBD9}s!LNVSVdZLV0&2#5$wzt7sB}LK1L%hS3wz!3AbXuw_2ml0)GF3Z zYLau91*a9rHh^Ji0lfg9vquKvW@|(D^V6$qg)z)hAlria$Wv_+ffQ(RArG;_w(! zz@#V=QJQmTNdLaU3#3xMM(d3m?3={{FKrDU@D)Wt)FlisR?pq@DoZ`<%Hjh@fBWnF zGXkY0PU_HCHt*B!W&_OUMdR8vpk6G8LaaZyJF8Nv>3+A0ZC(u=M9&P$#T~xqDxK^& z_F%*Lm8i3hH_*BirZ1SqFFJSJ9ij|ml(mHDNmpx@%(>LU9$>8QZ6~kHA%mo`_ z*G^Sr4Eak1shcoF@jP=InCnE9P>;vztK6qS5=5m^Hx{`hxUJZQ6n3T?` zP;=(<=CM7q;Z_U>msF4%Jw+!{Fxw(bE0(1O8_ZWV5sreQo!rJ47@2>zHu$3xr=J^p zit}vf8}Zr#a+_VPmb%ZE9`@<$k>0h#E?zQGfU7zB3YJ=li0U~m4ObrwTB37&&CkRK4&#SAVq7=*W#5#35#g8 zWYZ2bZO_2;^YE^~ zoq+?_?RFS@bG-xjPepakuU9`O@*_wo(j?{P?1@TjD8#EV-^m0Bey(chgg6;xQA*Xl z3axk-jq1B1r=F{raHa==KKm5yU^B^$XClK{zcH9)s$jqy`a~GZFs?U(KMe5Bx&Fop zcw@8R@u%-LmL~6MSKkTjBI~^CEkRd`3b|(aO`hH5X#HpiJzUoxn_&9E_Nh+MoBDt} z_YZ0v`tM*3nqlsme~pV;1-Ph?d9K2eXW{mm)OCKJTXK(z_(`dDK2&0bcjrR1COYx% zIp0L226?`4zgK)9@nrJ!WfMWzT;hcln-K109&6g z!u-GmPpO}wv&RyN?6~AUyOdX=$E+Nq$@%x+3(lnA-3_!GO}EfxsBt?R#3W-)W0&3U z@$9?T>O09pRfEMcEJ_NWo0gQM!j6AGBFvVm*iXK0uuBO+;9yX(14X5Vm@Ny86eJoL zKt_>u=88>Jsb2yY=8x)43x0a5HwjkO(zS<4YLb?(k4Mz+@f8mZ6)ROCJ=#}n0&s`^ zU_3knKB&xWihwUHYQKN`zE8#IJn8^3_iBC6FW^j{*sIAXTX>|z3SVJ!sdz|1Dcqli zVSNHYs_d4hhsC|Xq;}P;3coklaDJ4?#!LJyFl#7glj!2cuNDtA*Po~-2tB&nSy;^e zjiW5h;*h29+|eUayE% zrgAAB<88WqX^(8;4M)t>h%O{x>(^*oN8n!!S58{6WRJNPQCOZm0C`=Fj5$dA z$11nlt8S&fq!YJF{{8=PZBOj*XGy zZ2?B@uYbPd;c&=`C;xfK`KTDuZWT1)H-hc&P0{HX?Z=0_P=!1n^q+lOXVY=nCW4sX zjU_n&-|K(#rtw}f++-)qCHc>hvdkU9G=k_ZJ$e9oV;LDWmKxhb8k9S)vyHQM53y8PMxJsiG>OooE zvHNDG;{oSc>HW?}7V=nj%%42;D0ms&$aCtiNM2z7f1J0OVrM+WsI9iwOUhqAziVa* zP*<*;-e@X~Z-`}=+rH}M%4X2kJnFA-&m=0gxV8kWw265$t!@cobaCjNyF=T8V8$kt zaWu%@-;La)m#C1^QSfofC_k|EyO^pSy$F>C$y3cvWjkLY+=ae1D`?1F88H&I#|yV# zX3Z|D=xK|T{-)m^QWJN9q28I1$pZ*@5t*OL0uGb-UEIiOroYLyothP8N)$uOQuMeQ zkduC*bm9T5G=Ymn`;@r<>EX1Q&z^63iJL=3njr12VhzNWTmkCT;pk6j!av6QEXmHe zdzO-12JD%Lc_t#oV;3d$2#h4un7n@41eWaSHE;fgh~fsfQd&mDZ+q4RW1 zv0uc1M{OKztLcVO3&n!iSGLH)CDv1k1bb`LrZN_91$h`RNN2}izRkXk&01$*$kD8~q`2lvEgf^9))%El?=n(uf(vmIEYAx$(*CQ*RkL z0aUP8U$+C=5p-%~(9IuH_ zSqFQr5AP~Fs8S>0Fd|F;WSuVYUyIwAr&o*Ij{((q5U}wTwz^_-QH%aOXnqT=tG@H) z)w|n^aXvUtfeEYS%d?X!e2Rv6<|m1hD9_Ofp=$8~C4puU=gV8mZ&!c^UJED)S?mc{AP&RSy6~K0G?irRXHba! z#YJ zB^M8S-2rcr`xdqoS24iRZ0Gc>W9_2B9JY|K_A=C8c044aLqUrj;F77nf;S*cjA~rCg6@1GB(xl$`1z?xP$K1@N$=f?kwpKc@(CgnhH!UC4h^ z*wXeVDsZH+kDA=#TMm$z>!m)Ne}e5v$sQ7k`5wWE zLuRKVvlNF{JUF!%`C}45oJd}-F*%o}!7xF#QV$2fy_xn~Qz^DMm_in(URC;3thI~E zzb(kI19M0`!f(mD?l0)=O?VI0E-)1|-4+MNqmk(5JRm;BLILfLTDlcuBB0{!qJkj> zk|4C@032Px&+_u5M|}@ z1e$#YPt^W8bSSIx3vnJCyE?j}`9<=<{+Z&AhaQDd=1%~q{=er`SfQYb8dd=+WJOS| zJVlZdyQ8U?uVTXK=Hfw~Sb@Uxd88I^fSy#8QbuNk9@a8KhMidjhBfDz_rVG7JT-H{ zr{5(COoG0AbL99GEZmjDrVAZw;SruK5lx_{Vn9rE$>&dz?-bojhqslK@ae^D1}VYT zF9ZTLPOKx`!5|js)q$lyvNBDgb0{ZF;DN#5*=`<81OhAPGF9>eN*-nO2Uz!?*Z4lw z!iKj@3(d7@Vu_av`zClf@W35x2>A>wR!ewg5?rZXj0blmZ4;jdHcdybMG$l-x zTV)%E8rq5Jcv%b^{vliHz^9KJ(3*;}zvQy)wx(Mep72G zMk=7P%E>L`=D=c<)}u%~RMJVxs@5Xm|6UhoeHi#rY2??3w7W1-NOx#rgjc3K1SYH- zn7U*tSIu6_v+z-oxJ56iUgc1tdB^gmTk6eUPD-3jw8{FdV3~{>L?8F*uA@%%QQUj< zv@-YM+u3ewMfK8{#4?CoL(YLh{;ocsH~>g;W2VO*i>3q`vu=ltnw+))=2gTCTZ(k1 z!*bk1d3U{BxxhVwKj8^8hf!;LUMsCe!fa|Z#U}^_i^&7gJJua zbRSH2B>ntZOD#Rb$Xk5LwWzN-7TK}7lI_wNDz{s3$$cEzOV;W*cM8>wH1C1haeH5e zv+JjHlY<4m<(?T+C!ApYjHDy-ZOjp?lN4{cy&*sU`2-YxbyFpSL?4^!F1E#4}Q~!tS(c+EB($ zGIH>*IAmeZX>4LJP1F3VL@J1j^aOv_$}0X&Y(6bV2W+~#qJ5;lpn&r}lp0z#c3Ab( zDji_$%{r)mxk}WeApOU?-R(i)EWtj&kiIkFCy_PZ*jYt_<7Yy8-Y@Bv{SdW9>G+)v z?-)k;ZB4P87spWQoM^obe-&DVdwQ8)?xo|X?5%60Y&i0=a-`xfGzqR;q)=IQ%NHFv z^j@=S4j{xJn{0A@)*F~=c>3c2kYEaMmj|U0%btT_kERB2m;RpmqFAA4C#H-I-0+7P z9$aHO8Cv~v_5OlxnRV}|ho3y^lEyAjD(_pRTm9WZauWnJ-!0$Gt z*&?FFdXs!osPTAWK+!DrVzwEUL|xH#wlD>D8?88laHK%e9htJr3wY>1e z|Hc=T52dyc>~nJrRI8{U7T%%(iqvGo=2bkx))TEkydz1|4>{*lFp$jFgwWhlWDb3Lg)fX0L4F7wk`(Bc zAa}7}Obp6$Cz@f;lh5f6iw3SG;|%KLoR9blmX5acX+dwGIm2c{T1)oS2~Z=FwD8e) zv#iN~(8XY@EU}N0Q4xFiV2I9I!fMAVp>I8PQ$TLMWmHl>PO`8*HdZ@T+$%`Po+j4_0Zz- z^2>!P$d3i`w-{JQGbThrf6S8e(nL_*v-+c(xq%F_CaAh*66z9ZrOWACI*Cpn2qwi# zFKrMa08K(Vk|q*Ttu#h%Dn%{LKn#^0uL7B=jRR2Tp4xi4G`J`Z)Y&c$u?iu~UgKVPWwHkbpSTbYsCA%x7(O2+I z^%UT2W5+Tg0Zqb!mDo2dGXUe!*V)*B;(#($Ps{^(|1~~BubY(M7c=kegJlSWzn>rZBW_lN4A#N415=`7s)?0?RZ5BV;zDkM04Eu&g!#A zj@PYQ*d{qL45<68dwB@Gp+KNTET836RLaMp{#lBTZc8TCAVyXWJpRmD%{L+`M>PP^ z<-5MO>jbyHy;u3CN$bSKF3dljrBtVx78D&>%;%(v7Z=cnQEZCDyY51zKsN-RpY~aQ z%JQeA>*+oTpej%sW(ESpIebj@qm8`#U)>|(3f?Y^l!Fd$IO zN?{G3dKVG{yUN_PV>SJ|}RGYm; zV$LGiz6!S7z|zm10ViO2p4WoU0uzIex)j|US_xxm8BB}YjkVjO8Y7qzOc@ONw^p&y z75#qN?+Lxva$PS-Cs$hA?CNkB$2p%tC@U|#`8bhw?@56C)Z|AUix z{G6_qhmrDjgLipVGY#w9wIn|@50qYJFnU1hqdc5g+R7dw5JC6{H)SKxE_-%?%<=u- zTuVcnq+;d-TdD`YvdZoJjpX5`?o6~l+VmFl5Xo&zx@Jy$YmyVDhoAU0_XuHv*s|B% zf{W}3J?;6~)Mnj4$v6V@W-w*cw>fQ32SC9`**Z*0Gq(0Iaqv4LO5>eJEg!jLF#e|Z z>J>wSivGh+@G|zB?fK#^tsufd%ZzeBP!HjZ+)y!xn#;eJp*+PL7yl&ke4Ebi&=Kj0 zD-&jh?Jph1>&=W9SFxb>m5#5&WrUYQ882@Ak54fO{ptzY!yIfg+7a<%1+{rZUFK02cXx0kbvYCsP@)F?TvOpJ!e!1L6;243;yu)P{ z|KOr`agSg&tfHGF&A2aG&Aw*!z4;?lRMEI~4dAI;-cTfr6#Z4R3~_xsAh&1F`GSQpSSnM>Mc_^R?x zIx-ZOG8hleN!l@>0*DyGOpuNg3JPsr3BhY%$Ye|4W|)XrqDUL4RS`lDAacU(wz=d!bI2`Ew{`l-!zifo|GKd#R+C?lz>M}(!~BF9yj80)wO@70uTY62 zij_C}=hi55$e+;+{5M8Do-ozR?8xT2X>MpR@eTG}`orskN9XQd-(T5Sf4oT# zPywwNWaO^|nE`vcQ(i@qc_PhJ$zvE%tuxv&nt31e{G8^ov;9QJ1mJ!ufIIqy?r=|7 zTFqg>%t2>Q>6jh#fAcNIzJNs&B9(&#g_GwMfcHJu*w1Q-zh3d&{yMz8>8?R$`6}P# zD}7?iqNo^>gjEv?hQPZ(V_T=jvv8Q?Rua3KiuQ(VmGohbnpieivyta0-U)ZW$i6DyD{_V{}CW4`| zpfIY=Sb8<`O&t6cpQWd&Q(oC1EB~Hl*($|<)Gbi?uoKW7&0B?b#Xs1Iz_}5-i``XT zPk{^`lnlsgTqAQ2!A-7lornj#CR$+q&UJo<0<)W1S`4~h>A8&*!#X=D?*g?wbbS2L z;@xt&b$+5$J|BHD%}X}Uj?oJq)w}@dy?CWz+d||JuffJX8f@vp-kSCA#4sB;U)1@| z)n`~+7QeBh?k5*xRC;$ob5nJZcWd?f&*bCyMF>P#3Ju@QGwWd-r_W6o9M&vj%AdV> ziz`ESMFVu%_XlUESCZJze{d8}LgqqJVIK+3=9EV&8@xz`4Ro{jJp4hKQLIpDOpiQ; z3->HmTx5G-Xs*;klV#g;j)=|{wPi@1GwNJ}X(lHkUj4Ux3{^f@#ct~mGE@4#mGS}D zzhT!tc`OTNG;q_SR;@rprFcdThXi&A`}(5dy$*)AxuCcp;dY05f${z}?dRiFXA)*-&`L(&q-aDQvFFwSsP!i)lVC16HsR7iFVMSY;sccWOZ^_h-KJBEQ5|{O z|AudX?P&xG)}^We(aGo~Nb>aZ+yrkn!4RQDXKtRinrUjYdYN zCsB|8eN|vSB{Chbb?HQv866X3jRoL=Q!vRI z!Li+f4AX`p2uP((>ux{X);!j@Ojd`j+AGzeXgtDipR&agcsLgRNCE~8aF7Man#C;A z&V*ltCQ34>o{<@9XT{-_e%@(beXezm^r8Fx?g2Y!&_jy6OrBbUNazskK+%}r(wp@^ zj1ad9X#`Z%NMlQ6cn0}l%VBf`9FH{~(!WZ;?ZZ%ANvz)K_vf&+!6UTTJN0rkGJTr? zTUI_xjyX_Xxannr+v$>5H6GAD7X5_xEF|~qaK9GoSFQ(y8l1m4u&EwLcZa@M>@$<#&NE{vQb96c z?TE|XcqYg}=tG?=vOvK1Y2EiC6raV?j5>5aSfF@RWHIL%FxJlH{ShB5aa$X?ghyGS zgRBZ<@NiB1CAwG}h)opc^7&~SE#6;ml7eZKwpXB|g>Tw<#p>T_(G(&0p6ot7!yH4U znKeZ4I+*-*n!SH`vg_Q3JY|@k4*|+ERMElfq{0}B71jQt^oAD5BW5RkXx(lvv~?_vn|ha*Oz z_4aI?Q7d(%`8p==rm)aiX2;fdZP4UFT2@iqYl|!q!>K_9{0954!}t&xrWC;w-vbLN@D6GGl`>B28>%@j4IXocWP z2UDjsilX;0jkn3Ba9v&*@%y_f$bg|vK}RcRE>vz>twdF-y6yBuAagQUMKtx zYO^jom@b;HsLkklDb8?(NM}9s0$*AUVqaI;Hv0zsOWg|ZsB=<%-__?bxsVt5> zPInB^i9snB-dfuN!YqfDUK^f9Oi37ic&$zuxEln){^^tONG}#d4}RN~ROWlm?i*+3 zhyq9!BMC7407`@RRc7sj0u>As$Iu@}Q?zh0VEZqcSf_lX^5=vy zA`hNnPt-2}v!NFoZs?WD?B>twv?yL=Dms0#CEd*4JzNN(FP}oG;b?y%*3bn=y9;{G z@uZU3sdJ0v<6{7T7oiNxq6Ezp40BQ;;Bgf?cJx5?C)ht$Kw8SYJHb0@$Zez(TJ6CP$1V~>CtKROSH1`!$Lqk}x(Io$)ADz%(Tdn`?(_=&Y99~^E8f~NY3rYo zGjv>d$mrnlcB^?zmtNlg%q^UG8Iw|lAcBUw+!Ca0P*zhC(P7S%&S-a#t*G6d@2oiV zwpt@ENNOpStk$b&8cEJe{=Q-`3|DH3f#;sZ|9}_Huk|LF!F9J;-}HBHuvu$7XUm7# zNCh7L0^=&|%s!aFK^RdFuL_F-~1{T9*>plejkn-#31_{z8ML1z+}A>*xJHXwXxsC?MU3N*FO z-e`2LoFj{H!TEZ5Tl5L}g(R;(=5O85If2oM9>{O-Vmt_R6|cYVm_CE`SqsBB}IB&TAdGWS2 zx8>E>%R5xe%d0~Bdn^RTcm&Wn2&~9wkk|$;u7>mdCRUDAUZ}wvMlP+v=JmNScNPNv zLw?pJjxQn9V+)7hS?bc~4%o#d9FyZPp*Egj74#=tPhy}0Vzm=tZz{?UWT-!cWY6~g zioO*ub=KW>>&h=GXb}VIP1$d>>T4^N7JY6(F$L~%eo7p5pXd!+C!T=UuZRDtefp~A zpOzD5+>7s>?i4#vqEkQaIfoYi6%H8Waf@SrAS>QW*j$ z_rk}x-~Un3ii}rw+a^fVP#1AZx@%87PFiS5R-AkOF%sRD_(9uw6U9lHKK16~GPj7w+^~Ie3I}~?KFNY?vA8Gvb z?M8D5rDFA;xqtPf*Y6#|ZN>Qtk;Zu#5in-L-?WE11mM7SD{d$t3yo?b9$d#EAkmB) z(y7HlPl7r4hvnX?5kR^@PqYNq9Z)On!J;9NW%!E6t6V{L9^$>vW0h zUNniOt>(mTa*{;Pz}|ENL^Kq$DB&Ky32m+k=VTSxio0;<@5u*wQUV@uE0L41fB7P( zH_%0;9x?mapKoi1I#2(4=A0Acbgqun$PsA9iUQTI;2;dAlQV?VPcGXupgc9TdvKaV za53*wYqJ!yTXW!ICy<;uA=M|m2saaHpRIHP$6K-$3mGzdW9fE3K~^d@B1XC50Iy&e z=2d{gqu}|*;m?sO_N{+~I=NcZc*mr`Mi$hu`d6gvKY4bepXc8Gp>>_O7F%IqTU$8z zm;D&KJC{K#&C>&VL^>xhelR)X@q^>FJ{e!QcK3-dO3J~S$9~MP*O0r?TR*f)pr|v` zj4=k785T0O4oMyn=QYCDTPPvN4NVDMM9UC@kf=tEIgDRmZ7c>!YtIMmQ;LzILb4)$ zpCZZzMCl%>f~vUTFirNSYIb?>g_R$i#7fJ%D|27|!_fJ_o~*0m9NWr89Fzil8!cV+ za9zMqe6cUhT65u7!D0i6nFfhVS()Ah(>vCk<{Vh{D6^w~QH+=5R{vi!Q0*xe==I~K zf_*dn=-xWxaeQlGK6CZnJ+vO_jC*z;R`oz6RjJ`dtcTA=o=Mi8&r>>Kc%z{18lPP! zVIRs`<;5YX$Dh? z6gOe`{mQ}?vsbYS7Zq$x+n;i9CJ4}^Y!mgR^4ybug49ZrwK12zq6W|0Z*ko6CFk&^ z*5~dTdsYTlR#o4(Z=JN-Wro1?Ux`Mm>i$2Mu5VfMvmR=K)M2dr~VoYgGc7%a2WHUOONouz4v4p%IKw|_JoZ>CHQ zuda3$a=mz1g3stk)vKk`608MNxb@5wP*8JC2k+cUsCP?is`{&w>0aTC?%-4H@*s}we69t z)41y-N4?xLi2bYRCe>||J#nR2prE|FT6mDE-)H({mu6+~n7anSFD33_V>>Pz{01yF zY1IVJRFR#Avz^|a|4@%9U@WF(rClQpU2RZYLH5bvEKkWjL+;e)znR|Ji8qBH_-(1I z!zaa$OGZt?a3h??No99Xv38ov3jLWfgJb-n4!ma2*|1brS?=e0mb9LI4l{;A4~;&* z&E6r&{7c|n#40Zi3pG?t#=d`G8fPB?HEvT4A)VcaY^zJ zq5J8M$FSGztDh!w3m>ann_&sB44PSWF=CZr5*e>PhIf#t`dNb~3&V^Ipc1x9NJk&oqNXBU7%te?VP0R#~u^_Cj3pc_twt6<=?_ zL;4h1fdp}NX{4h$&i`EZR)tw-&H8K0w*+1QR0%ZC*F7Hf)uh+lMNJfM>o5KtmFu6$ zrZFaq!|gfn^hAM}b^%7RX41>*ZwZn1Gsg`~`TtYI)Dfy@yCGUtM&J=hv5TnC(e)d6 zgE`e%1ufk#*S=gn=}DVQ0xEl&d)p z#1T|1zJ$_u*e9Ed=HC$_h25}Z9S*FrTA5r_$pOo9*)drni{k^zHHDZ6%T~)6!+!~3 zOB&RhISp7IeJL35t<-PT?WuSpYNu+0qC5`gn$s{h@I($r$d^EagKi>MYUz!Wd;mJV zO3>%V|HRW_Ay25w0S_DwY4K>4ZcaTXPK2ebbwp5z{U*O-EO&-`za3VE-# z^jT4<<@gQd9f)SmW8W;`;y->T(2yw!M>1Vjy(rhIt9c&8j6i3!Y1hq8>lV1)msP-(I7BXARi};qq{j z(*JM}*mbW9#eCtHnE^x0VR)}kJx1n>0AHXck8x`*D5FCj3gH{3K|E`=BkNs(wb^yS z0tYAK%k?i|q!C}}OgvIzV-ka9(g>hcMhE{xZ~V04FL9B! z15FF&5t1I2;h3zxO+$Hdsz3eqeZ`ncU@-{foKT<#L@M2USnCI*0iYmb)8(uaRH+Ik z>(0Zw90g94Gq>R-BU-iOd?QxfDst&|T1G(9fMxgFf|5?YBET4z9cvSC*Otqsu#UXT>SvTE-NWH7;yy3(>p4_*#-Az8(QD097ctQ1OCLeGIe7ut8RJja3cu zLo|@Y0mEu;?DQi}J>K?~m6uaL0svq&_Gvdx^o3oXvFL)MqHo z5@qn;0ehRMsEsB8-@W?Wm_sN?=IM*ZJ?LTEKAfOF;`3IQED4TcN?Ba{eL2lWl*Rl2 z^%?H78~^n)QQZHY3sK2nW0&mVAFDJ~Ywl-EI|_cXm(-l`(MsPfBQwEFvl1XJyHssH z3XJ40ZVls5!{#Po(a&ki0VS;EL`i5--rNUK&st@-9sZy_@E9V73}^`wW6*0gt1!}8 zx1wyZvsAH_{(*>1%Pj3Q!qz8IVul+;R+-N_pUf0!GT6*{ZrGENzEsqq$Hx#IUm=-& zzn<_A2*k?qWFhw9J+2(F!iRz6Q-lZYsQufFK1Id_XJ%R5K>sH@s0-^%U^*m0Th!i2 z{5N_LDe1p^YZ%-LMnk+V*f6+SEBS%DzGyb)uH-euST#KcbJUr3&9hnB1MaX`8&FjN z-;mn>SlqzeQ1y0GD|LLyx`=cevH!YB!opBoNAqz`%}3Ul+?~g~QaZZRET$^U%!G-5 zTg=E-<`fFNS(PdGGXF8RSk#g`bEZxpaE2ymRg~C|!D)1_GqXN}fPGR13U?gbYkH(E zWilbmK%_$EowEkX+~IOha(-dzOw(0C+2vn;h?985 zbw<%rJMR5MMD)^#CLApAtLySa$X~a%24(0Y;Gx!^*QWM>ilU z5_LD!>w{?_0P?%;xQZk1-aApCs^uGGEn6UDuR+80rQ~G z1c9TgFp#19Tf=$fiOLcDuNLT44*~6d2R|b9+^*ULtfa>%8qfBFG%d&C?!$-=`%Oeb z`oYeUppx$#v6FR2vftOZ_^~*6lA<-vbYs0g}V#cgorNy-SUMX4he$pyMOplxAFnvz0ZyTKGYF6Na5Z?M`a z%ajQ-?*YdUb>k+-uuf5XHUV%cABoFEl%E-}T!aQn3Rr_2VY~nk6ZeDNYMw5G)OHo% z6txO^YK7GHm;cvbcU3t$9W4@&%&ewb{&eMx{wiUC8;-0{I*RUj$NCNQbP(`Z4L_Pt zxPdoX0OeCq#c*VFw>(7cRH6J<4NQl=@B^%G-;nS7GISAT_&}bc&)m9$69|OMzGBOi zyn$kHRPp$TZre=AX&o&-`Z?vq*Y^5Wo$gObcA&7iSnlvmJ8P<=Fe_Acy6!^V>WmwrsTtSL$@vlxT|(tide9QQHbCKP{l>cfayAQ-CHKXvw^fVoRP zk%Ohc$06qYed&Gz7Y*$H11%`$Q%32DF`S>E*=%vNv{XHm<#gpChL}3Uaku2i6^p0x zP{|NFQL5dKcuWJ>D@Zcc!S4^jzL@3H!puivfiWIpeM@`UnwYz08bXV- zD{5ZiEuoL1r?zz`k&F>_vr{RvvYpL$G2~=UA9gPMosCQQ)s;o(9!YYbspozQeS1!^ ztIIiCa$ECAFf&GZRc!nJO-J57-w-S9bpNJZkH6Cqf-cJiimwNp5~>JP$+plmezkrQ zWKl%%(d*=c74vfe*$SV=&*0Kc*?^6}m!sQ>LU1>3L`uo$LHl>AaZe?heL7~lYg=!V zBn#H|LJhYY8UVr!AJub!vGqJqP1zya`X^MYdhxu!L+rLFiKFt{W6+h~S{0rG)pI)+ToD)6^CAD^2pI>$#7th_p%26rl5^Vca7i1;uUsachHp4D$9+jroPwfEj z;o6c)kDt5p(jO^8JFN2yHk7je&MTAWgi54%w1ri4{D-Lne5w$Nh5*|#i4IStQZb;a zCP3Bl&XEuon?qxS6-jXm<-V3og4bG}>klgg^!F4=R&EObFa9v{ zoh1kuc+6A3Ags4|W&`<`fn`&xtJsw3*Z`0N8sj?(1OG{cVYvq4vVFi}GZP-30yQN{x?5fB4nC||s==P+IHC|0&=@~}l zsP&!i2PNMT;lAj^8osJfO8(DhQ6jkPSLH`G@mFRM{Ty;zM3A-ii4RxZSQ~B{$*^*K zb9=<23MU8qLV%b~K;odT6}AGIlYRf1{`(Dtmj`c0fo+yZmQIydHfHLsS^1=|N(1qs zXbAv7PhXhVT_KHg@$}QlC3E3*h7dOTIpV6#JBB)R9k##kzJ1b147Z?vV(t-rZm~kq zP^U<;DaeSO?Gw)R>0q!jC%dm5_`WXjYRP;IyX-z7@K+wjZ9S%R<_P>WLWH(MzFaW(HWF^~&;&~@uwN2!T05{SsY!g{QjGmmAhwZyZ>J=W8 zM{+#h5Ss&P=4^2)@%e~WCnc`&Tn?o1fvHinTwZxd|1ROycy2?9Nlb36HC*>%OFL5Q z;N`No9T=qtHqT-qS3>qTBpuj<^i3{=Bf=6C<2=bt(oz7>g zh5)aON1w3jwuI5H3}aa_PatoI^W*|b**1&%METB+Vv_WNlU#cB&Dlj4J_e+yDF}Pp^wY|t+)h1PX5#Y zJ)$L4fyLknzPCcE%Am9$V0EQyYJIS5Td88q5OEz@prvf)(ge)=(c+qM;}@wd%a z!OHxB=F9pxmXq4+K%MRUTQ{eexe+5CuvOek=6?k12dXZQ5HAWDGRMOewvmZ@Biwuw zJBua1nHZYfq+q+wPd>agco<{XIG+36Wn*{;Tq&8gG5!zeS-^o6{Lz#g5JCMK&NbVy zuku6_wk(_ptiy-mD*EuNx909&ne*FC!26u27q~9Hj!}MRFj*!$73i`~lv1{I|1ABD zEfS!2wj^};L4|A{p%_&?=2wSmzm(!vkZYv;wfydrsTr=>=Y?Q1>rqVoK&)I^;^}rQ znq@-s77B@`t#iYUs$FLlAG=U53NRIL{&^9@A4Bn2N@YGLJ=JUJ!AJO$q!E z>kWU~b>FlcxqVPjqx2js26`uKf;zBGwS9ZSm!NS}*SE|8{;d>T01plZ4GL-{JwYMD z{s8e73nHhqX{SN480cCK_o|!s~HHGw(ht(T;yirvPYrLlKYy z19GOEw%2NC?&=IVr>kjS$Vx=$+hctn19@j&vnYm!{aPt)h1-ujh!`|DcSN}GIT7#M z9l8`oU6FMaBAhfC35L0rV+=aHg%p4QF-7AYG*8ilYG3A)d%+k@pt4R|qZ?EMza78+ z=5?PhekuMpzP-rou$DR9LjWxk{F^fK78_)UJ%Bb|JCFWVHi=Wtb}YUNung5aTbe^H zNiK1w?JQ@y>Tef5E9?~0dOyEwNcnY|oVQIO0?-8LSzo)hLn-S)yHwsP!>xdhCAhEj zSrA3StqFi2BnU`1fGkY-Ph@44VSxYSeCK zZCT8{bw>6IiOhT=hF9@aa}Y6qWp=e4!FP_4_WM4tR)txN^FX(P=QrIDFT5RGNgRa) zXL-N47;skw2hKa`emgQ&7;{hv^a&kdowd9;gK+H3^>RsQF#)S>A#IW81%5zYoeNvG zA3_cZqWd}nXfGgQMGny-7#X}GPl_&N@SHDo^KNPW$qQ#1lsFM7KKUa*ky!(qYvlTG zG7l#`Le-y&0MKH2kQ9X z_g4k;{&udsptHQ?ABF46zt<^)EZGGolpQD!s2xgUWY-BTOOh$DQtkgxRY?pJ|E*qj zgw~t*@G_IwKRMxHmBBD$A@*{Mjm@3b?d{VYnK0MTRKg9Dz~23NPDkqMigFSEh# zrd}zn@|xnxvmf66w_0YiBw6wTNuK?;;0jU?`=}r@P`Ggu(^Kl|%Ie*h{?L20H5Ybf~ zILRA6Zs%m>|79l+eGkG6VCr}NtVrJwVsqqydVOy)3jWvy0z}tWQF8@&)jtSfM1cU2 zU;38AEZ+$N7g})86H{ukYt9W(0De!?zv+V$I|Y7dYuYg3SOEa zeRWVYk`{i(_nnm)xC{|QUK-H_L^1)C;QM~dj&haghj6kL2Xra_E_C21nWMGPUQL7t{0@FdB$_Z&} zZTjLyvY{9gUc{ZR%$-ZobIN96_ji_m#cwwcy;B}vq;WA9 z^qpv)`>uDXWVQss3`zpm6tyW^)F_C#lMMy%7q4KhzeOPysysmPA*M?C*NErtPin7D zqk1}_#vPd+u_8J^)UU%Zbm24?7%1J~UqGP0 zXB-$EEG6O2gH}{t&n{%A-NvhSWtjL87_O$+91tytzgPJimyIjp(Hx${aFb9?G zR7pHk?k^K#++i|1p47kI7`ve}EUNYUDXw!@Rpezuq)|-#M}B5BXxQgx!Gh<}tGl(mBdJD{fByKj-aBVeqZt+71^TtF6&oeB;-5XnR zwsnu8LCQ)UtzIzm)VOQJNV!b^!zSWpvESgACG>;RT+8hOZ7;s-a>Ai zOL@lOM6dGg(w|cJe*;cbCH7hF-vAdDO9G+ zQfOV%nyVD)#e>J4EP50}gyxvTJp7)`z%rky8nGjrG1X`9SgDS>{<@ zOmA2~#%OY`e)8K8$K8xC=yw(Z|F%a7)-2$@U^E0tJ9%{3bk`bk$LW?DwKVSUzmhU1 z1GAo_5KhsJ!vb{T(FuJ&B^dTJkJOGPv&}dd44lX{&y$l`fePx^9InTssK+FUfSgvf zFVstQgkVKPf~6$rD6@}7G#fD=ZA>0ucpge1QEaU`gQ>3czfs$+8-)#6O%v-?iFciQ zc8x3A&>Xe&x`Z5?@h75#GM^vU#>Jw(=O%j~$;{kSb&p$=1`$cw8$M;*4?{wkqvk?7 z1h;V4k)tc9m6=)52q!c7#a?8vCxDf}{k_B)mLgZ~1FV&+KqfvEtRl2#Rro&I&}fGQ zSp(?$dZjt?yt-~&M3(v*4fX_HxgZcx&+&^6%11HKsWD|8en&LmCif+l^Ts5>O|A7t zuvud6+_iDkI5dX1*k(-#HTWc=St_(tXpdmKC}}t$As}zlm-sjAPJgd7Ye?H)HA{nD z$8ep~1vZaMIalsmkblihV1cwwGmm9mo2cbJE=RXRiGAHrb$`So*2psx>B0iVxtka) zJzxwx#cE)`7PhhHmyZ*~kR!tQQI3spUT_*fyM@^!}HRqm%DJ}pD6wC;6&ql29Po2kbflwo|ra3S^L{G z$&vZ!VFGsd*f$GHU-N^kqB!W5gMxCVW9m2)Cj!{765qA#77{mzac9j&l&u+t;sprF z>U)RNgvjr6oF6ITrYk@2D`FBP8*(Pt7T`3n(Q8g}i?%Id8(ckoCFSUZP+;%IzPNo7 zpPr*38x;qbeDM|Btm;!0s#EN#zQ7XvvReU2dC5c!JG{YzfQt`8>t!WU>i9kS4&Bm7 z76-~35Js2v$@SHGo!-GXgs0RCobv-#Hda}hraF<145i$GsE3r!>AW*@85AG`lycOjXr<$wNqDy8Lu?bydM?$eaK9)>M+ z%ILL^{C5~6l6?c6f7vf%){~YWH;X}3(r>>8(j|+{bMWT`dYklelTc>5VGEwfO?5yI z4fh(gl6-NCEb3L6_{LPmSV}%qNC!6~m(?dBuKS6%M* z11tDBg{Kz_XoG_jji_NB-1b%_C?z6HX zr(Ud%o^Xg7J^65G*qlf|kd$^@4#T*UIYhm-D;+Uko*Rzx~xw~=#>DgdJ!UIl=PFSwiC|uy0JR%}6n?ONTl(}OpsPB>~ zDre>}Nj_+uFa_Q}er8w)fcXYQ)R5KDtv~qoRO50D}l5DC;Kf@S^uqo#1BAv30cn=`nshBy_M%0%pls}ON)8L zG7y~HI|q$FT}tnx+%>3wP!82aiaXPWr95)iLZ2e)IenzL_sYL-s=y!)(|tpkZRSYQ z*(88I&b`u|{%mLb)w8@*i}bV+$o__HV`+;}!s^2fYOa z=4f_HQR+V^9HPa=#6G_8k0A>%vzL>n_1gLzQ7m!ivFzc{e7oY@j@q^?-tcyblj~@y z(8cVy9-1kVA-vuVi4vPB@Jz;)p5^my7m%x>F%p_M1KEpJvE+yLbMOl~ysVz+_}@-! z_{awFB$=_}`+23D3=kc{j*2%NRnc#@MB;ub1QARj{kS$@h>4)bfkP$vfGn%ezY&x| zF4opiQuYt~g6q@pi$^$avX=7;s8EkkY5*94^H5W@#$<`>uN>+M69G}G0wL*pAhL0q z@;Chj3Y>+<`X^JF-~z-KttvuF{-s*e&5K~Z#{an=Q$QWW4~y!rxmLhpxfqDX_-}_Y za04XA?G3ycsm5s!KF8H5ui;GrL-6=x1X`20K8v!M-c`-@oRhOWYc^u2VC*NUY^%2Q z0n4D(rx2l&R5aTKi3eGa@MsS@Y`G{zqz{Q<#&H09X}8d4P~%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/ra6m3-hmi-board/.settings/language.settings.xml b/bsp/renesas/ra6m3-hmi-board/.settings/language.settings.xml new file mode 100644 index 0000000000..860c3fd8bb --- /dev/null +++ b/bsp/renesas/ra6m3-hmi-board/.settings/language.settings.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/bsp/renesas/ra6m3-hmi-board/.settings/org.eclipse.core.runtime.prefs b/bsp/renesas/ra6m3-hmi-board/.settings/org.eclipse.core.runtime.prefs new file mode 100644 index 0000000000..9f1acfcfba --- /dev/null +++ b/bsp/renesas/ra6m3-hmi-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/ra6m3-hmi-board/.settings/projcfg.ini b/bsp/renesas/ra6m3-hmi-board/.settings/projcfg.ini new file mode 100644 index 0000000000..c5a64cce53 --- /dev/null +++ b/bsp/renesas/ra6m3-hmi-board/.settings/projcfg.ini @@ -0,0 +1,19 @@ +#RT-Thread Studio Project Configuration +#Tue Jan 10 14:37:39 CST 2023 +cfg_version=v3.0 +board_name=ra6m3-ek +example_name= +hardware_adapter=J-Link +board_base_nano_proj=false +project_type=rt-thread +chip_name=R7FA6M3AH\n +selected_rtt_version=latest +bsp_version= +os_branch=master +project_base_rtt_bsp=true +output_project_path=E\:softwareRT-ThreadStudioworkspace\ra6m3-temp +is_base_example_project=false +is_use_scons_build=true +project_name=ra6m3-temp +os_version=latest +bsp_path= diff --git a/bsp/renesas/ra6m3-hmi-board/.settings/ra6m3-temp.JLink.Debug.rttlaunch b/bsp/renesas/ra6m3-hmi-board/.settings/ra6m3-temp.JLink.Debug.rttlaunch new file mode 100644 index 0000000000..5cae09bdb0 --- /dev/null +++ b/bsp/renesas/ra6m3-hmi-board/.settings/ra6m3-temp.JLink.Debug.rttlaunch @@ -0,0 +1,90 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/bsp/renesas/ra6m3-hmi-board/.settings/standalone.prefs b/bsp/renesas/ra6m3-hmi-board/.settings/standalone.prefs new file mode 100644 index 0000000000..691ce137f0 --- /dev/null +++ b/bsp/renesas/ra6m3-hmi-board/.settings/standalone.prefs @@ -0,0 +1,19 @@ +#Tue Apr 18 17:25:03 CST 2023 +com.renesas.cdt.ddsc.packs.componentfiles/Renesas\#\#Common\#\#all\#\#fsp_common\#\#\#\#3.5.0/libraries= +com.renesas.cdt.ddsc.packs.componentfiles/Renesas\#\#BSP\#\#ra6m3\#\#fsp\#\#\#\#3.5.0/libraries= +com.renesas.cdt.ddsc.content/com.renesas.cdt.ddsc.content.defaultlinkerscript=script/fsp.scat +com.renesas.cdt.ddsc.packs.componentfiles/Renesas\#\#BSP\#\#ra6m3\#\#fsp\#\#\#\#3.5.0/all=3427620923,ra/fsp/src/bsp/mcu/ra6m3/bsp_mcu_info.h|143358381,ra/fsp/src/bsp/mcu/ra6m3/bsp_elc.h|2743353138,ra/fsp/src/bsp/mcu/ra6m3/bsp_feature.h +com.renesas.cdt.ddsc.threads.configurator/collapse/module.driver.uart_on_sci_uart.552817864=false +com.renesas.cdt.ddsc.packs.componentfiles/Renesas\#\#Common\#\#all\#\#fsp_common\#\#\#\#3.5.0/all=731782070,ra/fsp/src/bsp/mcu/all/bsp_irq.h|3492513568,ra/fsp/src/bsp/mcu/all/bsp_register_protection.c|1630997354,ra/fsp/src/bsp/mcu/all/bsp_irq.c|400573940,ra/fsp/src/bsp/mcu/all/bsp_register_protection.h|1904866635,ra/fsp/src/bsp/mcu/all/bsp_clocks.h|1728953905,ra/fsp/inc/fsp_features.h|3549961311,ra/fsp/src/bsp/mcu/all/bsp_tfu.h|4222527282,ra/fsp/src/bsp/mcu/all/bsp_module_stop.h|1939984091,ra/fsp/inc/api/r_ioport_api.h|3606266210,ra/fsp/src/bsp/mcu/all/bsp_rom_registers.c|3753300083,ra/fsp/src/bsp/mcu/all/bsp_arm_exceptions.h|2208590403,ra/fsp/inc/instances/r_ioport.h|470601830,ra/fsp/src/bsp/mcu/all/bsp_clocks.c|3297195641,ra/fsp/inc/fsp_version.h|521902797,ra/fsp/src/bsp/mcu/all/bsp_security.h|2847966430,ra/fsp/src/bsp/mcu/all/bsp_security.c|460577388,ra/fsp/src/bsp/mcu/all/bsp_io.h|1353647784,ra/fsp/src/bsp/mcu/all/bsp_delay.c|2906400,ra/fsp/src/bsp/mcu/all/bsp_common.c|2308894280,ra/fsp/src/bsp/cmsis/Device/RENESAS/Include/system.h|3255765648,ra/fsp/src/bsp/cmsis/Device/RENESAS/Source/system.c|4051445857,ra/fsp/src/bsp/mcu/all/bsp_common.h|2386285210,ra/fsp/src/bsp/cmsis/Device/RENESAS/Include/renesas.h|1615019982,ra/fsp/src/bsp/mcu/all/bsp_sbrk.c|2425160085,ra/fsp/inc/api/bsp_api.h|3983299396,ra/fsp/src/bsp/mcu/all/bsp_delay.h|1499520276,ra/fsp/src/bsp/mcu/all/bsp_group_irq.c|3984836408,ra/fsp/src/bsp/mcu/all/bsp_group_irq.h|2920829723,ra/fsp/src/bsp/mcu/all/bsp_guard.c|568600546,ra/fsp/src/bsp/cmsis/Device/RENESAS/Source/startup.c|1552630912,ra/fsp/src/bsp/mcu/all/bsp_guard.h|1236602439,ra/fsp/src/bsp/mcu/all/bsp_io.c|1992062042,ra/fsp/src/bsp/mcu/all/bsp_compiler_support.h|546480625,ra/fsp/inc/fsp_common_api.h|3998046333,ra/fsp/src/bsp/cmsis/Device/RENESAS/Include/base_addresses.h|2977689308,ra/fsp/src/bsp/mcu/all/bsp_mcu_api.h +com.renesas.cdt.ddsc.packs.componentfiles/Renesas\#\#BSP\#\#ra6m3\#\#device\#\#R7FA6M3AH3CFB\#\#3.5.0/libraries= +com.renesas.cdt.ddsc.packs.componentfiles/Renesas\#\#HAL\ Drivers\#\#all\#\#r_sci_uart\#\#\#\#3.5.0/libraries= +com.renesas.cdt.ddsc.settingseditor/com.renesas.cdt.ddsc.settingseditor.active_page=SWPConfigurator +com.renesas.cdt.ddsc.packs.componentfiles/Arm\#\#CMSIS\#\#CMSIS5\#\#CoreM\#\#\#\#5.8.0+renesas.0.fsp.3.5.0/all=1441545198,ra/arm/CMSIS_5/LICENSE.txt|2718020009,ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm33.h|3898569239,ra/arm/CMSIS_5/CMSIS/Core/Include/cmsis_armclang.h|3007265674,ra/arm/CMSIS_5/CMSIS/Core/Include/core_armv8mbl.h|1168186370,ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm55.h|3127123217,ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm35p.h|3163610011,ra/arm/CMSIS_5/CMSIS/Core/Include/pmu_armv8.h|2851112248,ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm1.h|3358993753,ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm4.h|2333906976,ra/arm/CMSIS_5/CMSIS/Core/Include/cmsis_version.h|304461792,ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm3.h|965562395,ra/arm/CMSIS_5/CMSIS/Core/Include/cmsis_gcc.h|364344841,ra/arm/CMSIS_5/CMSIS/Core/Include/core_sc300.h|1564341101,ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm7.h|1577199483,ra/arm/CMSIS_5/CMSIS/Core/Include/cmsis_iccarm.h|2701379970,ra/arm/CMSIS_5/CMSIS/Core/Include/mpu_armv8.h|2635219934,ra/arm/CMSIS_5/CMSIS/Core/Include/tz_context.h|1017116116,ra/arm/CMSIS_5/CMSIS/Core/Include/cmsis_compiler.h|1044777225,ra/arm/CMSIS_5/CMSIS/Core/Include/cmsis_armcc.h|1745843273,ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm0.h|1494441116,ra/arm/CMSIS_5/CMSIS/Core/Include/mpu_armv7.h|4290386133,ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm0plus.h|1372010515,ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm23.h|3911746910,ra/arm/CMSIS_5/CMSIS/Core/Include/cmsis_armclang_ltm.h|2327633156,ra/arm/CMSIS_5/CMSIS/Core/Include/core_sc000.h|2381390623,ra/arm/CMSIS_5/CMSIS/Core/Include/core_armv8mml.h|302860276,ra/arm/CMSIS_5/CMSIS/Core/Include/cachel1_armv7.h|3552689244,ra/arm/CMSIS_5/CMSIS/Core/Include/core_armv81mml.h +com.renesas.cdt.ddsc.packs.componentfiles/Renesas\#\#BSP\#\#ra6m3\#\#device\#\#\#\#3.5.0/all=2308894280,ra/fsp/src/bsp/cmsis/Device/RENESAS/Include/system.h +com.renesas.cdt.ddsc.packs.componentfiles/Renesas\#\#BSP\#\#Board\#\#custom\#\#\#\#3.5.0/all= +com.renesas.cdt.ddsc.packs.componentfiles/Renesas\#\#HAL\ Drivers\#\#all\#\#r_ioport\#\#\#\#3.5.0/all=2208590403,ra/fsp/inc/instances/r_ioport.h|3254285722,ra/fsp/src/r_ioport/r_ioport.c|1939984091,ra/fsp/inc/api/r_ioport_api.h +com.renesas.cdt.ddsc.packs.componentfiles/Renesas\#\#BSP\#\#ra6m3\#\#device\#\#\#\#3.5.0/libraries= +com.renesas.cdt.ddsc.packs.componentfiles/Renesas\#\#HAL\ Drivers\#\#all\#\#r_sci_uart\#\#\#\#3.5.0/all=3916852077,ra/fsp/inc/api/r_uart_api.h|3094200246,ra/fsp/src/r_sci_uart/r_sci_uart.c|1610456547,ra/fsp/inc/api/r_transfer_api.h|1889256766,ra/fsp/inc/instances/r_sci_uart.h +com.renesas.cdt.ddsc.packs.componentfiles/Arm\#\#CMSIS\#\#CMSIS5\#\#CoreM\#\#\#\#5.8.0+renesas.0.fsp.3.5.0/libraries= +com.renesas.cdt.ddsc.packs.componentfiles/Renesas\#\#BSP\#\#Board\#\#custom\#\#\#\#3.5.0/libraries= +com.renesas.cdt.ddsc.packs.componentfiles/Renesas\#\#HAL\ Drivers\#\#all\#\#r_ioport\#\#\#\#3.5.0/libraries= diff --git a/bsp/renesas/ra6m3-hmi-board/EventRecorderStub.scvd b/bsp/renesas/ra6m3-hmi-board/EventRecorderStub.scvd new file mode 100644 index 0000000000..2956b29683 --- /dev/null +++ b/bsp/renesas/ra6m3-hmi-board/EventRecorderStub.scvd @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/bsp/renesas/ra6m3-hmi-board/JLinkLog.txt b/bsp/renesas/ra6m3-hmi-board/JLinkLog.txt new file mode 100644 index 0000000000..c9b478051a --- /dev/null +++ b/bsp/renesas/ra6m3-hmi-board/JLinkLog.txt @@ -0,0 +1,4220 @@ +T343C 000:010.616 SEGGER J-Link V7.52a Log File +T343C 000:011.291 DLL Compiled: Jul 28 2021 11:08:12 +T343C 000:011.296 Logging started @ 2023-03-01 09:23 +T343C 000:011.300 - 11.302ms +T343C 000:011.309 JLINK_SetWarnOutHandler(...) +T343C 000:011.545 - 0.238ms +T343C 000:011.552 JLINK_OpenEx(...) +T343C 000:015.347 Firmware: J-Link OB-S124 compiled Feb 2 2021 16:57:21 +T343C 000:016.011 Firmware: J-Link OB-S124 compiled Feb 2 2021 16:57:21 +T343C 000:042.271 Hardware: V1.00 +T343C 000:042.297 S/N: 831004110 +T343C 000:042.303 OEM: SEGGER +T343C 000:042.309 Feature(s): None +T343C 000:045.332 TELNET listener socket opened on port 19021 +T343C 000:045.428 WEBSRV Starting webserver +T343C 000:045.576 WEBSRV Webserver running on local port 19080 +T343C 000:058.506 - 46.966ms returns "O.K." +T343C 000:058.542 JLINK_GetEmuCaps() +T343C 000:058.548 - 0.007ms returns 0xB8EA5A33 +T343C 000:058.556 JLINK_TIF_GetAvailable(...) +T343C 000:059.070 - 0.518ms +T343C 000:059.079 JLINK_SetErrorOutHandler(...) +T343C 000:059.083 - 0.006ms +T343C 000:059.476 JLINK_ExecCommand("ProjectFile = "E:\workspace_work\rt-thread-5.0\bsp\renesas\ra6m3-ek\JLinkSettings.ini"", ...). +T343C 000:096.953 XML file found at: E:\software\keil\keil_Core\ARM\Segger\JLinkDevices.xml +T343C 000:097.483 E:\software\keil\keil_Core\ARM\Segger\JLinkDevices.xml evaluated successfully. +T343C 000:114.102 - 54.634ms returns 0x00 +T343C 000:114.145 JLINK_ExecCommand("Device = R7FA6M3AH", ...). +T343C 000:119.351 Device "R7FA6M3AH" selected. +T343C 000:119.600 - 5.454ms returns 0x00 +T343C 000:119.616 JLINK_ExecCommand("DisableConnectionTimeout", ...). +T343C 000:119.623 - 0.003ms returns 0x01 +T343C 000:119.629 JLINK_GetHardwareVersion() +T343C 000:119.633 - 0.006ms returns 10000 +T343C 000:119.641 JLINK_GetDLLVersion() +T343C 000:119.645 - 0.006ms returns 75201 +T343C 000:119.650 JLINK_GetOEMString(...) +T343C 000:119.655 JLINK_GetFirmwareString(...) +T343C 000:119.659 - 0.006ms +T343C 000:119.680 JLINK_GetDLLVersion() +T343C 000:119.684 - 0.006ms returns 75201 +T343C 000:119.689 JLINK_GetCompileDateTime() +T343C 000:119.693 - 0.005ms +T343C 000:119.702 JLINK_GetFirmwareString(...) +T343C 000:119.707 - 0.006ms +T343C 000:119.715 JLINK_GetHardwareVersion() +T343C 000:119.719 - 0.006ms returns 10000 +T343C 000:119.727 JLINK_GetSN() +T343C 000:119.733 - 0.008ms returns 831004110 +T343C 000:119.741 JLINK_GetOEMString(...) +T343C 000:119.755 JLINK_TIF_Select(JLINKARM_TIF_SWD) +T343C 000:122.071 - 2.323ms returns 0x00 +T343C 000:122.084 JLINK_HasError() +T343C 000:122.341 JLINK_SetSpeed(5000) +T343C 000:122.543 - 0.206ms +T343C 000:122.552 JLINK_GetId() +T343C 000:124.800 Found SW-DP with ID 0x5BA02477 +T343C 000:141.000 Found SW-DP with ID 0x5BA02477 +T343C 000:146.197 DPIDR: 0x5BA02477 +T343C 000:146.212 Scanning AP map to find all available APs +T343C 000:148.660 AP[2]: Stopped AP scan as end of AP map has been reached +T343C 000:148.675 AP[0]: AHB-AP (IDR: 0x24770011) +T343C 000:148.692 AP[1]: APB-AP (IDR: 0x44770002) +T343C 000:148.701 Iterating through AP map to find AHB-AP to use +T343C 000:150.488 AP[0]: Core found +T343C 000:150.502 AP[0]: AHB-AP ROM base: 0xE00FF000 +T343C 000:151.434 CPUID register: 0x410FC241. Implementer code: 0x41 (ARM) +T343C 000:151.445 Found Cortex-M4 r0p1, Little endian. +T343C 000:252.965 -- Max. mem block: 0x00001AF0 +T343C 000:253.882 CPU_ReadMem(4 bytes @ 0xE000EDF0) +T343C 000:254.808 CPU_WriteMem(4 bytes @ 0xE000EDF0) +T343C 000:255.776 CPU_ReadMem(4 bytes @ 0xE0002000) +T343C 000:256.483 FPUnit: 6 code (BP) slots and 2 literal slots +T343C 000:256.493 CPU_ReadMem(4 bytes @ 0xE000EDFC) +T343C 000:257.291 CPU_WriteMem(4 bytes @ 0xE000EDFC) +T343C 000:258.162 CPU_ReadMem(4 bytes @ 0xE0001000) +T343C 000:258.885 CPU_WriteMem(4 bytes @ 0xE0001000) +T343C 000:259.759 CPU_ReadMem(4 bytes @ 0xE000ED88) +T343C 000:260.500 CPU_WriteMem(4 bytes @ 0xE000ED88) +T343C 000:261.293 CPU_ReadMem(4 bytes @ 0xE000ED88) +T343C 000:262.055 CPU_WriteMem(4 bytes @ 0xE000ED88) +T343C 000:262.949 CoreSight components: +T343C 000:262.970 ROMTbl[0] @ E00FF000 +T343C 000:262.978 CPU_ReadMem(64 bytes @ 0xE00FF000) +T343C 000:264.395 CPU_ReadMem(32 bytes @ 0xE000EFE0) +T343C 000:265.540 ROMTbl[0][0]: E000E000, CID: B105E00D, PID: 000BB00C SCS-M7 +T343C 000:265.548 CPU_ReadMem(32 bytes @ 0xE0001FE0) +T343C 000:266.537 ROMTbl[0][1]: E0001000, CID: B105E00D, PID: 003BB002 DWT +T343C 000:266.545 CPU_ReadMem(32 bytes @ 0xE0002FE0) +T343C 000:267.593 ROMTbl[0][2]: E0002000, CID: B105E00D, PID: 002BB003 FPB +T343C 000:267.601 CPU_ReadMem(32 bytes @ 0xE0000FE0) +T343C 000:268.671 ROMTbl[0][3]: E0000000, CID: B105E00D, PID: 003BB001 ITM +T343C 000:268.678 CPU_ReadMem(32 bytes @ 0xE0040FE0) +T343C 000:269.666 ROMTbl[0][4]: E0040000, CID: B105900D, PID: 000BB9A1 TPIU +T343C 000:269.676 CPU_ReadMem(32 bytes @ 0xE0041FE0) +T343C 000:270.722 ROMTbl[0][5]: E0041000, CID: B105900D, PID: 000BB925 ETM +T343C 000:270.732 CPU_ReadMem(32 bytes @ 0xE0042FE0) +T343C 000:271.750 ROMTbl[0][6]: E0042000, CID: B105900D, PID: 002BB908 CSTF +T343C 000:271.760 CPU_ReadMem(32 bytes @ 0xE0043FE0) +T343C 000:272.800 ROMTbl[0][7]: E0043000, CID: B105900D, PID: 001BB961 TMC +T343C 000:272.808 CPU_ReadMem(32 bytes @ 0xE0044FE0) +T343C 000:273.798 ROMTbl[0][8]: E0044000, CID: B105F00D, PID: 001BB101 TSG +T343C 000:274.516 - 151.968ms returns 0x5BA02477 +T343C 000:274.528 JLINK_GetDLLVersion() +T343C 000:274.532 - 0.006ms returns 75201 +T343C 000:274.538 JLINK_CORE_GetFound() +T343C 000:274.542 - 0.006ms returns 0xE0000FF +T343C 000:274.548 JLINK_GetDebugInfo(0x100 = JLINKARM_ROM_TABLE_ADDR_INDEX) +T343C 000:274.553 Value=0xE00FF000 +T343C 000:274.559 - 0.012ms returns 0 +T343C 000:274.594 JLINK_GetDebugInfo(0x100 = JLINKARM_ROM_TABLE_ADDR_INDEX) +T343C 000:274.600 Value=0xE00FF000 +T343C 000:274.605 - 0.013ms returns 0 +T343C 000:274.610 JLINK_GetDebugInfo(0x101 = JLINKARM_DEBUG_INFO_ETM_ADDR_INDEX) +T343C 000:274.614 Value=0xE0041000 +T343C 000:274.620 - 0.011ms returns 0 +T343C 000:274.625 JLINK_ReadMemEx(0xE0041FD0, 0x20 Bytes, Flags = 0x02000004) +T343C 000:274.649 CPU_ReadMem(32 bytes @ 0xE0041FD0) +T343C 000:275.630 Data: 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ... +T343C 000:275.638 - 1.014ms returns 32 (0x20) +T343C 000:275.644 JLINK_GetDebugInfo(0x102 = JLINKARM_DEBUG_INFO_MTB_ADDR_INDEX) +T343C 000:275.648 Value=0x00000000 +T343C 000:275.654 - 0.012ms returns 0 +T343C 000:275.659 JLINK_GetDebugInfo(0x103 = JLINKARM_DEBUG_INFO_TPIU_ADDR_INDEX) +T343C 000:275.663 Value=0xE0040000 +T343C 000:275.668 - 0.011ms returns 0 +T343C 000:275.673 JLINK_GetDebugInfo(0x104 = JLINKARM_DEBUG_INFO_ITM_ADDR_INDEX) +T343C 000:275.677 Value=0xE0000000 +T343C 000:275.683 - 0.011ms returns 0 +T343C 000:275.688 JLINK_GetDebugInfo(0x105 = JLINKARM_DEBUG_INFO_DWT_ADDR_INDEX) +T343C 000:275.692 Value=0xE0001000 +T343C 000:275.697 - 0.011ms returns 0 +T343C 000:275.702 JLINK_GetDebugInfo(0x106 = JLINKARM_DEBUG_INFO_FPB_ADDR_INDEX) +T343C 000:275.706 Value=0xE0002000 +T343C 000:275.712 - 0.011ms returns 0 +T343C 000:275.717 JLINK_GetDebugInfo(0x107 = JLINKARM_DEBUG_INFO_NVIC_ADDR_INDEX) +T343C 000:275.721 Value=0xE000E000 +T343C 000:275.726 - 0.011ms returns 0 +T343C 000:275.731 JLINK_GetDebugInfo(0x10C = JLINKARM_DEBUG_INFO_DBG_ADDR_INDEX) +T343C 000:275.735 Value=0xE000EDF0 +T343C 000:275.741 - 0.011ms returns 0 +T343C 000:275.746 JLINK_GetDebugInfo(0x01 = Unknown) +T343C 000:275.750 Value=0x00000001 +T343C 000:275.755 - 0.011ms returns 0 +T343C 000:275.760 JLINK_ReadMemU32(0xE000ED00, 0x1 Items) +T343C 000:275.767 CPU_ReadMem(4 bytes @ 0xE000ED00) +T343C 000:276.625 Data: 41 C2 0F 41 +T343C 000:276.632 Debug reg: CPUID +T343C 000:276.638 - 0.879ms returns 1 (0x1) +T343C 000:276.643 JLINK_GetDebugInfo(0x10F = JLINKARM_DEBUG_INFO_HAS_CORTEX_M_SECURITY_EXT_INDEX) +T343C 000:276.648 Value=0x00000000 +T343C 000:276.654 - 0.012ms returns 0 +T343C 000:276.659 JLINK_HasError() +T343C 000:276.664 JLINK_SetResetType(JLINKARM_CM3_RESET_TYPE_NORMAL) +T343C 000:276.668 - 0.006ms returns JLINKARM_CM3_RESET_TYPE_NORMAL +T343C 000:276.675 JLINK_Reset() +T343C 000:276.694 CPU is running +T343C 000:276.701 CPU_WriteMem(4 bytes @ 0xE000EDF0) +T343C 000:277.565 CPU is running +T343C 000:277.572 CPU_WriteMem(4 bytes @ 0xE000EDFC) +T343C 000:278.322 Reset: Halt core after reset via DEMCR.VC_CORERESET. +T343C 000:279.370 Reset: Reset device via AIRCR.SYSRESETREQ. +T343C 000:279.379 CPU is running +T343C 000:279.385 CPU_WriteMem(4 bytes @ 0xE000ED0C) +T343C 000:333.402 CPU_ReadMem(4 bytes @ 0xE000EDF0) +T343C 000:334.010 CPU_ReadMem(4 bytes @ 0xE000EDF0) +T343C 000:334.865 CPU is running +T343C 000:334.873 CPU_WriteMem(4 bytes @ 0xE000EDF0) +T343C 000:335.685 CPU is running +T343C 000:335.695 CPU_WriteMem(4 bytes @ 0xE000EDFC) +T343C 000:342.150 CPU_ReadMem(4 bytes @ 0xE000EDF0) +T343C 000:348.420 CPU_WriteMem(4 bytes @ 0xE0002000) +T343C 000:349.316 CPU_ReadMem(4 bytes @ 0xE000EDFC) +T343C 000:350.055 CPU_ReadMem(4 bytes @ 0xE0001000) +T343C 000:350.789 - 74.117ms +T343C 000:350.860 JLINK_HasError() +T343C 000:350.871 JLINK_ReadReg(R15 (PC)) +T343C 000:350.887 - 0.017ms returns 0x0001CA38 +T343C 000:350.892 JLINK_ReadReg(XPSR) +T343C 000:350.897 - 0.006ms returns 0x01000000 +T343C 000:350.903 JLINK_Halt() +T343C 000:350.907 - 0.005ms returns 0x00 +T343C 000:350.912 JLINK_ReadMemU32(0xE000EDF0, 0x1 Items) +T343C 000:350.920 CPU_ReadMem(4 bytes @ 0xE000EDF0) +T343C 000:351.666 Data: 03 00 03 00 +T343C 000:351.677 Debug reg: DHCSR +T343C 000:351.682 - 0.772ms returns 1 (0x1) +T343C 000:351.689 JLINK_WriteU32_64(0xE000EDF0, 0xA05F0003) +T343C 000:351.694 Debug reg: DHCSR +T343C 000:351.939 CPU_WriteMem(4 bytes @ 0xE000EDF0) +T343C 000:352.805 - 1.122ms returns 0 (0x00000000) +T343C 000:352.816 JLINK_WriteU32_64(0xE000EDFC, 0x01000000) +T343C 000:352.821 Debug reg: DEMCR +T343C 000:352.832 CPU_WriteMem(4 bytes @ 0xE000EDFC) +T343C 000:353.808 - 0.998ms returns 0 (0x00000000) +T343C 000:353.855 JLINK_GetHWStatus(...) +T343C 000:354.488 - 0.639ms returns 0 +T343C 000:354.514 JLINK_GetNumBPUnits(Type = 0xFFFFFF00) +T343C 000:354.519 - 0.007ms returns 0x06 +T343C 000:354.525 JLINK_GetNumBPUnits(Type = 0xF0) +T343C 000:354.529 - 0.006ms returns 0x2000 +T343C 000:354.534 JLINK_GetNumWPUnits() +T343C 000:354.538 - 0.006ms returns 4 +T343C 000:354.551 JLINK_GetSpeed() +T343C 000:354.555 - 0.006ms returns 2000 +T343C 000:354.564 JLINK_ReadMemU32(0xE000E004, 0x1 Items) +T343C 000:354.573 CPU_ReadMem(4 bytes @ 0xE000E004) +T343C 000:355.298 Data: 02 00 00 00 +T343C 000:355.308 - 0.746ms returns 1 (0x1) +T343C 000:355.315 JLINK_ReadMemU32(0xE000E004, 0x1 Items) +T343C 000:355.324 CPU_ReadMem(4 bytes @ 0xE000E004) +T343C 000:356.088 Data: 02 00 00 00 +T343C 000:356.098 - 0.785ms returns 1 (0x1) +T343C 000:356.104 JLINK_WriteMemEx(0xE0001000, 0x0000001C Bytes, Flags = 0x02000004) +T343C 000:356.111 Data: 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ... +T343C 000:356.122 CPU_WriteMem(28 bytes @ 0xE0001000) +T343C 000:357.144 - 1.045ms returns 0x1C +T343C 000:357.164 JLINK_HasError() +T343C 000:357.170 JLINK_ReadReg(R15 (PC)) +T343C 000:357.176 - 0.008ms returns 0x0001CA38 +T343C 000:357.182 JLINK_ReadReg(XPSR) +T343C 000:357.186 - 0.006ms returns 0x01000000 +T343C 000:366.008 JLINK_ReadMemEx(0xE0001004, 0x4 Bytes, Flags = 0x02000000) +T343C 000:366.026 Data: 00 00 00 00 +T343C 000:366.033 Debug reg: DWT_CYCCNT +T343C 000:366.038 - 0.032ms returns 4 (0x4) +T343C 000:570.903 JLINK_WriteMemEx(0x00000000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:570.918 Data: 78 22 03 20 01 13 00 00 F5 08 00 00 FD 05 00 00 ... +T343C 000:571.128 completely In flash +T343C 000:571.136 - 0.235ms returns 0x1000 +T343C 000:571.419 JLINK_WriteMemEx(0x00001000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:571.427 Data: 00 20 11 80 70 47 03 EA 02 00 23 EA 02 02 40 EA ... +T343C 000:571.438 completely In flash +T343C 000:571.444 - 0.027ms returns 0x1000 +T343C 000:571.691 JLINK_WriteMemEx(0x00002000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:571.699 Data: C2 F2 03 07 00 22 38 60 1E F0 C2 FD 38 68 45 F2 ... +T343C 000:571.712 completely In flash +T343C 000:571.719 - 0.030ms returns 0x1000 +T343C 000:571.968 JLINK_WriteMemEx(0x00003000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:571.976 Data: AB F8 04 30 AB F8 06 00 05 B0 BD E8 F0 8F F0 B5 ... +T343C 000:571.986 completely In flash +T343C 000:571.992 - 0.027ms returns 0x1000 +T343C 000:572.235 JLINK_WriteMemEx(0x00004000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:572.243 Data: 38 B9 45 F6 8A 00 C0 F2 09 00 09 A1 16 22 23 F0 ... +T343C 000:572.252 completely In flash +T343C 000:572.258 - 0.025ms returns 0x1000 +T343C 000:572.501 JLINK_WriteMemEx(0x00005000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:572.509 Data: D7 51 00 22 04 46 4F F0 00 08 1B F0 59 FD 20 46 ... +T343C 000:572.518 completely In flash +T343C 000:572.524 - 0.025ms returns 0x1000 +T343C 000:572.763 JLINK_WriteMemEx(0x00006000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:572.771 Data: 32 46 AD F8 22 40 AD F8 26 40 15 F0 D9 FB BD F9 ... +T343C 000:572.780 completely In flash +T343C 000:572.786 - 0.025ms returns 0x1000 +T343C 000:573.030 JLINK_WriteMemEx(0x00007000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:573.038 Data: 92 69 D2 07 04 D0 10 9A 92 69 92 07 37 D4 00 BF ... +T343C 000:573.045 completely In flash +T343C 000:573.051 - 0.023ms returns 0x1000 +T343C 000:573.291 JLINK_WriteMemEx(0x00008000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:573.298 Data: 20 F0 24 F9 45 F6 CE 26 4F F0 01 09 4F F0 00 0A ... +T343C 000:573.308 completely In flash +T343C 000:573.315 - 0.026ms returns 0x1000 +T343C 000:573.561 JLINK_WriteMemEx(0x00009000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:573.569 Data: C9 F2 49 20 50 FB 01 10 82 10 02 EB D0 70 A0 EB ... +T343C 000:573.576 completely In flash +T343C 000:573.582 - 0.023ms returns 0x1000 +T343C 000:573.818 JLINK_WriteMemEx(0x0000A000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:573.826 Data: 03 06 00 BF 56 F8 25 00 00 B1 80 47 01 35 04 2D ... +T343C 000:573.836 completely In flash +T343C 000:573.842 - 0.025ms returns 0x1000 +T343C 000:574.079 JLINK_WriteMemEx(0x0000B000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:574.087 Data: BD E8 F0 8F 20 2D 2D 2D 20 20 2D 2D 2D 2D 2D 2D ... +T343C 000:574.096 completely In flash +T343C 000:574.102 - 0.025ms returns 0x1000 +T343C 000:574.341 JLINK_WriteMemEx(0x0000C000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:574.349 Data: 20 46 10 21 10 F0 EC FF 20 46 00 21 00 22 BD E8 ... +T343C 000:574.358 completely In flash +T343C 000:574.364 - 0.025ms returns 0x1000 +T343C 000:574.602 JLINK_WriteMemEx(0x0000D000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:574.610 Data: 01 30 00 B2 C0 1A 00 EB D0 70 AD F8 2C 11 07 EB ... +T343C 000:574.619 completely In flash +T343C 000:574.625 - 0.024ms returns 0x1000 +T343C 000:574.864 JLINK_WriteMemEx(0x0000E000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:574.872 Data: 4F F4 00 31 32 46 10 F0 CE FE 20 46 4F F4 00 31 ... +T343C 000:574.879 completely In flash +T343C 000:574.885 - 0.023ms returns 0x1000 +T343C 000:575.121 JLINK_WriteMemEx(0x0000F000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:575.128 Data: 0F F0 C8 FB 07 46 20 46 00 21 58 22 0F F0 C2 FB ... +T343C 000:575.139 completely In flash +T343C 000:575.145 - 0.026ms returns 0x1000 +T343C 000:575.382 JLINK_WriteMemEx(0x00010000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:575.390 Data: F0 BD 20 46 0B F0 CF FA F7 E7 10 B5 0C 46 10 B9 ... +T343C 000:575.399 completely In flash +T343C 000:575.405 - 0.024ms returns 0x1000 +T343C 000:575.623 JLINK_WriteMemEx(0x00011000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:575.631 Data: 22 46 4B 46 00 95 00 F0 93 F9 05 46 05 E0 03 25 ... +T343C 000:575.638 completely In flash +T343C 000:575.644 - 0.023ms returns 0x1000 +T343C 000:575.812 JLINK_WriteMemEx(0x00012000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:575.820 Data: 00 00 00 00 63 69 72 63 5F 63 61 6C 63 5F 61 61 ... +T343C 000:575.855 completely In flash +T343C 000:575.896 - 0.086ms returns 0x1000 +T343C 000:576.073 JLINK_WriteMemEx(0x00013000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:576.081 Data: C0 F2 B3 85 4F EA 4A 00 0D 90 09 98 DD F8 28 90 ... +T343C 000:576.089 completely In flash +T343C 000:576.096 - 0.024ms returns 0x1000 +T343C 000:576.266 JLINK_WriteMemEx(0x00014000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:576.274 Data: 06 28 7F F4 09 AF B9 F1 00 0F 3F F4 05 AF DD E9 ... +T343C 000:576.283 completely In flash +T343C 000:576.289 - 0.024ms returns 0x1000 +T343C 000:576.461 JLINK_WriteMemEx(0x00015000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:576.468 Data: 4E F2 01 00 0E 91 41 F6 FF 71 00 22 4E F2 01 03 ... +T343C 000:576.509 completely In flash +T343C 000:576.516 - 0.058ms returns 0x1000 +T343C 000:576.686 JLINK_WriteMemEx(0x00016000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:576.694 Data: 02 06 17 46 C6 F1 00 06 58 BF 37 46 3D 44 AD F8 ... +T343C 000:576.703 completely In flash +T343C 000:576.709 - 0.024ms returns 0x1000 +T343C 000:576.876 JLINK_WriteMemEx(0x00017000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:576.884 Data: 31 46 B5 42 33 DA F9 F7 16 F8 F9 F7 7A F8 B4 F9 ... +T343C 000:576.892 completely In flash +T343C 000:576.899 - 0.024ms returns 0x1000 +T343C 000:577.067 JLINK_WriteMemEx(0x00018000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:577.075 Data: C0 68 F0 B1 00 68 A0 42 17 D1 28 7F C1 07 1C BF ... +T343C 000:577.083 completely In flash +T343C 000:577.089 - 0.024ms returns 0x1000 +T343C 000:577.259 JLINK_WriteMemEx(0x00019000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:577.266 Data: 81 46 30 46 04 F0 0C FE 02 46 F0 8E 0D F1 28 08 ... +T343C 000:577.279 completely In flash +T343C 000:577.286 - 0.029ms returns 0x1000 +T343C 000:577.652 JLINK_WriteMemEx(0x0001A000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:577.662 Data: C9 FB 04 46 30 46 00 21 58 22 04 F0 C3 FB 06 90 ... +T343C 000:577.670 completely In flash +T343C 000:577.676 - 0.026ms returns 0x1000 +T343C 000:577.855 JLINK_WriteMemEx(0x0001B000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:577.863 Data: C5 F3 45 13 05 91 01 90 13 FB 04 B0 03 90 16 FB ... +T343C 000:577.870 completely In flash +T343C 000:577.876 - 0.023ms returns 0x1000 +T343C 000:578.049 JLINK_WriteMemEx(0x0001C000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:578.057 Data: 14 46 AD F8 A2 00 35 A8 27 A9 47 F6 FF 72 01 23 ... +T343C 000:578.064 completely In flash +T343C 000:578.070 - 0.023ms returns 0x1000 +T343C 000:578.244 JLINK_WriteMemEx(0x0001D000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:578.251 Data: F7 FF 20 46 39 46 02 F0 46 F8 20 46 31 46 02 F0 ... +T343C 000:578.259 completely In flash +T343C 000:578.266 - 0.024ms returns 0x1000 +T343C 000:578.436 JLINK_WriteMemEx(0x0001E000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:578.444 Data: 08 46 00 21 00 22 4F F0 FF 33 00 94 ED F7 4E FF ... +T343C 000:578.451 completely In flash +T343C 000:578.457 - 0.022ms returns 0x1000 +T343C 000:578.625 JLINK_WriteMemEx(0x0001F000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:578.633 Data: 1C D3 30 46 29 46 41 22 FF F7 C4 FB 20 86 30 46 ... +T343C 000:578.640 completely In flash +T343C 000:578.646 - 0.022ms returns 0x1000 +T343C 000:578.814 JLINK_WriteMemEx(0x00020000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:578.822 Data: FF 78 4F F0 00 0A 4F F0 00 0C 00 BF 00 EB CA 03 ... +T343C 000:578.829 completely In flash +T343C 000:578.835 - 0.022ms returns 0x1000 +T343C 000:579.051 JLINK_WriteMemEx(0x00021000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:579.059 Data: 00 22 05 46 00 26 E0 F7 74 FA 80 B3 20 46 01 21 ... +T343C 000:579.066 completely In flash +T343C 000:579.072 - 0.023ms returns 0x1000 +T343C 000:579.246 JLINK_WriteMemEx(0x00022000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:579.254 Data: AC 42 80 F2 D7 80 BD F9 46 00 BB F9 6A 10 88 42 ... +T343C 000:579.261 completely In flash +T343C 000:579.268 - 0.023ms returns 0x1000 +T343C 000:579.436 JLINK_WriteMemEx(0x00023000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:579.446 Data: F8 F7 D1 FA A0 6A A1 8C E2 8C 40 F8 27 50 01 36 ... +T343C 000:579.454 completely In flash +T343C 000:579.461 - 0.027ms returns 0x1000 +T343C 000:579.634 JLINK_WriteMemEx(0x00024000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:579.641 Data: 00 28 00 F0 4F 81 06 46 28 46 F3 F7 60 F9 04 46 ... +T343C 000:579.648 completely In flash +T343C 000:579.655 - 0.023ms returns 0x1000 +T343C 000:579.822 JLINK_WriteMemEx(0x00025000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:579.830 Data: 08 46 0C 46 F8 F7 5A FE 05 46 F9 F7 07 FD 06 46 ... +T343C 000:579.837 completely In flash +T343C 000:579.843 - 0.022ms returns 0x1000 +T343C 000:580.010 JLINK_WriteMemEx(0x00026000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:580.018 Data: 62 F3 1A 4B 40 F2 90 52 C8 F8 30 B0 C2 F2 03 02 ... +T343C 000:580.027 completely In flash +T343C 000:580.033 - 0.025ms returns 0x1000 +T343C 000:580.202 JLINK_WriteMemEx(0x00027000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:580.209 Data: 26 10 89 B3 3A 46 07 B2 28 46 00 B2 07 90 0F FA ... +T343C 000:580.217 completely In flash +T343C 000:580.223 - 0.023ms returns 0x1000 +T343C 000:580.390 JLINK_WriteMemEx(0x00028000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:580.397 Data: F0 41 FF F7 09 B9 01 20 88 43 68 60 28 46 00 F0 ... +T343C 000:580.404 completely In flash +T343C 000:580.410 - 0.022ms returns 0x1000 +T343C 000:580.579 JLINK_WriteMemEx(0x00029000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:580.587 Data: 88 42 03 D3 12 A0 31 46 FF F7 20 F9 41 F6 DC 20 ... +T343C 000:580.594 completely In flash +T343C 000:580.600 - 0.023ms returns 0x1000 +T343C 000:580.767 JLINK_WriteMemEx(0x0002A000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:580.775 Data: C2 F2 03 07 D7 F8 00 90 04 46 B9 45 6A D0 4F F6 ... +T343C 000:580.782 completely In flash +T343C 000:580.788 - 0.022ms returns 0x1000 +T343C 000:580.957 JLINK_WriteMemEx(0x0002B000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:580.965 Data: A3 61 60 72 0D D0 40 F2 38 00 C2 F2 03 00 00 78 ... +T343C 000:580.972 completely In flash +T343C 000:580.978 - 0.023ms returns 0x1000 +T343C 000:581.146 JLINK_WriteMemEx(0x0002C000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:581.153 Data: 08 90 0A EB D0 30 AD F8 E4 00 28 46 F8 F7 BD FD ... +T343C 000:581.160 completely In flash +T343C 000:581.167 - 0.022ms returns 0x1000 +T343C 000:581.334 JLINK_WriteMemEx(0x0002D000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:581.342 Data: 66 61 50 FB 01 F0 81 11 01 EB D0 70 00 E0 01 20 ... +T343C 000:581.349 completely In flash +T343C 000:581.355 - 0.023ms returns 0x1000 +T343C 000:581.523 JLINK_WriteMemEx(0x0002E000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:581.531 Data: 50 21 01 EB 80 00 10 E0 FD 68 28 46 E2 F7 19 F8 ... +T343C 000:581.538 completely In flash +T343C 000:581.544 - 0.022ms returns 0x1000 +T343C 000:581.711 JLINK_WriteMemEx(0x0002F000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:581.719 Data: 98 F8 00 00 D9 F8 00 10 01 28 01 F5 F8 70 02 D1 ... +T343C 000:581.726 completely In flash +T343C 000:581.732 - 0.023ms returns 0x1000 +T343C 000:581.904 JLINK_WriteMemEx(0x00030000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:581.911 Data: 58 01 20 46 EC F7 AC FB 28 68 04 22 00 F1 A0 01 ... +T343C 000:581.918 completely In flash +T343C 000:581.925 - 0.022ms returns 0x1000 +T343C 000:582.141 JLINK_WriteMemEx(0x00031000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:582.148 Data: 05 46 66 8D 81 B2 20 46 DA F7 7B FE 20 46 31 46 ... +T343C 000:582.156 completely In flash +T343C 000:582.162 - 0.023ms returns 0x1000 +T343C 000:582.329 JLINK_WriteMemEx(0x00032000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:582.337 Data: 22 20 B7 00 00 0B 70 00 00 BF FF FA 0B 82 22 10 ... +T343C 000:582.344 completely In flash +T343C 000:582.350 - 0.022ms returns 0x1000 +T343C 000:582.518 JLINK_WriteMemEx(0x00033000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:582.526 Data: FF 50 00 68 88 88 71 00 00 48 88 88 87 00 0F FF ... +T343C 000:582.536 completely In flash +T343C 000:582.542 - 0.026ms returns 0x1000 +T343C 000:582.710 JLINK_WriteMemEx(0x00034000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:582.718 Data: EA 50 00 00 05 AE FE 40 00 00 00 4E F1 00 00 00 ... +T343C 000:582.726 completely In flash +T343C 000:582.732 - 0.023ms returns 0x1000 +T343C 000:582.902 JLINK_WriteMemEx(0x00035000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:582.910 Data: FF FF 7F FF F7 00 7F FF F7 8F FF FF FF FF FF F8 ... +T343C 000:582.917 completely In flash +T343C 000:582.923 - 0.023ms returns 0x1000 +T343C 000:583.090 JLINK_WriteMemEx(0x00036000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:583.098 Data: 00 00 DE DB 60 00 00 00 00 00 00 00 00 00 00 00 ... +T343C 000:583.105 completely In flash +T343C 000:583.111 - 0.022ms returns 0x1000 +T343C 000:583.278 JLINK_WriteMemEx(0x00037000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:583.285 Data: 01 10 00 11 11 11 10 EF FE 0E FF FF FF FE FF FF ... +T343C 000:583.292 completely In flash +T343C 000:583.299 - 0.022ms returns 0x1000 +T343C 000:583.465 JLINK_WriteMemEx(0x00038000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:583.473 Data: 66 66 63 00 0F FA FE BB BB BB BB BB BB BF B1 AF ... +T343C 000:583.480 completely In flash +T343C 000:583.486 - 0.023ms returns 0x1000 +T343C 000:583.654 JLINK_WriteMemEx(0x00039000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:583.661 Data: 02 0B 01 00 04 0B 00 04 05 0E FE FD 27 0B A0 08 ... +T343C 000:583.668 completely In flash +T343C 000:583.674 - 0.022ms returns 0x1000 +T343C 000:583.844 JLINK_WriteMemEx(0x0003A000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:583.851 Data: FF 1F 84 FF DE 8B B8 3E AB 54 3E AB 48 3E AB 3C ... +T343C 000:583.858 completely In flash +T343C 000:583.864 - 0.022ms returns 0x1000 +T343C 000:584.032 JLINK_WriteMemEx(0x0003B000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:584.040 Data: 3E AB 3B 3E AB 48 9E 9B 7C DE 8B E3 DE 8B FF DE ... +T343C 000:584.047 completely In flash +T343C 000:584.054 - 0.023ms returns 0x1000 +T343C 000:584.220 JLINK_WriteMemEx(0x0003C000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:584.228 Data: FF 00 FF FF 00 FF FF 00 FF FF 00 FF FF 00 FF FF ... +T343C 000:584.314 completely In flash +T343C 000:584.322 - 0.103ms returns 0x1000 +T343C 000:584.507 JLINK_WriteMemEx(0x0003D000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:584.517 Data: FF 5E E7 FF 5E E7 FF 5E E7 FF 5E E7 FF 5E E7 FF ... +T343C 000:584.532 completely In flash +T343C 000:584.541 - 0.037ms returns 0x1000 +T343C 000:585.269 JLINK_WriteMemEx(0x0003E000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:585.281 Data: FF FF 00 FF FF 00 FF FF 00 FF FF 00 FF FF 00 FF ... +T343C 000:585.292 completely In flash +T343C 000:585.299 - 0.032ms returns 0x1000 +T343C 000:585.628 JLINK_WriteMemEx(0x0003F000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:585.642 Data: 9B 00 7E 9B 00 7E 9B 00 7E 9B 00 7E 9B 00 7E 9B ... +T343C 000:585.662 completely In flash +T343C 000:585.671 - 0.047ms returns 0x1000 +T343C 000:587.437 JLINK_WriteMemEx(0x00040000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:587.452 Data: 00 7E 9B 00 7E 9B 03 7E 9B 03 7E 9B 03 7E 9B 04 ... +T343C 000:587.469 completely In flash +T343C 000:587.479 - 0.044ms returns 0x1000 +T343C 000:588.422 JLINK_WriteMemEx(0x00041000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:588.432 Data: 7E 9B 00 7E 9B 00 7E 9B 00 7E 9B 00 7E 9B 00 7E ... +T343C 000:588.444 completely In flash +T343C 000:588.450 - 0.030ms returns 0x1000 +T343C 000:589.094 JLINK_WriteMemEx(0x00042000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:589.104 Data: AB 03 5E AB 03 5E AB 03 5E AB 03 5E AB 00 5E AB ... +T343C 000:589.115 completely In flash +T343C 000:589.121 - 0.029ms returns 0x1000 +T343C 000:589.719 JLINK_WriteMemEx(0x00043000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:589.729 Data: 00 5E AB 00 5E AB 00 5E AB 00 FF FF 00 FF FF 00 ... +T343C 000:589.737 completely In flash +T343C 000:589.749 - 0.032ms returns 0x1000 +T343C 000:590.221 JLINK_WriteMemEx(0x00044000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:590.231 Data: 9F 6C FF 9F 6C FF 7F 6C FF 7F 6C FF 7F 6C FF 7F ... +T343C 000:590.339 completely In flash +T343C 000:590.347 - 0.128ms returns 0x1000 +T343C 000:590.616 JLINK_WriteMemEx(0x00045000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:590.625 Data: AB 40 5E AB 43 5E AB 43 5E AB 40 5E AB 40 5E AB ... +T343C 000:590.635 completely In flash +T343C 000:590.642 - 0.028ms returns 0x1000 +T343C 000:590.826 JLINK_WriteMemEx(0x00046000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:590.834 Data: 00 FF FF 00 FF FF 00 FF FF 00 FF FF 00 FF FF 00 ... +T343C 000:590.844 completely In flash +T343C 000:590.850 - 0.025ms returns 0x1000 +T343C 000:591.023 JLINK_WriteMemEx(0x00047000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:591.031 Data: FF FF 00 5E AB 00 5E AB 00 5E AB 00 5E AB 00 5E ... +T343C 000:591.040 completely In flash +T343C 000:591.046 - 0.025ms returns 0x1000 +T343C 000:591.218 JLINK_WriteMemEx(0x00048000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:591.225 Data: 6C FF 7F 6C FF 7F 6C FF 7F 6C FF 7F C6 FF FF FF ... +T343C 000:591.234 completely In flash +T343C 000:591.240 - 0.024ms returns 0x1000 +T343C 000:591.412 JLINK_WriteMemEx(0x00049000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:591.419 Data: FF 5E AB FF 3E AB FF 3E AB E7 5E AB 63 5E AB 50 ... +T343C 000:591.428 completely In flash +T343C 000:591.434 - 0.024ms returns 0x1000 +T343C 000:591.605 JLINK_WriteMemEx(0x0004A000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:591.613 Data: 5E AB 00 5E AB 00 5E AB 00 5E AB 00 5E AB 00 5E ... +T343C 000:591.622 completely In flash +T343C 000:591.628 - 0.024ms returns 0x1000 +T343C 000:591.800 JLINK_WriteMemEx(0x0004B000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:591.808 Data: 9B 00 7E 9B 00 7E 9B 00 7E 9B 00 7E 9B 00 7E 9B ... +T343C 000:591.816 completely In flash +T343C 000:591.823 - 0.024ms returns 0x1000 +T343C 000:591.993 JLINK_WriteMemEx(0x0004C000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:592.000 Data: 00 7E 9B 00 7E 9B 00 7E 9B 03 7E 9B 03 7E 9B 04 ... +T343C 000:592.011 completely In flash +T343C 000:592.018 - 0.026ms returns 0x1000 +T343C 000:592.187 JLINK_WriteMemEx(0x0004D000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:592.194 Data: 7E 9B 00 7E 9B 00 7E 9B 00 7E 9B 00 7E 9B 00 7E ... +T343C 000:592.203 completely In flash +T343C 000:592.210 - 0.025ms returns 0x1000 +T343C 000:592.378 JLINK_WriteMemEx(0x0004E000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:592.386 Data: 31 00 89 31 00 89 31 08 89 31 E8 89 31 FF 89 31 ... +T343C 000:592.526 completely In flash +T343C 000:592.533 - 0.157ms returns 0x1000 +T343C 000:592.715 JLINK_WriteMemEx(0x0004F000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:592.723 Data: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ... +T343C 000:592.732 completely In flash +T343C 000:592.738 - 0.025ms returns 0x1000 +T343C 000:592.909 JLINK_WriteMemEx(0x00050000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:592.917 Data: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ... +T343C 000:592.925 completely In flash +T343C 000:592.932 - 0.024ms returns 0x1000 +T343C 000:593.151 JLINK_WriteMemEx(0x00051000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:593.159 Data: 31 02 0A 1A 43 21 42 00 28 01 EB 09 49 09 4C 01 ... +T343C 000:593.168 completely In flash +T343C 000:593.174 - 0.025ms returns 0x1000 +T343C 000:593.360 JLINK_WriteMemEx(0x00052000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:593.368 Data: 5F F7 3F F7 1F EF FF EE BF FF FF FF FF FF 7B C6 ... +T343C 000:593.377 completely In flash +T343C 000:593.384 - 0.025ms returns 0x1000 +T343C 000:593.563 JLINK_WriteMemEx(0x00053000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:593.570 Data: 67 19 47 19 47 19 47 19 47 19 46 19 47 19 47 19 ... +T343C 000:593.579 completely In flash +T343C 000:593.585 - 0.025ms returns 0x1000 +T343C 000:593.756 JLINK_WriteMemEx(0x00054000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:593.804 Data: 34 02 67 00 49 09 09 01 A8 00 00 00 01 00 C4 10 ... +T343C 000:593.813 completely In flash +T343C 000:593.820 - 0.066ms returns 0x1000 +T343C 000:593.996 JLINK_WriteMemEx(0x00055000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:594.003 Data: BF FF 9F FF 9F FF 7F F7 5F F7 1F F7 FF EE 7F F7 ... +T343C 000:594.012 completely In flash +T343C 000:594.019 - 0.025ms returns 0x1000 +T343C 000:594.189 JLINK_WriteMemEx(0x00056000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:594.196 Data: 64 51 64 51 65 49 24 41 E3 38 0B 83 D5 DD 57 EE ... +T343C 000:594.205 completely In flash +T343C 000:594.211 - 0.024ms returns 0x1000 +T343C 000:594.381 JLINK_WriteMemEx(0x00057000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:594.389 Data: 8D 01 8D 01 8D 01 6B 01 AD 01 5A 03 9B 03 18 03 ... +T343C 000:594.398 completely In flash +T343C 000:594.404 - 0.024ms returns 0x1000 +T343C 000:594.576 JLINK_WriteMemEx(0x00058000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:594.584 Data: DF FF DF FF FF FF FF FF FF FF FF FF FF FF FF FF ... +T343C 000:594.591 completely In flash +T343C 000:594.598 - 0.023ms returns 0x1000 +T343C 000:594.766 JLINK_WriteMemEx(0x00059000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:594.774 Data: 41 00 21 00 21 00 21 00 21 00 21 00 21 00 21 00 ... +T343C 000:594.892 completely In flash +T343C 000:594.899 - 0.135ms returns 0x1000 +T343C 000:595.073 JLINK_WriteMemEx(0x0005A000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:595.081 Data: 0E 01 0E 01 2E 01 2E 01 2E 01 2E 01 2E 01 4E 01 ... +T343C 000:595.089 completely In flash +T343C 000:595.096 - 0.025ms returns 0x1000 +T343C 000:595.266 JLINK_WriteMemEx(0x0005B000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:595.274 Data: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ... +T343C 000:595.282 completely In flash +T343C 000:595.289 - 0.024ms returns 0x1000 +T343C 000:595.460 JLINK_WriteMemEx(0x0005C000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:595.468 Data: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ... +T343C 000:595.477 completely In flash +T343C 000:595.483 - 0.025ms returns 0x1000 +T343C 000:595.654 JLINK_WriteMemEx(0x0005D000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:595.661 Data: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ... +T343C 000:595.672 completely In flash +T343C 000:595.678 - 0.026ms returns 0x1000 +T343C 000:595.848 JLINK_WriteMemEx(0x0005E000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:595.855 Data: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ... +T343C 000:595.864 completely In flash +T343C 000:595.870 - 0.024ms returns 0x1000 +T343C 000:596.039 JLINK_WriteMemEx(0x0005F000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:596.047 Data: 67 29 87 29 87 29 05 19 83 10 42 08 63 10 62 10 ... +T343C 000:596.055 completely In flash +T343C 000:596.062 - 0.024ms returns 0x1000 +T343C 000:596.231 JLINK_WriteMemEx(0x00060000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:596.239 Data: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ... +T343C 000:596.247 completely In flash +T343C 000:596.256 - 0.027ms returns 0x1000 +T343C 000:596.471 JLINK_WriteMemEx(0x00061000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:596.479 Data: 12 C5 36 DE D5 D5 73 C5 D4 D5 15 DE 52 C5 8C 93 ... +T343C 000:596.487 completely In flash +T343C 000:596.493 - 0.024ms returns 0x1000 +T343C 000:596.661 JLINK_WriteMemEx(0x00062000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:596.669 Data: 4F 5B 6F 5B 6F 63 6F 63 8F 63 90 63 70 63 90 63 ... +T343C 000:596.678 completely In flash +T343C 000:596.684 - 0.024ms returns 0x1000 +T343C 000:596.851 JLINK_WriteMemEx(0x00063000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:596.859 Data: BF FF BF FF DF FF DF FF FF FF FF FF FF FF FF FF ... +T343C 000:596.868 completely In flash +T343C 000:596.874 - 0.024ms returns 0x1000 +T343C 000:597.041 JLINK_WriteMemEx(0x00064000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:597.050 Data: 5C FF 3B FF 3B FF 1A FF D8 FE 97 FE 36 FE 15 F6 ... +T343C 000:597.059 completely In flash +T343C 000:597.065 - 0.026ms returns 0x1000 +T343C 000:597.236 JLINK_WriteMemEx(0x00065000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:597.244 Data: 33 74 33 74 33 7C 33 74 54 7C 74 7C 74 7C 54 7C ... +T343C 000:597.290 completely In flash +T343C 000:597.297 - 0.062ms returns 0x1000 +T343C 000:597.468 JLINK_WriteMemEx(0x00066000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:597.476 Data: 63 10 C4 18 C5 18 84 10 42 08 42 08 22 08 21 08 ... +T343C 000:597.484 completely In flash +T343C 000:597.491 - 0.024ms returns 0x1000 +T343C 000:597.659 JLINK_WriteMemEx(0x00067000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:597.666 Data: 73 8C 10 94 48 72 48 7A AA 7A 08 62 A7 59 46 49 ... +T343C 000:597.674 completely In flash +T343C 000:597.681 - 0.024ms returns 0x1000 +T343C 000:597.849 JLINK_WriteMemEx(0x00068000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:597.856 Data: 1F EF 1F EF FF FF FF FF FF FF AE 52 E4 40 E7 81 ... +T343C 000:597.865 completely In flash +T343C 000:597.871 - 0.024ms returns 0x1000 +T343C 000:598.038 JLINK_WriteMemEx(0x00069000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:598.045 Data: 00 00 00 00 00 00 20 00 21 08 A3 10 B7 B5 FF FF ... +T343C 000:598.057 completely In flash +T343C 000:598.064 - 0.028ms returns 0x1000 +T343C 000:598.232 JLINK_WriteMemEx(0x0006A000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:598.240 Data: F5 8C 70 63 70 63 53 84 9B CE 1D DF 5A C6 7A CE ... +T343C 000:598.249 completely In flash +T343C 000:598.255 - 0.024ms returns 0x1000 +T343C 000:598.422 JLINK_WriteMemEx(0x0006B000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:598.430 Data: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ... +T343C 000:598.438 completely In flash +T343C 000:598.445 - 0.024ms returns 0x1000 +T343C 000:598.613 JLINK_WriteMemEx(0x0006C000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:598.621 Data: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ... +T343C 000:598.629 completely In flash +T343C 000:598.636 - 0.024ms returns 0x1000 +T343C 000:598.805 JLINK_WriteMemEx(0x0006D000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:598.812 Data: FF FF FF FF FF FF FF FF DF FF DF FF DF FF DF FF ... +T343C 000:598.821 completely In flash +T343C 000:598.827 - 0.024ms returns 0x1000 +T343C 000:598.996 JLINK_WriteMemEx(0x0006E000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:599.004 Data: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ... +T343C 000:599.012 completely In flash +T343C 000:599.019 - 0.024ms returns 0x1000 +T343C 000:599.185 JLINK_WriteMemEx(0x0006F000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:599.193 Data: 26 FE 24 FE 03 FE E2 FD C2 FD A2 FD 42 FD 02 FD ... +T343C 000:599.202 completely In flash +T343C 000:599.208 - 0.024ms returns 0x1000 +T343C 000:599.375 JLINK_WriteMemEx(0x00070000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:599.382 Data: 42 FD 20 FD C2 FD 57 FF FF FF FF FF 14 FF 4A FE ... +T343C 000:599.391 completely In flash +T343C 000:599.397 - 0.024ms returns 0x1000 +T343C 000:599.778 JLINK_WriteMemEx(0x00071000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:599.788 Data: E2 E2 C1 DA E7 DB BD FF FF FF DF FF FF EE 1F F7 ... +T343C 000:599.799 completely In flash +T343C 000:599.805 - 0.029ms returns 0x1000 +T343C 000:600.006 JLINK_WriteMemEx(0x00072000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:600.014 Data: A2 FD 62 FD A2 FD 24 FE 6A FE 8E FE AF FE D1 FE ... +T343C 000:600.021 completely In flash +T343C 000:600.028 - 0.024ms returns 0x1000 +T343C 000:600.203 JLINK_WriteMemEx(0x00073000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:600.211 Data: 85 B2 A4 BA C4 C2 04 D3 25 F4 24 F4 A5 FC 85 FD ... +T343C 000:600.360 completely In flash +T343C 000:600.368 - 0.166ms returns 0x1000 +T343C 000:600.556 JLINK_WriteMemEx(0x00074000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:600.564 Data: 2B F6 59 FF 38 FF B3 F6 B3 F6 16 F7 15 F7 B4 F6 ... +T343C 000:600.575 completely In flash +T343C 000:600.581 - 0.027ms returns 0x1000 +T343C 000:600.753 JLINK_WriteMemEx(0x00075000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:600.760 Data: 4D F5 4D F5 4D F5 6D F5 CD FD 2D FE 2D FE 2D FE ... +T343C 000:600.767 completely In flash +T343C 000:600.774 - 0.023ms returns 0x1000 +T343C 000:600.943 JLINK_WriteMemEx(0x00076000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:600.951 Data: FF FF FF FF DF FF DF FF BF FF BF FF 9F FF 7F F7 ... +T343C 000:600.958 completely In flash +T343C 000:600.964 - 0.023ms returns 0x1000 +T343C 000:601.131 JLINK_WriteMemEx(0x00077000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:601.139 Data: 4E B4 A8 7A C8 82 47 6A 02 41 C4 61 87 8A E3 48 ... +T343C 000:601.146 completely In flash +T343C 000:601.152 - 0.022ms returns 0x1000 +T343C 000:601.362 JLINK_WriteMemEx(0x00078000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:601.371 Data: E5 59 C4 61 AD C4 45 72 64 51 3A F7 9B FF B8 EE ... +T343C 000:601.379 completely In flash +T343C 000:601.386 - 0.026ms returns 0x1000 +T343C 000:601.583 JLINK_WriteMemEx(0x00079000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:601.591 Data: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ... +T343C 000:601.598 completely In flash +T343C 000:601.604 - 0.023ms returns 0x1000 +T343C 000:601.783 JLINK_WriteMemEx(0x0007A000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:601.791 Data: FF FF FF FF FF FF DF FF 3F F7 1F EF FF EE FF EE ... +T343C 000:601.801 completely In flash +T343C 000:601.807 - 0.026ms returns 0x1000 +T343C 000:601.979 JLINK_WriteMemEx(0x0007B000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:601.987 Data: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ... +T343C 000:601.995 completely In flash +T343C 000:602.002 - 0.025ms returns 0x1000 +T343C 000:602.172 JLINK_WriteMemEx(0x0007C000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:602.180 Data: FF FF FF FF FF FF FF FF 66 20 B1 83 FF FF FF FF ... +T343C 000:602.188 completely In flash +T343C 000:602.195 - 0.024ms returns 0x1000 +T343C 000:602.364 JLINK_WriteMemEx(0x0007D000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:602.372 Data: FF FF 18 FF FF 18 FF FF 18 FF FF 18 FF FF 18 FF ... +T343C 000:602.380 completely In flash +T343C 000:602.387 - 0.024ms returns 0x1000 +T343C 000:602.560 JLINK_WriteMemEx(0x0007E000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:602.568 Data: 04 21 04 21 04 21 04 21 04 21 04 21 04 21 04 21 ... +T343C 000:602.576 completely In flash +T343C 000:602.583 - 0.024ms returns 0x1000 +T343C 000:602.758 JLINK_WriteMemEx(0x0007F000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:602.765 Data: 04 21 04 21 04 21 04 21 04 21 04 21 04 21 04 21 ... +T343C 000:602.774 completely In flash +T343C 000:602.780 - 0.024ms returns 0x1000 +T343C 000:602.953 JLINK_WriteMemEx(0x00080000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:602.961 Data: 04 21 04 21 04 21 04 21 04 21 6E 6B BE FF EB EA ... +T343C 000:602.969 completely In flash +T343C 000:602.976 - 0.024ms returns 0x1000 +T343C 000:603.194 JLINK_WriteMemEx(0x00081000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:603.201 Data: 00 D8 00 D8 00 D8 00 D8 00 D8 00 D8 00 D8 00 D8 ... +T343C 000:603.210 completely In flash +T343C 000:603.217 - 0.025ms returns 0x1000 +T343C 000:603.385 JLINK_WriteMemEx(0x00082000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:603.392 Data: AB 00 5E AB 00 5E AB 00 5E AB 00 5E AB 03 5E AB ... +T343C 000:603.561 completely In flash +T343C 000:603.569 - 0.185ms returns 0x1000 +T343C 000:603.747 JLINK_WriteMemEx(0x00083000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:603.755 Data: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ... +T343C 000:603.762 completely In flash +T343C 000:603.769 - 0.023ms returns 0x1000 +T343C 000:603.938 JLINK_WriteMemEx(0x00084000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:603.946 Data: 9F F7 9F F7 9F F7 9F F7 9F F7 BF F7 BF F7 BF F7 ... +T343C 000:603.953 completely In flash +T343C 000:603.960 - 0.023ms returns 0x1000 +T343C 000:604.132 JLINK_WriteMemEx(0x00085000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:604.141 Data: BF EF BF EF BF EF BF EF BF EF BF EF BF EF BF EF ... +T343C 000:604.148 completely In flash +T343C 000:604.154 - 0.025ms returns 0x1000 +T343C 000:604.323 JLINK_WriteMemEx(0x00086000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:604.330 Data: BF F7 BF F7 BF F7 BF F7 BF FF BF FF BF FF BF FF ... +T343C 000:604.337 completely In flash +T343C 000:604.344 - 0.023ms returns 0x1000 +T343C 000:604.516 JLINK_WriteMemEx(0x00087000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:604.523 Data: 3F DF 3F D7 3F DF 3F DF 5F DF 5F DF 5F DF 5F DF ... +T343C 000:604.530 completely In flash +T343C 000:604.537 - 0.023ms returns 0x1000 +T343C 000:604.704 JLINK_WriteMemEx(0x00088000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:604.712 Data: DF FF DF FF DF FF DF FF DF FF DF FF DF FF DF FF ... +T343C 000:604.719 completely In flash +T343C 000:604.725 - 0.022ms returns 0x1000 +T343C 000:604.890 JLINK_WriteMemEx(0x00089000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:604.898 Data: BF E7 9F E7 9F E7 9F E7 9F E7 9F E7 9F E7 9F E7 ... +T343C 000:604.905 completely In flash +T343C 000:604.911 - 0.022ms returns 0x1000 +T343C 000:605.077 JLINK_WriteMemEx(0x0008A000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:605.084 Data: BF FF BF FF BF FF BF FF BF FF BF FF BF FF BF FF ... +T343C 000:605.092 completely In flash +T343C 000:605.098 - 0.023ms returns 0x1000 +T343C 000:605.264 JLINK_WriteMemEx(0x0008B000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:605.271 Data: 3F D7 3F D7 3F D7 3F D7 3F D7 3F D7 3F D7 7F E7 ... +T343C 000:605.278 completely In flash +T343C 000:605.285 - 0.022ms returns 0x1000 +T343C 000:605.454 JLINK_WriteMemEx(0x0008C000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:605.462 Data: 9F F7 9F F7 9F F7 9F F7 9F F7 9F F7 9F F7 9F F7 ... +T343C 000:605.469 completely In flash +T343C 000:605.475 - 0.023ms returns 0x1000 +T343C 000:605.641 JLINK_WriteMemEx(0x0008D000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:605.649 Data: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ... +T343C 000:605.656 completely In flash +T343C 000:605.662 - 0.022ms returns 0x1000 +T343C 000:605.828 JLINK_WriteMemEx(0x0008E000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:605.836 Data: FA E6 01 05 04 00 FE 00 07 00 06 00 06 00 EE 00 ... +T343C 000:605.843 completely In flash +T343C 000:605.849 - 0.023ms returns 0x1000 +T343C 000:606.014 JLINK_WriteMemEx(0x0008F000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:606.022 Data: 00 00 FF 00 00 00 00 00 FE 00 00 00 00 FC 00 FB ... +T343C 000:606.029 completely In flash +T343C 000:606.035 - 0.022ms returns 0x1000 +T343C 000:606.201 JLINK_WriteMemEx(0x00090000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:606.209 Data: FE 02 00 02 00 00 00 00 FA 00 FE FE FC 00 FE F7 ... +T343C 000:606.216 completely In flash +T343C 000:606.222 - 0.022ms returns 0x1000 +T343C 000:606.434 JLINK_WriteMemEx(0x00091000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:606.442 Data: 0C 00 13 00 1C 00 03 00 0B 00 15 00 20 00 01 00 ... +T343C 000:606.450 completely In flash +T343C 000:606.456 - 0.024ms returns 0x1000 +T343C 000:606.622 JLINK_WriteMemEx(0x00092000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:606.630 Data: 10 00 11 00 04 00 0C 00 12 00 16 00 11 00 0B 00 ... +T343C 000:606.639 completely In flash +T343C 000:606.645 - 0.024ms returns 0x1000 +T343C 000:606.811 JLINK_WriteMemEx(0x00093000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:606.819 Data: 0E 00 24 00 0C 00 15 00 0D 00 22 00 0E 00 0E 00 ... +T343C 000:606.976 completely In flash +T343C 000:606.983 - 0.174ms returns 0x1000 +T343C 000:607.162 JLINK_WriteMemEx(0x00094000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:607.170 Data: 2E 00 08 00 01 00 07 00 20 00 19 00 04 00 0E 00 ... +T343C 000:607.177 completely In flash +T343C 000:607.183 - 0.023ms returns 0x1000 +T343C 000:607.355 JLINK_WriteMemEx(0x00095000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:607.365 Data: 03 00 19 00 0B 00 02 00 03 00 17 00 0E 00 02 00 ... +T343C 000:607.373 completely In flash +T343C 000:607.379 - 0.026ms returns 0x1000 +T343C 000:607.549 JLINK_WriteMemEx(0x00096000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:607.557 Data: 72 65 6C 65 61 73 65 00 72 74 5F 73 65 6D 5F 69 ... +T343C 000:607.564 completely In flash +T343C 000:607.570 - 0.023ms returns 0x1000 +T343C 000:607.736 JLINK_WriteMemEx(0x00097000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:607.744 Data: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ... +T343C 000:607.751 completely In flash +T343C 000:607.757 - 0.022ms returns 0x1000 +T343C 000:607.924 JLINK_WriteMemEx(0x00098000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:607.932 Data: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ... +T343C 000:607.939 completely In flash +T343C 000:607.945 - 0.022ms returns 0x1000 +T343C 000:608.111 JLINK_WriteMemEx(0x00099000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:608.118 Data: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ... +T343C 000:608.127 completely In flash +T343C 000:608.133 - 0.024ms returns 0x1000 +T343C 000:608.304 JLINK_WriteMemEx(0x0009A000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:608.312 Data: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ... +T343C 000:608.320 completely In flash +T343C 000:608.326 - 0.024ms returns 0x1000 +T343C 000:608.494 JLINK_WriteMemEx(0x0009B000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:608.502 Data: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ... +T343C 000:608.510 completely In flash +T343C 000:608.516 - 0.024ms returns 0x1000 +T343C 000:608.682 JLINK_WriteMemEx(0x0009C000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:608.690 Data: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ... +T343C 000:608.698 completely In flash +T343C 000:608.704 - 0.024ms returns 0x1000 +T343C 000:608.871 JLINK_WriteMemEx(0x0009D000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:608.878 Data: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ... +T343C 000:608.887 completely In flash +T343C 000:608.893 - 0.024ms returns 0x1000 +T343C 000:609.059 JLINK_WriteMemEx(0x0009E000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:609.067 Data: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ... +T343C 000:609.076 completely In flash +T343C 000:609.084 - 0.026ms returns 0x1000 +T343C 000:609.251 JLINK_WriteMemEx(0x0009F000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:609.258 Data: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ... +T343C 000:609.267 completely In flash +T343C 000:609.273 - 0.024ms returns 0x1000 +T343C 000:609.504 JLINK_WriteMemEx(0x000A0000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:609.514 Data: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ... +T343C 000:609.523 completely In flash +T343C 000:609.530 - 0.028ms returns 0x1000 +T343C 000:609.756 JLINK_WriteMemEx(0x000A1000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:609.765 Data: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ... +T343C 000:609.774 completely In flash +T343C 000:609.780 - 0.025ms returns 0x1000 +T343C 000:609.950 JLINK_WriteMemEx(0x000A2000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:609.958 Data: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ... +T343C 000:609.966 completely In flash +T343C 000:609.973 - 0.024ms returns 0x1000 +T343C 000:610.142 JLINK_WriteMemEx(0x000A3000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:610.149 Data: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ... +T343C 000:610.158 completely In flash +T343C 000:610.164 - 0.024ms returns 0x1000 +T343C 000:610.331 JLINK_WriteMemEx(0x000A4000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:610.338 Data: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ... +T343C 000:610.347 completely In flash +T343C 000:610.353 - 0.024ms returns 0x1000 +T343C 000:610.524 JLINK_WriteMemEx(0x000A5000, 0x00001000 Bytes, Flags = 0x02000000) +T343C 000:610.531 Data: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ... +T343C 000:610.543 completely In flash +T343C 000:610.549 - 0.027ms returns 0x1000 +T343C 000:610.719 JLINK_WriteMemEx(0x000A6000, 0x00000FE8 Bytes, Flags = 0x02000000) +T343C 000:610.726 Data: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ... +T343C 000:610.735 completely In flash +T343C 000:610.741 - 0.024ms returns 0xFE8 +T343C 000:610.907 JLINK_WriteMemEx(0x0100A150, 0x00000010 Bytes, Flags = 0x02000000) +T343C 000:610.915 Data: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF +T343C 000:611.081 completely In flash +T343C 000:611.088 - 0.183ms returns 0x10 +T343C 000:668.523 JLINK_HasError() +T343C 000:668.545 JLINK_SetResetType(JLINKARM_CM3_RESET_TYPE_NORMAL) +T343C 000:668.550 - 0.007ms returns JLINKARM_CM3_RESET_TYPE_NORMAL +T343C 000:668.556 JLINK_Reset() +T343C 000:668.577 Old firmware which does not support pausing periodic actions during flash download +T343C 000:668.588 CPU_ReadMem(4 bytes @ 0xE000ED90) +T343C 000:669.472 CPU_ReadMem(4 bytes @ 0xE000ED94) +T343C 000:834.674 -- -------------------------------------- +T343C 000:834.701 Flash bank @ 0x0100A150: Default: L2 verify disabled because algorithm performs L1 verify +T343C 000:834.708 -- Start of determining dirty areas in flash cache +T343C 000:834.730 -- End of determining dirty areas +T343C 000:834.737 -- Start of preparing flash programming +T343C 000:834.749 -- Calculating RAM usage +T343C 003:567.494 -- RAM usage = 3572 Bytes +T343C 003:567.511 -- Preserving CPU registers +T343C 003:567.537 -- Preparing memory +T343C 003:567.545 -- Determining CPU clock frequency +T343C 003:618.227 -- Preparing target +T343C 003:619.822 -- Preserving target RAM temporarily used for programming +T343C 003:659.380 -- Downloading RAMCode +T343C 003:706.515 -- Preparing RAMCode +T343C 003:720.200 -- Checking target RAM +T343C 003:722.093 -- CPU frequency = 100000 kHz +T343C 003:722.103 -- End of preparing flash programming +T343C 003:722.190 Looking for J-Link GUI Server exe at: E:\software\keil\keil_Core\ARM\Segger\JLinkGUIServer.exe +T343C 003:722.221 Forking J-Link GUI Server: E:\software\keil\keil_Core\ARM\Segger\JLinkGUIServer.exe +T343C 004:047.476 Failed to connect to J-Link GUI Server. +T343C 004:054.756 -- CPU is running at 100000 kHz. +T343C 004:054.774 -- Start of comparing flash +T343C 004:054.781 -- CRC check was estimated as fastest method +T343C 004:054.791 -- Comparing range 0x100A150 - 0x100A16F (1 Sector, 32 Bytes), using multi-block CRC calculation +T343C 004:058.960 -- All CRCs match +T343C 004:058.980 -- Comparing range 0x100A150 - 0x100A16F (1 Sector, 32 Bytes), using alternative multi-block CRC calculation +T343C 004:062.348 -- All CRCs match +T343C 004:062.358 -- End of comparing flash +T343C 004:062.365 -- Start of erasing sectors +T343C 004:062.371 -- End of erasing sectors +T343C 004:062.377 -- Start of flash programming +T343C 004:062.383 -- End of flash programming +T343C 004:062.389 -- Start of restoring +T343C 004:062.395 -- Restoring RAMCode +T343C 004:069.783 -- Restoring target memory +T343C 004:106.746 -- Restore target +T343C 004:106.766 -- Restore memory +T343C 004:106.772 -- Restoring CPU registers +T343C 004:106.789 -- End of restoring +T343C 004:106.818 -- Bank 0 @ 0x0100A150: Skipped. Contents already match +T343C 004:106.825 -- Bank 0 @ 0x0100A150: Skipped. Contents already match +T343C 004:109.021 -- -------------------------------------- +T343C 004:109.051 Flash bank @ 0x00000000: Default: L2 verify disabled because algorithm performs L1 verify +T343C 004:109.058 -- Start of determining dirty areas in flash cache +T343C 004:109.273 -- End of determining dirty areas +T343C 004:109.282 -- Start of preparing flash programming +T343C 004:109.288 -- Calculating RAM usage +T343C 004:109.302 -- RAM usage = 10636 Bytes +T343C 004:109.308 -- Preserving CPU registers +T343C 004:109.331 -- Preparing memory +T343C 004:109.338 -- Determining CPU clock frequency +T343C 004:156.471 -- Preparing target +T343C 004:158.192 -- Preserving target RAM temporarily used for programming +T343C 004:277.387 -- Downloading RAMCode +T343C 004:323.741 -- Preparing RAMCode +T343C 004:336.935 -- Checking target RAM +T343C 004:339.826 -- CPU frequency = 100000 kHz +T343C 004:339.837 -- End of preparing flash programming +T343C 004:347.486 -- CPU is running at 100000 kHz. +T343C 004:347.504 -- Start of comparing flash +T343C 004:347.511 -- CRC check was estimated as fastest method +T343C 004:347.520 -- Comparing range 0x0000 - 0xFFFF (8 Sectors, 64 KiB), using multi-block CRC calculation +T343C 004:352.252 -- CRC does not match for sectors 0-7 +T343C 004:352.267 -- Comparing range 0x10000 - 0x2FFFF (4 Sectors, 128 KiB), using multi-block CRC calculation +T343C 004:356.067 -- CRC does not match for sectors 0-3 +T343C 004:356.078 -- Comparing range 0x30000 - 0x4FFFF (4 Sectors, 128 KiB), using multi-block CRC calculation +T343C 004:360.275 -- CRC does not match for sectors 0-3 +T343C 004:360.291 -- Comparing range 0x50000 - 0x6FFFF (4 Sectors, 128 KiB), using multi-block CRC calculation +T343C 004:364.392 -- CRC does not match for sectors 0-3 +T343C 004:364.405 -- Comparing range 0x70000 - 0x8FFFF (4 Sectors, 128 KiB), using multi-block CRC calculation +T343C 004:368.385 -- CRC does not match for sectors 0-3 +T343C 004:368.395 -- Comparing range 0x90000 - 0xA7FFF (3 Sectors, 96 KiB), using multi-block CRC calculation +T343C 004:372.149 -- CRC does not match for sectors 0-2 +T343C 004:372.160 -- End of comparing flash +T343C 004:372.166 -- Start of erasing sectors +T343C 004:372.174 -- Erasing range 0x00000000 - 0x00007FFF ( 4 Sectors, 32 KB) +T343C 004:523.296 -- Erasing range 0x00008000 - 0x0000FFFF ( 4 Sectors, 32 KB) +T343C 004:678.542 -- Erasing range 0x00010000 - 0x00017FFF ( 1 Sector, 32 KB) +T343C 004:825.010 -- Erasing range 0x00018000 - 0x0001FFFF ( 1 Sector, 32 KB) +T343C 004:970.161 -- Erasing range 0x00020000 - 0x00027FFF ( 1 Sector, 32 KB) +T343C 005:115.260 -- Erasing range 0x00028000 - 0x0002FFFF ( 1 Sector, 32 KB) +T343C 005:260.903 -- Erasing range 0x00030000 - 0x00037FFF ( 1 Sector, 32 KB) +T343C 005:406.494 -- Erasing range 0x00038000 - 0x0003FFFF ( 1 Sector, 32 KB) +T343C 005:545.412 -- Erasing range 0x00040000 - 0x00047FFF ( 1 Sector, 32 KB) +T343C 005:683.751 -- Erasing range 0x00048000 - 0x0004FFFF ( 1 Sector, 32 KB) +T343C 005:822.142 -- Erasing range 0x00050000 - 0x00057FFF ( 1 Sector, 32 KB) +T343C 005:960.655 -- Erasing range 0x00058000 - 0x0005FFFF ( 1 Sector, 32 KB) +T343C 006:107.032 -- Erasing range 0x00060000 - 0x00067FFF ( 1 Sector, 32 KB) +T343C 006:245.343 -- Erasing range 0x00068000 - 0x0006FFFF ( 1 Sector, 32 KB) +T343C 006:384.119 -- Erasing range 0x00070000 - 0x00077FFF ( 1 Sector, 32 KB) +T343C 006:523.278 -- Erasing range 0x00078000 - 0x0007FFFF ( 1 Sector, 32 KB) +T343C 006:661.989 -- Erasing range 0x00080000 - 0x00087FFF ( 1 Sector, 32 KB) +T343C 006:800.560 -- Erasing range 0x00088000 - 0x0008FFFF ( 1 Sector, 32 KB) +T343C 006:939.071 -- Erasing range 0x00090000 - 0x00097FFF ( 1 Sector, 32 KB) +T343C 007:077.871 -- Erasing range 0x00098000 - 0x0009FFFF ( 1 Sector, 32 KB) +T343C 007:216.856 -- Erasing range 0x000A0000 - 0x000A7FFF ( 1 Sector, 32 KB) +T343C 007:362.732 -- End of erasing sectors +T343C 007:362.751 -- Start of flash programming +T343C 007:362.759 -- Programming range 0x00000000 - 0x00007FFF ( 4 Sectors, 32 KB) +T343C 007:668.657 -- Programming range 0x00008000 - 0x0000FFFF ( 4 Sectors, 32 KB) +T343C 008:019.444 -- Programming range 0x00010000 - 0x00017FFF ( 1 Sector, 32 KB) +T343C 008:370.240 -- Programming range 0x00018000 - 0x0001FFFF ( 1 Sector, 32 KB) +T343C 008:721.277 -- Programming range 0x00020000 - 0x00027FFF ( 1 Sector, 32 KB) +T343C 009:072.627 -- Programming range 0x00028000 - 0x0002FFFF ( 1 Sector, 32 KB) +T343C 009:423.147 -- Programming range 0x00030000 - 0x00037FFF ( 1 Sector, 32 KB) +T343C 009:774.312 -- Programming range 0x00038000 - 0x0003FFFF ( 1 Sector, 32 KB) +T343C 010:124.878 -- Programming range 0x00040000 - 0x00047FFF ( 1 Sector, 32 KB) +T343C 010:475.883 -- Programming range 0x00048000 - 0x0004FFFF ( 1 Sector, 32 KB) +T343C 010:827.106 -- Programming range 0x00050000 - 0x00057FFF ( 1 Sector, 32 KB) +T343C 011:178.649 -- Programming range 0x00058000 - 0x0005FFFF ( 1 Sector, 32 KB) +T343C 011:531.062 -- Programming range 0x00060000 - 0x00067FFF ( 1 Sector, 32 KB) +T343C 011:882.079 -- Programming range 0x00068000 - 0x0006FFFF ( 1 Sector, 32 KB) +T343C 012:233.513 -- Programming range 0x00070000 - 0x00077FFF ( 1 Sector, 32 KB) +T343C 012:584.308 -- Programming range 0x00078000 - 0x0007FFFF ( 1 Sector, 32 KB) +T343C 012:935.857 -- Programming range 0x00080000 - 0x00087FFF ( 1 Sector, 32 KB) +T343C 013:287.514 -- Programming range 0x00088000 - 0x0008FFFF ( 1 Sector, 32 KB) +T343C 013:638.897 -- Programming range 0x00090000 - 0x00097FFF ( 1 Sector, 32 KB) +T343C 013:990.770 -- Programming range 0x00098000 - 0x0009FFFF ( 1 Sector, 32 KB) +T343C 014:342.089 -- Programming range 0x000A0000 - 0x000A7FFF ( 1 Sector, 32 KB) +T343C 014:648.880 -- End of flash programming +T343C 014:648.901 -- 0x0000 - 0xFFFF ( 8 Sectors, 64 KoB) +T343C 014:648.907 -- 0x10000 - 0xA7FFF ( 19 Sectors, 608 KoB) +T343C 014:648.914 -- Start of restoring +T343C 014:648.921 -- Restoring RAMCode +T343C 014:708.791 -- Restoring target memory +T343C 014:817.366 -- Restore target +T343C 014:817.386 -- Restore memory +T343C 014:817.393 -- Restoring CPU registers +T343C 014:817.409 -- End of restoring +T343C 014:817.438 -- Bank 1 @ 0x00000000: 2 ranges affected (688128 bytes) +T343C 014:817.450 -- Total: 10.708s (Prepare: 0.238s, Compare: 0.024s, Erase: 2.990s, Program & Verify: 7.339s, Restore: 0.114s) +T343C 014:817.461 -- Program & Verify speed: 91 KiB/s +T343C 014:828.249 CPU_WriteMem(4 bytes @ 0xE000EDF0) +T343C 014:829.026 CPU_WriteMem(4 bytes @ 0xE000EDFC) +T343C 014:829.925 Reset: Halt core after reset via DEMCR.VC_CORERESET. +T343C 014:831.086 Reset: Reset device via AIRCR.SYSRESETREQ. +T343C 014:831.095 CPU_WriteMem(4 bytes @ 0xE000ED0C) +T343C 014:885.598 CPU_ReadMem(4 bytes @ 0xE000EDF0) +T343C 014:886.340 CPU_ReadMem(4 bytes @ 0xE000EDF0) +T343C 014:887.084 CPU_WriteMem(4 bytes @ 0xE000EDF0) +T343C 014:887.906 CPU_WriteMem(4 bytes @ 0xE000EDFC) +T343C 014:894.434 CPU_ReadMem(4 bytes @ 0xE000EDF0) +T343C 014:900.562 CPU_WriteMem(4 bytes @ 0xE0002000) +T343C 014:901.301 CPU_ReadMem(4 bytes @ 0xE000EDFC) +T343C 014:902.069 CPU_ReadMem(4 bytes @ 0xE0001000) +T343C 014:902.783 - 14234.233ms +T343C 014:904.457 JLINK_HasError() +T343C 014:904.481 JLINK_ReadReg(R15 (PC)) +T343C 014:904.493 - 0.013ms returns 0x00001300 +T343C 014:904.499 JLINK_ReadReg(XPSR) +T343C 014:904.504 - 0.007ms returns 0x01000000 +T343C 015:005.479 JLINK_ReadMemEx(0x00001200, 0x3C Bytes, Flags = 0x02000000) +T343C 015:005.504 -- Read from flash cache (60 bytes @ 0x00001200) +T343C 015:005.511 Data: 0A D1 13 6A FF 26 5E 70 00 68 02 28 10 6A 08 BF ... +T343C 015:005.516 - 0.039ms returns 60 (0x3C) +T343C 015:005.522 JLINK_ReadMemEx(0x00001200, 0x2 Bytes, Flags = 0x02000000) +T343C 015:005.527 -- Read from flash cache (2 bytes @ 0x00001200) +T343C 015:005.533 Data: 0A D1 +T343C 015:005.539 - 0.018ms returns 2 (0x2) +T343C 015:005.544 JLINK_ReadMemEx(0x00001202, 0x2 Bytes, Flags = 0x02000000) +T343C 015:005.549 -- Read from flash cache (2 bytes @ 0x00001202) +T343C 015:005.555 Data: 13 6A +T343C 015:005.560 - 0.018ms returns 2 (0x2) +T343C 015:005.566 JLINK_ReadMemEx(0x00001202, 0x2 Bytes, Flags = 0x02000000) +T343C 015:005.571 -- Read from flash cache (2 bytes @ 0x00001202) +T343C 015:005.577 Data: 13 6A +T343C 015:005.583 - 0.018ms returns 2 (0x2) +T343C 015:005.587 JLINK_ReadMemEx(0x00001204, 0x3C Bytes, Flags = 0x02000000) +T343C 015:005.592 -- Read from flash cache (60 bytes @ 0x00001204) +T343C 015:005.671 Data: FF 26 5E 70 00 68 02 28 10 6A 08 BF 47 F0 10 07 ... +T343C 015:005.677 - 0.091ms returns 60 (0x3C) +T343C 015:005.683 JLINK_ReadMemEx(0x00001204, 0x2 Bytes, Flags = 0x02000000) +T343C 015:005.688 -- Read from flash cache (2 bytes @ 0x00001204) +T343C 015:005.693 Data: FF 26 +T343C 015:005.699 - 0.018ms returns 2 (0x2) +T343C 015:005.705 JLINK_ReadMemEx(0x00001204, 0x3C Bytes, Flags = 0x02000000) +T343C 015:005.709 -- Read from flash cache (60 bytes @ 0x00001204) +T343C 015:005.716 Data: FF 26 5E 70 00 68 02 28 10 6A 08 BF 47 F0 10 07 ... +T343C 015:005.721 - 0.018ms returns 60 (0x3C) +T343C 015:005.726 JLINK_ReadMemEx(0x00001204, 0x2 Bytes, Flags = 0x02000000) +T343C 015:005.730 -- Read from flash cache (2 bytes @ 0x00001204) +T343C 015:005.736 Data: FF 26 +T343C 015:005.742 - 0.017ms returns 2 (0x2) +T343C 015:005.746 JLINK_ReadMemEx(0x00001206, 0x2 Bytes, Flags = 0x02000000) +T343C 015:005.751 -- Read from flash cache (2 bytes @ 0x00001206) +T343C 015:005.756 Data: 5E 70 +T343C 015:005.762 - 0.017ms returns 2 (0x2) +T343C 015:005.767 JLINK_ReadMemEx(0x00001206, 0x2 Bytes, Flags = 0x02000000) +T343C 015:005.771 -- Read from flash cache (2 bytes @ 0x00001206) +T343C 015:005.777 Data: 5E 70 +T343C 015:005.783 - 0.017ms returns 2 (0x2) +T343C 015:005.788 JLINK_ReadMemEx(0x00001208, 0x3C Bytes, Flags = 0x02000000) +T343C 015:005.792 -- Read from flash cache (60 bytes @ 0x00001208) +T343C 015:005.798 Data: 00 68 02 28 10 6A 08 BF 47 F0 10 07 C7 71 17 E0 ... +T343C 015:005.804 - 0.018ms returns 60 (0x3C) +T343C 015:005.809 JLINK_ReadMemEx(0x00001208, 0x2 Bytes, Flags = 0x02000000) +T343C 015:005.813 -- Read from flash cache (2 bytes @ 0x00001208) +T343C 015:005.819 Data: 00 68 +T343C 015:005.824 - 0.017ms returns 2 (0x2) +T343C 015:005.829 JLINK_ReadMemEx(0x00001208, 0x3C Bytes, Flags = 0x02000000) +T343C 015:005.834 -- Read from flash cache (60 bytes @ 0x00001208) +T343C 015:005.840 Data: 00 68 02 28 10 6A 08 BF 47 F0 10 07 C7 71 17 E0 ... +T343C 015:005.846 - 0.018ms returns 60 (0x3C) +T343C 015:005.850 JLINK_ReadMemEx(0x00001208, 0x2 Bytes, Flags = 0x02000000) +T343C 015:005.855 -- Read from flash cache (2 bytes @ 0x00001208) +T343C 015:005.860 Data: 00 68 +T343C 015:005.866 - 0.017ms returns 2 (0x2) +T343C 015:005.871 JLINK_ReadMemEx(0x0000120A, 0x2 Bytes, Flags = 0x02000000) +T343C 015:005.875 -- Read from flash cache (2 bytes @ 0x0000120A) +T343C 015:005.881 Data: 02 28 +T343C 015:005.886 - 0.017ms returns 2 (0x2) +T343C 015:005.892 JLINK_ReadMemEx(0x0000120A, 0x2 Bytes, Flags = 0x02000000) +T343C 015:005.896 -- Read from flash cache (2 bytes @ 0x0000120A) +T343C 015:005.902 Data: 02 28 +T343C 015:005.908 - 0.018ms returns 2 (0x2) +T343C 015:005.913 JLINK_ReadMemEx(0x0000120C, 0x3C Bytes, Flags = 0x02000000) +T343C 015:005.917 -- Read from flash cache (60 bytes @ 0x0000120C) +T343C 015:005.923 Data: 10 6A 08 BF 47 F0 10 07 C7 71 17 E0 13 6A DF 71 ... +T343C 015:005.929 - 0.018ms returns 60 (0x3C) +T343C 015:005.934 JLINK_ReadMemEx(0x0000120C, 0x2 Bytes, Flags = 0x02000000) +T343C 015:005.938 -- Read from flash cache (2 bytes @ 0x0000120C) +T343C 015:005.944 Data: 10 6A +T343C 015:005.949 - 0.017ms returns 2 (0x2) +T343C 015:005.954 JLINK_ReadMemEx(0x0000120C, 0x3C Bytes, Flags = 0x02000000) +T343C 015:005.959 -- Read from flash cache (60 bytes @ 0x0000120C) +T343C 015:005.965 Data: 10 6A 08 BF 47 F0 10 07 C7 71 17 E0 13 6A DF 71 ... +T343C 015:005.971 - 0.018ms returns 60 (0x3C) +T343C 015:005.975 JLINK_ReadMemEx(0x0000120C, 0x2 Bytes, Flags = 0x02000000) +T343C 015:005.980 -- Read from flash cache (2 bytes @ 0x0000120C) +T343C 015:005.986 Data: 10 6A +T343C 015:005.991 - 0.017ms returns 2 (0x2) +T343C 015:005.996 JLINK_ReadMemEx(0x0000120E, 0x2 Bytes, Flags = 0x02000000) +T343C 015:006.000 -- Read from flash cache (2 bytes @ 0x0000120E) +T343C 015:006.006 Data: 08 BF +T343C 015:006.012 - 0.017ms returns 2 (0x2) +T343C 015:006.017 JLINK_ReadMemEx(0x0000120E, 0x2 Bytes, Flags = 0x02000000) +T343C 015:006.023 -- Read from flash cache (2 bytes @ 0x0000120E) +T343C 015:006.030 Data: 08 BF +T343C 015:006.036 - 0.020ms returns 2 (0x2) +T343C 015:006.040 JLINK_ReadMemEx(0x00001210, 0x3C Bytes, Flags = 0x02000000) +T343C 015:006.045 -- Read from flash cache (60 bytes @ 0x00001210) +T343C 015:006.051 Data: 47 F0 10 07 C7 71 17 E0 13 6A DF 71 C0 68 13 6A ... +T343C 015:006.057 - 0.018ms returns 60 (0x3C) +T343C 015:006.067 JLINK_ReadMemEx(0x00001210, 0x2 Bytes, Flags = 0x02000000) +T343C 015:006.072 -- Read from flash cache (2 bytes @ 0x00001210) +T343C 015:006.078 Data: 47 F0 +T343C 015:006.083 - 0.018ms returns 2 (0x2) +T343C 015:006.089 JLINK_ReadMemEx(0x00001210, 0x3C Bytes, Flags = 0x02000000) +T343C 015:006.093 -- Read from flash cache (60 bytes @ 0x00001210) +T343C 015:006.100 Data: 47 F0 10 07 C7 71 17 E0 13 6A DF 71 C0 68 13 6A ... +T343C 015:006.105 - 0.018ms returns 60 (0x3C) +T343C 015:006.110 JLINK_ReadMemEx(0x00001210, 0x2 Bytes, Flags = 0x02000000) +T343C 015:006.115 -- Read from flash cache (2 bytes @ 0x00001210) +T343C 015:006.120 Data: 47 F0 +T343C 015:006.126 - 0.017ms returns 2 (0x2) +T343C 015:006.131 JLINK_ReadMemEx(0x00001212, 0x2 Bytes, Flags = 0x02000000) +T343C 015:006.135 -- Read from flash cache (2 bytes @ 0x00001212) +T343C 015:006.141 Data: 10 07 +T343C 015:006.147 - 0.017ms returns 2 (0x2) +T343C 015:006.152 JLINK_ReadMemEx(0x00001214, 0x3C Bytes, Flags = 0x02000000) +T343C 015:006.156 -- Read from flash cache (60 bytes @ 0x00001214) +T343C 015:006.162 Data: C7 71 17 E0 13 6A DF 71 C0 68 13 6A 87 78 5F 70 ... +T343C 015:006.168 - 0.018ms returns 60 (0x3C) +T343C 015:006.172 JLINK_ReadMemEx(0x00001214, 0x2 Bytes, Flags = 0x02000000) +T343C 015:006.177 -- Read from flash cache (2 bytes @ 0x00001214) +T343C 015:006.182 Data: C7 71 +T343C 015:006.188 - 0.017ms returns 2 (0x2) +T343C 015:006.193 JLINK_ReadMemEx(0x00001216, 0x2 Bytes, Flags = 0x02000000) +T343C 015:006.197 -- Read from flash cache (2 bytes @ 0x00001216) +T343C 015:006.203 Data: 17 E0 +T343C 015:006.208 - 0.017ms returns 2 (0x2) +T343C 015:006.213 JLINK_ReadMemEx(0x00001216, 0x2 Bytes, Flags = 0x02000000) +T343C 015:006.218 -- Read from flash cache (2 bytes @ 0x00001216) +T343C 015:006.223 Data: 17 E0 +T343C 015:006.229 - 0.017ms returns 2 (0x2) +T343C 015:006.234 JLINK_ReadMemEx(0x00001218, 0x3C Bytes, Flags = 0x02000000) +T343C 015:006.238 -- Read from flash cache (60 bytes @ 0x00001218) +T343C 015:006.244 Data: 13 6A DF 71 C0 68 13 6A 87 78 5F 70 47 78 1E 78 ... +T343C 015:006.250 - 0.018ms returns 60 (0x3C) +T343C 015:006.255 JLINK_ReadMemEx(0x00001218, 0x2 Bytes, Flags = 0x02000000) +T343C 015:006.259 -- Read from flash cache (2 bytes @ 0x00001218) +T343C 015:006.265 Data: 13 6A +T343C 015:006.270 - 0.017ms returns 2 (0x2) +T343C 015:006.275 JLINK_ReadMemEx(0x00001218, 0x3C Bytes, Flags = 0x02000000) +T343C 015:006.280 -- Read from flash cache (60 bytes @ 0x00001218) +T343C 015:006.286 Data: 13 6A DF 71 C0 68 13 6A 87 78 5F 70 47 78 1E 78 ... +T343C 015:006.291 - 0.018ms returns 60 (0x3C) +T343C 015:006.296 JLINK_ReadMemEx(0x00001218, 0x2 Bytes, Flags = 0x02000000) +T343C 015:006.301 -- Read from flash cache (2 bytes @ 0x00001218) +T343C 015:006.306 Data: 13 6A +T343C 015:006.312 - 0.017ms returns 2 (0x2) +T343C 015:006.316 JLINK_ReadMemEx(0x0000121A, 0x2 Bytes, Flags = 0x02000000) +T343C 015:006.321 -- Read from flash cache (2 bytes @ 0x0000121A) +T343C 015:006.327 Data: DF 71 +T343C 015:006.332 - 0.017ms returns 2 (0x2) +T343C 015:006.337 JLINK_ReadMemEx(0x0000121A, 0x2 Bytes, Flags = 0x02000000) +T343C 015:006.341 -- Read from flash cache (2 bytes @ 0x0000121A) +T343C 015:006.347 Data: DF 71 +T343C 015:006.353 - 0.017ms returns 2 (0x2) +T343C 015:006.357 JLINK_ReadMemEx(0x0000121C, 0x3C Bytes, Flags = 0x02000000) +T343C 015:006.362 -- Read from flash cache (60 bytes @ 0x0000121C) +T343C 015:006.368 Data: C0 68 13 6A 87 78 5F 70 47 78 1E 78 07 F0 03 07 ... +T343C 015:006.373 - 0.018ms returns 60 (0x3C) +T343C 015:006.379 JLINK_ReadMemEx(0x0000121C, 0x2 Bytes, Flags = 0x02000000) +T343C 015:006.384 -- Read from flash cache (2 bytes @ 0x0000121C) +T343C 015:006.390 Data: C0 68 +T343C 015:006.396 - 0.018ms returns 2 (0x2) +T343C 015:006.401 JLINK_ReadMemEx(0x0000121C, 0x3C Bytes, Flags = 0x02000000) +T343C 015:006.405 -- Read from flash cache (60 bytes @ 0x0000121C) +T343C 015:006.411 Data: C0 68 13 6A 87 78 5F 70 47 78 1E 78 07 F0 03 07 ... +T343C 015:006.417 - 0.018ms returns 60 (0x3C) +T343C 015:006.421 JLINK_ReadMemEx(0x0000121C, 0x2 Bytes, Flags = 0x02000000) +T343C 015:006.426 -- Read from flash cache (2 bytes @ 0x0000121C) +T343C 015:006.431 Data: C0 68 +T343C 015:006.437 - 0.017ms returns 2 (0x2) +T343C 015:006.442 JLINK_ReadMemEx(0x0000121E, 0x2 Bytes, Flags = 0x02000000) +T343C 015:006.446 -- Read from flash cache (2 bytes @ 0x0000121E) +T343C 015:006.452 Data: 13 6A +T343C 015:006.457 - 0.017ms returns 2 (0x2) +T343C 015:006.462 JLINK_ReadMemEx(0x0000121E, 0x2 Bytes, Flags = 0x02000000) +T343C 015:006.467 -- Read from flash cache (2 bytes @ 0x0000121E) +T343C 015:006.472 Data: 13 6A +T343C 015:006.478 - 0.017ms returns 2 (0x2) +T343C 015:006.483 JLINK_ReadMemEx(0x00001220, 0x3C Bytes, Flags = 0x02000000) +T343C 015:006.487 -- Read from flash cache (60 bytes @ 0x00001220) +T343C 015:006.493 Data: 87 78 5F 70 47 78 1E 78 07 F0 03 07 06 F0 FC 06 ... +T343C 015:006.499 - 0.018ms returns 60 (0x3C) +T343C 015:006.503 JLINK_ReadMemEx(0x00001220, 0x2 Bytes, Flags = 0x02000000) +T343C 015:006.508 -- Read from flash cache (2 bytes @ 0x00001220) +T343C 015:006.513 Data: 87 78 +T343C 015:006.519 - 0.017ms returns 2 (0x2) +T343C 015:006.524 JLINK_ReadMemEx(0x00001220, 0x3C Bytes, Flags = 0x02000000) +T343C 015:006.528 -- Read from flash cache (60 bytes @ 0x00001220) +T343C 015:006.535 Data: 87 78 5F 70 47 78 1E 78 07 F0 03 07 06 F0 FC 06 ... +T343C 015:006.540 - 0.018ms returns 60 (0x3C) +T343C 015:006.545 JLINK_ReadMemEx(0x00001220, 0x2 Bytes, Flags = 0x02000000) +T343C 015:006.549 -- Read from flash cache (2 bytes @ 0x00001220) +T343C 015:006.555 Data: 87 78 +T343C 015:006.560 - 0.017ms returns 2 (0x2) +T343C 015:006.565 JLINK_ReadMemEx(0x00001222, 0x2 Bytes, Flags = 0x02000000) +T343C 015:006.569 -- Read from flash cache (2 bytes @ 0x00001222) +T343C 015:006.575 Data: 5F 70 +T343C 015:006.581 - 0.017ms returns 2 (0x2) +T343C 015:006.585 JLINK_ReadMemEx(0x00001222, 0x2 Bytes, Flags = 0x02000000) +T343C 015:006.590 -- Read from flash cache (2 bytes @ 0x00001222) +T343C 015:006.596 Data: 5F 70 +T343C 015:006.601 - 0.017ms returns 2 (0x2) +T343C 015:006.606 JLINK_ReadMemEx(0x00001224, 0x3C Bytes, Flags = 0x02000000) +T343C 015:006.610 -- Read from flash cache (60 bytes @ 0x00001224) +T343C 015:006.617 Data: 47 78 1E 78 07 F0 03 07 06 F0 FC 06 37 44 1F 70 ... +T343C 015:006.623 - 0.019ms returns 60 (0x3C) +T343C 015:006.628 JLINK_ReadMemEx(0x00001224, 0x2 Bytes, Flags = 0x02000000) +T343C 015:006.632 -- Read from flash cache (2 bytes @ 0x00001224) +T343C 015:006.638 Data: 47 78 +T343C 015:006.644 - 0.018ms returns 2 (0x2) +T343C 015:006.649 JLINK_ReadMemEx(0x00001224, 0x3C Bytes, Flags = 0x02000000) +T343C 015:006.653 -- Read from flash cache (60 bytes @ 0x00001224) +T343C 015:006.660 Data: 47 78 1E 78 07 F0 03 07 06 F0 FC 06 37 44 1F 70 ... +T343C 015:006.665 - 0.018ms returns 60 (0x3C) +T343C 015:006.670 JLINK_ReadMemEx(0x00001224, 0x2 Bytes, Flags = 0x02000000) +T343C 015:006.674 -- Read from flash cache (2 bytes @ 0x00001224) +T343C 015:006.680 Data: 47 78 +T343C 015:006.685 - 0.017ms returns 2 (0x2) +T343C 015:006.690 JLINK_ReadMemEx(0x00001226, 0x2 Bytes, Flags = 0x02000000) +T343C 015:006.694 -- Read from flash cache (2 bytes @ 0x00001226) +T343C 015:006.700 Data: 1E 78 +T343C 015:006.706 - 0.017ms returns 2 (0x2) +T343C 015:006.711 JLINK_ReadMemEx(0x00001226, 0x2 Bytes, Flags = 0x02000000) +T343C 015:006.715 -- Read from flash cache (2 bytes @ 0x00001226) +T343C 015:006.721 Data: 1E 78 +T343C 015:006.726 - 0.017ms returns 2 (0x2) +T343C 015:006.732 JLINK_ReadMemEx(0x00001228, 0x3C Bytes, Flags = 0x02000000) +T343C 015:006.737 -- Read from flash cache (60 bytes @ 0x00001228) +T343C 015:006.743 Data: 07 F0 03 07 06 F0 FC 06 37 44 1F 70 C7 78 9F 74 ... +T343C 015:006.748 - 0.018ms returns 60 (0x3C) +T343C 015:006.753 JLINK_ReadMemEx(0x00001228, 0x2 Bytes, Flags = 0x02000000) +T343C 015:006.758 -- Read from flash cache (2 bytes @ 0x00001228) +T343C 015:006.763 Data: 07 F0 +T343C 015:006.769 - 0.017ms returns 2 (0x2) +T343C 015:006.774 JLINK_ReadMemEx(0x00001228, 0x3C Bytes, Flags = 0x02000000) +T343C 015:006.778 -- Read from flash cache (60 bytes @ 0x00001228) +T343C 015:006.784 Data: 07 F0 03 07 06 F0 FC 06 37 44 1F 70 C7 78 9F 74 ... +T343C 015:006.790 - 0.018ms returns 60 (0x3C) +T343C 015:006.795 JLINK_ReadMemEx(0x00001228, 0x2 Bytes, Flags = 0x02000000) +T343C 015:006.799 -- Read from flash cache (2 bytes @ 0x00001228) +T343C 015:006.805 Data: 07 F0 +T343C 015:006.810 - 0.017ms returns 2 (0x2) +T343C 015:006.815 JLINK_ReadMemEx(0x0000122A, 0x2 Bytes, Flags = 0x02000000) +T343C 015:006.819 -- Read from flash cache (2 bytes @ 0x0000122A) +T343C 015:006.825 Data: 03 07 +T343C 015:006.830 - 0.017ms returns 2 (0x2) +T343C 015:006.835 JLINK_ReadMemEx(0x0000122C, 0x3C Bytes, Flags = 0x02000000) +T343C 015:006.840 -- Read from flash cache (60 bytes @ 0x0000122C) +T343C 015:006.846 Data: 06 F0 FC 06 37 44 1F 70 C7 78 9F 74 DF 79 00 78 ... +T343C 015:006.852 - 0.018ms returns 60 (0x3C) +T343C 015:006.856 JLINK_ReadMemEx(0x0000122C, 0x2 Bytes, Flags = 0x02000000) +T343C 015:006.861 -- Read from flash cache (2 bytes @ 0x0000122C) +T343C 015:006.866 Data: 06 F0 +T343C 015:006.872 - 0.017ms returns 2 (0x2) +T343C 015:006.877 JLINK_ReadMemEx(0x0000122E, 0x2 Bytes, Flags = 0x02000000) +T343C 015:006.881 -- Read from flash cache (2 bytes @ 0x0000122E) +T343C 015:006.887 Data: FC 06 +T343C 015:006.892 - 0.017ms returns 2 (0x2) +T343C 015:006.897 JLINK_ReadMemEx(0x00001230, 0x3C Bytes, Flags = 0x02000000) +T343C 015:006.902 -- Read from flash cache (60 bytes @ 0x00001230) +T343C 015:006.908 Data: 37 44 1F 70 C7 78 9F 74 DF 79 00 78 07 F0 A3 07 ... +T343C 015:006.913 - 0.018ms returns 60 (0x3C) +T343C 015:006.918 JLINK_ReadMemEx(0x00001230, 0x2 Bytes, Flags = 0x02000000) +T343C 015:006.923 -- Read from flash cache (2 bytes @ 0x00001230) +T343C 015:006.928 Data: 37 44 +T343C 015:006.934 - 0.017ms returns 2 (0x2) +T343C 015:006.939 JLINK_ReadMemEx(0x00001232, 0x2 Bytes, Flags = 0x02000000) +T343C 015:006.943 -- Read from flash cache (2 bytes @ 0x00001232) +T343C 015:006.949 Data: 1F 70 +T343C 015:006.954 - 0.017ms returns 2 (0x2) +T343C 015:006.959 JLINK_ReadMemEx(0x00001232, 0x2 Bytes, Flags = 0x02000000) +T343C 015:006.964 -- Read from flash cache (2 bytes @ 0x00001232) +T343C 015:006.969 Data: 1F 70 +T343C 015:006.975 - 0.017ms returns 2 (0x2) +T343C 015:006.980 JLINK_ReadMemEx(0x00001234, 0x3C Bytes, Flags = 0x02000000) +T343C 015:006.984 -- Read from flash cache (60 bytes @ 0x00001234) +T343C 015:006.990 Data: C7 78 9F 74 DF 79 00 78 07 F0 A3 07 00 F0 5C 00 ... +T343C 015:006.996 - 0.018ms returns 60 (0x3C) +T343C 015:007.001 JLINK_ReadMemEx(0x00001234, 0x2 Bytes, Flags = 0x02000000) +T343C 015:007.005 -- Read from flash cache (2 bytes @ 0x00001234) +T343C 015:007.011 Data: C7 78 +T343C 015:007.016 - 0.017ms returns 2 (0x2) +T343C 015:007.021 JLINK_ReadMemEx(0x00001234, 0x3C Bytes, Flags = 0x02000000) +T343C 015:007.026 -- Read from flash cache (60 bytes @ 0x00001234) +T343C 015:007.032 Data: C7 78 9F 74 DF 79 00 78 07 F0 A3 07 00 F0 5C 00 ... +T343C 015:007.038 - 0.018ms returns 60 (0x3C) +T343C 015:007.042 JLINK_ReadMemEx(0x00001234, 0x2 Bytes, Flags = 0x02000000) +T343C 015:007.047 -- Read from flash cache (2 bytes @ 0x00001234) +T343C 015:007.053 Data: C7 78 +T343C 015:007.058 - 0.017ms returns 2 (0x2) +T343C 015:007.063 JLINK_ReadMemEx(0x00001236, 0x2 Bytes, Flags = 0x02000000) +T343C 015:007.067 -- Read from flash cache (2 bytes @ 0x00001236) +T343C 015:007.073 Data: 9F 74 +T343C 015:007.080 - 0.019ms returns 2 (0x2) +T343C 015:007.085 JLINK_ReadMemEx(0x00001236, 0x2 Bytes, Flags = 0x02000000) +T343C 015:007.090 -- Read from flash cache (2 bytes @ 0x00001236) +T343C 015:007.095 Data: 9F 74 +T343C 015:007.101 - 0.018ms returns 2 (0x2) +T343C 015:007.106 JLINK_ReadMemEx(0x00001238, 0x3C Bytes, Flags = 0x02000000) +T343C 015:007.110 -- Read from flash cache (60 bytes @ 0x00001238) +T343C 015:007.116 Data: DF 79 00 78 07 F0 A3 07 00 F0 5C 00 38 44 D8 71 ... +T343C 015:007.122 - 0.018ms returns 60 (0x3C) +T343C 015:007.126 JLINK_ReadMemEx(0x00001238, 0x2 Bytes, Flags = 0x02000000) +T343C 015:007.131 -- Read from flash cache (2 bytes @ 0x00001238) +T343C 015:007.136 Data: DF 79 +T343C 015:007.142 - 0.017ms returns 2 (0x2) +T343C 015:007.147 JLINK_ReadMemEx(0x00001238, 0x3C Bytes, Flags = 0x02000000) +T343C 015:007.152 -- Read from flash cache (60 bytes @ 0x00001238) +T343C 015:007.158 Data: DF 79 00 78 07 F0 A3 07 00 F0 5C 00 38 44 D8 71 ... +T343C 015:007.164 - 0.018ms returns 60 (0x3C) +T343C 015:007.168 JLINK_ReadMemEx(0x00001238, 0x2 Bytes, Flags = 0x02000000) +T343C 015:007.173 -- Read from flash cache (2 bytes @ 0x00001238) +T343C 015:007.178 Data: DF 79 +T343C 015:007.184 - 0.017ms returns 2 (0x2) +T343C 015:007.189 JLINK_ReadMemEx(0x0000123A, 0x2 Bytes, Flags = 0x02000000) +T343C 015:007.193 -- Read from flash cache (2 bytes @ 0x0000123A) +T343C 015:007.199 Data: 00 78 +T343C 015:007.204 - 0.017ms returns 2 (0x2) +T343C 015:007.209 JLINK_ReadMemEx(0x0000123A, 0x2 Bytes, Flags = 0x02000000) +T343C 015:007.213 -- Read from flash cache (2 bytes @ 0x0000123A) +T343C 015:007.219 Data: 00 78 +T343C 015:007.225 - 0.017ms returns 2 (0x2) +T343C 015:007.229 JLINK_ReadMemEx(0x0000123C, 0x3C Bytes, Flags = 0x02000000) +T343C 015:007.234 -- Read from flash cache (60 bytes @ 0x0000123C) +T343C 015:007.240 Data: 07 F0 A3 07 00 F0 5C 00 38 44 D8 71 00 20 D3 69 ... +T343C 015:007.246 - 0.018ms returns 60 (0x3C) +T343C 015:007.250 JLINK_ReadMemEx(0x0000123C, 0x2 Bytes, Flags = 0x02000000) +T343C 015:007.255 -- Read from flash cache (2 bytes @ 0x0000123C) +T343C 015:007.260 Data: 07 F0 +T343C 015:007.266 - 0.017ms returns 2 (0x2) +T343C 015:007.271 JLINK_ReadMemEx(0x0000123C, 0x3C Bytes, Flags = 0x02000000) +T343C 015:007.275 -- Read from flash cache (60 bytes @ 0x0000123C) +T343C 015:007.281 Data: 07 F0 A3 07 00 F0 5C 00 38 44 D8 71 00 20 D3 69 ... +T343C 015:007.287 - 0.018ms returns 60 (0x3C) +T343C 015:007.291 JLINK_ReadMemEx(0x0000123C, 0x2 Bytes, Flags = 0x02000000) +T343C 015:007.296 -- Read from flash cache (2 bytes @ 0x0000123C) +T343C 015:007.301 Data: 07 F0 +T343C 015:007.307 - 0.017ms returns 2 (0x2) +T343C 015:007.312 JLINK_ReadMemEx(0x0000123E, 0x2 Bytes, Flags = 0x02000000) +T343C 015:007.316 -- Read from flash cache (2 bytes @ 0x0000123E) +T343C 015:007.322 Data: A3 07 +T343C 015:007.327 - 0.017ms returns 2 (0x2) +T343C 015:007.332 JLINK_ReadMemEx(0x00001240, 0x3C Bytes, Flags = 0x02000000) +T343C 015:007.337 -- Read from flash cache (60 bytes @ 0x00001240) +T343C 015:007.343 Data: 00 F0 5C 00 38 44 D8 71 00 20 D3 69 C2 E9 03 00 ... +T343C 015:007.348 - 0.018ms returns 60 (0x3C) +T343C 015:007.353 JLINK_ReadMemEx(0x00001240, 0x2 Bytes, Flags = 0x02000000) +T343C 015:007.357 -- Read from flash cache (2 bytes @ 0x00001240) +T343C 015:007.363 Data: 00 F0 +T343C 015:007.369 - 0.017ms returns 2 (0x2) +T343C 015:007.373 JLINK_ReadMemEx(0x00001242, 0x2 Bytes, Flags = 0x02000000) +T343C 015:007.378 -- Read from flash cache (2 bytes @ 0x00001242) +T343C 015:007.383 Data: 5C 00 +T343C 015:007.389 - 0.017ms returns 2 (0x2) +T343C 015:007.394 JLINK_ReadMemEx(0x00001244, 0x3C Bytes, Flags = 0x02000000) +T343C 015:007.398 -- Read from flash cache (60 bytes @ 0x00001244) +T343C 015:007.404 Data: 38 44 D8 71 00 20 D3 69 C2 E9 03 00 C2 E9 05 00 ... +T343C 015:007.410 - 0.018ms returns 60 (0x3C) +T343C 015:007.415 JLINK_ReadMemEx(0x00001244, 0x2 Bytes, Flags = 0x02000000) +T343C 015:007.419 -- Read from flash cache (2 bytes @ 0x00001244) +T343C 015:007.430 Data: 38 44 +T343C 015:007.436 - 0.023ms returns 2 (0x2) +T343C 015:007.441 JLINK_ReadMemEx(0x00001246, 0x2 Bytes, Flags = 0x02000000) +T343C 015:007.445 -- Read from flash cache (2 bytes @ 0x00001246) +T343C 015:007.451 Data: D8 71 +T343C 015:007.456 - 0.017ms returns 2 (0x2) +T343C 015:007.461 JLINK_ReadMemEx(0x00001246, 0x2 Bytes, Flags = 0x02000000) +T343C 015:007.465 -- Read from flash cache (2 bytes @ 0x00001246) +T343C 015:007.471 Data: D8 71 +T343C 015:007.477 - 0.017ms returns 2 (0x2) +T343C 015:007.482 JLINK_ReadMemEx(0x00001248, 0x3C Bytes, Flags = 0x02000000) +T343C 015:007.486 -- Read from flash cache (60 bytes @ 0x00001248) +T343C 015:007.492 Data: 00 20 D3 69 C2 E9 03 00 C2 E9 05 00 08 6C 5B 69 ... +T343C 015:007.498 - 0.018ms returns 60 (0x3C) +T343C 015:007.502 JLINK_ReadMemEx(0x00001248, 0x2 Bytes, Flags = 0x02000000) +T343C 015:007.507 -- Read from flash cache (2 bytes @ 0x00001248) +T343C 015:007.512 Data: 00 20 +T343C 015:007.518 - 0.017ms returns 2 (0x2) +T343C 015:007.523 JLINK_ReadMemEx(0x00001248, 0x3C Bytes, Flags = 0x02000000) +T343C 015:007.527 -- Read from flash cache (60 bytes @ 0x00001248) +T343C 015:007.533 Data: 00 20 D3 69 C2 E9 03 00 C2 E9 05 00 08 6C 5B 69 ... +T343C 015:007.539 - 0.018ms returns 60 (0x3C) +T343C 015:007.544 JLINK_ReadMemEx(0x00001248, 0x2 Bytes, Flags = 0x02000000) +T343C 015:007.548 -- Read from flash cache (2 bytes @ 0x00001248) +T343C 015:007.554 Data: 00 20 +T343C 015:007.559 - 0.017ms returns 2 (0x2) +T343C 015:007.564 JLINK_ReadMemEx(0x0000124A, 0x2 Bytes, Flags = 0x02000000) +T343C 015:007.568 -- Read from flash cache (2 bytes @ 0x0000124A) +T343C 015:007.574 Data: D3 69 +T343C 015:007.580 - 0.017ms returns 2 (0x2) +T343C 015:007.585 JLINK_ReadMemEx(0x0000124A, 0x2 Bytes, Flags = 0x02000000) +T343C 015:007.589 -- Read from flash cache (2 bytes @ 0x0000124A) +T343C 015:007.595 Data: D3 69 +T343C 015:007.600 - 0.017ms returns 2 (0x2) +T343C 015:007.605 JLINK_ReadMemEx(0x0000124C, 0x3C Bytes, Flags = 0x02000000) +T343C 015:007.609 -- Read from flash cache (60 bytes @ 0x0000124C) +T343C 015:007.616 Data: C2 E9 03 00 C2 E9 05 00 08 6C 5B 69 01 78 58 F8 ... +T343C 015:007.622 - 0.018ms returns 60 (0x3C) +T343C 015:007.626 JLINK_ReadMemEx(0x0000124C, 0x2 Bytes, Flags = 0x02000000) +T343C 015:007.631 -- Read from flash cache (2 bytes @ 0x0000124C) +T343C 015:007.637 Data: C2 E9 +T343C 015:007.642 - 0.017ms returns 2 (0x2) +T343C 015:007.649 JLINK_ReadMemEx(0x0000124C, 0x3C Bytes, Flags = 0x02000000) +T343C 015:007.654 -- Read from flash cache (60 bytes @ 0x0000124C) +T343C 015:007.660 Data: C2 E9 03 00 C2 E9 05 00 08 6C 5B 69 01 78 58 F8 ... +T343C 015:007.665 - 0.018ms returns 60 (0x3C) +T343C 015:007.671 JLINK_ReadMemEx(0x0000124C, 0x2 Bytes, Flags = 0x02000000) +T343C 015:007.675 -- Read from flash cache (2 bytes @ 0x0000124C) +T343C 015:007.681 Data: C2 E9 +T343C 015:007.687 - 0.017ms returns 2 (0x2) +T343C 015:007.692 JLINK_ReadMemEx(0x0000124E, 0x2 Bytes, Flags = 0x02000000) +T343C 015:007.697 -- Read from flash cache (2 bytes @ 0x0000124E) +T343C 015:007.702 Data: 03 00 +T343C 015:007.708 - 0.017ms returns 2 (0x2) +T343C 015:007.714 JLINK_ReadMemEx(0x00001250, 0x3C Bytes, Flags = 0x02000000) +T343C 015:007.718 -- Read from flash cache (60 bytes @ 0x00001250) +T343C 015:007.724 Data: C2 E9 05 00 08 6C 5B 69 01 78 58 F8 23 70 03 F0 ... +T343C 015:007.730 - 0.018ms returns 60 (0x3C) +T343C 015:007.735 JLINK_ReadMemEx(0x00001250, 0x2 Bytes, Flags = 0x02000000) +T343C 015:007.740 -- Read from flash cache (2 bytes @ 0x00001250) +T343C 015:007.745 Data: C2 E9 +T343C 015:007.751 - 0.017ms returns 2 (0x2) +T343C 015:007.756 JLINK_ReadMemEx(0x00001252, 0x2 Bytes, Flags = 0x02000000) +T343C 015:007.761 -- Read from flash cache (2 bytes @ 0x00001252) +T343C 015:007.766 Data: 05 00 +T343C 015:007.772 - 0.017ms returns 2 (0x2) +T343C 015:007.778 JLINK_ReadMemEx(0x00001254, 0x3C Bytes, Flags = 0x02000000) +T343C 015:007.783 -- Read from flash cache (60 bytes @ 0x00001254) +T343C 015:007.790 Data: 08 6C 5B 69 01 78 58 F8 23 70 03 F0 1F 06 27 F4 ... +T343C 015:007.795 - 0.019ms returns 60 (0x3C) +T343C 015:007.801 JLINK_ReadMemEx(0x00001254, 0x2 Bytes, Flags = 0x02000000) +T343C 015:007.805 -- Read from flash cache (2 bytes @ 0x00001254) +T343C 015:007.811 Data: 08 6C +T343C 015:007.817 - 0.017ms returns 2 (0x2) +T343C 015:007.822 JLINK_ReadMemEx(0x00001256, 0x2 Bytes, Flags = 0x02000000) +T343C 015:007.827 -- Read from flash cache (2 bytes @ 0x00001256) +T343C 015:007.832 Data: 5B 69 +T343C 015:007.838 - 0.017ms returns 2 (0x2) +T343C 015:007.844 JLINK_ReadMemEx(0x00001256, 0x2 Bytes, Flags = 0x02000000) +T343C 015:007.848 -- Read from flash cache (2 bytes @ 0x00001256) +T343C 015:007.854 Data: 5B 69 +T343C 015:007.859 - 0.017ms returns 2 (0x2) +T343C 015:007.865 JLINK_ReadMemEx(0x00001258, 0x3C Bytes, Flags = 0x02000000) +T343C 015:007.869 -- Read from flash cache (60 bytes @ 0x00001258) +T343C 015:007.875 Data: 01 78 58 F8 23 70 03 F0 1F 06 27 F4 80 37 48 F8 ... +T343C 015:007.881 - 0.018ms returns 60 (0x3C) +T343C 015:007.886 JLINK_ReadMemEx(0x00001258, 0x2 Bytes, Flags = 0x02000000) +T343C 015:007.891 -- Read from flash cache (2 bytes @ 0x00001258) +T343C 015:007.896 Data: 01 78 +T343C 015:007.902 - 0.017ms returns 2 (0x2) +T343C 015:007.908 JLINK_ReadMemEx(0x00001258, 0x3C Bytes, Flags = 0x02000000) +T343C 015:007.912 -- Read from flash cache (60 bytes @ 0x00001258) +T343C 015:007.918 Data: 01 78 58 F8 23 70 03 F0 1F 06 27 F4 80 37 48 F8 ... +T343C 015:007.924 - 0.018ms returns 60 (0x3C) +T343C 015:007.929 JLINK_ReadMemEx(0x00001258, 0x2 Bytes, Flags = 0x02000000) +T343C 015:007.934 -- Read from flash cache (2 bytes @ 0x00001258) +T343C 015:007.940 Data: 01 78 +T343C 015:007.945 - 0.017ms returns 2 (0x2) +T343C 015:007.951 JLINK_ReadMemEx(0x0000125A, 0x2 Bytes, Flags = 0x02000000) +T343C 015:007.955 -- Read from flash cache (2 bytes @ 0x0000125A) +T343C 015:007.961 Data: 58 F8 +T343C 015:007.966 - 0.017ms returns 2 (0x2) +T343C 015:007.972 JLINK_ReadMemEx(0x0000125A, 0x2 Bytes, Flags = 0x02000000) +T343C 015:007.976 -- Read from flash cache (2 bytes @ 0x0000125A) +T343C 015:007.982 Data: 58 F8 +T343C 015:007.988 - 0.017ms returns 2 (0x2) +T343C 015:007.993 JLINK_ReadMemEx(0x0000125C, 0x3C Bytes, Flags = 0x02000000) +T343C 015:007.998 -- Read from flash cache (60 bytes @ 0x0000125C) +T343C 015:008.004 Data: 23 70 03 F0 1F 06 27 F4 80 37 48 F8 23 70 01 27 ... +T343C 015:008.009 - 0.018ms returns 60 (0x3C) +T343C 015:008.015 JLINK_ReadMemEx(0x0000125C, 0x2 Bytes, Flags = 0x02000000) +T343C 015:008.019 -- Read from flash cache (2 bytes @ 0x0000125C) +T343C 015:008.025 Data: 23 70 +T343C 015:008.030 - 0.017ms returns 2 (0x2) +T343C 015:008.036 JLINK_ReadMemEx(0x0000125E, 0x2 Bytes, Flags = 0x02000000) +T343C 015:008.040 -- Read from flash cache (2 bytes @ 0x0000125E) +T343C 015:008.046 Data: 03 F0 +T343C 015:008.052 - 0.017ms returns 2 (0x2) +T343C 015:008.057 JLINK_ReadMemEx(0x00001260, 0x3C Bytes, Flags = 0x02000000) +T343C 015:008.062 -- Read from flash cache (60 bytes @ 0x00001260) +T343C 015:008.068 Data: 1F 06 27 F4 80 37 48 F8 23 70 01 27 07 FA 06 F5 ... +T343C 015:008.073 - 0.018ms returns 60 (0x3C) +T343C 015:008.079 JLINK_ReadMemEx(0x00001260, 0x2 Bytes, Flags = 0x02000000) +T343C 015:008.083 -- Read from flash cache (2 bytes @ 0x00001260) +T343C 015:008.089 Data: 1F 06 +T343C 015:008.095 - 0.017ms returns 2 (0x2) +T343C 015:008.100 JLINK_ReadMemEx(0x00001262, 0x2 Bytes, Flags = 0x02000000) +T343C 015:008.105 -- Read from flash cache (2 bytes @ 0x00001262) +T343C 015:008.110 Data: 27 F4 +T343C 015:008.116 - 0.017ms returns 2 (0x2) +T343C 015:008.122 JLINK_ReadMemEx(0x00001264, 0x3C Bytes, Flags = 0x02000000) +T343C 015:008.126 -- Read from flash cache (60 bytes @ 0x00001264) +T343C 015:008.132 Data: 80 37 48 F8 23 70 01 27 07 FA 06 F5 5B 09 0C F5 ... +T343C 015:008.138 - 0.018ms returns 60 (0x3C) +T343C 015:008.143 JLINK_ReadMemEx(0x00001264, 0x2 Bytes, Flags = 0x02000000) +T343C 015:008.149 -- Read from flash cache (2 bytes @ 0x00001264) +T343C 015:008.154 Data: 80 37 +T343C 015:008.160 - 0.018ms returns 2 (0x2) +T343C 015:008.165 JLINK_ReadMemEx(0x00001266, 0x2 Bytes, Flags = 0x02000000) +T343C 015:008.170 -- Read from flash cache (2 bytes @ 0x00001266) +T343C 015:008.176 Data: 48 F8 +T343C 015:008.181 - 0.017ms returns 2 (0x2) +T343C 015:008.187 JLINK_ReadMemEx(0x00001268, 0x3C Bytes, Flags = 0x02000000) +T343C 015:008.191 -- Read from flash cache (60 bytes @ 0x00001268) +T343C 015:008.197 Data: 23 70 01 27 07 FA 06 F5 5B 09 0C F5 C0 76 46 F8 ... +T343C 015:008.203 - 0.018ms returns 60 (0x3C) +T343C 015:008.208 JLINK_ReadMemEx(0x00001268, 0x2 Bytes, Flags = 0x02000000) +T343C 015:008.213 -- Read from flash cache (2 bytes @ 0x00001268) +T343C 015:008.218 Data: 23 70 +T343C 015:008.224 - 0.017ms returns 2 (0x2) +T343C 015:008.230 JLINK_ReadMemEx(0x0000126A, 0x2 Bytes, Flags = 0x02000000) +T343C 015:008.234 -- Read from flash cache (2 bytes @ 0x0000126A) +T343C 015:008.240 Data: 01 27 +T343C 015:008.245 - 0.017ms returns 2 (0x2) +T343C 015:008.251 JLINK_ReadMemEx(0x0000126C, 0x3C Bytes, Flags = 0x02000000) +T343C 015:008.255 -- Read from flash cache (60 bytes @ 0x0000126C) +T343C 015:008.261 Data: 07 FA 06 F5 5B 09 0C F5 C0 76 46 F8 23 50 4C F8 ... +T343C 015:008.267 - 0.018ms returns 60 (0x3C) +T343C 015:008.272 JLINK_ReadMemEx(0x0000126C, 0x2 Bytes, Flags = 0x02000000) +T343C 015:008.277 -- Read from flash cache (2 bytes @ 0x0000126C) +T343C 015:008.282 Data: 07 FA +T343C 015:008.288 - 0.017ms returns 2 (0x2) +T343C 015:008.328 JLINK_ReadMemEx(0x0000126C, 0x3C Bytes, Flags = 0x02000000) +T343C 015:008.346 -- Read from flash cache (60 bytes @ 0x0000126C) +T343C 015:008.354 Data: 07 FA 06 F5 5B 09 0C F5 C0 76 46 F8 23 50 4C F8 ... +T343C 015:008.360 - 0.033ms returns 60 (0x3C) +T343C 015:008.365 JLINK_ReadMemEx(0x0000126C, 0x2 Bytes, Flags = 0x02000000) +T343C 015:008.370 -- Read from flash cache (2 bytes @ 0x0000126C) +T343C 015:008.376 Data: 07 FA +T343C 015:008.381 - 0.018ms returns 2 (0x2) +T343C 015:008.387 JLINK_ReadMemEx(0x0000126E, 0x2 Bytes, Flags = 0x02000000) +T343C 015:008.391 -- Read from flash cache (2 bytes @ 0x0000126E) +T343C 015:008.397 Data: 06 F5 +T343C 015:008.403 - 0.017ms returns 2 (0x2) +T343C 015:008.409 JLINK_ReadMemEx(0x00001270, 0x3C Bytes, Flags = 0x02000000) +T343C 015:008.414 -- Read from flash cache (60 bytes @ 0x00001270) +T343C 015:008.420 Data: 5B 09 0C F5 C0 76 46 F8 23 50 4C F8 23 50 D3 69 ... +T343C 015:008.425 - 0.018ms returns 60 (0x3C) +T343C 015:008.430 JLINK_ReadMemEx(0x00001270, 0x2 Bytes, Flags = 0x02000000) +T343C 015:008.434 -- Read from flash cache (2 bytes @ 0x00001270) +T343C 015:008.440 Data: 5B 09 +T343C 015:008.446 - 0.017ms returns 2 (0x2) +T343C 015:008.450 JLINK_ReadMemEx(0x00001272, 0x2 Bytes, Flags = 0x02000000) +T343C 015:008.455 -- Read from flash cache (2 bytes @ 0x00001272) +T343C 015:008.461 Data: 0C F5 +T343C 015:008.466 - 0.017ms returns 2 (0x2) +T343C 015:008.471 JLINK_ReadMemEx(0x00001272, 0x2 Bytes, Flags = 0x02000000) +T343C 015:008.476 -- Read from flash cache (2 bytes @ 0x00001272) +T343C 015:008.481 Data: 0C F5 +T343C 015:008.487 - 0.017ms returns 2 (0x2) +T343C 015:008.492 JLINK_ReadMemEx(0x00001274, 0x3C Bytes, Flags = 0x02000000) +T343C 015:008.496 -- Read from flash cache (60 bytes @ 0x00001274) +T343C 015:008.502 Data: C0 76 46 F8 23 50 4C F8 23 50 D3 69 DB 6A 58 F8 ... +T343C 015:008.508 - 0.018ms returns 60 (0x3C) +T343C 015:008.512 JLINK_ReadMemEx(0x00001274, 0x2 Bytes, Flags = 0x02000000) +T343C 015:008.517 -- Read from flash cache (2 bytes @ 0x00001274) +T343C 015:008.523 Data: C0 76 +T343C 015:008.528 - 0.017ms returns 2 (0x2) +T343C 015:008.533 JLINK_ReadMemEx(0x00001276, 0x2 Bytes, Flags = 0x02000000) +T343C 015:008.537 -- Read from flash cache (2 bytes @ 0x00001276) +T343C 015:008.543 Data: 46 F8 +T343C 015:008.548 - 0.017ms returns 2 (0x2) +T343C 015:008.556 JLINK_ReadMemEx(0x00001278, 0x3C Bytes, Flags = 0x02000000) +T343C 015:008.562 -- Read from flash cache (60 bytes @ 0x00001278) +T343C 015:008.569 Data: 23 50 4C F8 23 50 D3 69 DB 6A 58 F8 23 50 25 F4 ... +T343C 015:008.574 - 0.019ms returns 60 (0x3C) +T343C 015:008.579 JLINK_ReadMemEx(0x00001278, 0x2 Bytes, Flags = 0x02000000) +T343C 015:008.583 -- Read from flash cache (2 bytes @ 0x00001278) +T343C 015:008.589 Data: 23 50 +T343C 015:008.594 - 0.017ms returns 2 (0x2) +T343C 015:008.599 JLINK_ReadMemEx(0x0000127A, 0x2 Bytes, Flags = 0x02000000) +T343C 015:008.604 -- Read from flash cache (2 bytes @ 0x0000127A) +T343C 015:008.611 Data: 4C F8 +T343C 015:008.616 - 0.018ms returns 2 (0x2) +T343C 015:008.621 JLINK_ReadMemEx(0x0000127C, 0x3C Bytes, Flags = 0x02000000) +T343C 015:008.626 -- Read from flash cache (60 bytes @ 0x0000127C) +T343C 015:008.632 Data: 23 50 D3 69 DB 6A 58 F8 23 50 25 F4 80 35 48 F8 ... +T343C 015:008.637 - 0.018ms returns 60 (0x3C) +T343C 015:008.642 JLINK_ReadMemEx(0x0000127C, 0x2 Bytes, Flags = 0x02000000) +T343C 015:008.646 -- Read from flash cache (2 bytes @ 0x0000127C) +T343C 015:008.652 Data: 23 50 +T343C 015:008.658 - 0.017ms returns 2 (0x2) +T343C 015:008.663 JLINK_ReadMemEx(0x0000127E, 0x2 Bytes, Flags = 0x02000000) +T343C 015:008.667 -- Read from flash cache (2 bytes @ 0x0000127E) +T343C 015:008.673 Data: D3 69 +T343C 015:008.678 - 0.017ms returns 2 (0x2) +T343C 015:008.683 JLINK_ReadMemEx(0x00001280, 0x3C Bytes, Flags = 0x02000000) +T343C 015:008.688 -- Read from flash cache (60 bytes @ 0x00001280) +T343C 015:008.694 Data: DB 6A 58 F8 23 50 25 F4 80 35 48 F8 23 50 03 F0 ... +T343C 015:008.699 - 0.018ms returns 60 (0x3C) +T343C 015:008.704 JLINK_ReadMemEx(0x00001280, 0x2 Bytes, Flags = 0x02000000) +T343C 015:008.708 -- Read from flash cache (2 bytes @ 0x00001280) +T343C 015:008.714 Data: DB 6A +T343C 015:008.720 - 0.017ms returns 2 (0x2) +T343C 015:008.725 JLINK_ReadMemEx(0x00001280, 0x3C Bytes, Flags = 0x02000000) +T343C 015:008.729 -- Read from flash cache (60 bytes @ 0x00001280) +T343C 015:008.735 Data: DB 6A 58 F8 23 50 25 F4 80 35 48 F8 23 50 03 F0 ... +T343C 015:008.741 - 0.018ms returns 60 (0x3C) +T343C 015:008.745 JLINK_ReadMemEx(0x00001280, 0x2 Bytes, Flags = 0x02000000) +T343C 015:008.750 -- Read from flash cache (2 bytes @ 0x00001280) +T343C 015:008.755 Data: DB 6A +T343C 015:008.761 - 0.017ms returns 2 (0x2) +T343C 015:008.766 JLINK_ReadMemEx(0x00001282, 0x2 Bytes, Flags = 0x02000000) +T343C 015:008.770 -- Read from flash cache (2 bytes @ 0x00001282) +T343C 015:008.776 Data: 58 F8 +T343C 015:008.781 - 0.017ms returns 2 (0x2) +T343C 015:008.786 JLINK_ReadMemEx(0x00001282, 0x2 Bytes, Flags = 0x02000000) +T343C 015:008.791 -- Read from flash cache (2 bytes @ 0x00001282) +T343C 015:008.796 Data: 58 F8 +T343C 015:008.802 - 0.017ms returns 2 (0x2) +T343C 015:008.807 JLINK_ReadMemEx(0x00001284, 0x3C Bytes, Flags = 0x02000000) +T343C 015:008.811 -- Read from flash cache (60 bytes @ 0x00001284) +T343C 015:008.817 Data: 23 50 25 F4 80 35 48 F8 23 50 03 F0 1F 05 07 FA ... +T343C 015:008.823 - 0.018ms returns 60 (0x3C) +T343C 015:008.828 JLINK_ReadMemEx(0x00001284, 0x2 Bytes, Flags = 0x02000000) +T343C 015:008.832 -- Read from flash cache (2 bytes @ 0x00001284) +T343C 015:008.838 Data: 23 50 +T343C 015:008.843 - 0.017ms returns 2 (0x2) +T343C 015:008.848 JLINK_ReadMemEx(0x00001286, 0x2 Bytes, Flags = 0x02000000) +T343C 015:008.852 -- Read from flash cache (2 bytes @ 0x00001286) +T343C 015:008.858 Data: 25 F4 +T343C 015:008.864 - 0.017ms returns 2 (0x2) +T343C 015:008.868 JLINK_ReadMemEx(0x00001288, 0x3C Bytes, Flags = 0x02000000) +T343C 015:008.873 -- Read from flash cache (60 bytes @ 0x00001288) +T343C 015:008.879 Data: 80 35 48 F8 23 50 03 F0 1F 05 07 FA 05 F5 5B 09 ... +T343C 015:008.885 - 0.018ms returns 60 (0x3C) +T343C 015:008.889 JLINK_ReadMemEx(0x00001288, 0x2 Bytes, Flags = 0x02000000) +T343C 015:008.894 -- Read from flash cache (2 bytes @ 0x00001288) +T343C 015:008.899 Data: 80 35 +T343C 015:008.906 - 0.018ms returns 2 (0x2) +T343C 015:008.911 JLINK_ReadMemEx(0x0000128A, 0x2 Bytes, Flags = 0x02000000) +T343C 015:008.916 -- Read from flash cache (2 bytes @ 0x0000128A) +T343C 015:008.921 Data: 48 F8 +T343C 015:008.927 - 0.017ms returns 2 (0x2) +T343C 015:008.932 JLINK_ReadMemEx(0x0000128C, 0x3C Bytes, Flags = 0x02000000) +T343C 015:008.936 -- Read from flash cache (60 bytes @ 0x0000128C) +T343C 015:008.942 Data: 23 50 03 F0 1F 05 07 FA 05 F5 5B 09 46 F8 23 50 ... +T343C 015:008.948 - 0.018ms returns 60 (0x3C) +T343C 015:008.952 JLINK_ReadMemEx(0x0000128C, 0x2 Bytes, Flags = 0x02000000) +T343C 015:008.957 -- Read from flash cache (2 bytes @ 0x0000128C) +T343C 015:008.962 Data: 23 50 +T343C 015:008.968 - 0.017ms returns 2 (0x2) +T343C 015:008.973 JLINK_ReadMemEx(0x0000128E, 0x2 Bytes, Flags = 0x02000000) +T343C 015:008.977 -- Read from flash cache (2 bytes @ 0x0000128E) +T343C 015:008.983 Data: 03 F0 +T343C 015:008.989 - 0.017ms returns 2 (0x2) +T343C 015:008.993 JLINK_ReadMemEx(0x00001290, 0x3C Bytes, Flags = 0x02000000) +T343C 015:008.998 -- Read from flash cache (60 bytes @ 0x00001290) +T343C 015:009.004 Data: 1F 05 07 FA 05 F5 5B 09 46 F8 23 50 4C F8 23 50 ... +T343C 015:009.009 - 0.018ms returns 60 (0x3C) +T343C 015:009.014 JLINK_ReadMemEx(0x00001290, 0x2 Bytes, Flags = 0x02000000) +T343C 015:009.018 -- Read from flash cache (2 bytes @ 0x00001290) +T343C 015:009.024 Data: 1F 05 +T343C 015:009.030 - 0.017ms returns 2 (0x2) +T343C 015:009.035 JLINK_ReadMemEx(0x00001292, 0x2 Bytes, Flags = 0x02000000) +T343C 015:009.039 -- Read from flash cache (2 bytes @ 0x00001292) +T343C 015:009.045 Data: 07 FA +T343C 015:009.050 - 0.017ms returns 2 (0x2) +T343C 015:009.055 JLINK_ReadMemEx(0x00001294, 0x3C Bytes, Flags = 0x02000000) +T343C 015:009.060 -- Read from flash cache (60 bytes @ 0x00001294) +T343C 015:009.066 Data: 05 F5 5B 09 46 F8 23 50 4C F8 23 50 D3 69 DB 69 ... +T343C 015:009.071 - 0.018ms returns 60 (0x3C) +T343C 015:009.076 JLINK_ReadMemEx(0x00001294, 0x2 Bytes, Flags = 0x02000000) +T343C 015:009.080 -- Read from flash cache (2 bytes @ 0x00001294) +T343C 015:009.086 Data: 05 F5 +T343C 015:009.092 - 0.017ms returns 2 (0x2) +T343C 015:009.097 JLINK_ReadMemEx(0x00001296, 0x2 Bytes, Flags = 0x02000000) +T343C 015:009.101 -- Read from flash cache (2 bytes @ 0x00001296) +T343C 015:009.107 Data: 5B 09 +T343C 015:009.112 - 0.017ms returns 2 (0x2) +T343C 015:009.117 JLINK_ReadMemEx(0x00001298, 0x3C Bytes, Flags = 0x02000000) +T343C 015:009.121 -- Read from flash cache (60 bytes @ 0x00001298) +T343C 015:009.127 Data: 46 F8 23 50 4C F8 23 50 D3 69 DB 69 58 F8 23 50 ... +T343C 015:009.133 - 0.018ms returns 60 (0x3C) +T343C 015:009.138 JLINK_ReadMemEx(0x00001298, 0x2 Bytes, Flags = 0x02000000) +T343C 015:009.142 -- Read from flash cache (2 bytes @ 0x00001298) +T343C 015:009.148 Data: 46 F8 +T343C 015:009.153 - 0.017ms returns 2 (0x2) +T343C 015:009.158 JLINK_ReadMemEx(0x00001298, 0x3C Bytes, Flags = 0x02000000) +T343C 015:009.163 -- Read from flash cache (60 bytes @ 0x00001298) +T343C 015:009.169 Data: 46 F8 23 50 4C F8 23 50 D3 69 DB 69 58 F8 23 50 ... +T343C 015:009.174 - 0.018ms returns 60 (0x3C) +T343C 015:009.179 JLINK_ReadMemEx(0x00001298, 0x2 Bytes, Flags = 0x02000000) +T343C 015:009.183 -- Read from flash cache (2 bytes @ 0x00001298) +T343C 015:009.189 Data: 46 F8 +T343C 015:009.195 - 0.017ms returns 2 (0x2) +T343C 015:009.199 JLINK_ReadMemEx(0x0000129A, 0x2 Bytes, Flags = 0x02000000) +T343C 015:009.204 -- Read from flash cache (2 bytes @ 0x0000129A) +T343C 015:009.209 Data: 23 50 +T343C 015:009.215 - 0.017ms returns 2 (0x2) +T343C 015:009.220 JLINK_ReadMemEx(0x0000129C, 0x3C Bytes, Flags = 0x02000000) +T343C 015:009.224 -- Read from flash cache (60 bytes @ 0x0000129C) +T343C 015:009.230 Data: 4C F8 23 50 D3 69 DB 69 58 F8 23 50 25 F4 80 35 ... +T343C 015:009.236 - 0.018ms returns 60 (0x3C) +T343C 015:009.241 JLINK_ReadMemEx(0x0000129C, 0x2 Bytes, Flags = 0x02000000) +T343C 015:009.245 -- Read from flash cache (2 bytes @ 0x0000129C) +T343C 015:009.252 Data: 4C F8 +T343C 015:009.257 - 0.018ms returns 2 (0x2) +T343C 015:009.262 JLINK_ReadMemEx(0x0000129E, 0x2 Bytes, Flags = 0x02000000) +T343C 015:009.267 -- Read from flash cache (2 bytes @ 0x0000129E) +T343C 015:009.272 Data: 23 50 +T343C 015:009.278 - 0.017ms returns 2 (0x2) +T343C 015:009.283 JLINK_ReadMemEx(0x000012A0, 0x3C Bytes, Flags = 0x02000000) +T343C 015:009.287 -- Read from flash cache (60 bytes @ 0x000012A0) +T343C 015:009.294 Data: D3 69 DB 69 58 F8 23 50 25 F4 80 35 48 F8 23 50 ... +T343C 015:009.299 - 0.018ms returns 60 (0x3C) +T343C 015:009.304 JLINK_ReadMemEx(0x000012A0, 0x2 Bytes, Flags = 0x02000000) +T343C 015:009.308 -- Read from flash cache (2 bytes @ 0x000012A0) +T343C 015:009.314 Data: D3 69 +T343C 015:009.319 - 0.017ms returns 2 (0x2) +T343C 015:009.324 JLINK_ReadMemEx(0x000012A2, 0x2 Bytes, Flags = 0x02000000) +T343C 015:009.328 -- Read from flash cache (2 bytes @ 0x000012A2) +T343C 015:009.334 Data: DB 69 +T343C 015:009.340 - 0.017ms returns 2 (0x2) +T343C 015:009.344 JLINK_ReadMemEx(0x000012A2, 0x2 Bytes, Flags = 0x02000000) +T343C 015:009.349 -- Read from flash cache (2 bytes @ 0x000012A2) +T343C 015:009.355 Data: DB 69 +T343C 015:009.360 - 0.017ms returns 2 (0x2) +T343C 015:009.365 JLINK_ReadMemEx(0x000012A4, 0x3C Bytes, Flags = 0x02000000) +T343C 015:009.369 -- Read from flash cache (60 bytes @ 0x000012A4) +T343C 015:009.375 Data: 58 F8 23 50 25 F4 80 35 48 F8 23 50 03 F0 1F 05 ... +T343C 015:009.381 - 0.018ms returns 60 (0x3C) +T343C 015:009.386 JLINK_ReadMemEx(0x000012A4, 0x2 Bytes, Flags = 0x02000000) +T343C 015:009.390 -- Read from flash cache (2 bytes @ 0x000012A4) +T343C 015:009.396 Data: 58 F8 +T343C 015:009.401 - 0.017ms returns 2 (0x2) +T343C 015:009.406 JLINK_ReadMemEx(0x000012A4, 0x3C Bytes, Flags = 0x02000000) +T343C 015:009.411 -- Read from flash cache (60 bytes @ 0x000012A4) +T343C 015:009.417 Data: 58 F8 23 50 25 F4 80 35 48 F8 23 50 03 F0 1F 05 ... +T343C 015:009.422 - 0.018ms returns 60 (0x3C) +T343C 015:009.427 JLINK_ReadMemEx(0x000012A4, 0x2 Bytes, Flags = 0x02000000) +T343C 015:009.431 -- Read from flash cache (2 bytes @ 0x000012A4) +T343C 015:009.437 Data: 58 F8 +T343C 015:009.442 - 0.017ms returns 2 (0x2) +T343C 015:009.447 JLINK_ReadMemEx(0x000012A6, 0x2 Bytes, Flags = 0x02000000) +T343C 015:009.451 -- Read from flash cache (2 bytes @ 0x000012A6) +T343C 015:009.457 Data: 23 50 +T343C 015:009.463 - 0.017ms returns 2 (0x2) +T343C 015:009.468 JLINK_ReadMemEx(0x000012A8, 0x3C Bytes, Flags = 0x02000000) +T343C 015:009.472 -- Read from flash cache (60 bytes @ 0x000012A8) +T343C 015:009.478 Data: 25 F4 80 35 48 F8 23 50 03 F0 1F 05 07 FA 05 F5 ... +T343C 015:009.484 - 0.018ms returns 60 (0x3C) +T343C 015:009.488 JLINK_ReadMemEx(0x000012A8, 0x2 Bytes, Flags = 0x02000000) +T343C 015:009.493 -- Read from flash cache (2 bytes @ 0x000012A8) +T343C 015:009.498 Data: 25 F4 +T343C 015:009.504 - 0.017ms returns 2 (0x2) +T343C 015:009.509 JLINK_ReadMemEx(0x000012AA, 0x2 Bytes, Flags = 0x02000000) +T343C 015:009.513 -- Read from flash cache (2 bytes @ 0x000012AA) +T343C 015:009.519 Data: 80 35 +T343C 015:009.524 - 0.017ms returns 2 (0x2) +T343C 015:009.529 JLINK_ReadMemEx(0x000012AC, 0x3C Bytes, Flags = 0x02000000) +T343C 015:009.534 -- Read from flash cache (60 bytes @ 0x000012AC) +T343C 015:009.540 Data: 48 F8 23 50 03 F0 1F 05 07 FA 05 F5 5B 09 46 F8 ... +T343C 015:009.545 - 0.018ms returns 60 (0x3C) +T343C 015:009.550 JLINK_ReadMemEx(0x000012AC, 0x2 Bytes, Flags = 0x02000000) +T343C 015:009.554 -- Read from flash cache (2 bytes @ 0x000012AC) +T343C 015:009.560 Data: 48 F8 +T343C 015:009.565 - 0.017ms returns 2 (0x2) +T343C 015:009.570 JLINK_ReadMemEx(0x000012AE, 0x2 Bytes, Flags = 0x02000000) +T343C 015:009.575 -- Read from flash cache (2 bytes @ 0x000012AE) +T343C 015:009.580 Data: 23 50 +T343C 015:009.586 - 0.017ms returns 2 (0x2) +T343C 015:009.591 JLINK_ReadMemEx(0x000012B0, 0x3C Bytes, Flags = 0x02000000) +T343C 015:009.595 -- Read from flash cache (60 bytes @ 0x000012B0) +T343C 015:009.603 Data: 03 F0 1F 05 07 FA 05 F5 5B 09 46 F8 23 50 4C F8 ... +T343C 015:009.609 - 0.020ms returns 60 (0x3C) +T343C 015:009.615 JLINK_ReadMemEx(0x000012B0, 0x2 Bytes, Flags = 0x02000000) +T343C 015:009.620 -- Read from flash cache (2 bytes @ 0x000012B0) +T343C 015:009.626 Data: 03 F0 +T343C 015:009.631 - 0.017ms returns 2 (0x2) +T343C 015:009.636 JLINK_ReadMemEx(0x000012B2, 0x2 Bytes, Flags = 0x02000000) +T343C 015:009.640 -- Read from flash cache (2 bytes @ 0x000012B2) +T343C 015:009.646 Data: 1F 05 +T343C 015:009.652 - 0.017ms returns 2 (0x2) +T343C 015:009.657 JLINK_ReadMemEx(0x000012B4, 0x3C Bytes, Flags = 0x02000000) +T343C 015:009.661 -- Read from flash cache (60 bytes @ 0x000012B4) +T343C 015:009.667 Data: 07 FA 05 F5 5B 09 46 F8 23 50 4C F8 23 50 D3 69 ... +T343C 015:009.673 - 0.018ms returns 60 (0x3C) +T343C 015:009.677 JLINK_ReadMemEx(0x000012B4, 0x2 Bytes, Flags = 0x02000000) +T343C 015:009.682 -- Read from flash cache (2 bytes @ 0x000012B4) +T343C 015:009.687 Data: 07 FA +T343C 015:009.695 - 0.019ms returns 2 (0x2) +T343C 015:009.700 JLINK_ReadMemEx(0x000012B6, 0x2 Bytes, Flags = 0x02000000) +T343C 015:009.704 -- Read from flash cache (2 bytes @ 0x000012B6) +T343C 015:009.710 Data: 05 F5 +T343C 015:009.715 - 0.017ms returns 2 (0x2) +T343C 015:009.720 JLINK_ReadMemEx(0x000012B8, 0x3C Bytes, Flags = 0x02000000) +T343C 015:009.725 -- Read from flash cache (60 bytes @ 0x000012B8) +T343C 015:009.731 Data: 5B 09 46 F8 23 50 4C F8 23 50 D3 69 5B 6A 58 F8 ... +T343C 015:009.736 - 0.018ms returns 60 (0x3C) +T343C 015:009.741 JLINK_ReadMemEx(0x000012B8, 0x2 Bytes, Flags = 0x02000000) +T343C 015:009.745 -- Read from flash cache (2 bytes @ 0x000012B8) +T343C 015:009.751 Data: 5B 09 +T343C 015:009.757 - 0.017ms returns 2 (0x2) +T343C 015:009.761 JLINK_ReadMemEx(0x000012BA, 0x2 Bytes, Flags = 0x02000000) +T343C 015:009.766 -- Read from flash cache (2 bytes @ 0x000012BA) +T343C 015:009.771 Data: 46 F8 +T343C 015:009.777 - 0.017ms returns 2 (0x2) +T343C 015:009.782 JLINK_ReadMemEx(0x000012BA, 0x2 Bytes, Flags = 0x02000000) +T343C 015:009.786 -- Read from flash cache (2 bytes @ 0x000012BA) +T343C 015:009.792 Data: 46 F8 +T343C 015:009.798 - 0.017ms returns 2 (0x2) +T343C 015:009.802 JLINK_ReadMemEx(0x000012BC, 0x3C Bytes, Flags = 0x02000000) +T343C 015:009.807 -- Read from flash cache (60 bytes @ 0x000012BC) +T343C 015:009.813 Data: 23 50 4C F8 23 50 D3 69 5B 6A 58 F8 23 50 25 F4 ... +T343C 015:009.818 - 0.018ms returns 60 (0x3C) +T343C 015:009.823 JLINK_ReadMemEx(0x000012BC, 0x2 Bytes, Flags = 0x02000000) +T343C 015:009.828 -- Read from flash cache (2 bytes @ 0x000012BC) +T343C 015:009.833 Data: 23 50 +T343C 015:009.839 - 0.017ms returns 2 (0x2) +T343C 015:009.844 JLINK_ReadMemEx(0x000012BE, 0x2 Bytes, Flags = 0x02000000) +T343C 015:009.848 -- Read from flash cache (2 bytes @ 0x000012BE) +T343C 015:009.854 Data: 4C F8 +T343C 015:009.859 - 0.017ms returns 2 (0x2) +T343C 015:009.864 JLINK_ReadMemEx(0x000012C0, 0x3C Bytes, Flags = 0x02000000) +T343C 015:009.868 -- Read from flash cache (60 bytes @ 0x000012C0) +T343C 015:009.874 Data: 23 50 D3 69 5B 6A 58 F8 23 50 25 F4 80 35 48 F8 ... +T343C 015:009.880 - 0.018ms returns 60 (0x3C) +T343C 015:009.885 JLINK_ReadMemEx(0x000012C0, 0x2 Bytes, Flags = 0x02000000) +T343C 015:009.889 -- Read from flash cache (2 bytes @ 0x000012C0) +T343C 015:009.895 Data: 23 50 +T343C 015:009.900 - 0.017ms returns 2 (0x2) +T343C 015:009.905 JLINK_ReadMemEx(0x000012C2, 0x2 Bytes, Flags = 0x02000000) +T343C 015:009.909 -- Read from flash cache (2 bytes @ 0x000012C2) +T343C 015:009.915 Data: D3 69 +T343C 015:009.921 - 0.017ms returns 2 (0x2) +T343C 015:009.925 JLINK_ReadMemEx(0x000012C4, 0x3C Bytes, Flags = 0x02000000) +T343C 015:009.930 -- Read from flash cache (60 bytes @ 0x000012C4) +T343C 015:009.936 Data: 5B 6A 58 F8 23 50 25 F4 80 35 48 F8 23 50 03 F0 ... +T343C 015:009.941 - 0.018ms returns 60 (0x3C) +T343C 015:009.946 JLINK_ReadMemEx(0x000012C4, 0x2 Bytes, Flags = 0x02000000) +T343C 015:009.951 -- Read from flash cache (2 bytes @ 0x000012C4) +T343C 015:009.957 Data: 5B 6A +T343C 015:009.963 - 0.019ms returns 2 (0x2) +T343C 015:009.968 JLINK_ReadMemEx(0x000012C4, 0x3C Bytes, Flags = 0x02000000) +T343C 015:009.973 -- Read from flash cache (60 bytes @ 0x000012C4) +T343C 015:009.979 Data: 5B 6A 58 F8 23 50 25 F4 80 35 48 F8 23 50 03 F0 ... +T343C 015:009.984 - 0.018ms returns 60 (0x3C) +T343C 015:009.989 JLINK_ReadMemEx(0x000012C4, 0x2 Bytes, Flags = 0x02000000) +T343C 015:009.993 -- Read from flash cache (2 bytes @ 0x000012C4) +T343C 015:009.999 Data: 5B 6A +T343C 015:010.004 - 0.017ms returns 2 (0x2) +T343C 015:010.009 JLINK_ReadMemEx(0x000012C6, 0x2 Bytes, Flags = 0x02000000) +T343C 015:010.014 -- Read from flash cache (2 bytes @ 0x000012C6) +T343C 015:010.019 Data: 58 F8 +T343C 015:010.025 - 0.017ms returns 2 (0x2) +T343C 015:010.030 JLINK_ReadMemEx(0x000012C6, 0x2 Bytes, Flags = 0x02000000) +T343C 015:010.034 -- Read from flash cache (2 bytes @ 0x000012C6) +T343C 015:010.040 Data: 58 F8 +T343C 015:010.045 - 0.017ms returns 2 (0x2) +T343C 015:010.050 JLINK_ReadMemEx(0x000012C8, 0x3C Bytes, Flags = 0x02000000) +T343C 015:010.055 -- Read from flash cache (60 bytes @ 0x000012C8) +T343C 015:010.061 Data: 23 50 25 F4 80 35 48 F8 23 50 03 F0 1F 05 AF 40 ... +T343C 015:010.066 - 0.018ms returns 60 (0x3C) +T343C 015:010.071 JLINK_ReadMemEx(0x000012C8, 0x2 Bytes, Flags = 0x02000000) +T343C 015:010.075 -- Read from flash cache (2 bytes @ 0x000012C8) +T343C 015:010.081 Data: 23 50 +T343C 015:010.087 - 0.017ms returns 2 (0x2) +T343C 015:010.091 JLINK_ReadMemEx(0x000012CA, 0x2 Bytes, Flags = 0x02000000) +T343C 015:010.096 -- Read from flash cache (2 bytes @ 0x000012CA) +T343C 015:010.101 Data: 25 F4 +T343C 015:010.107 - 0.017ms returns 2 (0x2) +T343C 015:010.112 JLINK_ReadMemEx(0x000012CC, 0x3C Bytes, Flags = 0x02000000) +T343C 015:010.116 -- Read from flash cache (60 bytes @ 0x000012CC) +T343C 015:010.122 Data: 80 35 48 F8 23 50 03 F0 1F 05 AF 40 5B 09 46 F8 ... +T343C 015:010.128 - 0.018ms returns 60 (0x3C) +T343C 015:010.133 JLINK_ReadMemEx(0x000012CC, 0x2 Bytes, Flags = 0x02000000) +T343C 015:010.137 -- Read from flash cache (2 bytes @ 0x000012CC) +T343C 015:010.143 Data: 80 35 +T343C 015:010.148 - 0.017ms returns 2 (0x2) +T343C 015:010.153 JLINK_ReadMemEx(0x000012CE, 0x2 Bytes, Flags = 0x02000000) +T343C 015:010.157 -- Read from flash cache (2 bytes @ 0x000012CE) +T343C 015:010.163 Data: 48 F8 +T343C 015:010.169 - 0.017ms returns 2 (0x2) +T343C 015:010.173 JLINK_ReadMemEx(0x000012D0, 0x3C Bytes, Flags = 0x02000000) +T343C 015:010.178 -- Read from flash cache (60 bytes @ 0x000012D0) +T343C 015:010.184 Data: 23 50 03 F0 1F 05 AF 40 5B 09 46 F8 23 70 4C F8 ... +T343C 015:010.189 - 0.018ms returns 60 (0x3C) +T343C 015:010.194 JLINK_ReadMemEx(0x000012D0, 0x2 Bytes, Flags = 0x02000000) +T343C 015:010.199 -- Read from flash cache (2 bytes @ 0x000012D0) +T343C 015:010.204 Data: 23 50 +T343C 015:010.210 - 0.017ms returns 2 (0x2) +T343C 015:010.215 JLINK_ReadMemEx(0x000012D2, 0x2 Bytes, Flags = 0x02000000) +T343C 015:010.219 -- Read from flash cache (2 bytes @ 0x000012D2) +T343C 015:010.225 Data: 03 F0 +T343C 015:010.230 - 0.017ms returns 2 (0x2) +T343C 015:010.235 JLINK_ReadMemEx(0x000012D4, 0x3C Bytes, Flags = 0x02000000) +T343C 015:010.239 -- Read from flash cache (60 bytes @ 0x000012D4) +T343C 015:010.246 Data: 1F 05 AF 40 5B 09 46 F8 23 70 4C F8 23 70 1C 23 ... +T343C 015:010.251 - 0.018ms returns 60 (0x3C) +T343C 015:010.256 JLINK_ReadMemEx(0x000012D4, 0x2 Bytes, Flags = 0x02000000) +T343C 015:010.260 -- Read from flash cache (2 bytes @ 0x000012D4) +T343C 015:010.266 Data: 1F 05 +T343C 015:010.271 - 0.017ms returns 2 (0x2) +T343C 015:010.276 JLINK_ReadMemEx(0x000012D6, 0x2 Bytes, Flags = 0x02000000) +T343C 015:010.281 -- Read from flash cache (2 bytes @ 0x000012D6) +T343C 015:010.286 Data: AF 40 +T343C 015:010.292 - 0.017ms returns 2 (0x2) +T343C 015:010.297 JLINK_ReadMemEx(0x000012D8, 0x3C Bytes, Flags = 0x02000000) +T343C 015:010.302 -- Read from flash cache (60 bytes @ 0x000012D8) +T343C 015:010.308 Data: 5B 09 46 F8 23 70 4C F8 23 70 1C 23 17 6A 63 F3 ... +T343C 015:010.314 - 0.019ms returns 60 (0x3C) +T343C 015:010.318 JLINK_ReadMemEx(0x000012D8, 0x2 Bytes, Flags = 0x02000000) +T343C 015:010.323 -- Read from flash cache (2 bytes @ 0x000012D8) +T343C 015:010.329 Data: 5B 09 +T343C 015:010.334 - 0.017ms returns 2 (0x2) +T343C 015:010.339 JLINK_ReadMemEx(0x000012D8, 0x3C Bytes, Flags = 0x02000000) +T343C 015:010.344 -- Read from flash cache (60 bytes @ 0x000012D8) +T343C 015:010.350 Data: 5B 09 46 F8 23 70 4C F8 23 70 1C 23 17 6A 63 F3 ... +T343C 015:010.355 - 0.018ms returns 60 (0x3C) +T343C 015:010.360 JLINK_ReadMemEx(0x000012D8, 0x2 Bytes, Flags = 0x02000000) +T343C 015:010.365 -- Read from flash cache (2 bytes @ 0x000012D8) +T343C 015:010.370 Data: 5B 09 +T343C 015:010.376 - 0.017ms returns 2 (0x2) +T343C 015:010.380 JLINK_ReadMemEx(0x000012DA, 0x2 Bytes, Flags = 0x02000000) +T343C 015:010.385 -- Read from flash cache (2 bytes @ 0x000012DA) +T343C 015:010.390 Data: 46 F8 +T343C 015:010.396 - 0.017ms returns 2 (0x2) +T343C 015:010.401 JLINK_ReadMemEx(0x000012DA, 0x2 Bytes, Flags = 0x02000000) +T343C 015:010.405 -- Read from flash cache (2 bytes @ 0x000012DA) +T343C 015:010.411 Data: 46 F8 +T343C 015:010.417 - 0.017ms returns 2 (0x2) +T343C 015:010.421 JLINK_ReadMemEx(0x000012DC, 0x3C Bytes, Flags = 0x02000000) +T343C 015:010.426 -- Read from flash cache (60 bytes @ 0x000012DC) +T343C 015:010.432 Data: 23 70 4C F8 23 70 1C 23 17 6A 63 F3 9F 01 B9 70 ... +T343C 015:010.437 - 0.018ms returns 60 (0x3C) +T343C 015:010.442 JLINK_ReadMemEx(0x000012DC, 0x2 Bytes, Flags = 0x02000000) +T343C 015:010.447 -- Read from flash cache (2 bytes @ 0x000012DC) +T343C 015:010.452 Data: 23 70 +T343C 015:010.458 - 0.017ms returns 2 (0x2) +T343C 015:010.463 JLINK_ReadMemEx(0x000012DE, 0x2 Bytes, Flags = 0x02000000) +T343C 015:010.467 -- Read from flash cache (2 bytes @ 0x000012DE) +T343C 015:010.473 Data: 4C F8 +T343C 015:010.478 - 0.017ms returns 2 (0x2) +T343C 015:010.483 JLINK_ReadMemEx(0x000012E0, 0x3C Bytes, Flags = 0x02000000) +T343C 015:010.488 -- Read from flash cache (60 bytes @ 0x000012E0) +T343C 015:010.494 Data: 23 70 1C 23 17 6A 63 F3 9F 01 B9 70 41 69 44 F6 ... +T343C 015:010.499 - 0.018ms returns 60 (0x3C) +T343C 015:010.504 JLINK_ReadMemEx(0x000012E0, 0x2 Bytes, Flags = 0x02000000) +T343C 015:010.508 -- Read from flash cache (2 bytes @ 0x000012E0) +T343C 015:010.514 Data: 23 70 +T343C 015:010.519 - 0.017ms returns 2 (0x2) +T343C 015:010.524 JLINK_ReadMemEx(0x000012E2, 0x2 Bytes, Flags = 0x02000000) +T343C 015:010.529 -- Read from flash cache (2 bytes @ 0x000012E2) +T343C 015:010.534 Data: 1C 23 +T343C 015:010.540 - 0.017ms returns 2 (0x2) +T343C 015:010.545 JLINK_ReadMemEx(0x000012E4, 0x3C Bytes, Flags = 0x02000000) +T343C 015:010.549 -- Read from flash cache (60 bytes @ 0x000012E4) +T343C 015:010.555 Data: 17 6A 63 F3 9F 01 B9 70 41 69 44 F6 55 10 C5 F2 ... +T343C 015:010.561 - 0.018ms returns 60 (0x3C) +T343C 015:010.565 JLINK_ReadMemEx(0x000012E4, 0x2 Bytes, Flags = 0x02000000) +T343C 015:010.570 -- Read from flash cache (2 bytes @ 0x000012E4) +T343C 015:010.575 Data: 17 6A +T343C 015:010.581 - 0.017ms returns 2 (0x2) +T343C 015:010.586 JLINK_ReadMemEx(0x000012E4, 0x3C Bytes, Flags = 0x02000000) +T343C 015:010.590 -- Read from flash cache (60 bytes @ 0x000012E4) +T343C 015:010.597 Data: 17 6A 63 F3 9F 01 B9 70 41 69 44 F6 55 10 C5 F2 ... +T343C 015:010.602 - 0.018ms returns 60 (0x3C) +T343C 015:010.607 JLINK_ReadMemEx(0x000012E4, 0x2 Bytes, Flags = 0x02000000) +T343C 015:010.612 -- Read from flash cache (2 bytes @ 0x000012E4) +T343C 015:010.617 Data: 17 6A +T343C 015:010.623 - 0.017ms returns 2 (0x2) +T343C 015:010.628 JLINK_ReadMemEx(0x000012E6, 0x2 Bytes, Flags = 0x02000000) +T343C 015:010.632 -- Read from flash cache (2 bytes @ 0x000012E6) +T343C 015:010.638 Data: 63 F3 +T343C 015:010.644 - 0.018ms returns 2 (0x2) +T343C 015:010.649 JLINK_ReadMemEx(0x000012E6, 0x2 Bytes, Flags = 0x02000000) +T343C 015:010.654 -- Read from flash cache (2 bytes @ 0x000012E6) +T343C 015:010.660 Data: 63 F3 +T343C 015:010.665 - 0.017ms returns 2 (0x2) +T343C 015:010.670 JLINK_ReadMemEx(0x000012E8, 0x3C Bytes, Flags = 0x02000000) +T343C 015:010.674 -- Read from flash cache (60 bytes @ 0x000012E8) +T343C 015:010.680 Data: 9F 01 B9 70 41 69 44 F6 55 10 C5 F2 43 30 50 60 ... +T343C 015:010.686 - 0.018ms returns 60 (0x3C) +T343C 015:010.691 JLINK_ReadMemEx(0x000012E8, 0x2 Bytes, Flags = 0x02000000) +T343C 015:010.695 -- Read from flash cache (2 bytes @ 0x000012E8) +T343C 015:010.701 Data: 9F 01 +T343C 015:010.706 - 0.017ms returns 2 (0x2) +T343C 015:010.711 JLINK_ReadMemEx(0x000012EA, 0x2 Bytes, Flags = 0x02000000) +T343C 015:010.715 -- Read from flash cache (2 bytes @ 0x000012EA) +T343C 015:010.721 Data: B9 70 +T343C 015:010.727 - 0.017ms returns 2 (0x2) +T343C 015:010.731 JLINK_ReadMemEx(0x000012EC, 0x3C Bytes, Flags = 0x02000000) +T343C 015:010.736 -- Read from flash cache (60 bytes @ 0x000012EC) +T343C 015:010.742 Data: 41 69 44 F6 55 10 C5 F2 43 30 50 60 00 20 91 60 ... +T343C 015:010.748 - 0.018ms returns 60 (0x3C) +T343C 015:010.752 JLINK_ReadMemEx(0x000012EC, 0x2 Bytes, Flags = 0x02000000) +T343C 015:010.757 -- Read from flash cache (2 bytes @ 0x000012EC) +T343C 015:010.762 Data: 41 69 +T343C 015:010.768 - 0.017ms returns 2 (0x2) +T343C 015:010.773 JLINK_ReadMemEx(0x000012EC, 0x3C Bytes, Flags = 0x02000000) +T343C 015:010.777 -- Read from flash cache (60 bytes @ 0x000012EC) +T343C 015:010.783 Data: 41 69 44 F6 55 10 C5 F2 43 30 50 60 00 20 91 60 ... +T343C 015:010.789 - 0.018ms returns 60 (0x3C) +T343C 015:010.793 JLINK_ReadMemEx(0x000012EC, 0x2 Bytes, Flags = 0x02000000) +T343C 015:010.798 -- Read from flash cache (2 bytes @ 0x000012EC) +T343C 015:010.803 Data: 41 69 +T343C 015:010.809 - 0.017ms returns 2 (0x2) +T343C 015:010.814 JLINK_ReadMemEx(0x000012EE, 0x2 Bytes, Flags = 0x02000000) +T343C 015:010.818 -- Read from flash cache (2 bytes @ 0x000012EE) +T343C 015:010.824 Data: 44 F6 +T343C 015:010.829 - 0.017ms returns 2 (0x2) +T343C 015:010.834 JLINK_ReadMemEx(0x000012EE, 0x2 Bytes, Flags = 0x02000000) +T343C 015:010.839 -- Read from flash cache (2 bytes @ 0x000012EE) +T343C 015:010.844 Data: 44 F6 +T343C 015:010.850 - 0.017ms returns 2 (0x2) +T343C 015:010.855 JLINK_ReadMemEx(0x000012F0, 0x3C Bytes, Flags = 0x02000000) +T343C 015:010.859 -- Read from flash cache (60 bytes @ 0x000012F0) +T343C 015:010.865 Data: 55 10 C5 F2 43 30 50 60 00 20 91 60 BD E8 F0 8F ... +T343C 015:010.871 - 0.018ms returns 60 (0x3C) +T343C 015:010.875 JLINK_ReadMemEx(0x000012F0, 0x2 Bytes, Flags = 0x02000000) +T343C 015:010.880 -- Read from flash cache (2 bytes @ 0x000012F0) +T343C 015:010.885 Data: 55 10 +T343C 015:010.891 - 0.017ms returns 2 (0x2) +T343C 015:010.896 JLINK_ReadMemEx(0x000012F2, 0x2 Bytes, Flags = 0x02000000) +T343C 015:010.900 -- Read from flash cache (2 bytes @ 0x000012F2) +T343C 015:010.906 Data: C5 F2 +T343C 015:010.911 - 0.017ms returns 2 (0x2) +T343C 015:010.916 JLINK_ReadMemEx(0x000012F4, 0x3C Bytes, Flags = 0x02000000) +T343C 015:010.921 -- Read from flash cache (60 bytes @ 0x000012F4) +T343C 015:010.927 Data: 43 30 50 60 00 20 91 60 BD E8 F0 8F 00 F0 22 F8 ... +T343C 015:010.932 - 0.018ms returns 60 (0x3C) +T343C 015:010.937 JLINK_ReadMemEx(0x000012F4, 0x2 Bytes, Flags = 0x02000000) +T343C 015:010.941 -- Read from flash cache (2 bytes @ 0x000012F4) +T343C 015:010.947 Data: 43 30 +T343C 015:010.952 - 0.017ms returns 2 (0x2) +T343C 015:010.957 JLINK_ReadMemEx(0x000012F6, 0x2 Bytes, Flags = 0x02000000) +T343C 015:010.962 -- Read from flash cache (2 bytes @ 0x000012F6) +T343C 015:010.967 Data: 50 60 +T343C 015:010.973 - 0.017ms returns 2 (0x2) +T343C 015:010.978 JLINK_ReadMemEx(0x000012F8, 0x3C Bytes, Flags = 0x02000000) +T343C 015:010.982 -- Read from flash cache (60 bytes @ 0x000012F8) +T343C 015:010.988 Data: 00 20 91 60 BD E8 F0 8F 00 F0 22 F8 FF F7 EF FA ... +T343C 015:010.995 - 0.019ms returns 60 (0x3C) +T343C 015:011.000 JLINK_ReadMemEx(0x000012F8, 0x2 Bytes, Flags = 0x02000000) +T343C 015:011.004 -- Read from flash cache (2 bytes @ 0x000012F8) +T343C 015:011.010 Data: 00 20 +T343C 015:011.015 - 0.017ms returns 2 (0x2) +T343C 015:011.020 JLINK_ReadMemEx(0x000012F8, 0x3C Bytes, Flags = 0x02000000) +T343C 015:011.025 -- Read from flash cache (60 bytes @ 0x000012F8) +T343C 015:011.031 Data: 00 20 91 60 BD E8 F0 8F 00 F0 22 F8 FF F7 EF FA ... +T343C 015:011.036 - 0.018ms returns 60 (0x3C) +T343C 015:011.041 JLINK_ReadMemEx(0x000012F8, 0x2 Bytes, Flags = 0x02000000) +T343C 015:011.045 -- Read from flash cache (2 bytes @ 0x000012F8) +T343C 015:011.051 Data: 00 20 +T343C 015:011.058 - 0.019ms returns 2 (0x2) +T343C 015:011.063 JLINK_ReadMemEx(0x000012FA, 0x2 Bytes, Flags = 0x02000000) +T343C 015:011.068 -- Read from flash cache (2 bytes @ 0x000012FA) +T343C 015:011.073 Data: 91 60 +T343C 015:011.079 - 0.017ms returns 2 (0x2) +T343C 015:011.084 JLINK_ReadMemEx(0x000012FA, 0x2 Bytes, Flags = 0x02000000) +T343C 015:011.088 -- Read from flash cache (2 bytes @ 0x000012FA) +T343C 015:011.094 Data: 91 60 +T343C 015:011.099 - 0.017ms returns 2 (0x2) +T343C 015:011.104 JLINK_ReadMemEx(0x000012FC, 0x3C Bytes, Flags = 0x02000000) +T343C 015:011.109 -- Read from flash cache (60 bytes @ 0x000012FC) +T343C 015:011.115 Data: BD E8 F0 8F 00 F0 22 F8 FF F7 EF FA FE E7 80 B5 ... +T343C 015:011.120 - 0.018ms returns 60 (0x3C) +T343C 015:011.125 JLINK_ReadMemEx(0x000012FC, 0x2 Bytes, Flags = 0x02000000) +T343C 015:011.129 -- Read from flash cache (2 bytes @ 0x000012FC) +T343C 015:011.135 Data: BD E8 +T343C 015:011.140 - 0.017ms returns 2 (0x2) +T343C 015:011.145 JLINK_ReadMemEx(0x000012FC, 0x3C Bytes, Flags = 0x02000000) +T343C 015:011.150 -- Read from flash cache (60 bytes @ 0x000012FC) +T343C 015:011.156 Data: BD E8 F0 8F 00 F0 22 F8 FF F7 EF FA FE E7 80 B5 ... +T343C 015:011.161 - 0.017ms returns 60 (0x3C) +T343C 015:011.166 JLINK_ReadMemEx(0x000012FC, 0x2 Bytes, Flags = 0x02000000) +T343C 015:011.170 -- Read from flash cache (2 bytes @ 0x000012FC) +T343C 015:011.176 Data: BD E8 +T343C 015:011.182 - 0.017ms returns 2 (0x2) +T343C 015:011.186 JLINK_ReadMemEx(0x000012FE, 0x2 Bytes, Flags = 0x02000000) +T343C 015:011.191 -- Read from flash cache (2 bytes @ 0x000012FE) +T343C 015:011.196 Data: F0 8F +T343C 015:011.202 - 0.017ms returns 2 (0x2) +T343C 015:898.065 JLINK_ReadMemEx(0x00001300, 0x3C Bytes, Flags = 0x02000000) +T343C 015:898.090 -- Read from flash cache (60 bytes @ 0x00001300) +T343C 015:898.097 Data: 00 F0 22 F8 FF F7 EF FA FE E7 80 B5 26 F0 64 FF ... +T343C 015:898.103 - 0.040ms returns 60 (0x3C) +T343C 015:898.108 JLINK_ReadMemEx(0x00001300, 0x2 Bytes, Flags = 0x02000000) +T343C 015:898.113 -- Read from flash cache (2 bytes @ 0x00001300) +T343C 015:898.119 Data: 00 F0 +T343C 015:898.125 - 0.018ms returns 2 (0x2) +T343C 015:898.130 JLINK_ReadMemEx(0x00001302, 0x2 Bytes, Flags = 0x02000000) +T343C 015:898.135 -- Read from flash cache (2 bytes @ 0x00001302) +T343C 015:898.141 Data: 22 F8 +T343C 015:898.146 - 0.018ms returns 2 (0x2) +T1FBC 016:211.176 JLINK_ReadMemEx(0x00001300, 0x2 Bytes, Flags = 0x02000000) +T1FBC 016:211.195 -- Read from flash cache (2 bytes @ 0x00001300) +T1FBC 016:211.202 Data: 00 F0 +T1FBC 016:211.208 - 0.040ms returns 2 (0x2) +T1FBC 016:211.219 JLINK_HasError() +T1FBC 016:211.227 JLINK_SetBPEx(Addr = 0x00025134, Type = 0xFFFFFFF2) +T1FBC 016:211.237 - 0.012ms returns 0x00000001 +T1FBC 016:211.242 JLINK_HasError() +T1FBC 016:211.247 JLINK_HasError() +T1FBC 016:211.252 JLINK_Go() +T1FBC 016:212.102 CPU_WriteMem(4 bytes @ 0xE0002000) +T1FBC 016:212.931 CPU_ReadMem(4 bytes @ 0xE0001000) +T1FBC 016:213.645 CPU_WriteMem(4 bytes @ 0xE0002008) +T1FBC 016:213.658 CPU_WriteMem(4 bytes @ 0xE000200C) +T1FBC 016:213.664 CPU_WriteMem(4 bytes @ 0xE0002010) +T1FBC 016:213.671 CPU_WriteMem(4 bytes @ 0xE0002014) +T1FBC 016:213.677 CPU_WriteMem(4 bytes @ 0xE0002018) +T1FBC 016:213.725 CPU_WriteMem(4 bytes @ 0xE000201C) +T1FBC 016:216.733 CPU_WriteMem(4 bytes @ 0xE0001004) +T1FBC 016:218.427 - 7.189ms +T1FBC 016:319.153 JLINK_HasError() +T1FBC 016:319.212 JLINK_IsHalted() +T1FBC 016:324.557 - 5.369ms returns TRUE +T1FBC 016:324.586 JLINK_HasError() +T1FBC 016:324.591 JLINK_Halt() +T1FBC 016:324.596 - 0.006ms returns 0x00 +T1FBC 016:324.600 JLINK_IsHalted() +T1FBC 016:324.604 - 0.006ms returns TRUE +T1FBC 016:324.609 JLINK_IsHalted() +T1FBC 016:324.613 - 0.005ms returns TRUE +T1FBC 016:324.618 JLINK_IsHalted() +T1FBC 016:324.621 - 0.005ms returns TRUE +T1FBC 016:324.626 JLINK_HasError() +T1FBC 016:324.631 JLINK_ReadReg(R15 (PC)) +T1FBC 016:324.638 - 0.008ms returns 0x00025134 +T1FBC 016:324.642 JLINK_ReadReg(XPSR) +T1FBC 016:324.647 - 0.006ms returns 0x61000000 +T1FBC 016:324.653 JLINK_HasError() +T1FBC 016:324.658 JLINK_ClrBPEx(BPHandle = 0x00000001) +T1FBC 016:324.663 - 0.006ms returns 0x00 +T1FBC 016:324.668 JLINK_HasError() +T1FBC 016:324.672 JLINK_HasError() +T1FBC 016:324.677 JLINK_ReadMemU32(0xE000ED30, 0x1 Items) +T1FBC 016:324.686 CPU_ReadMem(4 bytes @ 0xE000ED30) +T1FBC 016:325.408 Data: 02 00 00 00 +T1FBC 016:325.437 - 0.762ms returns 1 (0x1) +T1FBC 016:325.443 JLINK_ReadMemU32(0xE0001028, 0x1 Items) +T1FBC 016:325.453 CPU_ReadMem(4 bytes @ 0xE0001028) +T1FBC 016:326.402 Data: 00 00 00 00 +T1FBC 016:326.412 Debug reg: DWT_FUNC[0] +T1FBC 016:326.417 - 0.975ms returns 1 (0x1) +T1FBC 016:326.423 JLINK_ReadMemU32(0xE0001038, 0x1 Items) +T1FBC 016:326.431 CPU_ReadMem(4 bytes @ 0xE0001038) +T1FBC 016:327.314 Data: 00 02 00 00 +T1FBC 016:327.324 Debug reg: DWT_FUNC[1] +T1FBC 016:327.330 - 0.909ms returns 1 (0x1) +T1FBC 016:327.338 JLINK_ReadMemU32(0xE0001048, 0x1 Items) +T1FBC 016:327.347 CPU_ReadMem(4 bytes @ 0xE0001048) +T1FBC 016:328.131 Data: 00 00 00 00 +T1FBC 016:328.166 Debug reg: DWT_FUNC[2] +T1FBC 016:328.171 - 0.835ms returns 1 (0x1) +T1FBC 016:328.178 JLINK_ReadMemU32(0xE0001058, 0x1 Items) +T1FBC 016:328.185 CPU_ReadMem(4 bytes @ 0xE0001058) +T1FBC 016:328.913 Data: 00 00 00 00 +T1FBC 016:328.949 Debug reg: DWT_FUNC[3] +T1FBC 016:328.954 - 0.778ms returns 1 (0x1) +T1FBC 016:329.160 JLINK_HasError() +T1FBC 016:329.166 JLINK_ReadReg(R0) +T1FBC 016:329.172 - 0.007ms returns 0x00000000 +T1FBC 016:329.177 JLINK_ReadReg(R1) +T1FBC 016:329.181 - 0.006ms returns 0x00000003 +T1FBC 016:329.185 JLINK_ReadReg(R2) +T1FBC 016:329.190 - 0.006ms returns 0x20031C8C +T1FBC 016:329.194 JLINK_ReadReg(R3) +T1FBC 016:329.198 - 0.006ms returns 0x80100000 +T1FBC 016:329.203 JLINK_ReadReg(R4) +T1FBC 016:329.207 - 0.006ms returns 0xDEADBEEF +T1FBC 016:329.212 JLINK_ReadReg(R5) +T1FBC 016:329.216 - 0.006ms returns 0xDEADBEEF +T1FBC 016:329.221 JLINK_ReadReg(R6) +T1FBC 016:329.225 - 0.006ms returns 0xDEADBEEF +T1FBC 016:329.230 JLINK_ReadReg(R7) +T1FBC 016:329.234 - 0.006ms returns 0xDEADBEEF +T1FBC 016:329.238 JLINK_ReadReg(R8) +T1FBC 016:329.242 - 0.006ms returns 0xDEADBEEF +T1FBC 016:329.247 JLINK_ReadReg(R9) +T1FBC 016:329.251 - 0.006ms returns 0xDEADBEEF +T1FBC 016:329.256 JLINK_ReadReg(R10) +T1FBC 016:329.260 - 0.005ms returns 0xDEADBEEF +T1FBC 016:329.265 JLINK_ReadReg(R11) +T1FBC 016:329.269 - 0.006ms returns 0xDEADBEEF +T1FBC 016:329.273 JLINK_ReadReg(R12) +T1FBC 016:329.278 - 0.006ms returns 0x20031B8C +T1FBC 016:329.282 JLINK_ReadReg(R13 (SP)) +T1FBC 016:329.287 - 0.006ms returns 0x20032C90 +T1FBC 016:329.291 JLINK_ReadReg(R14) +T1FBC 016:329.295 - 0.006ms returns 0x00004911 +T1FBC 016:329.300 JLINK_ReadReg(R15 (PC)) +T1FBC 016:329.304 - 0.006ms returns 0x00025134 +T1FBC 016:329.309 JLINK_ReadReg(XPSR) +T1FBC 016:329.313 - 0.006ms returns 0x61000000 +T1FBC 016:329.318 JLINK_ReadReg(MSP) +T1FBC 016:329.322 - 0.006ms returns 0x20032258 +T1FBC 016:329.326 JLINK_ReadReg(PSP) +T1FBC 016:329.330 - 0.005ms returns 0x20032C90 +T1FBC 016:329.335 JLINK_ReadReg(CFBP) +T1FBC 016:329.339 - 0.006ms returns 0x02000000 +T1FBC 016:329.344 JLINK_ReadReg(FPSCR) +T1FBC 016:337.271 - 7.936ms returns 0x00000000 +T1FBC 016:337.286 JLINK_ReadReg(FPS0) +T1FBC 016:337.298 - 0.014ms returns 0x734FC9BF +T1FBC 016:337.303 JLINK_ReadReg(FPS1) +T1FBC 016:337.308 - 0.006ms returns 0x5B37D405 +T1FBC 016:337.313 JLINK_ReadReg(FPS2) +T1FBC 016:337.317 - 0.006ms returns 0x793809D6 +T1FBC 016:337.322 JLINK_ReadReg(FPS3) +T1FBC 016:337.326 - 0.006ms returns 0x57F7E879 +T1FBC 016:337.331 JLINK_ReadReg(FPS4) +T1FBC 016:337.335 - 0.006ms returns 0xD76B0F46 +T1FBC 016:337.340 JLINK_ReadReg(FPS5) +T1FBC 016:337.344 - 0.006ms returns 0x2406DEA5 +T1FBC 016:337.349 JLINK_ReadReg(FPS6) +T1FBC 016:337.353 - 0.006ms returns 0xAF2B8FDB +T1FBC 016:337.358 JLINK_ReadReg(FPS7) +T1FBC 016:337.363 - 0.006ms returns 0xEC98E13C +T1FBC 016:337.367 JLINK_ReadReg(FPS8) +T1FBC 016:337.372 - 0.006ms returns 0xF6FF9BB0 +T1FBC 016:337.376 JLINK_ReadReg(FPS9) +T1FBC 016:337.381 - 0.006ms returns 0x96615206 +T1FBC 016:337.385 JLINK_ReadReg(FPS10) +T1FBC 016:337.390 - 0.006ms returns 0x5D5E1CE7 +T1FBC 016:337.394 JLINK_ReadReg(FPS11) +T1FBC 016:337.399 - 0.006ms returns 0x09DAAD3F +T1FBC 016:337.404 JLINK_ReadReg(FPS12) +T1FBC 016:337.408 - 0.006ms returns 0x85D73D8C +T1FBC 016:337.413 JLINK_ReadReg(FPS13) +T1FBC 016:337.417 - 0.006ms returns 0x5C7FE387 +T1FBC 016:337.421 JLINK_ReadReg(FPS14) +T1FBC 016:337.426 - 0.006ms returns 0xC796E177 +T1FBC 016:337.430 JLINK_ReadReg(FPS15) +T1FBC 016:337.435 - 0.006ms returns 0x45CEF29D +T1FBC 016:337.440 JLINK_ReadReg(FPS16) +T1FBC 016:337.444 - 0.006ms returns 0x438DF2DF +T1FBC 016:337.449 JLINK_ReadReg(FPS17) +T1FBC 016:337.453 - 0.006ms returns 0x3F4D74CD +T1FBC 016:337.458 JLINK_ReadReg(FPS18) +T1FBC 016:337.462 - 0.006ms returns 0xFD7FE539 +T1FBC 016:337.467 JLINK_ReadReg(FPS19) +T1FBC 016:337.471 - 0.006ms returns 0x6E6876B3 +T1FBC 016:337.476 JLINK_ReadReg(FPS20) +T1FBC 016:337.480 - 0.006ms returns 0xFFC6BA59 +T1FBC 016:337.485 JLINK_ReadReg(FPS21) +T1FBC 016:337.489 - 0.006ms returns 0x7F3EE7FB +T1FBC 016:337.494 JLINK_ReadReg(FPS22) +T1FBC 016:337.498 - 0.006ms returns 0x969DAB61 +T1FBC 016:337.503 JLINK_ReadReg(FPS23) +T1FBC 016:337.507 - 0.006ms returns 0x5F45480D +T1FBC 016:337.512 JLINK_ReadReg(FPS24) +T1FBC 016:337.516 - 0.006ms returns 0x5366D7D6 +T1FBC 016:337.521 JLINK_ReadReg(FPS25) +T1FBC 016:337.525 - 0.006ms returns 0x5B17C1B8 +T1FBC 016:337.530 JLINK_ReadReg(FPS26) +T1FBC 016:337.534 - 0.006ms returns 0x977BFE4C +T1FBC 016:337.539 JLINK_ReadReg(FPS27) +T1FBC 016:337.543 - 0.006ms returns 0x37DEE1B9 +T1FBC 016:337.548 JLINK_ReadReg(FPS28) +T1FBC 016:337.552 - 0.006ms returns 0xD6E518EC +T1FBC 016:337.557 JLINK_ReadReg(FPS29) +T1FBC 016:337.561 - 0.006ms returns 0x97B0FC5A +T1FBC 016:337.566 JLINK_ReadReg(FPS30) +T1FBC 016:337.570 - 0.006ms returns 0xD29B9CDF +T1FBC 016:337.575 JLINK_ReadReg(FPS31) +T1FBC 016:337.582 - 0.009ms returns 0xE23C9BDD +T343C 016:341.628 JLINK_ReadMemEx(0x00025134, 0x3C Bytes, Flags = 0x02000000) +T343C 016:341.643 -- Read from flash cache (60 bytes @ 0x00025134) +T343C 016:341.650 Data: 80 B5 E4 F7 A5 FE 00 20 80 BD 00 00 B0 B5 46 F6 ... +T343C 016:341.656 - 0.030ms returns 60 (0x3C) +T343C 016:341.661 JLINK_ReadMemEx(0x00025134, 0x2 Bytes, Flags = 0x02000000) +T343C 016:341.666 -- Read from flash cache (2 bytes @ 0x00025134) +T343C 016:341.672 Data: 80 B5 +T343C 016:341.678 - 0.018ms returns 2 (0x2) +T343C 016:341.724 JLINK_ReadMemEx(0x00025136, 0x2 Bytes, Flags = 0x02000000) +T343C 016:341.729 -- Read from flash cache (2 bytes @ 0x00025136) +T343C 016:341.735 Data: E4 F7 +T343C 016:341.740 - 0.019ms returns 2 (0x2) +T343C 016:341.751 JLINK_ReadMemEx(0x00025136, 0x2 Bytes, Flags = 0x02000000) +T343C 016:341.756 -- Read from flash cache (2 bytes @ 0x00025136) +T343C 016:341.761 Data: E4 F7 +T343C 016:341.767 - 0.018ms returns 2 (0x2) +T343C 016:341.772 JLINK_ReadMemEx(0x00025138, 0x3C Bytes, Flags = 0x02000000) +T343C 016:341.777 -- Read from flash cache (60 bytes @ 0x00025138) +T343C 016:341.783 Data: A5 FE 00 20 80 BD 00 00 B0 B5 46 F6 9C 54 46 F6 ... +T343C 016:341.788 - 0.018ms returns 60 (0x3C) +T343C 016:341.793 JLINK_ReadMemEx(0x00025138, 0x2 Bytes, Flags = 0x02000000) +T343C 016:341.800 -- Read from flash cache (2 bytes @ 0x00025138) +T343C 016:341.808 Data: A5 FE +T343C 016:341.813 - 0.022ms returns 2 (0x2) +T1FBC 017:921.951 JLINK_ReadMemEx(0x00025134, 0x2 Bytes, Flags = 0x02000000) +T1FBC 017:921.972 -- Read from flash cache (2 bytes @ 0x00025134) +T1FBC 017:921.979 Data: 80 B5 +T1FBC 017:921.985 - 0.037ms returns 2 (0x2) +T1FBC 017:921.991 JLINK_HasError() +T1FBC 017:921.998 JLINK_HasError() +T1FBC 017:922.003 JLINK_Go() +T1FBC 017:922.746 CPU_ReadMem(4 bytes @ 0xE0001000) +T1FBC 017:923.516 CPU_WriteMem(4 bytes @ 0xE0002008) +T1FBC 017:925.318 - 3.349ms +T1FBC 018:025.911 JLINK_HasError() +T1FBC 018:025.929 JLINK_IsHalted() +T1FBC 018:026.735 - 0.811ms returns FALSE +T1FBC 018:126.786 JLINK_HasError() +T1FBC 018:126.805 JLINK_IsHalted() +T1FBC 018:127.739 - 0.967ms returns FALSE +T1FBC 018:228.523 JLINK_HasError() +T1FBC 018:228.573 JLINK_IsHalted() +T1FBC 018:229.373 - 0.807ms returns FALSE +T1FBC 018:329.564 JLINK_HasError() +T1FBC 018:329.583 JLINK_IsHalted() +T1FBC 018:330.667 - 1.091ms returns FALSE +T1FBC 018:431.362 JLINK_HasError() +T1FBC 018:431.382 JLINK_IsHalted() +T1FBC 018:432.048 - 0.672ms returns FALSE +T1FBC 018:532.750 JLINK_HasError() +T1FBC 018:532.770 JLINK_HasError() +T1FBC 018:532.775 JLINK_ReadMemU32(0xE0001004, 0x1 Items) +T1FBC 018:532.793 CPU_ReadMem(4 bytes @ 0xE0001004) +T1FBC 018:533.619 Data: 61 48 83 04 +T1FBC 018:533.627 Debug reg: DWT_CYCCNT +T1FBC 018:533.633 - 0.859ms returns 1 (0x1) +T1FBC 018:533.710 JLINK_IsHalted() +T1FBC 018:534.426 - 0.719ms returns FALSE +T1FBC 018:635.313 JLINK_HasError() +T1FBC 018:635.333 JLINK_IsHalted() +T1FBC 018:636.151 - 0.822ms returns FALSE +T1FBC 018:736.659 JLINK_HasError() +T1FBC 018:736.676 JLINK_IsHalted() +T1FBC 018:737.527 - 0.857ms returns FALSE +T1FBC 018:838.361 JLINK_HasError() +T1FBC 018:838.380 JLINK_IsHalted() +T1FBC 018:839.336 - 0.959ms returns FALSE +T1FBC 018:940.378 JLINK_HasError() +T1FBC 018:940.434 JLINK_IsHalted() +T1FBC 018:941.240 - 0.835ms returns FALSE +T1FBC 019:041.392 JLINK_HasError() +T1FBC 019:041.410 JLINK_IsHalted() +T1FBC 019:042.326 - 0.922ms returns FALSE +T1FBC 019:142.442 JLINK_HasError() +T1FBC 019:142.501 JLINK_HasError() +T1FBC 019:142.526 JLINK_ReadMemU32(0xE0001004, 0x1 Items) +T1FBC 019:142.577 Data: 61 48 83 04 +T1FBC 019:142.609 Debug reg: DWT_CYCCNT +T1FBC 019:142.638 - 0.121ms returns 1 (0x1) +T1FBC 019:142.915 JLINK_IsHalted() +T1FBC 019:144.094 - 1.209ms returns FALSE +T1FBC 019:244.280 JLINK_HasError() +T1FBC 019:244.299 JLINK_IsHalted() +T1FBC 019:245.164 - 0.871ms returns FALSE +T1FBC 019:345.538 JLINK_HasError() +T1FBC 019:345.553 JLINK_IsHalted() +T1FBC 019:346.542 - 0.995ms returns FALSE +T1FBC 019:446.696 JLINK_HasError() +T1FBC 019:446.712 JLINK_IsHalted() +T1FBC 019:447.558 - 0.852ms returns FALSE +T1FBC 019:547.678 JLINK_HasError() +T1FBC 019:547.696 JLINK_IsHalted() +T1FBC 019:548.447 - 0.754ms returns FALSE +T1FBC 019:649.192 JLINK_HasError() +T1FBC 019:649.239 JLINK_IsHalted() +T1FBC 019:650.054 - 0.818ms returns FALSE +T1FBC 019:750.599 JLINK_HasError() +T1FBC 019:750.613 JLINK_HasError() +T1FBC 019:750.618 JLINK_ReadMemU32(0xE0001004, 0x1 Items) +T1FBC 019:750.633 Data: 61 48 83 04 +T1FBC 019:750.640 Debug reg: DWT_CYCCNT +T1FBC 019:750.645 - 0.029ms returns 1 (0x1) +T1FBC 019:750.758 JLINK_IsHalted() +T1FBC 019:751.606 - 0.854ms returns FALSE +T1FBC 019:851.764 JLINK_HasError() +T1FBC 019:851.783 JLINK_IsHalted() +T1FBC 019:852.744 - 0.967ms returns FALSE +T1FBC 019:952.865 JLINK_HasError() +T1FBC 019:952.916 JLINK_IsHalted() +T1FBC 019:953.635 - 0.751ms returns FALSE +T1FBC 020:054.540 JLINK_HasError() +T1FBC 020:054.558 JLINK_IsHalted() +T1FBC 020:055.324 - 0.770ms returns FALSE +T1FBC 020:156.440 JLINK_HasError() +T1FBC 020:156.459 JLINK_IsHalted() +T1FBC 020:157.434 - 0.982ms returns FALSE +T1FBC 020:258.528 JLINK_HasError() +T1FBC 020:258.543 JLINK_HasError() +T1FBC 020:258.548 JLINK_ReadMemU32(0xE0001004, 0x1 Items) +T1FBC 020:258.563 Data: 61 48 83 04 +T1FBC 020:258.570 Debug reg: DWT_CYCCNT +T1FBC 020:258.575 - 0.032ms returns 1 (0x1) +T1FBC 020:258.713 JLINK_IsHalted() +T1FBC 020:259.582 - 0.874ms returns FALSE +T1FBC 020:359.607 JLINK_HasError() +T1FBC 020:359.625 JLINK_IsHalted() +T1FBC 020:360.365 - 0.744ms returns FALSE +T1FBC 020:460.431 JLINK_HasError() +T1FBC 020:460.452 JLINK_IsHalted() +T1FBC 020:461.323 - 0.877ms returns FALSE +T1FBC 020:561.730 JLINK_HasError() +T1FBC 020:561.779 JLINK_IsHalted() +T1FBC 020:562.565 - 0.814ms returns FALSE +T1FBC 020:663.358 JLINK_HasError() +T1FBC 020:663.378 JLINK_IsHalted() +T1FBC 020:664.141 - 0.769ms returns FALSE +T1FBC 020:764.980 JLINK_HasError() +T1FBC 020:765.003 JLINK_IsHalted() +T1FBC 020:765.798 - 0.803ms returns FALSE +T1FBC 020:865.915 JLINK_HasError() +T1FBC 020:865.933 JLINK_HasError() +T1FBC 020:865.938 JLINK_ReadMemU32(0xE0001004, 0x1 Items) +T1FBC 020:865.953 Data: 61 48 83 04 +T1FBC 020:865.960 Debug reg: DWT_CYCCNT +T1FBC 020:865.965 - 0.029ms returns 1 (0x1) +T1FBC 020:866.084 JLINK_IsHalted() +T1FBC 020:867.022 - 0.943ms returns FALSE +T1FBC 020:967.756 JLINK_HasError() +T1FBC 020:967.773 JLINK_IsHalted() +T1FBC 020:968.594 - 0.827ms returns FALSE +T1FBC 021:069.390 JLINK_HasError() +T1FBC 021:069.451 JLINK_IsHalted() +T1FBC 021:070.479 - 1.058ms returns FALSE +T1FBC 021:170.583 JLINK_HasError() +T1FBC 021:170.598 JLINK_IsHalted() +T1FBC 021:171.395 - 0.802ms returns FALSE +T1FBC 021:272.357 JLINK_HasError() +T1FBC 021:272.375 JLINK_IsHalted() +T1FBC 021:273.141 - 0.772ms returns FALSE +T1FBC 021:373.657 JLINK_HasError() +T1FBC 021:373.674 JLINK_IsHalted() +T1FBC 021:374.493 - 0.822ms returns FALSE +T1FBC 021:475.405 JLINK_HasError() +T1FBC 021:475.431 JLINK_HasError() +T1FBC 021:475.436 JLINK_ReadMemU32(0xE0001004, 0x1 Items) +T1FBC 021:475.451 Data: 61 48 83 04 +T1FBC 021:475.458 Debug reg: DWT_CYCCNT +T1FBC 021:475.464 - 0.030ms returns 1 (0x1) +T1FBC 021:476.279 JLINK_IsHalted() +T1FBC 021:476.884 - 0.610ms returns FALSE +T1FBC 021:577.841 JLINK_HasError() +T1FBC 021:577.855 JLINK_IsHalted() +T1FBC 021:578.848 - 0.999ms returns FALSE +T1FBC 021:678.943 JLINK_HasError() +T1FBC 021:678.988 JLINK_IsHalted() +T1FBC 021:679.839 - 0.854ms returns FALSE +T1FBC 021:780.845 JLINK_HasError() +T1FBC 021:780.892 JLINK_IsHalted() +T1FBC 021:781.610 - 0.725ms returns FALSE +T1FBC 021:881.765 JLINK_HasError() +T1FBC 021:881.816 JLINK_IsHalted() +T1FBC 021:882.894 - 1.108ms returns FALSE +T1FBC 021:983.037 JLINK_HasError() +T1FBC 021:983.056 JLINK_IsHalted() +T1FBC 021:983.964 - 0.912ms returns FALSE +T1FBC 022:085.063 JLINK_HasError() +T1FBC 022:085.081 JLINK_HasError() +T1FBC 022:085.086 JLINK_ReadMemU32(0xE0001004, 0x1 Items) +T1FBC 022:085.101 Data: 61 48 83 04 +T1FBC 022:085.108 Debug reg: DWT_CYCCNT +T1FBC 022:085.113 - 0.029ms returns 1 (0x1) +T1FBC 022:085.189 JLINK_IsHalted() +T1FBC 022:086.021 - 0.836ms returns FALSE +T1FBC 022:186.123 JLINK_HasError() +T1FBC 022:186.166 JLINK_IsHalted() +T1FBC 022:187.074 - 0.914ms returns FALSE +T1FBC 022:287.218 JLINK_HasError() +T1FBC 022:287.237 JLINK_IsHalted() +T1FBC 022:288.063 - 0.830ms returns FALSE +T1FBC 022:388.765 JLINK_HasError() +T1FBC 022:388.815 JLINK_IsHalted() +T1FBC 022:389.539 - 0.731ms returns FALSE +T1FBC 022:489.628 JLINK_HasError() +T1FBC 022:489.645 JLINK_IsHalted() +T1FBC 022:490.408 - 0.768ms returns FALSE +T1FBC 022:590.435 JLINK_HasError() +T1FBC 022:590.451 JLINK_IsHalted() +T1FBC 022:591.402 - 0.956ms returns FALSE +T1FBC 022:691.726 JLINK_HasError() +T1FBC 022:691.741 JLINK_HasError() +T1FBC 022:691.746 JLINK_ReadMemU32(0xE0001004, 0x1 Items) +T1FBC 022:691.763 Data: 61 48 83 04 +T1FBC 022:691.770 Debug reg: DWT_CYCCNT +T1FBC 022:691.776 - 0.032ms returns 1 (0x1) +T1FBC 022:691.875 JLINK_IsHalted() +T1FBC 022:692.730 - 0.858ms returns FALSE +T1FBC 022:793.413 JLINK_HasError() +T1FBC 022:793.433 JLINK_IsHalted() +T1FBC 022:794.281 - 0.854ms returns FALSE +T1FBC 022:894.399 JLINK_HasError() +T1FBC 022:894.416 JLINK_IsHalted() +T1FBC 022:895.183 - 0.798ms returns FALSE +T1FBC 022:995.270 JLINK_HasError() +T1FBC 022:995.315 JLINK_IsHalted() +T1FBC 022:996.356 - 1.047ms returns FALSE +T1FBC 023:096.476 JLINK_HasError() +T1FBC 023:096.496 JLINK_IsHalted() +T1FBC 023:097.483 - 0.995ms returns FALSE +T1FBC 023:198.460 JLINK_HasError() +T1FBC 023:198.477 JLINK_IsHalted() +T1FBC 023:199.394 - 0.923ms returns FALSE +T1FBC 023:299.605 JLINK_HasError() +T1FBC 023:299.624 JLINK_HasError() +T1FBC 023:299.629 JLINK_ReadMemU32(0xE0001004, 0x1 Items) +T1FBC 023:299.644 Data: 61 48 83 04 +T1FBC 023:299.651 Debug reg: DWT_CYCCNT +T1FBC 023:299.657 - 0.029ms returns 1 (0x1) +T1FBC 023:299.732 JLINK_IsHalted() +T1FBC 023:300.543 - 0.814ms returns FALSE +T1FBC 023:401.444 JLINK_HasError() +T1FBC 023:401.520 JLINK_IsHalted() +T1FBC 023:402.544 - 1.056ms returns FALSE +T1FBC 023:502.643 JLINK_HasError() +T1FBC 023:502.660 JLINK_IsHalted() +T1FBC 023:503.543 - 0.889ms returns FALSE +T1FBC 023:604.462 JLINK_HasError() +T1FBC 023:604.480 JLINK_IsHalted() +T1FBC 023:605.313 - 0.839ms returns FALSE +T1FBC 023:705.425 JLINK_HasError() +T1FBC 023:705.439 JLINK_IsHalted() +T1FBC 023:706.249 - 0.814ms returns FALSE +T1FBC 023:806.522 JLINK_HasError() +T1FBC 023:806.566 JLINK_IsHalted() +T1FBC 023:807.379 - 0.816ms returns FALSE +T1FBC 023:907.494 JLINK_HasError() +T1FBC 023:907.515 JLINK_HasError() +T1FBC 023:907.520 JLINK_ReadMemU32(0xE0001004, 0x1 Items) +T1FBC 023:907.534 Data: 61 48 83 04 +T1FBC 023:907.540 Debug reg: DWT_CYCCNT +T1FBC 023:907.546 - 0.028ms returns 1 (0x1) +T1FBC 023:907.613 JLINK_IsHalted() +T1FBC 023:908.378 - 0.768ms returns FALSE +T1FBC 024:008.818 JLINK_HasError() +T1FBC 024:008.836 JLINK_IsHalted() +T1FBC 024:009.534 - 0.703ms returns FALSE +T1FBC 024:110.535 JLINK_HasError() +T1FBC 024:110.551 JLINK_IsHalted() +T1FBC 024:111.449 - 0.903ms returns FALSE +T1FBC 024:212.192 JLINK_HasError() +T1FBC 024:212.211 JLINK_IsHalted() +T1FBC 024:213.014 - 0.809ms returns FALSE +T1FBC 024:314.060 JLINK_HasError() +T1FBC 024:314.105 JLINK_IsHalted() +T1FBC 024:315.072 - 0.971ms returns FALSE +T1FBC 024:415.403 JLINK_HasError() +T1FBC 024:415.423 JLINK_HasError() +T1FBC 024:415.428 JLINK_ReadMemU32(0xE0001004, 0x1 Items) +T1FBC 024:415.445 Data: 61 48 83 04 +T1FBC 024:415.452 Debug reg: DWT_CYCCNT +T1FBC 024:415.457 - 0.031ms returns 1 (0x1) +T1FBC 024:415.581 JLINK_IsHalted() +T1FBC 024:416.399 - 0.824ms returns FALSE +T1FBC 024:516.520 JLINK_HasError() +T1FBC 024:516.540 JLINK_IsHalted() +T1FBC 024:517.409 - 0.873ms returns FALSE +T1FBC 024:617.994 JLINK_HasError() +T1FBC 024:618.043 JLINK_IsHalted() +T1FBC 024:618.871 - 0.831ms returns FALSE +T1FBC 024:719.537 JLINK_HasError() +T1FBC 024:719.591 JLINK_IsHalted() +T1FBC 024:720.598 - 1.037ms returns FALSE +T1FBC 024:820.772 JLINK_HasError() +T1FBC 024:820.791 JLINK_IsHalted() +T1FBC 024:821.729 - 0.945ms returns FALSE +T1FBC 024:921.823 JLINK_HasError() +T1FBC 024:921.867 JLINK_IsHalted() +T1FBC 024:922.747 - 0.884ms returns FALSE +T1FBC 025:022.883 JLINK_HasError() +T1FBC 025:022.902 JLINK_HasError() +T1FBC 025:022.907 JLINK_ReadMemU32(0xE0001004, 0x1 Items) +T1FBC 025:022.922 Data: 61 48 83 04 +T1FBC 025:022.929 Debug reg: DWT_CYCCNT +T1FBC 025:022.934 - 0.029ms returns 1 (0x1) +T1FBC 025:023.056 JLINK_IsHalted() +T1FBC 025:024.006 - 0.956ms returns FALSE +T1FBC 025:124.711 JLINK_HasError() +T1FBC 025:124.728 JLINK_IsHalted() +T1FBC 025:125.593 - 0.871ms returns FALSE +T1FBC 025:225.822 JLINK_HasError() +T1FBC 025:225.871 JLINK_IsHalted() +T1FBC 025:226.591 - 0.722ms returns FALSE +T1FBC 025:327.356 JLINK_HasError() +T1FBC 025:327.374 JLINK_IsHalted() +T1FBC 025:328.247 - 0.879ms returns FALSE +T1FBC 025:429.118 JLINK_HasError() +T1FBC 025:429.140 JLINK_IsHalted() +T1FBC 025:429.822 - 0.688ms returns FALSE +T1FBC 025:529.886 JLINK_HasError() +T1FBC 025:529.932 JLINK_IsHalted() +T1FBC 025:530.749 - 0.821ms returns FALSE +T1FBC 025:630.907 JLINK_HasError() +T1FBC 025:630.921 JLINK_HasError() +T1FBC 025:630.926 JLINK_ReadMemU32(0xE0001004, 0x1 Items) +T1FBC 025:630.940 Data: 61 48 83 04 +T1FBC 025:630.947 Debug reg: DWT_CYCCNT +T1FBC 025:630.953 - 0.028ms returns 1 (0x1) +T1FBC 025:631.032 JLINK_IsHalted() +T1FBC 025:632.038 - 1.015ms returns FALSE +T1FBC 025:732.627 JLINK_HasError() +T1FBC 025:732.640 JLINK_IsHalted() +T1FBC 025:733.548 - 0.914ms returns FALSE +T1FBC 025:834.282 JLINK_HasError() +T1FBC 025:834.329 JLINK_IsHalted() +T1FBC 025:835.047 - 0.721ms returns FALSE +T1FBC 025:935.388 JLINK_HasError() +T1FBC 025:935.429 JLINK_IsHalted() +T1FBC 025:936.311 - 0.913ms returns FALSE +T1FBC 026:036.496 JLINK_HasError() +T1FBC 026:036.513 JLINK_IsHalted() +T1FBC 026:037.433 - 0.926ms returns FALSE +T1FBC 026:137.737 JLINK_HasError() +T1FBC 026:137.781 JLINK_IsHalted() +T1FBC 026:138.648 - 0.873ms returns FALSE +T1FBC 026:239.663 JLINK_HasError() +T1FBC 026:239.678 JLINK_HasError() +T1FBC 026:239.683 JLINK_ReadMemU32(0xE0001004, 0x1 Items) +T1FBC 026:239.697 Data: 61 48 83 04 +T1FBC 026:239.704 Debug reg: DWT_CYCCNT +T1FBC 026:239.709 - 0.028ms returns 1 (0x1) +T1FBC 026:239.764 JLINK_IsHalted() +T1FBC 026:240.696 - 0.936ms returns FALSE +T1FBC 026:341.440 JLINK_HasError() +T1FBC 026:341.456 JLINK_IsHalted() +T1FBC 026:342.179 - 0.727ms returns FALSE +T1FBC 026:442.274 JLINK_HasError() +T1FBC 026:442.314 JLINK_IsHalted() +T1FBC 026:443.045 - 0.734ms returns FALSE +T1FBC 026:543.159 JLINK_HasError() +T1FBC 026:543.177 JLINK_IsHalted() +T1FBC 026:544.009 - 0.838ms returns FALSE +T1FBC 026:645.015 JLINK_HasError() +T1FBC 026:645.038 JLINK_IsHalted() +T1FBC 026:645.810 - 0.778ms returns FALSE +T1FBC 026:746.114 JLINK_HasError() +T1FBC 026:746.133 JLINK_IsHalted() +T1FBC 026:746.989 - 0.862ms returns FALSE +T1FBC 026:847.548 JLINK_HasError() +T1FBC 026:847.563 JLINK_HasError() +T1FBC 026:847.568 JLINK_ReadMemU32(0xE0001004, 0x1 Items) +T1FBC 026:847.583 Data: 61 48 83 04 +T1FBC 026:847.590 Debug reg: DWT_CYCCNT +T1FBC 026:847.596 - 0.029ms returns 1 (0x1) +T1FBC 026:847.675 JLINK_IsHalted() +T1FBC 026:848.309 - 0.640ms returns FALSE +T1FBC 026:949.051 JLINK_HasError() +T1FBC 026:949.067 JLINK_IsHalted() +T1FBC 026:949.846 - 0.785ms returns FALSE +T1FBC 027:050.006 JLINK_HasError() +T1FBC 027:050.025 JLINK_IsHalted() +T1FBC 027:050.866 - 0.847ms returns FALSE +T1FBC 027:151.014 JLINK_HasError() +T1FBC 027:151.030 JLINK_IsHalted() +T1FBC 027:151.768 - 0.744ms returns FALSE +T1FBC 027:252.408 JLINK_HasError() +T1FBC 027:252.424 JLINK_IsHalted() +T1FBC 027:253.289 - 0.870ms returns FALSE +T1FBC 027:353.425 JLINK_HasError() +T1FBC 027:353.444 JLINK_IsHalted() +T1FBC 027:354.508 - 1.070ms returns FALSE +T1FBC 027:455.100 JLINK_HasError() +T1FBC 027:455.118 JLINK_HasError() +T1FBC 027:455.123 JLINK_ReadMemU32(0xE0001004, 0x1 Items) +T1FBC 027:455.138 Data: 61 48 83 04 +T1FBC 027:455.145 Debug reg: DWT_CYCCNT +T1FBC 027:455.150 - 0.029ms returns 1 (0x1) +T1FBC 027:455.239 JLINK_IsHalted() +T1FBC 027:456.165 - 0.932ms returns FALSE +T1FBC 027:556.212 JLINK_HasError() +T1FBC 027:556.232 JLINK_IsHalted() +T1FBC 027:557.294 - 1.068ms returns FALSE +T1FBC 027:657.402 JLINK_HasError() +T1FBC 027:657.420 JLINK_IsHalted() +T1FBC 027:658.318 - 0.906ms returns FALSE +T1FBC 027:758.499 JLINK_HasError() +T1FBC 027:758.512 JLINK_IsHalted() +T1FBC 027:759.293 - 0.787ms returns FALSE +T1FBC 027:859.612 JLINK_HasError() +T1FBC 027:859.628 JLINK_IsHalted() +T1FBC 027:860.464 - 0.842ms returns FALSE +T1FBC 027:961.343 JLINK_HasError() +T1FBC 027:961.373 JLINK_IsHalted() +T1FBC 027:962.235 - 0.867ms returns FALSE +T1FBC 028:063.044 JLINK_HasError() +T1FBC 028:063.066 JLINK_HasError() +T1FBC 028:063.071 JLINK_ReadMemU32(0xE0001004, 0x1 Items) +T1FBC 028:063.086 Data: 61 48 83 04 +T1FBC 028:063.094 Debug reg: DWT_CYCCNT +T1FBC 028:063.100 - 0.031ms returns 1 (0x1) +T1FBC 028:063.244 JLINK_IsHalted() +T1FBC 028:064.165 - 0.927ms returns FALSE +T1FBC 028:164.745 JLINK_HasError() +T1FBC 028:164.764 JLINK_IsHalted() +T1FBC 028:165.561 - 0.801ms returns FALSE +T1FBC 028:266.511 JLINK_HasError() +T1FBC 028:266.561 JLINK_IsHalted() +T1FBC 028:267.411 - 0.857ms returns FALSE +T1FBC 028:367.991 JLINK_HasError() +T1FBC 028:368.006 JLINK_IsHalted() +T1FBC 028:368.681 - 0.704ms returns FALSE +T1FBC 028:468.838 JLINK_HasError() +T1FBC 028:468.855 JLINK_IsHalted() +T1FBC 028:469.873 - 1.026ms returns FALSE +T1FBC 028:570.015 JLINK_HasError() +T1FBC 028:570.034 JLINK_HasError() +T1FBC 028:570.039 JLINK_ReadMemU32(0xE0001004, 0x1 Items) +T1FBC 028:570.055 Data: 61 48 83 04 +T1FBC 028:570.061 Debug reg: DWT_CYCCNT +T1FBC 028:570.067 - 0.029ms returns 1 (0x1) +T1FBC 028:570.162 JLINK_IsHalted() +T1FBC 028:571.079 - 0.923ms returns FALSE +T1FBC 028:671.570 JLINK_HasError() +T1FBC 028:671.590 JLINK_IsHalted() +T1FBC 028:672.191 - 0.604ms returns FALSE +T1FBC 028:772.339 JLINK_HasError() +T1FBC 028:772.355 JLINK_IsHalted() +T1FBC 028:773.162 - 0.813ms returns FALSE +T1FBC 028:873.368 JLINK_HasError() +T1FBC 028:873.383 JLINK_IsHalted() +T1FBC 028:874.138 - 0.761ms returns FALSE +T1FBC 028:975.157 JLINK_HasError() +T1FBC 028:975.210 JLINK_IsHalted() +T1FBC 028:975.838 - 0.659ms returns FALSE +T1FBC 029:076.389 JLINK_HasError() +T1FBC 029:076.405 JLINK_IsHalted() +T1FBC 029:077.333 - 0.934ms returns FALSE +T1FBC 029:177.517 JLINK_HasError() +T1FBC 029:177.562 JLINK_HasError() +T1FBC 029:177.567 JLINK_ReadMemU32(0xE0001004, 0x1 Items) +T1FBC 029:177.581 Data: 61 48 83 04 +T1FBC 029:177.588 Debug reg: DWT_CYCCNT +T1FBC 029:177.594 - 0.029ms returns 1 (0x1) +T1FBC 029:177.687 JLINK_IsHalted() +T1FBC 029:178.470 - 0.786ms returns FALSE +T1FBC 029:278.581 JLINK_HasError() +T1FBC 029:278.600 JLINK_IsHalted() +T1FBC 029:279.544 - 0.950ms returns FALSE +T1FBC 029:380.134 JLINK_HasError() +T1FBC 029:380.149 JLINK_IsHalted() +T1FBC 029:381.132 - 0.991ms returns FALSE +T1FBC 029:481.345 JLINK_HasError() +T1FBC 029:481.365 JLINK_IsHalted() +T1FBC 029:482.062 - 0.703ms returns FALSE +T1FBC 029:582.571 JLINK_HasError() +T1FBC 029:582.588 JLINK_IsHalted() +T1FBC 029:583.419 - 0.837ms returns FALSE +T1FBC 029:684.288 JLINK_HasError() +T1FBC 029:684.310 JLINK_IsHalted() +T1FBC 029:685.080 - 0.774ms returns FALSE +T1FBC 029:785.602 JLINK_HasError() +T1FBC 029:785.615 JLINK_HasError() +T1FBC 029:785.621 JLINK_ReadMemU32(0xE0001004, 0x1 Items) +T1FBC 029:785.635 Data: 61 48 83 04 +T1FBC 029:785.641 Debug reg: DWT_CYCCNT +T1FBC 029:785.647 - 0.029ms returns 1 (0x1) +T1FBC 029:785.728 JLINK_IsHalted() +T1FBC 029:786.440 - 0.718ms returns FALSE +T1FBC 029:886.585 JLINK_HasError() +T1FBC 029:886.604 JLINK_IsHalted() +T1FBC 029:887.503 - 0.905ms returns FALSE +T1FBC 029:987.994 JLINK_HasError() +T1FBC 029:988.012 JLINK_IsHalted() +T1FBC 029:989.089 - 1.083ms returns FALSE +T1FBC 030:089.533 JLINK_HasError() +T1FBC 030:089.545 JLINK_IsHalted() +T1FBC 030:090.404 - 0.864ms returns FALSE +T1FBC 030:190.767 JLINK_HasError() +T1FBC 030:190.787 JLINK_IsHalted() +T1FBC 030:191.533 - 0.752ms returns FALSE +T1FBC 030:292.300 JLINK_HasError() +T1FBC 030:292.344 JLINK_IsHalted() +T1FBC 030:293.141 - 0.800ms returns FALSE +T1FBC 030:393.980 JLINK_HasError() +T1FBC 030:393.996 JLINK_HasError() +T1FBC 030:394.001 JLINK_ReadMemU32(0xE0001004, 0x1 Items) +T1FBC 030:394.015 Data: 61 48 83 04 +T1FBC 030:394.022 Debug reg: DWT_CYCCNT +T1FBC 030:394.028 - 0.028ms returns 1 (0x1) +T1FBC 030:394.150 JLINK_IsHalted() +T1FBC 030:394.911 - 0.768ms returns FALSE +T1FBC 030:495.797 JLINK_HasError() +T1FBC 030:495.816 JLINK_IsHalted() +T1FBC 030:496.779 - 0.968ms returns FALSE +T1FBC 030:597.765 JLINK_HasError() +T1FBC 030:597.780 JLINK_IsHalted() +T1FBC 030:598.501 - 0.727ms returns FALSE +T1FBC 030:699.431 JLINK_HasError() +T1FBC 030:699.449 JLINK_IsHalted() +T1FBC 030:700.352 - 0.908ms returns FALSE +T1FBC 030:801.386 JLINK_HasError() +T1FBC 030:801.406 JLINK_IsHalted() +T1FBC 030:802.428 - 1.028ms returns FALSE +T1FBC 030:902.564 JLINK_HasError() +T1FBC 030:902.578 JLINK_IsHalted() +T1FBC 030:903.444 - 0.872ms returns FALSE +T1FBC 031:004.552 JLINK_HasError() +T1FBC 031:004.570 JLINK_HasError() +T1FBC 031:004.576 JLINK_ReadMemU32(0xE0001004, 0x1 Items) +T1FBC 031:004.591 Data: 61 48 83 04 +T1FBC 031:004.598 Debug reg: DWT_CYCCNT +T1FBC 031:004.603 - 0.029ms returns 1 (0x1) +T1FBC 031:004.722 JLINK_IsHalted() +T1FBC 031:005.703 - 0.987ms returns FALSE +T1FBC 031:105.867 JLINK_HasError() +T1FBC 031:105.885 JLINK_IsHalted() +T1FBC 031:106.720 - 0.842ms returns FALSE +T1FBC 031:207.833 JLINK_HasError() +T1FBC 031:207.849 JLINK_IsHalted() +T1FBC 031:208.700 - 0.857ms returns FALSE +T1FBC 031:309.567 JLINK_HasError() +T1FBC 031:309.586 JLINK_IsHalted() +T1FBC 031:310.513 - 0.933ms returns FALSE +T1FBC 031:410.794 JLINK_HasError() +T1FBC 031:410.839 JLINK_IsHalted() +T1FBC 031:411.921 - 1.088ms returns FALSE +T1FBC 031:512.068 JLINK_HasError() +T1FBC 031:512.086 JLINK_IsHalted() +T1FBC 031:512.821 - 0.742ms returns FALSE +T1FBC 031:613.852 JLINK_HasError() +T1FBC 031:613.866 JLINK_HasError() +T1FBC 031:613.872 JLINK_ReadMemU32(0xE0001004, 0x1 Items) +T1FBC 031:613.886 Data: 61 48 83 04 +T1FBC 031:613.893 Debug reg: DWT_CYCCNT +T1FBC 031:613.899 - 0.029ms returns 1 (0x1) +T1FBC 031:613.982 JLINK_IsHalted() +T1FBC 031:614.882 - 0.906ms returns FALSE +T1FBC 031:714.973 JLINK_HasError() +T1FBC 031:714.992 JLINK_IsHalted() +T1FBC 031:716.032 - 1.045ms returns FALSE +T1FBC 031:816.152 JLINK_HasError() +T1FBC 031:816.170 JLINK_IsHalted() +T1FBC 031:816.988 - 0.823ms returns FALSE +T1FBC 031:917.230 JLINK_HasError() +T1FBC 031:917.247 JLINK_IsHalted() +T1FBC 031:917.981 - 0.740ms returns FALSE +T1FBC 032:018.766 JLINK_HasError() +T1FBC 032:018.788 JLINK_IsHalted() +T1FBC 032:019.508 - 0.729ms returns FALSE +T1FBC 032:119.620 JLINK_HasError() +T1FBC 032:119.637 JLINK_IsHalted() +T1FBC 032:120.672 - 1.040ms returns FALSE +T1FBC 032:221.054 JLINK_HasError() +T1FBC 032:221.073 JLINK_HasError() +T1FBC 032:221.078 JLINK_ReadMemU32(0xE0001004, 0x1 Items) +T1FBC 032:221.094 Data: 61 48 83 04 +T1FBC 032:221.101 Debug reg: DWT_CYCCNT +T1FBC 032:221.107 - 0.030ms returns 1 (0x1) +T1FBC 032:222.128 JLINK_IsHalted() +T1FBC 032:222.763 - 0.641ms returns FALSE +T1FBC 032:322.918 JLINK_HasError() +T1FBC 032:322.940 JLINK_IsHalted() +T1FBC 032:323.880 - 0.946ms returns FALSE +T1FBC 032:424.760 JLINK_HasError() +T1FBC 032:424.803 JLINK_IsHalted() +T1FBC 032:425.604 - 0.829ms returns FALSE +T1FBC 032:526.510 JLINK_HasError() +T1FBC 032:526.558 JLINK_IsHalted() +T1FBC 032:527.548 - 0.997ms returns FALSE +T1FBC 032:627.658 JLINK_HasError() +T1FBC 032:627.704 JLINK_IsHalted() +T1FBC 032:628.623 - 0.925ms returns FALSE +T1FBC 032:729.576 JLINK_HasError() +T1FBC 032:729.626 JLINK_IsHalted() +T1FBC 032:730.585 - 0.965ms returns FALSE +T1FBC 032:830.752 JLINK_HasError() +T1FBC 032:830.771 JLINK_HasError() +T1FBC 032:830.776 JLINK_ReadMemU32(0xE0001004, 0x1 Items) +T1FBC 032:830.791 Data: 61 48 83 04 +T1FBC 032:830.798 Debug reg: DWT_CYCCNT +T1FBC 032:830.804 - 0.029ms returns 1 (0x1) +T1FBC 032:830.890 JLINK_IsHalted() +T1FBC 032:831.610 - 0.726ms returns FALSE +T1FBC 032:931.739 JLINK_HasError() +T1FBC 032:931.754 JLINK_IsHalted() +T1FBC 032:932.765 - 1.017ms returns FALSE +T1FBC 033:032.878 JLINK_HasError() +T1FBC 033:032.896 JLINK_IsHalted() +T1FBC 033:033.691 - 0.798ms returns FALSE +T1FBC 033:134.601 JLINK_HasError() +T1FBC 033:134.620 JLINK_IsHalted() +T1FBC 033:135.451 - 0.857ms returns FALSE +T1FBC 033:236.380 JLINK_HasError() +T1FBC 033:236.419 JLINK_IsHalted() +T1FBC 033:237.266 - 0.854ms returns FALSE +T1FBC 033:338.002 JLINK_HasError() +T1FBC 033:338.018 JLINK_IsHalted() +T1FBC 033:338.860 - 0.847ms returns FALSE +T1FBC 033:439.689 JLINK_HasError() +T1FBC 033:439.708 JLINK_HasError() +T1FBC 033:439.713 JLINK_ReadMemU32(0xE0001004, 0x1 Items) +T1FBC 033:439.728 Data: 61 48 83 04 +T1FBC 033:439.735 Debug reg: DWT_CYCCNT +T1FBC 033:439.740 - 0.029ms returns 1 (0x1) +T1FBC 033:439.847 JLINK_IsHalted() +T1FBC 033:440.581 - 0.741ms returns FALSE +T1FBC 033:541.655 JLINK_HasError() +T1FBC 033:541.673 JLINK_IsHalted() +T1FBC 033:542.671 - 1.005ms returns FALSE +T1FBC 033:642.818 JLINK_HasError() +T1FBC 033:642.834 JLINK_IsHalted() +T1FBC 033:643.629 - 0.801ms returns FALSE +T1FBC 033:743.758 JLINK_HasError() +T1FBC 033:743.772 JLINK_IsHalted() +T1FBC 033:744.754 - 0.986ms returns FALSE +T1FBC 033:845.150 JLINK_HasError() +T1FBC 033:845.163 JLINK_IsHalted() +T1FBC 033:846.010 - 0.853ms returns FALSE +T1FBC 033:946.802 JLINK_HasError() +T1FBC 033:946.821 JLINK_IsHalted() +T1FBC 033:947.875 - 1.060ms returns FALSE +T1FBC 034:047.970 JLINK_HasError() +T1FBC 034:047.989 JLINK_HasError() +T1FBC 034:047.995 JLINK_ReadMemU32(0xE0001004, 0x1 Items) +T1FBC 034:048.037 Data: 61 48 83 04 +T1FBC 034:048.045 Debug reg: DWT_CYCCNT +T1FBC 034:048.050 - 0.057ms returns 1 (0x1) +T1FBC 034:048.129 JLINK_IsHalted() +T1FBC 034:049.048 - 0.922ms returns FALSE +T1FBC 034:150.151 JLINK_HasError() +T1FBC 034:150.166 JLINK_IsHalted() +T1FBC 034:151.152 - 0.992ms returns FALSE +T1FBC 034:251.269 JLINK_HasError() +T1FBC 034:251.287 JLINK_IsHalted() +T1FBC 034:252.142 - 0.858ms returns FALSE +T1FBC 034:352.197 JLINK_HasError() +T1FBC 034:352.240 JLINK_IsHalted() +T1FBC 034:353.077 - 0.843ms returns FALSE +T1FBC 034:453.330 JLINK_HasError() +T1FBC 034:453.350 JLINK_IsHalted() +T1FBC 034:454.204 - 0.857ms returns FALSE +T1FBC 034:554.822 JLINK_HasError() +T1FBC 034:554.846 JLINK_HasError() +T1FBC 034:554.853 JLINK_ReadMemU32(0xE0001004, 0x1 Items) +T1FBC 034:554.869 Data: 61 48 83 04 +T1FBC 034:554.876 Debug reg: DWT_CYCCNT +T1FBC 034:554.882 - 0.031ms returns 1 (0x1) +T1FBC 034:555.871 JLINK_IsHalted() +T1FBC 034:556.625 - 0.759ms returns FALSE +T1FBC 034:657.252 JLINK_HasError() +T1FBC 034:657.266 JLINK_IsHalted() +T1FBC 034:658.043 - 0.782ms returns FALSE +T1FBC 034:758.833 JLINK_HasError() +T1FBC 034:758.846 JLINK_IsHalted() +T1FBC 034:759.645 - 0.804ms returns FALSE +T1FBC 034:860.664 JLINK_HasError() +T1FBC 034:860.685 JLINK_IsHalted() +T1FBC 034:861.541 - 0.862ms returns FALSE +T1FBC 034:962.431 JLINK_HasError() +T1FBC 034:962.450 JLINK_IsHalted() +T1FBC 034:963.452 - 1.008ms returns FALSE +T1FBC 035:063.835 JLINK_HasError() +T1FBC 035:063.853 JLINK_IsHalted() +T1FBC 035:064.719 - 0.872ms returns FALSE +T1FBC 035:164.786 JLINK_HasError() +T1FBC 035:164.833 JLINK_HasError() +T1FBC 035:164.839 JLINK_ReadMemU32(0xE0001004, 0x1 Items) +T1FBC 035:164.857 Data: 61 48 83 04 +T1FBC 035:164.864 Debug reg: DWT_CYCCNT +T1FBC 035:164.870 - 0.032ms returns 1 (0x1) +T1FBC 035:164.989 JLINK_IsHalted() +T1FBC 035:165.979 - 0.995ms returns FALSE +T1FBC 035:266.204 JLINK_HasError() +T1FBC 035:266.223 JLINK_IsHalted() +T1FBC 035:266.979 - 0.762ms returns FALSE +T1FBC 035:367.518 JLINK_HasError() +T1FBC 035:367.562 JLINK_IsHalted() +T1FBC 035:368.297 - 0.741ms returns FALSE +T1FBC 035:468.558 JLINK_HasError() +T1FBC 035:468.579 JLINK_IsHalted() +T1FBC 035:469.223 - 0.647ms returns FALSE +T1FBC 035:569.358 JLINK_HasError() +T1FBC 035:569.382 JLINK_IsHalted() +T1FBC 035:570.354 - 0.978ms returns FALSE +T1FBC 035:670.409 JLINK_HasError() +T1FBC 035:670.423 JLINK_IsHalted() +T1FBC 035:671.525 - 1.107ms returns FALSE +T1FBC 035:771.865 JLINK_HasError() +T1FBC 035:771.913 JLINK_HasError() +T1FBC 035:771.918 JLINK_ReadMemU32(0xE0001004, 0x1 Items) +T1FBC 035:771.934 Data: 61 48 83 04 +T1FBC 035:771.941 Debug reg: DWT_CYCCNT +T1FBC 035:771.946 - 0.030ms returns 1 (0x1) +T1FBC 035:771.995 JLINK_IsHalted() +T1FBC 035:772.944 - 0.953ms returns FALSE +T1FBC 035:873.299 JLINK_HasError() +T1FBC 035:873.314 JLINK_IsHalted() +T1FBC 035:874.198 - 0.890ms returns FALSE +T1FBC 035:974.450 JLINK_HasError() +T1FBC 035:974.499 JLINK_IsHalted() +T1FBC 035:975.317 - 0.825ms returns FALSE +T1FBC 036:075.665 JLINK_HasError() +T1FBC 036:075.684 JLINK_IsHalted() +T1FBC 036:076.545 - 0.867ms returns FALSE +T1FBC 036:177.176 JLINK_HasError() +T1FBC 036:177.191 JLINK_IsHalted() +T1FBC 036:178.093 - 0.908ms returns FALSE +T1FBC 036:278.451 JLINK_HasError() +T1FBC 036:278.467 JLINK_IsHalted() +T1FBC 036:279.473 - 1.011ms returns FALSE +T1FBC 036:379.594 JLINK_HasError() +T1FBC 036:379.611 JLINK_HasError() +T1FBC 036:379.616 JLINK_ReadMemU32(0xE0001004, 0x1 Items) +T1FBC 036:379.632 Data: 61 48 83 04 +T1FBC 036:379.640 Debug reg: DWT_CYCCNT +T1FBC 036:379.645 - 0.031ms returns 1 (0x1) +T1FBC 036:379.770 JLINK_IsHalted() +T1FBC 036:380.654 - 0.889ms returns FALSE +T1FBC 036:480.715 JLINK_HasError() +T1FBC 036:480.763 JLINK_IsHalted() +T1FBC 036:481.578 - 0.819ms returns FALSE +T1FBC 036:582.615 JLINK_HasError() +T1FBC 036:582.644 JLINK_IsHalted() +T1FBC 036:583.443 - 0.805ms returns FALSE +T1FBC 036:683.570 JLINK_HasError() +T1FBC 036:683.609 JLINK_IsHalted() +T1FBC 036:684.483 - 0.881ms returns FALSE +T1FBC 036:784.962 JLINK_HasError() +T1FBC 036:784.976 JLINK_IsHalted() +T1FBC 036:785.860 - 0.889ms returns FALSE +T1FBC 036:886.424 JLINK_HasError() +T1FBC 036:886.440 JLINK_IsHalted() +T1FBC 036:887.431 - 1.000ms returns FALSE +T1FBC 036:988.458 JLINK_HasError() +T1FBC 036:988.510 JLINK_HasError() +T1FBC 036:988.515 JLINK_ReadMemU32(0xE0001004, 0x1 Items) +T1FBC 036:988.530 Data: 61 48 83 04 +T1FBC 036:988.537 Debug reg: DWT_CYCCNT +T1FBC 036:988.543 - 0.030ms returns 1 (0x1) +T1FBC 036:988.593 JLINK_IsHalted() +T1FBC 036:989.308 - 0.721ms returns FALSE +T1FBC 037:089.710 JLINK_HasError() +T1FBC 037:089.729 JLINK_IsHalted() +T1FBC 037:090.744 - 1.020ms returns FALSE +T1FBC 037:191.569 JLINK_HasError() +T1FBC 037:191.586 JLINK_IsHalted() +T1FBC 037:192.439 - 0.861ms returns FALSE +T1FBC 037:293.374 JLINK_HasError() +T1FBC 037:293.390 JLINK_IsHalted() +T1FBC 037:294.277 - 0.893ms returns FALSE +T1FBC 037:395.411 JLINK_HasError() +T1FBC 037:395.426 JLINK_IsHalted() +T1FBC 037:396.304 - 0.884ms returns FALSE +T1FBC 037:496.801 JLINK_HasError() +T1FBC 037:496.819 JLINK_IsHalted() +T1FBC 037:497.595 - 0.782ms returns FALSE +T1FBC 037:597.765 JLINK_HasError() +T1FBC 037:597.785 JLINK_HasError() +T1FBC 037:597.790 JLINK_ReadMemU32(0xE0001004, 0x1 Items) +T1FBC 037:597.805 Data: 61 48 83 04 +T1FBC 037:597.812 Debug reg: DWT_CYCCNT +T1FBC 037:597.817 - 0.029ms returns 1 (0x1) +T1FBC 037:597.943 JLINK_IsHalted() +T1FBC 037:598.807 - 0.870ms returns FALSE +T1FBC 037:698.927 JLINK_HasError() +T1FBC 037:698.942 JLINK_IsHalted() +T1FBC 037:699.869 - 0.932ms returns FALSE +T1FBC 037:800.370 JLINK_HasError() +T1FBC 037:800.386 JLINK_IsHalted() +T1FBC 037:801.099 - 0.717ms returns FALSE +T1FBC 037:902.217 JLINK_HasError() +T1FBC 037:902.232 JLINK_IsHalted() +T1FBC 037:903.114 - 0.890ms returns FALSE +T1FBC 038:003.469 JLINK_HasError() +T1FBC 038:003.489 JLINK_IsHalted() +T1FBC 038:004.269 - 0.787ms returns FALSE +T1FBC 038:104.322 JLINK_HasError() +T1FBC 038:104.339 JLINK_IsHalted() +T1FBC 038:105.392 - 1.059ms returns FALSE +T1FBC 038:206.210 JLINK_HasError() +T1FBC 038:206.266 JLINK_HasError() +T1FBC 038:206.291 JLINK_ReadMemU32(0xE0001004, 0x1 Items) +T1FBC 038:206.341 Data: 61 48 83 04 +T1FBC 038:206.370 Debug reg: DWT_CYCCNT +T1FBC 038:206.376 - 0.086ms returns 1 (0x1) +T1FBC 038:206.500 JLINK_IsHalted() +T1FBC 038:207.222 - 0.728ms returns FALSE +T1FBC 038:307.663 JLINK_HasError() +T1FBC 038:307.722 JLINK_IsHalted() +T1FBC 038:308.752 - 1.059ms returns FALSE +T1FBC 038:408.948 JLINK_HasError() +T1FBC 038:408.965 JLINK_IsHalted() +T1FBC 038:409.880 - 0.921ms returns FALSE +T1FBC 038:509.947 JLINK_HasError() +T1FBC 038:509.993 JLINK_IsHalted() +T1FBC 038:510.975 - 0.988ms returns FALSE +T1FBC 038:611.135 JLINK_HasError() +T1FBC 038:611.154 JLINK_IsHalted() +T1FBC 038:611.940 - 0.792ms returns FALSE +T1FBC 038:712.310 JLINK_HasError() +T1FBC 038:712.331 JLINK_IsHalted() +T1FBC 038:713.226 - 0.902ms returns FALSE +T1FBC 038:813.280 JLINK_HasError() +T1FBC 038:813.297 JLINK_HasError() +T1FBC 038:813.302 JLINK_ReadMemU32(0xE0001004, 0x1 Items) +T1FBC 038:813.316 Data: 61 48 83 04 +T1FBC 038:813.322 Debug reg: DWT_CYCCNT +T1FBC 038:813.328 - 0.028ms returns 1 (0x1) +T1FBC 038:813.423 JLINK_IsHalted() +T1FBC 038:814.277 - 0.860ms returns FALSE +T1FBC 038:914.423 JLINK_HasError() +T1FBC 038:914.442 JLINK_IsHalted() +T1FBC 038:915.328 - 0.892ms returns FALSE +T1FBC 039:015.861 JLINK_HasError() +T1FBC 039:015.880 JLINK_IsHalted() +T1FBC 039:016.886 - 1.011ms returns FALSE +T1FBC 039:117.925 JLINK_HasError() +T1FBC 039:117.942 JLINK_IsHalted() +T1FBC 039:118.716 - 0.779ms returns FALSE +T1FBC 039:219.047 JLINK_HasError() +T1FBC 039:219.066 JLINK_IsHalted() +T1FBC 039:220.008 - 0.947ms returns FALSE +T1FBC 039:320.661 JLINK_HasError() +T1FBC 039:320.706 JLINK_HasError() +T1FBC 039:320.711 JLINK_ReadMemU32(0xE0001004, 0x1 Items) +T1FBC 039:320.726 Data: 61 48 83 04 +T1FBC 039:320.737 Debug reg: DWT_CYCCNT +T1FBC 039:320.743 - 0.033ms returns 1 (0x1) +T1FBC 039:320.820 JLINK_IsHalted() +T1FBC 039:321.708 - 0.891ms returns FALSE +T1FBC 039:422.804 JLINK_HasError() +T1FBC 039:422.823 JLINK_IsHalted() +T1FBC 039:423.833 - 1.016ms returns FALSE +T1FBC 039:524.548 JLINK_HasError() +T1FBC 039:524.592 JLINK_IsHalted() +T1FBC 039:525.633 - 1.048ms returns FALSE +T1FBC 039:626.704 JLINK_HasError() +T1FBC 039:626.720 JLINK_IsHalted() +T1FBC 039:627.633 - 0.918ms returns FALSE +T1FBC 039:728.457 JLINK_HasError() +T1FBC 039:728.477 JLINK_IsHalted() +T1FBC 039:729.399 - 0.928ms returns FALSE +T1FBC 039:830.072 JLINK_HasError() +T1FBC 039:830.092 JLINK_HasError() +T1FBC 039:830.097 JLINK_ReadMemU32(0xE0001004, 0x1 Items) +T1FBC 039:830.112 Data: 61 48 83 04 +T1FBC 039:830.119 Debug reg: DWT_CYCCNT +T1FBC 039:830.124 - 0.029ms returns 1 (0x1) +T1FBC 039:830.212 JLINK_IsHalted() +T1FBC 039:830.891 - 0.684ms returns FALSE +T1FBC 039:931.028 JLINK_HasError() +T1FBC 039:931.045 JLINK_IsHalted() +T1FBC 039:931.985 - 0.946ms returns FALSE +T1FBC 040:032.096 JLINK_HasError() +T1FBC 040:032.114 JLINK_IsHalted() +T1FBC 040:033.057 - 0.949ms returns FALSE +T1FBC 040:134.068 JLINK_HasError() +T1FBC 040:134.088 JLINK_IsHalted() +T1FBC 040:134.803 - 0.719ms returns FALSE +T1FBC 040:234.923 JLINK_HasError() +T1FBC 040:234.937 JLINK_IsHalted() +T1FBC 040:235.853 - 0.922ms returns FALSE +T1FBC 040:336.713 JLINK_HasError() +T1FBC 040:336.733 JLINK_IsHalted() +T1FBC 040:337.624 - 0.897ms returns FALSE +T1FBC 040:437.690 JLINK_HasError() +T1FBC 040:437.736 JLINK_HasError() +T1FBC 040:437.742 JLINK_ReadMemU32(0xE0001004, 0x1 Items) +T1FBC 040:437.757 Data: 61 48 83 04 +T1FBC 040:437.764 Debug reg: DWT_CYCCNT +T1FBC 040:437.770 - 0.030ms returns 1 (0x1) +T1FBC 040:437.829 JLINK_IsHalted() +T1FBC 040:438.589 - 0.764ms returns FALSE +T1FBC 040:539.360 JLINK_HasError() +T1FBC 040:539.376 JLINK_IsHalted() +T1FBC 040:540.059 - 0.689ms returns FALSE +T1FBC 040:640.175 JLINK_HasError() +T1FBC 040:640.191 JLINK_IsHalted() +T1FBC 040:640.964 - 0.779ms returns FALSE +T1FBC 040:741.746 JLINK_HasError() +T1FBC 040:741.759 JLINK_IsHalted() +T1FBC 040:742.507 - 0.754ms returns FALSE +T1FBC 040:843.367 JLINK_HasError() +T1FBC 040:843.424 JLINK_IsHalted() +T1FBC 040:844.379 - 0.961ms returns FALSE +T1FBC 040:944.611 JLINK_HasError() +T1FBC 040:944.627 JLINK_HasError() +T1FBC 040:944.632 JLINK_ReadMemU32(0xE0001004, 0x1 Items) +T1FBC 040:944.646 Data: 61 48 83 04 +T1FBC 040:944.652 Debug reg: DWT_CYCCNT +T1FBC 040:944.658 - 0.028ms returns 1 (0x1) +T1FBC 040:944.740 JLINK_IsHalted() +T1FBC 040:945.538 - 0.804ms returns FALSE +T1FBC 041:045.663 JLINK_HasError() +T1FBC 041:045.679 JLINK_IsHalted() +T1FBC 041:046.552 - 0.879ms returns FALSE +T1FBC 041:147.436 JLINK_HasError() +T1FBC 041:147.451 JLINK_IsHalted() +T1FBC 041:148.437 - 0.991ms returns FALSE +T1FBC 041:249.551 JLINK_HasError() +T1FBC 041:249.569 JLINK_IsHalted() +T1FBC 041:250.531 - 0.968ms returns FALSE +T1FBC 041:350.663 JLINK_HasError() +T1FBC 041:350.685 JLINK_IsHalted() +T1FBC 041:351.473 - 0.792ms returns FALSE +T1FBC 041:452.462 JLINK_HasError() +T1FBC 041:452.506 JLINK_IsHalted() +T1FBC 041:453.186 - 0.708ms returns FALSE +T1FBC 041:553.322 JLINK_HasError() +T1FBC 041:553.361 JLINK_HasError() +T1FBC 041:553.366 JLINK_ReadMemU32(0xE0001004, 0x1 Items) +T1FBC 041:553.381 Data: 61 48 83 04 +T1FBC 041:553.388 Debug reg: DWT_CYCCNT +T1FBC 041:553.394 - 0.029ms returns 1 (0x1) +T1FBC 041:553.482 JLINK_IsHalted() +T1FBC 041:554.287 - 0.808ms returns FALSE +T1FBC 041:654.401 JLINK_HasError() +T1FBC 041:654.418 JLINK_IsHalted() +T1FBC 041:655.296 - 0.881ms returns FALSE +T1FBC 041:756.153 JLINK_HasError() +T1FBC 041:756.166 JLINK_IsHalted() +T1FBC 041:757.078 - 0.936ms returns FALSE +T1FBC 041:857.166 JLINK_HasError() +T1FBC 041:857.185 JLINK_IsHalted() +T1FBC 041:858.253 - 1.074ms returns FALSE +T1FBC 041:958.470 JLINK_HasError() +T1FBC 041:958.512 JLINK_IsHalted() +T1FBC 041:959.539 - 1.033ms returns FALSE +T1FBC 042:060.471 JLINK_HasError() +T1FBC 042:060.492 JLINK_IsHalted() +T1FBC 042:061.265 - 0.779ms returns FALSE +T1FBC 042:161.982 JLINK_HasError() +T1FBC 042:162.000 JLINK_HasError() +T1FBC 042:162.005 JLINK_ReadMemU32(0xE0001004, 0x1 Items) +T1FBC 042:162.020 Data: 61 48 83 04 +T1FBC 042:162.027 Debug reg: DWT_CYCCNT +T1FBC 042:162.033 - 0.029ms returns 1 (0x1) +T1FBC 042:162.155 JLINK_IsHalted() +T1FBC 042:163.150 - 1.001ms returns FALSE +T1FBC 042:263.306 JLINK_HasError() +T1FBC 042:263.322 JLINK_IsHalted() +T1FBC 042:264.048 - 0.732ms returns FALSE +T1FBC 042:364.652 JLINK_HasError() +T1FBC 042:364.695 JLINK_IsHalted() +T1FBC 042:365.615 - 0.924ms returns FALSE +T1FBC 042:466.658 JLINK_HasError() +T1FBC 042:466.677 JLINK_IsHalted() +T1FBC 042:467.630 - 0.960ms returns FALSE +T1FBC 042:567.707 JLINK_HasError() +T1FBC 042:567.752 JLINK_IsHalted() +T1FBC 042:568.661 - 0.936ms returns FALSE +T1FBC 042:668.818 JLINK_HasError() +T1FBC 042:668.834 JLINK_IsHalted() +T1FBC 042:669.839 - 1.011ms returns FALSE +T1FBC 042:770.327 JLINK_HasError() +T1FBC 042:770.342 JLINK_HasError() +T1FBC 042:770.347 JLINK_ReadMemU32(0xE0001004, 0x1 Items) +T1FBC 042:770.361 Data: 61 48 83 04 +T1FBC 042:770.368 Debug reg: DWT_CYCCNT +T1FBC 042:770.373 - 0.028ms returns 1 (0x1) +T1FBC 042:770.484 JLINK_IsHalted() +T1FBC 042:771.199 - 0.718ms returns FALSE +T1FBC 042:871.473 JLINK_HasError() +T1FBC 042:871.487 JLINK_IsHalted() +T1FBC 042:872.318 - 0.837ms returns FALSE +T1FBC 042:972.392 JLINK_HasError() +T1FBC 042:972.434 JLINK_IsHalted() +T1FBC 042:973.293 - 0.866ms returns FALSE +T1FBC 043:073.694 JLINK_HasError() +T1FBC 043:073.713 JLINK_IsHalted() +T1FBC 043:074.617 - 0.910ms returns FALSE +T1FBC 043:174.768 JLINK_HasError() +T1FBC 043:174.784 JLINK_IsHalted() +T1FBC 043:175.759 - 0.981ms returns FALSE +T1FBC 043:275.883 JLINK_HasError() +T1FBC 043:275.921 JLINK_IsHalted() +T1FBC 043:276.684 - 0.768ms returns FALSE +T1FBC 043:377.521 JLINK_HasError() +T1FBC 043:377.539 JLINK_HasError() +T1FBC 043:377.544 JLINK_ReadMemU32(0xE0001004, 0x1 Items) +T1FBC 043:377.558 Data: 61 48 83 04 +T1FBC 043:377.565 Debug reg: DWT_CYCCNT +T1FBC 043:377.571 - 0.028ms returns 1 (0x1) +T1FBC 043:377.679 JLINK_IsHalted() +T1FBC 043:378.461 - 0.788ms returns FALSE +T1FBC 043:479.374 JLINK_HasError() +T1FBC 043:479.393 JLINK_IsHalted() +T1FBC 043:480.169 - 0.807ms returns FALSE +T1FBC 043:580.328 JLINK_HasError() +T1FBC 043:580.369 JLINK_IsHalted() +T1FBC 043:581.300 - 0.938ms returns FALSE +T1FBC 043:681.640 JLINK_HasError() +T1FBC 043:681.658 JLINK_IsHalted() +T1FBC 043:682.672 - 1.020ms returns FALSE +T1FBC 043:782.735 JLINK_HasError() +T1FBC 043:782.749 JLINK_IsHalted() +T1FBC 043:783.573 - 0.830ms returns FALSE +T1FBC 043:883.687 JLINK_HasError() +T1FBC 043:883.699 JLINK_IsHalted() +T1FBC 043:884.562 - 0.866ms returns FALSE +T1FBC 043:985.243 JLINK_HasError() +T1FBC 043:985.291 JLINK_HasError() +T1FBC 043:985.296 JLINK_ReadMemU32(0xE0001004, 0x1 Items) +T1FBC 043:985.311 Data: 61 48 83 04 +T1FBC 043:985.318 Debug reg: DWT_CYCCNT +T1FBC 043:985.323 - 0.029ms returns 1 (0x1) +T1FBC 043:985.372 JLINK_IsHalted() +T1FBC 043:986.152 - 0.783ms returns FALSE +T1FBC 044:086.595 JLINK_HasError() +T1FBC 044:086.645 JLINK_IsHalted() +T1FBC 044:087.419 - 0.778ms returns FALSE +T1FBC 044:187.572 JLINK_HasError() +T1FBC 044:187.611 JLINK_IsHalted() +T1FBC 044:188.545 - 0.937ms returns FALSE +T1FBC 044:288.654 JLINK_HasError() +T1FBC 044:288.672 JLINK_IsHalted() +T1FBC 044:289.540 - 0.874ms returns FALSE +T1FBC 044:389.698 JLINK_HasError() +T1FBC 044:389.715 JLINK_IsHalted() +T1FBC 044:390.469 - 0.760ms returns FALSE +T1FBC 044:490.630 JLINK_HasError() +T1FBC 044:490.646 JLINK_HasError() +T1FBC 044:490.652 JLINK_ReadMemU32(0xE0001004, 0x1 Items) +T1FBC 044:490.667 Data: 61 48 83 04 +T1FBC 044:490.674 Debug reg: DWT_CYCCNT +T1FBC 044:490.679 - 0.029ms returns 1 (0x1) +T1FBC 044:490.794 JLINK_IsHalted() +T1FBC 044:491.676 - 0.888ms returns FALSE +T1FBC 044:591.805 JLINK_HasError() +T1FBC 044:591.825 JLINK_IsHalted() +T1FBC 044:592.596 - 0.777ms returns FALSE +T1FBC 044:693.478 JLINK_HasError() +T1FBC 044:693.524 JLINK_IsHalted() +T1FBC 044:694.317 - 0.824ms returns FALSE +T1FBC 044:794.424 JLINK_HasError() +T1FBC 044:794.436 JLINK_IsHalted() +T1FBC 044:795.581 - 1.151ms returns FALSE +T1FBC 044:895.675 JLINK_HasError() +T1FBC 044:895.720 JLINK_IsHalted() +T1FBC 044:896.486 - 0.773ms returns FALSE +T1FBC 044:997.485 JLINK_HasError() +T1FBC 044:997.505 JLINK_IsHalted() +T1FBC 044:998.326 - 0.825ms returns FALSE +T1FBC 045:098.348 JLINK_HasError() +T1FBC 045:098.368 JLINK_HasError() +T1FBC 045:098.373 JLINK_ReadMemU32(0xE0001004, 0x1 Items) +T1FBC 045:098.388 Data: 61 48 83 04 +T1FBC 045:098.395 Debug reg: DWT_CYCCNT +T1FBC 045:098.400 - 0.029ms returns 1 (0x1) +T1FBC 045:098.465 JLINK_IsHalted() +T1FBC 045:099.211 - 0.762ms returns FALSE +T1FBC 045:199.377 JLINK_HasError() +T1FBC 045:199.397 JLINK_IsHalted() +T1FBC 045:200.092 - 0.701ms returns FALSE +T1FBC 045:300.371 JLINK_HasError() +T1FBC 045:300.388 JLINK_IsHalted() +T1FBC 045:301.086 - 0.701ms returns FALSE +T1FBC 045:402.132 JLINK_HasError() +T1FBC 045:402.147 JLINK_IsHalted() +T1FBC 045:403.006 - 0.865ms returns FALSE +T1FBC 045:503.645 JLINK_HasError() +T1FBC 045:503.663 JLINK_IsHalted() +T1FBC 045:504.502 - 0.844ms returns FALSE +T1FBC 045:605.470 JLINK_HasError() +T1FBC 045:605.489 JLINK_IsHalted() +T1FBC 045:606.194 - 0.711ms returns FALSE +T1FBC 045:706.492 JLINK_HasError() +T1FBC 045:706.545 JLINK_HasError() +T1FBC 045:706.570 JLINK_ReadMemU32(0xE0001004, 0x1 Items) +T1FBC 045:706.620 Data: 61 48 83 04 +T1FBC 045:706.654 Debug reg: DWT_CYCCNT +T1FBC 045:706.681 - 0.121ms returns 1 (0x1) +T1FBC 045:707.803 JLINK_IsHalted() +T1FBC 045:708.703 - 0.906ms returns FALSE +T1FBC 045:808.808 JLINK_HasError() +T1FBC 045:808.854 JLINK_IsHalted() +T1FBC 045:809.901 - 1.053ms returns FALSE +T1FBC 045:910.029 JLINK_HasError() +T1FBC 045:910.042 JLINK_IsHalted() +T1FBC 045:910.778 - 0.764ms returns FALSE +T1FBC 046:010.870 JLINK_HasError() +T1FBC 046:010.909 JLINK_IsHalted() +T1FBC 046:011.894 - 0.991ms returns FALSE +T1FBC 046:112.795 JLINK_HasError() +T1FBC 046:112.813 JLINK_IsHalted() +T1FBC 046:113.765 - 0.960ms returns FALSE +T1FBC 046:214.052 JLINK_HasError() +T1FBC 046:214.096 JLINK_IsHalted() +T1FBC 046:214.896 - 0.807ms returns FALSE +T1FBC 046:315.405 JLINK_HasError() +T1FBC 046:315.420 JLINK_HasError() +T1FBC 046:315.425 JLINK_ReadMemU32(0xE0001004, 0x1 Items) +T1FBC 046:315.439 Data: 61 48 83 04 +T1FBC 046:315.446 Debug reg: DWT_CYCCNT +T1FBC 046:315.451 - 0.028ms returns 1 (0x1) +T1FBC 046:315.531 JLINK_IsHalted() +T1FBC 046:316.415 - 0.887ms returns FALSE +T1FBC 046:416.835 JLINK_HasError() +T1FBC 046:416.915 JLINK_IsHalted() +T1FBC 046:417.896 - 1.011ms returns FALSE +T1FBC 046:518.533 JLINK_HasError() +T1FBC 046:518.551 JLINK_IsHalted() +T1FBC 046:519.396 - 0.850ms returns FALSE +T1FBC 046:620.426 JLINK_HasError() +T1FBC 046:620.472 JLINK_IsHalted() +T1FBC 046:621.386 - 0.921ms returns FALSE +T1FBC 046:721.493 JLINK_HasError() +T1FBC 046:721.513 JLINK_IsHalted() +T1FBC 046:722.325 - 0.839ms returns FALSE +T1FBC 046:822.535 JLINK_HasError() +T1FBC 046:822.552 JLINK_IsHalted() +T1FBC 046:823.611 - 1.064ms returns FALSE +T1FBC 046:923.688 JLINK_HasError() +T1FBC 046:923.703 JLINK_HasError() +T1FBC 046:923.708 JLINK_ReadMemU32(0xE0001004, 0x1 Items) +T1FBC 046:923.723 Data: 61 48 83 04 +T1FBC 046:923.729 Debug reg: DWT_CYCCNT +T1FBC 046:923.735 - 0.028ms returns 1 (0x1) +T1FBC 046:923.777 JLINK_IsHalted() +T1FBC 046:924.648 - 0.874ms returns FALSE +T1FBC 047:024.766 JLINK_HasError() +T1FBC 047:024.786 JLINK_IsHalted() +T1FBC 047:025.642 - 0.863ms returns FALSE +T1FBC 047:126.277 JLINK_HasError() +T1FBC 047:126.297 JLINK_IsHalted() +T1FBC 047:126.938 - 0.647ms returns FALSE +T1FBC 047:227.106 JLINK_HasError() +T1FBC 047:227.119 JLINK_IsHalted() +T1FBC 047:228.071 - 0.958ms returns FALSE +T1FBC 047:328.515 JLINK_HasError() +T1FBC 047:328.532 JLINK_IsHalted() +T1FBC 047:329.369 - 0.841ms returns FALSE +T1FBC 047:429.465 JLINK_HasError() +T1FBC 047:429.484 JLINK_IsHalted() +T1FBC 047:430.576 - 1.099ms returns FALSE +T1FBC 047:531.586 JLINK_HasError() +T1FBC 047:531.603 JLINK_HasError() +T1FBC 047:531.608 JLINK_ReadMemU32(0xE0001004, 0x1 Items) +T1FBC 047:531.622 Data: 61 48 83 04 +T1FBC 047:531.629 Debug reg: DWT_CYCCNT +T1FBC 047:531.635 - 0.028ms returns 1 (0x1) +T1FBC 047:531.759 JLINK_IsHalted() +T1FBC 047:532.685 - 0.931ms returns FALSE +T1FBC 047:632.739 JLINK_HasError() +T1FBC 047:632.759 JLINK_IsHalted() +T1FBC 047:633.692 - 0.941ms returns FALSE +T1FBC 047:734.617 JLINK_HasError() +T1FBC 047:734.635 JLINK_IsHalted() +T1FBC 047:735.506 - 0.877ms returns FALSE +T1FBC 047:836.263 JLINK_HasError() +T1FBC 047:836.300 JLINK_IsHalted() +T1FBC 047:837.365 - 1.068ms returns FALSE +T1FBC 047:937.587 JLINK_HasError() +T1FBC 047:937.602 JLINK_IsHalted() +T1FBC 047:938.685 - 1.090ms returns FALSE +T1FBC 048:039.510 JLINK_HasError() +T1FBC 048:039.529 JLINK_HasError() +T1FBC 048:039.537 JLINK_ReadMemU32(0xE0001004, 0x1 Items) +T1FBC 048:039.551 Data: 61 48 83 04 +T1FBC 048:039.558 Debug reg: DWT_CYCCNT +T1FBC 048:039.563 - 0.029ms returns 1 (0x1) +T1FBC 048:039.648 JLINK_IsHalted() +T1FBC 048:040.684 - 1.041ms returns FALSE +T1FBC 048:140.735 JLINK_HasError() +T1FBC 048:140.747 JLINK_IsHalted() +T1FBC 048:141.669 - 0.927ms returns FALSE +T1FBC 048:242.525 JLINK_HasError() +T1FBC 048:242.543 JLINK_IsHalted() +T1FBC 048:243.394 - 0.857ms returns FALSE +T1FBC 048:343.458 JLINK_HasError() +T1FBC 048:343.476 JLINK_IsHalted() +T1FBC 048:344.203 - 0.733ms returns FALSE +T1FBC 048:444.307 JLINK_HasError() +T1FBC 048:444.320 JLINK_IsHalted() +T1FBC 048:445.417 - 1.106ms returns FALSE +T1FBC 048:545.948 JLINK_HasError() +T1FBC 048:545.966 JLINK_IsHalted() +T1FBC 048:546.820 - 0.860ms returns FALSE +T1FBC 048:647.473 JLINK_HasError() +T1FBC 048:647.492 JLINK_HasError() +T1FBC 048:647.497 JLINK_ReadMemU32(0xE0001004, 0x1 Items) +T1FBC 048:647.512 Data: 61 48 83 04 +T1FBC 048:647.519 Debug reg: DWT_CYCCNT +T1FBC 048:647.525 - 0.029ms returns 1 (0x1) +T1FBC 048:647.606 JLINK_IsHalted() +T1FBC 048:648.305 - 0.703ms returns FALSE +T1FBC 048:749.233 JLINK_HasError() +T1FBC 048:749.252 JLINK_IsHalted() +T1FBC 048:750.019 - 0.773ms returns FALSE +T1FBC 048:850.140 JLINK_HasError() +T1FBC 048:850.155 JLINK_IsHalted() +T1FBC 048:850.919 - 0.769ms returns FALSE +T1FBC 048:952.002 JLINK_HasError() +T1FBC 048:952.048 JLINK_IsHalted() +T1FBC 048:952.985 - 0.944ms returns FALSE +T1FBC 049:053.203 JLINK_HasError() +T1FBC 049:053.218 JLINK_IsHalted() +T1FBC 049:054.061 - 0.846ms returns FALSE +T1FBC 049:154.641 JLINK_HasError() +T1FBC 049:154.657 JLINK_IsHalted() +T1FBC 049:155.515 - 0.863ms returns FALSE +T1FBC 049:255.880 JLINK_HasError() +T1FBC 049:255.899 JLINK_HasError() +T1FBC 049:255.904 JLINK_ReadMemU32(0xE0001004, 0x1 Items) +T1FBC 049:255.919 Data: 61 48 83 04 +T1FBC 049:255.926 Debug reg: DWT_CYCCNT +T1FBC 049:255.931 - 0.029ms returns 1 (0x1) +T1FBC 049:256.024 JLINK_IsHalted() +T1FBC 049:256.866 - 0.847ms returns FALSE +T1FBC 049:357.460 JLINK_HasError() +T1FBC 049:357.475 JLINK_IsHalted() +T1FBC 049:358.383 - 0.912ms returns FALSE +T1FBC 049:458.810 JLINK_HasError() +T1FBC 049:458.828 JLINK_IsHalted() +T1FBC 049:459.747 - 0.926ms returns FALSE +T1FBC 049:560.151 JLINK_HasError() +T1FBC 049:560.166 JLINK_IsHalted() +T1FBC 049:560.875 - 0.715ms returns FALSE +T1FBC 049:660.928 JLINK_HasError() +T1FBC 049:660.976 JLINK_IsHalted() +T1FBC 049:661.741 - 0.768ms returns FALSE +T1FBC 049:762.334 JLINK_HasError() +T1FBC 049:762.388 JLINK_IsHalted() +T1FBC 049:763.272 - 0.926ms returns FALSE +T1FBC 049:863.461 JLINK_HasError() +T1FBC 049:863.480 JLINK_HasError() +T1FBC 049:863.485 JLINK_ReadMemU32(0xE0001004, 0x1 Items) +T1FBC 049:863.500 Data: 61 48 83 04 +T1FBC 049:863.506 Debug reg: DWT_CYCCNT +T1FBC 049:863.512 - 0.029ms returns 1 (0x1) +T1FBC 049:863.608 JLINK_IsHalted() +T1FBC 049:864.526 - 0.924ms returns FALSE +T1FBC 049:964.685 JLINK_HasError() +T1FBC 049:964.699 JLINK_IsHalted() +T1FBC 049:965.503 - 0.810ms returns FALSE +T1FBC 050:066.306 JLINK_HasError() +T1FBC 050:066.371 JLINK_IsHalted() +T1FBC 050:067.301 - 0.939ms returns FALSE +T1FBC 050:167.428 JLINK_HasError() +T1FBC 050:167.448 JLINK_IsHalted() +T1FBC 050:168.514 - 1.072ms returns FALSE +T1FBC 050:269.948 JLINK_HasError() +T1FBC 050:269.963 JLINK_IsHalted() +T1FBC 050:270.619 - 0.662ms returns FALSE +T1FBC 050:370.683 JLINK_HasError() +T1FBC 050:370.727 JLINK_IsHalted() +T1FBC 050:371.626 - 0.929ms returns FALSE +T1FBC 050:472.451 JLINK_HasError() +T1FBC 050:472.468 JLINK_HasError() +T1FBC 050:472.473 JLINK_ReadMemU32(0xE0001004, 0x1 Items) +T1FBC 050:472.488 Data: 61 48 83 04 +T1FBC 050:472.495 Debug reg: DWT_CYCCNT +T1FBC 050:472.500 - 0.029ms returns 1 (0x1) +T1FBC 050:472.620 JLINK_IsHalted() +T1FBC 050:473.456 - 0.841ms returns FALSE +T1FBC 050:573.567 JLINK_HasError() +T1FBC 050:573.579 JLINK_IsHalted() +T1FBC 050:574.593 - 1.019ms returns FALSE +T1FBC 050:674.664 JLINK_HasError() +T1FBC 050:674.712 JLINK_IsHalted() +T1FBC 050:675.494 - 0.785ms returns FALSE +T1FBC 050:776.189 JLINK_HasError() +T1FBC 050:776.234 JLINK_IsHalted() +T1FBC 050:777.139 - 0.914ms returns FALSE +T1FBC 050:877.307 JLINK_HasError() +T1FBC 050:877.323 JLINK_IsHalted() +T1FBC 050:878.127 - 0.809ms returns FALSE +T1FBC 050:978.957 JLINK_HasError() +T1FBC 050:978.976 JLINK_IsHalted() +T1FBC 050:979.832 - 0.862ms returns FALSE +T1FBC 051:080.599 JLINK_HasError() +T1FBC 051:080.655 JLINK_HasError() +T1FBC 051:080.680 JLINK_ReadMemU32(0xE0001004, 0x1 Items) +T1FBC 051:080.730 Data: 61 48 83 04 +T1FBC 051:080.762 Debug reg: DWT_CYCCNT +T1FBC 051:080.791 - 0.121ms returns 1 (0x1) +T1FBC 051:081.078 JLINK_IsHalted() +T1FBC 051:081.940 - 0.869ms returns FALSE +T1FBC 051:181.998 JLINK_HasError() +T1FBC 051:182.014 JLINK_IsHalted() +T1FBC 051:182.779 - 0.771ms returns FALSE +T1FBC 051:283.299 JLINK_HasError() +T1FBC 051:283.315 JLINK_IsHalted() +T1FBC 051:284.328 - 1.019ms returns FALSE +T1FBC 051:385.327 JLINK_HasError() +T1FBC 051:385.347 JLINK_IsHalted() +T1FBC 051:386.008 - 0.669ms returns FALSE +T1FBC 051:486.748 JLINK_HasError() +T1FBC 051:486.767 JLINK_IsHalted() +T1FBC 051:487.680 - 0.919ms returns FALSE +T1FBC 051:588.639 JLINK_HasError() +T1FBC 051:588.654 JLINK_IsHalted() +T1FBC 051:589.373 - 0.725ms returns FALSE +T1FBC 051:689.506 JLINK_HasError() +T1FBC 051:689.525 JLINK_HasError() +T1FBC 051:689.530 JLINK_ReadMemU32(0xE0001004, 0x1 Items) +T1FBC 051:689.546 Data: 61 48 83 04 +T1FBC 051:689.553 Debug reg: DWT_CYCCNT +T1FBC 051:689.561 - 0.032ms returns 1 (0x1) +T1FBC 051:689.652 JLINK_IsHalted() +T1FBC 051:690.460 - 0.811ms returns FALSE +T1FBC 051:790.753 JLINK_HasError() +T1FBC 051:790.770 JLINK_IsHalted() +T1FBC 051:791.773 - 1.011ms returns FALSE +T1FBC 051:892.496 JLINK_HasError() +T1FBC 051:892.515 JLINK_IsHalted() +T1FBC 051:893.272 - 0.763ms returns FALSE +T1FBC 051:993.591 JLINK_HasError() +T1FBC 051:993.610 JLINK_IsHalted() +T1FBC 051:994.595 - 0.991ms returns FALSE +T1FBC 052:095.432 JLINK_HasError() +T1FBC 052:095.450 JLINK_IsHalted() +T1FBC 052:096.397 - 0.951ms returns FALSE +T1FBC 052:196.446 JLINK_HasError() +T1FBC 052:196.462 JLINK_IsHalted() +T1FBC 052:197.452 - 0.993ms returns FALSE +T1FBC 052:297.948 JLINK_HasError() +T1FBC 052:297.993 JLINK_HasError() +T1FBC 052:297.998 JLINK_ReadMemU32(0xE0001004, 0x1 Items) +T1FBC 052:298.015 Data: 61 48 83 04 +T1FBC 052:298.022 Debug reg: DWT_CYCCNT +T1FBC 052:298.028 - 0.032ms returns 1 (0x1) +T1FBC 052:298.074 JLINK_IsHalted() +T1FBC 052:298.756 - 0.713ms returns FALSE +T1FBC 052:399.024 JLINK_HasError() +T1FBC 052:399.041 JLINK_IsHalted() +T1FBC 052:399.866 - 0.831ms returns FALSE +T1FBC 052:499.979 JLINK_HasError() +T1FBC 052:500.022 JLINK_IsHalted() +T1FBC 052:501.117 - 1.102ms returns FALSE +T1FBC 052:601.264 JLINK_HasError() +T1FBC 052:601.280 JLINK_IsHalted() +T1FBC 052:602.290 - 1.016ms returns FALSE +T1FBC 052:703.060 JLINK_HasError() +T1FBC 052:703.075 JLINK_IsHalted() +T1FBC 052:703.722 - 0.651ms returns FALSE +T1FBC 052:804.305 JLINK_HasError() +T1FBC 052:804.319 JLINK_HasError() +T1FBC 052:804.324 JLINK_ReadMemU32(0xE0001004, 0x1 Items) +T1FBC 052:804.341 Data: 61 48 83 04 +T1FBC 052:804.348 Debug reg: DWT_CYCCNT +T1FBC 052:804.358 - 0.036ms returns 1 (0x1) +T1FBC 052:804.438 JLINK_IsHalted() +T1FBC 052:805.366 - 0.934ms returns FALSE +T1FBC 052:905.848 JLINK_HasError() +T1FBC 052:905.890 JLINK_IsHalted() +T1FBC 052:906.897 - 1.010ms returns FALSE +T1FBC 053:006.965 JLINK_HasError() +T1FBC 053:006.983 JLINK_IsHalted() +T1FBC 053:007.795 - 0.845ms returns FALSE +T1FBC 053:108.474 JLINK_HasError() +T1FBC 053:108.514 JLINK_IsHalted() +T1FBC 053:109.447 - 0.939ms returns FALSE +T1FBC 053:209.613 JLINK_HasError() +T1FBC 053:209.628 JLINK_IsHalted() +T1FBC 053:210.454 - 0.832ms returns FALSE +T1FBC 053:310.516 JLINK_HasError() +T1FBC 053:310.558 JLINK_IsHalted() +T1FBC 053:311.520 - 0.965ms returns FALSE +T1FBC 053:411.621 JLINK_HasError() +T1FBC 053:411.634 JLINK_HasError() +T1FBC 053:411.639 JLINK_ReadMemU32(0xE0001004, 0x1 Items) +T1FBC 053:411.654 Data: 61 48 83 04 +T1FBC 053:411.661 Debug reg: DWT_CYCCNT +T1FBC 053:411.666 - 0.029ms returns 1 (0x1) +T1FBC 053:411.776 JLINK_IsHalted() +T1FBC 053:412.733 - 0.962ms returns FALSE +T1FBC 053:512.851 JLINK_HasError() +T1FBC 053:512.870 JLINK_IsHalted() +T1FBC 053:513.896 - 1.029ms returns FALSE +T1FBC 053:613.938 JLINK_HasError() +T1FBC 053:613.955 JLINK_IsHalted() +T1FBC 053:614.852 - 0.902ms returns FALSE +T1FBC 053:715.464 JLINK_HasError() +T1FBC 053:715.510 JLINK_IsHalted() +T1FBC 053:716.374 - 0.869ms returns FALSE +T1FBC 053:816.844 JLINK_HasError() +T1FBC 053:816.888 JLINK_IsHalted() +T1FBC 053:817.642 - 0.757ms returns FALSE +T1FBC 053:917.737 JLINK_HasError() +T1FBC 053:917.758 JLINK_IsHalted() +T1FBC 053:918.625 - 0.900ms returns FALSE +T1FBC 054:018.817 JLINK_HasError() +T1FBC 054:018.836 JLINK_HasError() +T1FBC 054:018.842 JLINK_ReadMemU32(0xE0001004, 0x1 Items) +T1FBC 054:018.857 Data: 61 48 83 04 +T1FBC 054:018.864 Debug reg: DWT_CYCCNT +T1FBC 054:018.869 - 0.029ms returns 1 (0x1) +T1FBC 054:018.992 JLINK_IsHalted() +T1FBC 054:020.147 - 1.161ms returns FALSE +T1FBC 054:120.254 JLINK_HasError() +T1FBC 054:120.270 JLINK_IsHalted() +T1FBC 054:121.300 - 1.037ms returns FALSE +T1FBC 054:221.418 JLINK_HasError() +T1FBC 054:221.436 JLINK_IsHalted() +T1FBC 054:222.305 - 0.875ms returns FALSE +T1FBC 054:322.513 JLINK_HasError() +T1FBC 054:322.528 JLINK_IsHalted() +T1FBC 054:323.403 - 0.881ms returns FALSE +T1FBC 054:423.822 JLINK_HasError() +T1FBC 054:423.840 JLINK_IsHalted() +T1FBC 054:424.650 - 0.816ms returns FALSE +T1FBC 054:525.675 JLINK_HasError() +T1FBC 054:525.695 JLINK_IsHalted() +T1FBC 054:526.355 - 0.666ms returns FALSE +T1FBC 054:627.054 JLINK_HasError() +T1FBC 054:627.073 JLINK_HasError() +T1FBC 054:627.079 JLINK_ReadMemU32(0xE0001004, 0x1 Items) +T1FBC 054:627.094 Data: 61 48 83 04 +T1FBC 054:627.101 Debug reg: DWT_CYCCNT +T1FBC 054:627.107 - 0.030ms returns 1 (0x1) +T1FBC 054:627.194 JLINK_IsHalted() +T1FBC 054:627.875 - 0.686ms returns FALSE +T1FBC 054:728.034 JLINK_HasError() +T1FBC 054:728.046 JLINK_IsHalted() +T1FBC 054:728.863 - 0.823ms returns FALSE +T1FBC 054:828.985 JLINK_HasError() +T1FBC 054:829.003 JLINK_IsHalted() +T1FBC 054:829.800 - 0.800ms returns FALSE +T1FBC 054:930.566 JLINK_HasError() +T1FBC 054:930.619 JLINK_IsHalted() +T1FBC 054:931.557 - 0.942ms returns FALSE +T1FBC 055:031.614 JLINK_HasError() +T1FBC 055:031.633 JLINK_IsHalted() +T1FBC 055:032.839 - 1.212ms returns FALSE +T1FBC 055:133.371 JLINK_HasError() +T1FBC 055:133.387 JLINK_IsHalted() +T1FBC 055:134.538 - 1.158ms returns FALSE +T1FBC 055:234.941 JLINK_HasError() +T1FBC 055:234.959 JLINK_HasError() +T1FBC 055:234.964 JLINK_ReadMemU32(0xE0001004, 0x1 Items) +T1FBC 055:234.979 Data: 61 48 83 04 +T1FBC 055:234.986 Debug reg: DWT_CYCCNT +T1FBC 055:234.992 - 0.029ms returns 1 (0x1) +T1FBC 055:235.038 JLINK_IsHalted() +T1FBC 055:235.818 - 0.812ms returns FALSE +T1FBC 055:335.982 JLINK_HasError() +T1FBC 055:335.999 JLINK_IsHalted() +T1FBC 055:337.088 - 1.095ms returns FALSE +T1FBC 055:437.212 JLINK_HasError() +T1FBC 055:437.227 JLINK_IsHalted() +T1FBC 055:438.301 - 1.078ms returns FALSE +T1FBC 055:538.450 JLINK_HasError() +T1FBC 055:538.499 JLINK_IsHalted() +T1FBC 055:539.219 - 0.754ms returns FALSE +T1FBC 055:639.404 JLINK_HasError() +T1FBC 055:639.422 JLINK_IsHalted() +T1FBC 055:640.492 - 1.077ms returns FALSE +T1FBC 055:740.565 JLINK_HasError() +T1FBC 055:740.605 JLINK_HasError() +T1FBC 055:740.638 JLINK_ReadMemU32(0xE0001004, 0x1 Items) +T1FBC 055:740.652 Data: 61 48 83 04 +T1FBC 055:740.659 Debug reg: DWT_CYCCNT +T1FBC 055:740.665 - 0.028ms returns 1 (0x1) +T1FBC 055:740.726 JLINK_IsHalted() +T1FBC 055:741.568 - 0.847ms returns FALSE +T1FBC 055:842.258 JLINK_HasError() +T1FBC 055:842.277 JLINK_IsHalted() +T1FBC 055:843.090 - 0.819ms returns FALSE +T1FBC 055:943.789 JLINK_HasError() +T1FBC 055:943.803 JLINK_IsHalted() +T1FBC 055:944.719 - 0.921ms returns FALSE +T1FBC 056:044.843 JLINK_HasError() +T1FBC 056:044.858 JLINK_IsHalted() +T1FBC 056:045.682 - 0.829ms returns FALSE +T1FBC 056:146.691 JLINK_HasError() +T1FBC 056:146.708 JLINK_IsHalted() +T1FBC 056:147.488 - 0.786ms returns FALSE +T1FBC 056:248.161 JLINK_HasError() +T1FBC 056:248.178 JLINK_IsHalted() +T1FBC 056:249.013 - 0.840ms returns FALSE +T1FBC 056:349.361 JLINK_HasError() +T1FBC 056:349.376 JLINK_HasError() +T1FBC 056:349.381 JLINK_ReadMemU32(0xE0001004, 0x1 Items) +T1FBC 056:349.396 Data: 61 48 83 04 +T1FBC 056:349.403 Debug reg: DWT_CYCCNT +T1FBC 056:349.409 - 0.029ms returns 1 (0x1) +T1FBC 056:349.514 JLINK_IsHalted() +T1FBC 056:350.306 - 0.798ms returns FALSE +T1FBC 056:451.132 JLINK_HasError() +T1FBC 056:451.150 JLINK_IsHalted() +T1FBC 056:452.164 - 1.019ms returns FALSE +T1FBC 056:552.439 JLINK_HasError() +T1FBC 056:552.458 JLINK_IsHalted() +T1FBC 056:553.460 - 1.008ms returns FALSE +T1FBC 056:654.445 JLINK_HasError() +T1FBC 056:654.474 JLINK_IsHalted() +T1FBC 056:655.360 - 0.893ms returns FALSE +T1FBC 056:756.405 JLINK_HasError() +T1FBC 056:756.446 JLINK_IsHalted() +T1FBC 056:757.188 - 0.748ms returns FALSE +T1FBC 056:857.330 JLINK_HasError() +T1FBC 056:857.343 JLINK_IsHalted() +T1FBC 056:858.292 - 0.954ms returns FALSE +T1FBC 056:959.257 JLINK_HasError() +T1FBC 056:959.274 JLINK_HasError() +T1FBC 056:959.279 JLINK_ReadMemU32(0xE0001004, 0x1 Items) +T1FBC 056:959.294 Data: 61 48 83 04 +T1FBC 056:959.301 Debug reg: DWT_CYCCNT +T1FBC 056:959.306 - 0.029ms returns 1 (0x1) +T1FBC 056:959.355 JLINK_IsHalted() +T1FBC 056:960.381 - 1.029ms returns FALSE +T1FBC 057:060.473 JLINK_HasError() +T1FBC 057:060.493 JLINK_IsHalted() +T1FBC 057:061.413 - 0.927ms returns FALSE +T1FBC 057:161.653 JLINK_HasError() +T1FBC 057:161.696 JLINK_IsHalted() +T1FBC 057:162.594 - 0.904ms returns FALSE +T1FBC 057:262.665 JLINK_HasError() +T1FBC 057:262.708 JLINK_IsHalted() +T1FBC 057:263.415 - 0.711ms returns FALSE +T1FBC 057:363.529 JLINK_HasError() +T1FBC 057:363.557 JLINK_IsHalted() +T1FBC 057:364.439 - 0.888ms returns FALSE +T1FBC 057:465.484 JLINK_HasError() +T1FBC 057:465.529 JLINK_IsHalted() +T1FBC 057:466.551 - 1.029ms returns FALSE +T1FBC 057:566.710 JLINK_HasError() +T1FBC 057:566.728 JLINK_HasError() +T1FBC 057:566.733 JLINK_ReadMemU32(0xE0001004, 0x1 Items) +T1FBC 057:566.748 Data: 61 48 83 04 +T1FBC 057:566.755 Debug reg: DWT_CYCCNT +T1FBC 057:566.760 - 0.028ms returns 1 (0x1) +T1FBC 057:566.850 JLINK_IsHalted() +T1FBC 057:567.860 - 1.016ms returns FALSE +T1FBC 057:668.363 JLINK_HasError() +T1FBC 057:668.405 JLINK_IsHalted() +T1FBC 057:669.250 - 0.850ms returns FALSE +T1FBC 057:769.392 JLINK_HasError() +T1FBC 057:769.410 JLINK_IsHalted() +T1FBC 057:770.562 - 1.158ms returns FALSE +T1FBC 057:871.028 JLINK_HasError() +T1FBC 057:871.063 JLINK_IsHalted() +T1FBC 057:871.893 - 0.834ms returns FALSE +T1FBC 057:972.716 JLINK_HasError() +T1FBC 057:972.769 JLINK_IsHalted() +T1FBC 057:973.574 - 0.812ms returns FALSE +T1FBC 058:074.400 JLINK_HasError() +T1FBC 058:074.419 JLINK_IsHalted() +T1FBC 058:075.160 - 0.747ms returns FALSE +T1FBC 058:176.300 JLINK_HasError() +T1FBC 058:176.313 JLINK_HasError() +T1FBC 058:176.318 JLINK_ReadMemU32(0xE0001004, 0x1 Items) +T1FBC 058:176.332 Data: 61 48 83 04 +T1FBC 058:176.339 Debug reg: DWT_CYCCNT +T1FBC 058:176.345 - 0.028ms returns 1 (0x1) +T1FBC 058:176.453 JLINK_IsHalted() +T1FBC 058:177.242 - 0.797ms returns FALSE +T1FBC 058:277.728 JLINK_HasError() +T1FBC 058:277.748 JLINK_IsHalted() +T1FBC 058:278.524 - 0.782ms returns FALSE +T1FBC 058:379.509 JLINK_HasError() +T1FBC 058:379.524 JLINK_IsHalted() +T1FBC 058:380.409 - 0.890ms returns FALSE +T1FBC 058:480.617 JLINK_HasError() +T1FBC 058:480.665 JLINK_IsHalted() +T1FBC 058:481.519 - 0.861ms returns FALSE +T1FBC 058:581.575 JLINK_HasError() +T1FBC 058:581.589 JLINK_IsHalted() +T1FBC 058:582.284 - 0.701ms returns FALSE +T1FBC 058:683.079 JLINK_HasError() +T1FBC 058:683.096 JLINK_IsHalted() +T1FBC 058:683.832 - 0.740ms returns FALSE +T1FBC 058:784.209 JLINK_HasError() +T1FBC 058:784.230 JLINK_HasError() +T1FBC 058:784.235 JLINK_ReadMemU32(0xE0001004, 0x1 Items) +T1FBC 058:784.250 Data: 61 48 83 04 +T1FBC 058:784.257 Debug reg: DWT_CYCCNT +T1FBC 058:784.263 - 0.029ms returns 1 (0x1) +T1FBC 058:784.443 JLINK_IsHalted() +T1FBC 058:785.097 - 0.657ms returns FALSE +T1FBC 058:885.316 JLINK_HasError() +T1FBC 058:885.334 JLINK_IsHalted() +T1FBC 058:886.238 - 0.910ms returns FALSE +T1FBC 058:986.794 JLINK_HasError() +T1FBC 058:986.846 JLINK_IsHalted() +T1FBC 058:987.819 - 0.977ms returns FALSE +T1FBC 059:088.060 JLINK_HasError() +T1FBC 059:088.082 JLINK_IsHalted() +T1FBC 059:088.781 - 0.705ms returns FALSE +T1FBC 059:188.924 JLINK_HasError() +T1FBC 059:188.940 JLINK_IsHalted() +T1FBC 059:189.849 - 0.913ms returns FALSE +T1FBC 059:290.466 JLINK_HasError() +T1FBC 059:290.489 JLINK_IsHalted() +T1FBC 059:291.319 - 0.837ms returns FALSE +T1FBC 059:391.699 JLINK_HasError() +T1FBC 059:391.718 JLINK_HasError() +T1FBC 059:391.723 JLINK_ReadMemU32(0xE0001004, 0x1 Items) +T1FBC 059:391.737 Data: 61 48 83 04 +T1FBC 059:391.744 Debug reg: DWT_CYCCNT +T1FBC 059:391.750 - 0.029ms returns 1 (0x1) +T1FBC 059:391.855 JLINK_IsHalted() +T1FBC 059:392.671 - 0.822ms returns FALSE +T1FBC 059:493.420 JLINK_HasError() +T1FBC 059:493.437 JLINK_IsHalted() +T1FBC 059:494.205 - 0.774ms returns FALSE +T1FBC 059:594.709 JLINK_HasError() +T1FBC 059:594.729 JLINK_IsHalted() +T1FBC 059:595.497 - 0.772ms returns FALSE +T1FBC 059:696.304 JLINK_HasError() +T1FBC 059:696.351 JLINK_IsHalted() +T1FBC 059:697.318 - 0.995ms returns FALSE +T1FBC 059:797.587 JLINK_HasError() +T1FBC 059:797.608 JLINK_IsHalted() +T1FBC 059:798.605 - 1.003ms returns FALSE +T1FBC 059:898.702 JLINK_HasError() +T1FBC 059:898.722 JLINK_HasError() +T1FBC 059:898.727 JLINK_ReadMemU32(0xE0001004, 0x1 Items) +T1FBC 059:898.742 Data: 61 48 83 04 +T1FBC 059:898.749 Debug reg: DWT_CYCCNT +T1FBC 059:898.755 - 0.029ms returns 1 (0x1) +T1FBC 059:898.818 JLINK_IsHalted() +T1FBC 059:899.566 - 0.751ms returns FALSE +T1FBC 059:999.701 JLINK_HasError() +T1FBC 059:999.716 JLINK_IsHalted() +T1FBC 060:000.627 - 0.916ms returns FALSE +T1FBC 060:101.344 JLINK_HasError() +T1FBC 060:101.360 JLINK_IsHalted() +T1FBC 060:102.160 - 0.832ms returns FALSE +T1FBC 060:202.308 JLINK_HasError() +T1FBC 060:202.347 JLINK_IsHalted() +T1FBC 060:203.220 - 0.878ms returns FALSE +T1FBC 060:303.284 JLINK_HasError() +T1FBC 060:303.323 JLINK_IsHalted() +T1FBC 060:304.224 - 0.905ms returns FALSE +T1FBC 060:404.394 JLINK_HasError() +T1FBC 060:404.438 JLINK_IsHalted() +T1FBC 060:405.304 - 0.873ms returns FALSE +T1FBC 060:505.424 JLINK_HasError() +T1FBC 060:505.459 JLINK_HasError() +T1FBC 060:505.464 JLINK_ReadMemU32(0xE0001004, 0x1 Items) +T1FBC 060:505.479 Data: 61 48 83 04 +T1FBC 060:505.486 Debug reg: DWT_CYCCNT +T1FBC 060:505.492 - 0.029ms returns 1 (0x1) +T1FBC 060:505.605 JLINK_IsHalted() +T1FBC 060:506.599 - 0.999ms returns FALSE +T1FBC 060:607.605 JLINK_HasError() +T1FBC 060:607.649 JLINK_IsHalted() +T1FBC 060:608.663 - 1.017ms returns FALSE +T1FBC 060:708.764 JLINK_HasError() +T1FBC 060:708.781 JLINK_IsHalted() +T1FBC 060:709.631 - 0.853ms returns FALSE +T1FBC 060:809.736 JLINK_HasError() +T1FBC 060:809.780 JLINK_IsHalted() +T1FBC 060:810.752 - 0.979ms returns FALSE +T1FBC 060:911.057 JLINK_HasError() +T1FBC 060:911.076 JLINK_IsHalted() +T1FBC 060:911.947 - 0.877ms returns FALSE +T1FBC 061:012.740 JLINK_HasError() +T1FBC 061:012.757 JLINK_IsHalted() +T1FBC 061:013.549 - 0.798ms returns FALSE +T1FBC 061:114.478 JLINK_HasError() +T1FBC 061:114.497 JLINK_HasError() +T1FBC 061:114.502 JLINK_ReadMemU32(0xE0001004, 0x1 Items) +T1FBC 061:114.516 Data: 61 48 83 04 +T1FBC 061:114.523 Debug reg: DWT_CYCCNT +T1FBC 061:114.529 - 0.028ms returns 1 (0x1) +T1FBC 061:114.642 JLINK_IsHalted() +T1FBC 061:115.510 - 0.874ms returns FALSE +T1FBC 061:216.191 JLINK_HasError() +T1FBC 061:216.231 JLINK_IsHalted() +T1FBC 061:217.141 - 0.917ms returns FALSE +T1FBC 061:317.639 JLINK_HasError() +T1FBC 061:317.688 JLINK_IsHalted() +T1FBC 061:318.694 - 1.009ms returns FALSE +T1FBC 061:418.884 JLINK_HasError() +T1FBC 061:418.904 JLINK_IsHalted() +T1FBC 061:419.507 - 0.609ms returns FALSE +T1FBC 061:520.174 JLINK_HasError() +T1FBC 061:520.190 JLINK_IsHalted() +T1FBC 061:520.953 - 0.768ms returns FALSE +T1FBC 061:621.100 JLINK_HasError() +T1FBC 061:621.118 JLINK_IsHalted() +T1FBC 061:621.992 - 0.880ms returns FALSE +T1FBC 061:722.997 JLINK_HasError() +T1FBC 061:723.016 JLINK_HasError() +T1FBC 061:723.021 JLINK_ReadMemU32(0xE0001004, 0x1 Items) +T1FBC 061:723.036 Data: 61 48 83 04 +T1FBC 061:723.043 Debug reg: DWT_CYCCNT +T1FBC 061:723.048 - 0.029ms returns 1 (0x1) +T1FBC 061:723.140 JLINK_IsHalted() +T1FBC 061:724.030 - 0.896ms returns FALSE +T1FBC 061:824.476 JLINK_HasError() +T1FBC 061:824.491 JLINK_IsHalted() +T1FBC 061:825.413 - 0.925ms returns FALSE +T1FBC 061:925.972 JLINK_HasError() +T1FBC 061:925.991 JLINK_IsHalted() +T1FBC 061:926.749 - 0.764ms returns FALSE +T1FBC 062:027.644 JLINK_HasError() +T1FBC 062:027.691 JLINK_IsHalted() +T1FBC 062:028.696 - 1.011ms returns FALSE +T1FBC 062:129.455 JLINK_HasError() +T1FBC 062:129.474 JLINK_IsHalted() +T1FBC 062:130.306 - 0.839ms returns FALSE +T1FBC 062:230.471 JLINK_HasError() +T1FBC 062:230.483 JLINK_IsHalted() +T1FBC 062:231.176 - 0.699ms returns FALSE +T1FBC 062:331.638 JLINK_HasError() +T1FBC 062:331.655 JLINK_HasError() +T1FBC 062:331.660 JLINK_ReadMemU32(0xE0001004, 0x1 Items) +T1FBC 062:331.675 Data: 61 48 83 04 +T1FBC 062:331.681 Debug reg: DWT_CYCCNT +T1FBC 062:331.687 - 0.029ms returns 1 (0x1) +T1FBC 062:331.746 JLINK_IsHalted() +T1FBC 062:332.820 - 1.078ms returns FALSE +T1FBC 062:433.553 JLINK_HasError() +T1FBC 062:433.571 JLINK_IsHalted() +T1FBC 062:434.516 - 0.948ms returns FALSE +T1FBC 062:535.471 JLINK_HasError() +T1FBC 062:535.490 JLINK_IsHalted() +T1FBC 062:536.445 - 0.960ms returns FALSE +T1FBC 062:636.503 JLINK_HasError() +T1FBC 062:636.553 JLINK_IsHalted() +T1FBC 062:637.380 - 0.835ms returns FALSE +T1FBC 062:737.520 JLINK_HasError() +T1FBC 062:737.568 JLINK_IsHalted() +T1FBC 062:738.240 - 0.701ms returns FALSE +T1FBC 062:838.761 JLINK_HasError() +T1FBC 062:838.779 JLINK_IsHalted() +T1FBC 062:839.613 - 0.840ms returns FALSE +T1FBC 062:940.581 JLINK_HasError() +T1FBC 062:940.598 JLINK_HasError() +T1FBC 062:940.603 JLINK_ReadMemU32(0xE0001004, 0x1 Items) +T1FBC 062:940.617 Data: 61 48 83 04 +T1FBC 062:940.623 Debug reg: DWT_CYCCNT +T1FBC 062:940.629 - 0.028ms returns 1 (0x1) +T1FBC 062:940.745 JLINK_IsHalted() +T1FBC 062:941.488 - 0.749ms returns FALSE +T1FBC 063:042.236 JLINK_HasError() +T1FBC 063:042.255 JLINK_IsHalted() +T1FBC 063:042.991 - 0.742ms returns FALSE +T1FBC 063:143.300 JLINK_HasError() +T1FBC 063:143.315 JLINK_IsHalted() +T1FBC 063:144.287 - 0.979ms returns FALSE +T1FBC 063:244.454 JLINK_HasError() +T1FBC 063:244.508 JLINK_IsHalted() +T1FBC 063:245.517 - 1.039ms returns FALSE +T1FBC 063:345.849 JLINK_HasError() +T1FBC 063:345.866 JLINK_IsHalted() +T1FBC 063:346.649 - 0.788ms returns FALSE +T1FBC 063:447.630 JLINK_HasError() +T1FBC 063:447.673 JLINK_IsHalted() +T1FBC 063:448.312 - 0.645ms returns FALSE +T1FBC 063:549.359 JLINK_HasError() +T1FBC 063:549.380 JLINK_HasError() +T1FBC 063:549.385 JLINK_ReadMemU32(0xE0001004, 0x1 Items) +T1FBC 063:549.400 Data: 61 48 83 04 +T1FBC 063:549.407 Debug reg: DWT_CYCCNT +T1FBC 063:549.412 - 0.029ms returns 1 (0x1) +T1FBC 063:549.488 JLINK_IsHalted() +T1FBC 063:550.563 - 1.080ms returns FALSE +T1FBC 063:651.226 JLINK_HasError() +T1FBC 063:651.276 JLINK_IsHalted() +T1FBC 063:652.179 - 0.911ms returns FALSE +T1FBC 063:752.672 JLINK_HasError() +T1FBC 063:752.686 JLINK_IsHalted() +T1FBC 063:753.546 - 0.865ms returns FALSE +T1FBC 063:854.356 JLINK_HasError() +T1FBC 063:854.402 JLINK_IsHalted() +T1FBC 063:855.332 - 0.957ms returns FALSE +T1FBC 063:956.268 JLINK_HasError() +T1FBC 063:956.287 JLINK_IsHalted() +T1FBC 063:957.287 - 1.007ms returns FALSE +T1FBC 064:057.562 JLINK_HasError() +T1FBC 064:057.582 JLINK_IsHalted() +T1FBC 064:058.451 - 0.875ms returns FALSE +T1FBC 064:159.474 JLINK_HasError() +T1FBC 064:159.490 JLINK_HasError() +T1FBC 064:159.495 JLINK_ReadMemU32(0xE0001004, 0x1 Items) +T1FBC 064:159.508 Data: 61 48 83 04 +T1FBC 064:159.515 Debug reg: DWT_CYCCNT +T1FBC 064:159.521 - 0.028ms returns 1 (0x1) +T1FBC 064:159.601 JLINK_IsHalted() +T1FBC 064:160.410 - 0.814ms returns FALSE +T1FBC 064:260.904 JLINK_HasError() +T1FBC 064:260.983 JLINK_IsHalted() +T1FBC 064:262.146 - 1.193ms returns FALSE +T1FBC 064:362.964 JLINK_HasError() +T1FBC 064:362.981 JLINK_IsHalted() +T1FBC 064:363.773 - 0.798ms returns FALSE +T1FBC 064:464.863 JLINK_HasError() +T1FBC 064:464.879 JLINK_IsHalted() +T1FBC 064:465.847 - 0.975ms returns FALSE +T1FBC 064:566.462 JLINK_HasError() +T1FBC 064:566.482 JLINK_IsHalted() +T1FBC 064:567.317 - 0.841ms returns FALSE +T1FBC 064:667.734 JLINK_HasError() +T1FBC 064:667.751 JLINK_IsHalted() +T1FBC 064:668.725 - 0.983ms returns FALSE +T1FBC 064:769.816 JLINK_HasError() +T1FBC 064:769.833 JLINK_HasError() +T1FBC 064:769.838 JLINK_ReadMemU32(0xE0001004, 0x1 Items) +T1FBC 064:769.852 Data: 61 48 83 04 +T1FBC 064:769.859 Debug reg: DWT_CYCCNT +T1FBC 064:769.865 - 0.028ms returns 1 (0x1) +T1FBC 064:769.993 JLINK_IsHalted() +T1FBC 064:770.930 - 0.943ms returns FALSE +T1FBC 064:871.047 JLINK_HasError() +T1FBC 064:871.065 JLINK_IsHalted() +T1FBC 064:872.026 - 0.967ms returns FALSE +T1FBC 064:972.192 JLINK_HasError() +T1FBC 064:972.209 JLINK_IsHalted() +T1FBC 064:973.009 - 0.805ms returns FALSE +T1FBC 065:073.452 JLINK_HasError() +T1FBC 065:073.500 JLINK_IsHalted() +T1FBC 065:074.220 - 0.752ms returns FALSE +T1FBC 065:174.511 JLINK_HasError() +T1FBC 065:174.559 JLINK_IsHalted() +T1FBC 065:175.238 - 0.686ms returns FALSE +T1FBC 065:276.261 JLINK_HasError() +T1FBC 065:276.323 JLINK_IsHalted() +T1FBC 065:276.975 - 0.659ms returns FALSE +T1FBC 065:377.620 JLINK_HasError() +T1FBC 065:377.640 JLINK_HasError() +T1FBC 065:377.645 JLINK_ReadMemU32(0xE0001004, 0x1 Items) +T1FBC 065:377.660 Data: 61 48 83 04 +T1FBC 065:377.668 Debug reg: DWT_CYCCNT +T1FBC 065:377.673 - 0.030ms returns 1 (0x1) +T1FBC 065:378.434 JLINK_IsHalted() +T1FBC 065:379.279 - 0.849ms returns FALSE +T1FBC 065:479.341 JLINK_HasError() +T1FBC 065:479.392 JLINK_IsHalted() +T1FBC 065:480.115 - 0.753ms returns FALSE +T1FBC 065:580.165 JLINK_HasError() +T1FBC 065:580.184 JLINK_IsHalted() +T1FBC 065:580.803 - 0.622ms returns FALSE +T1FBC 065:681.575 JLINK_HasError() +T1FBC 065:681.597 JLINK_IsHalted() +T1FBC 065:682.427 - 0.836ms returns FALSE +T1FBC 065:783.426 JLINK_HasError() +T1FBC 065:783.473 JLINK_IsHalted() +T1FBC 065:784.231 - 0.762ms returns FALSE +T1FBC 065:884.427 JLINK_HasError() +T1FBC 065:884.443 JLINK_IsHalted() +T1FBC 065:885.332 - 0.894ms returns FALSE +T1FBC 065:986.269 JLINK_HasError() +T1FBC 065:986.289 JLINK_HasError() +T1FBC 065:986.294 JLINK_ReadMemU32(0xE0001004, 0x1 Items) +T1FBC 065:986.308 Data: 61 48 83 04 +T1FBC 065:986.315 Debug reg: DWT_CYCCNT +T1FBC 065:986.321 - 0.028ms returns 1 (0x1) +T1FBC 065:986.401 JLINK_IsHalted() +T1FBC 065:987.286 - 0.888ms returns FALSE +T1FBC 066:087.525 JLINK_HasError() +T1FBC 066:087.545 JLINK_IsHalted() +T1FBC 066:088.402 - 0.863ms returns FALSE +T1FBC 066:188.472 JLINK_HasError() +T1FBC 066:188.518 JLINK_Halt() +T1FBC 066:193.908 - 5.397ms returns 0x00 +T1FBC 066:193.921 JLINK_IsHalted() +T1FBC 066:193.925 - 0.006ms returns TRUE +T1FBC 066:193.930 JLINK_IsHalted() +T1FBC 066:193.934 - 0.005ms returns TRUE +T1FBC 066:193.939 JLINK_IsHalted() +T1FBC 066:193.943 - 0.005ms returns TRUE +T1FBC 066:193.948 JLINK_HasError() +T1FBC 066:193.959 JLINK_ReadReg(R15 (PC)) +T1FBC 066:193.965 - 0.007ms returns 0x0000A016 +T1FBC 066:193.970 JLINK_ReadReg(XPSR) +T1FBC 066:193.974 - 0.009ms returns 0x61000000 +T1FBC 066:193.984 JLINK_HasError() +T1FBC 066:193.989 JLINK_HasError() +T1FBC 066:193.993 JLINK_ReadMemU32(0xE000ED30, 0x1 Items) +T1FBC 066:194.003 CPU_ReadMem(4 bytes @ 0xE000ED30) +T1FBC 066:194.822 Data: 01 00 00 00 +T1FBC 066:194.857 - 0.865ms returns 1 (0x1) +T1FBC 066:194.862 JLINK_ReadMemU32(0xE0001028, 0x1 Items) +T1FBC 066:194.869 CPU_ReadMem(4 bytes @ 0xE0001028) +T1FBC 066:195.496 Data: 00 00 00 00 +T1FBC 066:195.506 Debug reg: DWT_FUNC[0] +T1FBC 066:195.512 - 0.651ms returns 1 (0x1) +T1FBC 066:195.518 JLINK_ReadMemU32(0xE0001038, 0x1 Items) +T1FBC 066:195.526 CPU_ReadMem(4 bytes @ 0xE0001038) +T1FBC 066:196.329 Data: 00 02 00 00 +T1FBC 066:196.338 Debug reg: DWT_FUNC[1] +T1FBC 066:196.344 - 0.828ms returns 1 (0x1) +T1FBC 066:196.350 JLINK_ReadMemU32(0xE0001048, 0x1 Items) +T1FBC 066:196.358 CPU_ReadMem(4 bytes @ 0xE0001048) +T1FBC 066:197.136 Data: 00 00 00 00 +T1FBC 066:197.175 Debug reg: DWT_FUNC[2] +T1FBC 066:197.181 - 0.832ms returns 1 (0x1) +T1FBC 066:197.186 JLINK_ReadMemU32(0xE0001058, 0x1 Items) +T1FBC 066:197.193 CPU_ReadMem(4 bytes @ 0xE0001058) +T1FBC 066:197.951 Data: 00 00 00 00 +T1FBC 066:197.991 Debug reg: DWT_FUNC[3] +T1FBC 066:197.997 - 0.812ms returns 1 (0x1) +T343C 066:821.109 JLINK_HasError() +T343C 066:829.518 JLINK_Close() +T343C 066:830.216 CPU_ReadMem(4 bytes @ 0xE0001000) +T343C 066:859.220 - 29.719ms +T343C 066:859.240 +T343C 066:859.244 Closed diff --git a/bsp/renesas/ra6m3-hmi-board/JLinkSettings.ini b/bsp/renesas/ra6m3-hmi-board/JLinkSettings.ini new file mode 100644 index 0000000000..e9431b5564 --- /dev/null +++ b/bsp/renesas/ra6m3-hmi-board/JLinkSettings.ini @@ -0,0 +1,40 @@ +[BREAKPOINTS] +ForceImpTypeAny = 0 +ShowInfoWin = 1 +EnableFlashBP = 2 +BPDuringExecution = 0 +[CFI] +CFISize = 0x00 +CFIAddr = 0x00 +[CPU] +MonModeVTableAddr = 0xFFFFFFFF +MonModeDebug = 0 +MaxNumAPs = 0 +LowPowerHandlingMode = 0 +OverrideMemMap = 0 +AllowSimulation = 1 +ScriptFile="" +[FLASH] +EraseType = 0x00 +CacheExcludeSize = 0x00 +CacheExcludeAddr = 0x00 +MinNumBytesFlashDL = 0 +SkipProgOnCRCMatch = 1 +VerifyDownload = 1 +AllowCaching = 1 +EnableFlashDL = 2 +Override = 0 +Device="ARM7" +[GENERAL] +WorkRAMSize = 0xA0000 +WorkRAMAddr = 0x1FFE0000 +RAMUsageLimit = 0x00 +[SWO] +SWOLogFile="" +[MEM] +RdOverrideOrMask = 0x00 +RdOverrideAndMask = 0xFFFFFFFF +RdOverrideAddr = 0xFFFFFFFF +WrOverrideOrMask = 0x00 +WrOverrideAndMask = 0xFFFFFFFF +WrOverrideAddr = 0xFFFFFFFF diff --git a/bsp/renesas/ra6m3-hmi-board/Kconfig b/bsp/renesas/ra6m3-hmi-board/Kconfig new file mode 100644 index 0000000000..006f89db58 --- /dev/null +++ b/bsp/renesas/ra6m3-hmi-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/ra6m3-hmi-board/R7FA6M3AH3CFC.pincfg b/bsp/renesas/ra6m3-hmi-board/R7FA6M3AH3CFC.pincfg new file mode 100644 index 0000000000..cb9cb2e781 --- /dev/null +++ b/bsp/renesas/ra6m3-hmi-board/R7FA6M3AH3CFC.pincfg @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/bsp/renesas/ra6m3-hmi-board/README.md b/bsp/renesas/ra6m3-hmi-board/README.md new file mode 100644 index 0000000000..a4f447a49a --- /dev/null +++ b/bsp/renesas/ra6m3-hmi-board/README.md @@ -0,0 +1,145 @@ +# 瑞萨 RA6M3-HMI-Board 开发板 BSP 说明 + +## 简介 + +本文档为 RA6M3-HMI-Board 开发板提供的 BSP (板级支持包) 说明。通过阅读快速上手章节开发者可以快速地上手该 BSP,将 RT-Thread 运行在开发板上。 + +主要内容如下: + +- 开发板介绍 +- BSP 快速上手指南 + +## 开发板介绍 + +基于瑞萨 RA6M3 MCU 开发的 EK-RA6M3 MCU 评估板,通过灵活配置软件包和 IDE,可帮助用户对 RA6M3 MCU 群组的特性轻松进行评估,并对嵌入系统应用程序进行开发。 + +开发板正面外观如下图: + + + +该开发板常用 **板载资源** 如下: + +- MCU:R7FA6M3AH,120MHz,Arm Cortex®-M4 内核,2MB 代码闪存, 640KB SRAM +- 调试接口:板载 J-Link 接口 +- 扩展接口:两个 PMOD 连接器 + +**更多详细资料及工具** + +## 外设支持 + +本 BSP 目前对外设的支持情况如下: + +| **片上外设** | **支持情况** | **备注** | +| :----------------- | :----------------- | :------------- | +| UART | 支持 | UART9 为默认日志输出端口 | +| GPIO | 支持 | | +| LCD | 支持 | | + +* 注意:仓库刚拉下来是最小系统,若需添加/使能其他外设需参考:[外设驱动使用教程 (rt-thread.org)](https://www.rt-thread.org/document/site/#/rt-thread-version/rt-thread-standard/tutorial/make-bsp/renesas-ra/RA系列BSP外设驱动使用教程) + +## 使用说明 + +使用说明分为如下两个章节: + +- 快速上手 + + 本章节是为刚接触 RT-Thread 的新手准备的使用说明,遵循简单的步骤即可将 RT-Thread 操作系统运行在该开发板上,看到实验效果 。 +- 进阶使用 + + 本章节是为需要在 RT-Thread 操作系统上使用更多开发板资源的开发者准备的。通过使用 ENV 工具对 BSP 进行配置,可以开启更多板载资源,实现更多高级功能。 + +### 快速上手 + +本 BSP 目前仅提供 MDK5 工程。下面以 MDK5 开发环境为例,介绍如何将系统运行起来。 + +**硬件连接** + +使用 USB 数据线连接开发板到 PC,使用 J-link 接口下载和 DEBUG 程序。使用 USB 转串口工具连接 UART7:P401(TXD)、P402(RXD)。 + +**编译下载** + +- 编译:双击 project.uvprojx 文件,打开 MDK5 工程,编译程序。 + +- 下载:点击 MDK 的 Debug 按钮进行下载调试 + +**查看运行结果** + +下载程序成功之后,系统会自动运行并打印系统信息。 + +连接开发板对应串口到 PC , 在终端工具里打开相应的串口(115200-8-1-N),复位设备后,可以看到 RT-Thread 的输出信息。输入 help 命令可查看系统中支持的命令。 + +```bash + \ | / +- RT - Thread Operating System + / | \ 5.0.0 build Jan 4 2023 10:14:56 + 2006 - 2022 Copyright by RT-Thread team +Hello RT-Thread! +msh > +msh >help +help - RT-Thread shell help. +ps - List threads in the system. +free - Show the memory usage in the system. +clear - clear the terminal screen +version - show RT-Thread version information +list - list objects + +msh > +``` + +**应用入口函数** + +应用层的入口函数在 **bsp\ra6m3-ek\src\hal_emtry.c** 中 的 `void hal_entry(void)` 。用户编写的源文件可直接放在 src 目录下。 + +```c +void hal_entry(void) +{ + rt_kprintf("\nHello RT-Thread!\n"); + + while (1) + { + rt_pin_write(LED3_PIN, PIN_HIGH); + rt_thread_mdelay(500); + rt_pin_write(LED3_PIN, PIN_LOW); + rt_thread_mdelay(500); + } +} +``` + +### 进阶使用 + +**资料及文档** + +- [开发板官网主页](https://www2.renesas.cn/cn/zh/products/microcontrollers-microprocessors/ra-cortex-m-mcus/cpk-ra6m4-evaluation-board) +- [开发板用户手册](https://www2.renesas.cn/cn/zh/document/mah/1527156?language=zh&r=1527191) +- [瑞萨RA MCU 基础知识](https://www2.renesas.cn/cn/zh/document/gde/1520091) +- [RA6 MCU 快速设计指南](https://www2.renesas.cn/cn/zh/document/apn/ra6-quick-design-guide) + +**FSP 配置** + +需要修改瑞萨的 BSP 外设配置或添加新的外设端口,需要用到瑞萨的 [FSP](https://www2.renesas.cn/jp/zh/software-tool/flexible-software-package-fsp#document) 配置工具。请务必按照如下步骤完成配置。配置中有任何问题可到[RT-Thread 社区论坛](https://club.rt-thread.org/)中提问。 + +1. [下载灵活配置软件包 (FSP) | Renesas](https://www.renesas.com/cn/zh/software-tool/flexible-software-package-fsp),请使用 FSP 3.5.0 版本 +2. 下载安装完成后,需要添加 EK-RA6M3 开发板的官方板级支持包 +> 打开[ EK-RA6M3 开发板详情页](https://www.renesas.cn/cn/zh/products/microcontrollers-microprocessors/ra-cortex-m-mcus/ek-ra6m3-evaluation-kit-ra6m3-mcu-group#document),在 **“下载”** 列表中找到 **” EK-RA6M3板级支持包“** ,点击链接即可下载 +3. 如何将 **”EK-RA6M3板级支持包“**添加到 FSP 中,请参考文档[如何导入板级支持包](https://www2.renesas.cn/document/ppt/1527171?language=zh&r=1527191) +4. 请查看文档:[使用 FSP 配置外设驱动](../docs/RA系列使用FSP配置外设驱动.md),在 MDK 中通过添加自定义命名来打开当前工程的 FSP 配置。 + +**ENV 配置** + +- 如何使用 ENV 工具:[RT-Thread env 工具用户手册](https://www.rt-thread.org/document/site/#/development-tools/env/env) + +此 BSP 默认只开启了 UART7 的功能,如果需使用更多高级功能例如组件、软件包等,需要利用 ENV 工具进行配置。 + +步骤如下: +1. 在 bsp 下打开 env 工具。 +2. 输入`menuconfig`命令配置工程,配置好之后保存退出。 +3. 输入`pkgs --update`命令更新软件包。 +4. 输入`scons --target=mdk5` 命令重新生成工程。 + +## 联系人信息 + +在使用过程中若您有任何的想法和建议,建议您通过以下方式来联系到我们 [RT-Thread 社区论坛](https://club.rt-thread.org/) + +## 贡献代码 + +如果您对 EK-RA6M3 感兴趣,并且有一些好玩的项目愿意与大家分享的话欢迎给我们贡献代码,您可以参考 [如何向 RT-Thread 代码贡献](https://www.rt-thread.org/document/site/#/rt-thread-version/rt-thread-standard/development-guide/github/github)。 diff --git a/bsp/renesas/ra6m3-hmi-board/SConscript b/bsp/renesas/ra6m3-hmi-board/SConscript new file mode 100644 index 0000000000..aee8a3bb36 --- /dev/null +++ b/bsp/renesas/ra6m3-hmi-board/SConscript @@ -0,0 +1,27 @@ +# for module compiling +import os +Import('RTT_ROOT') +Import('rtconfig') +from building 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 ['gcc', 'armclang']: + 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/ra6m3-hmi-board/SConstruct b/bsp/renesas/ra6m3-hmi-board/SConstruct new file mode 100644 index 0000000000..d00d0dbeaa --- /dev/null +++ b/bsp/renesas/ra6m3-hmi-board/SConstruct @@ -0,0 +1,54 @@ +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, + AR = rtconfig.AR, ARFLAGS = '-rc', + LINK = rtconfig.LINK, LINKFLAGS = rtconfig.LFLAGS) +env.PrependENVPath('PATH', rtconfig.EXEC_PATH) + +if rtconfig.PLATFORM in ['iccarm']: + env.Replace(CCCOM = ['$CC $CFLAGS $CPPFLAGS $_CPPDEFFLAGS $_CPPINCFLAGS -o $TARGET $SOURCES']) + env.Replace(ARFLAGS = ['']) + env.Replace(LINKCOM = env["LINKCOM"] + ' --map project.map') + +Export('RTT_ROOT') +Export('rtconfig') + +SDK_ROOT = os.path.abspath('./') +if os.path.exists(SDK_ROOT + '/libraries'): + libraries_path_prefix = SDK_ROOT + '/libraries' +else: + libraries_path_prefix = os.path.dirname(SDK_ROOT) + '/libraries' + +SDK_LIB = libraries_path_prefix +Export('SDK_LIB') + +rtconfig.BSP_LIBRARY_TYPE = None + +# prepare building environment +objs = PrepareBuilding(env, RTT_ROOT, has_libcpu=False) + +# include drivers +objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript'))) + +# make a building +DoBuilding(TARGET, objs) diff --git a/bsp/renesas/ra6m3-hmi-board/board/Kconfig b/bsp/renesas/ra6m3-hmi-board/board/Kconfig new file mode 100644 index 0000000000..16770ee0b6 --- /dev/null +++ b/bsp/renesas/ra6m3-hmi-board/board/Kconfig @@ -0,0 +1,196 @@ +menu "Hardware Drivers Config" + + config SOC_R7FA6M4AF + bool + select SOC_SERIES_R7FA6M3 + select RT_USING_COMPONENTS_INIT + select RT_USING_USER_MAIN + default y + + menu "Onboard Peripheral Drivers" + + endmenu + + menu "On-chip Peripheral Drivers" + + source "../libraries/HAL_Drivers/Kconfig" + + menuconfig BSP_USING_UART + bool "Enable UART" + default y + select RT_USING_SERIAL + select RT_USING_SERIAL_V2 + if BSP_USING_UART + menuconfig BSP_USING_UART4 + bool "Enable UART4" + default n + if BSP_USING_UART4 + config BSP_UART4_RX_USING_DMA + bool "Enable UART4 RX DMA" + depends on BSP_USING_UART4 && RT_SERIAL_USING_DMA + default n + + config BSP_UART4_TX_USING_DMA + bool "Enable UART4 TX DMA" + depends on BSP_USING_UART4 && RT_SERIAL_USING_DMA + default n + + config BSP_UART4_RX_BUFSIZE + int "Set UART4 RX buffer size" + range 64 65535 + depends on RT_USING_SERIAL_V2 + default 256 + + config BSP_UART4_TX_BUFSIZE + int "Set UART4 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_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 + + config BSP_USING_SCI_SPI0 + bool "Enable SCI SPI0 BUS" + default n + + config BSP_USING_SCI_SPI6 + bool "Enable SCI SPI6 BUS" + default n + endif + + menuconfig BSP_USING_FS + bool "Enable filesystem" + default n + if BSP_USING_FS + config BSP_USING_SDCARD_FS + bool "Enable SDCARD filesystem" + select BSP_USING_SDHI + select RT_USING_DFS_ELMFAT + default n + config BSP_USING_SPICARD_FS + bool "Enable SPI FLASH filesystem" + select BSP_USING_SPI + select BSP_USING_SCI_SPI6 + select RT_USING_SPI_MSD + select RT_USING_DFS_ELMFAT + default n + endif + + menuconfig BSP_USING_SDHI + bool "Enable SDHI" + default n + select RT_USING_SDIO + select RT_USING_DFS + select RT_LIBC_USING_FILEIO + select RT_USING_POSIX_DEVIO + if BSP_USING_SDHI + 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_PWM12 + bool "Enable GPT12 (16-Bits) output PWM" + default n + endif + + config BSP_USING_LCD + bool "Enable LCD" + select BSP_USING_GPIO + default n + + config BSP_USING_SPI_LCD + bool "Enable SPI LCD" + select BSP_USING_GPIO + select BSP_USING_SPI + select BSP_USING_SPI0 + default n + + config BSP_USING_G2D + bool "Enable G2D" + default n + + config BSP_USING_JPEG + bool "Enable JPEG" + default n + + 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_ILI9431 + bool "Enable LVGL for LCD_ILI9431" + select PKG_USING_ILI9341 + select BSP_USING_SPI_LCD + default n + config BSP_USING_LCD_RGB + bool "Enable LVGL for LCD_RGB565" + select BSP_USING_LCD + default n + endif + + if BSP_USING_LVGL + config BSP_USING_LVGL_DEMO + bool "Enable LVGL demo" + select PKG_USING_LV_MUSIC_DEMO + default y + endif + + endmenu + + menu "Board extended module Drivers" + + endmenu +endmenu diff --git a/bsp/renesas/ra6m3-hmi-board/board/SConscript b/bsp/renesas/ra6m3-hmi-board/board/SConscript new file mode 100644 index 0000000000..a27ea8e470 --- /dev/null +++ b/bsp/renesas/ra6m3-hmi-board/board/SConscript @@ -0,0 +1,16 @@ +import os +from building import * + +objs = [] +cwd = GetCurrentDir() +list = os.listdir(cwd) +CPPPATH = [cwd] +src = Glob('*.c') + +objs = DefineGroup('Drivers', src, depend = [''], CPPPATH = CPPPATH) + +for item in list: + if os.path.isfile(os.path.join(cwd, item, 'SConscript')): + objs = objs + SConscript(os.path.join(item, 'SConscript')) + +Return('objs') diff --git a/bsp/renesas/ra6m3-hmi-board/board/board.h b/bsp/renesas/ra6m3-hmi-board/board/board.h new file mode 100644 index 0000000000..afc599a05c --- /dev/null +++ b/bsp/renesas/ra6m3-hmi-board/board/board.h @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2006-2023, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2021-10-10 Sherman first version + */ + +#ifndef __BOARD_H__ +#define __BOARD_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +#define RA_SRAM_SIZE 640 /* The SRAM size of the chip needs to be modified */ +#define RA_SRAM_END (0x20000000 + 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/ra6m3-hmi-board/board/lvgl/SConscript b/bsp/renesas/ra6m3-hmi-board/board/lvgl/SConscript new file mode 100644 index 0000000000..79d9772177 --- /dev/null +++ b/bsp/renesas/ra6m3-hmi-board/board/lvgl/SConscript @@ -0,0 +1,16 @@ +from building import * +import os + +cwd = GetCurrentDir() +group = [] +src = Glob('*.c') +CPPPATH = [cwd] + +list = os.listdir(cwd) +for d in list: + path = os.path.join(cwd, d) + if os.path.isfile(os.path.join(path, 'SConscript')): + group = group + SConscript(os.path.join(d, 'SConscript')) + +group = group + DefineGroup('LVGL-port', src, depend = ['BSP_USING_LVGL'], CPPPATH = CPPPATH) +Return('group') diff --git a/bsp/renesas/ra6m3-hmi-board/board/lvgl/demo/SConscript b/bsp/renesas/ra6m3-hmi-board/board/lvgl/demo/SConscript new file mode 100644 index 0000000000..9c1b6d1ebd --- /dev/null +++ b/bsp/renesas/ra6m3-hmi-board/board/lvgl/demo/SConscript @@ -0,0 +1,17 @@ +from building import * +import os + +cwd = GetCurrentDir() +group = [] +src = Glob('*.c') +CPPPATH = [cwd] + +list = os.listdir(cwd) +for d in list: + path = os.path.join(cwd, d) + if os.path.isfile(os.path.join(path, 'SConscript')): + group = group + SConscript(os.path.join(d, 'SConscript')) + +group = group + DefineGroup('LVGL-demo', src, depend = ['BSP_USING_LVGL', 'BSP_USING_LVGL_DEMO'], CPPPATH = CPPPATH) + +Return('group') diff --git a/bsp/renesas/ra6m3-hmi-board/board/lvgl/demo/lv_demo.c b/bsp/renesas/ra6m3-hmi-board/board/lvgl/demo/lv_demo.c new file mode 100644 index 0000000000..fd30e46f96 --- /dev/null +++ b/bsp/renesas/ra6m3-hmi-board/board/lvgl/demo/lv_demo.c @@ -0,0 +1,17 @@ +/* + * Copyright (c) 2006-2023, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2021-10-17 Meco Man First version + * 2022-05-10 Meco Man improve rt-thread initialization process + */ + +void lv_user_gui_init(void) +{ + /* display demo; you may replace with your LVGL application at here */ + extern void lv_demo_music(void); + lv_demo_music(); +} diff --git a/bsp/renesas/ra6m3-hmi-board/board/lvgl/lv_conf.h b/bsp/renesas/ra6m3-hmi-board/board/lvgl/lv_conf.h new file mode 100644 index 0000000000..53268d9115 --- /dev/null +++ b/bsp/renesas/ra6m3-hmi-board/board/lvgl/lv_conf.h @@ -0,0 +1,48 @@ +/* + * Copyright (c) 2006-2023, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2023-02-22 Rbb666 First version + */ + +#ifndef LV_CONF_H +#define LV_CONF_H + +#include + +/* Enable additional color format support */ +#define DLG_LVGL_CF 1 + +/* Enable sub byte color formats to be swapped. If disabled, which is recommended for + * performance, bitmaps need to be in correct order */ +#define DLG_LVGL_CF_SUB_BYTE_SWAP 0 + +#define LV_USE_PERF_MONITOR 1 +#define LV_COLOR_DEPTH 16 + +#ifdef PKG_USING_ILI9341 + #define LV_HOR_RES_MAX 240 + #define LV_VER_RES_MAX 320 + #define LV_COLOR_16_SWAP 1 + #define LV_DPI_DEF 99 +#else + #define LV_HOR_RES_MAX 480 + #define LV_VER_RES_MAX 272 + #define LV_DPI_DEF 89 +#endif + +#define DLG_LVGL_USE_GPU_RA6M3 0 + +#ifdef PKG_USING_LV_MUSIC_DEMO +/* music player demo */ +#define LV_USE_DEMO_RTT_MUSIC 1 +#define LV_DEMO_RTT_MUSIC_AUTO_PLAY 1 +#define LV_FONT_MONTSERRAT_12 1 +#define LV_FONT_MONTSERRAT_16 1 +#define LV_COLOR_SCREEN_TRANSP 0 +#endif /* PKG_USING_LV_MUSIC_DEMO */ + +#endif diff --git a/bsp/renesas/ra6m3-hmi-board/board/lvgl/lv_port_disp.c b/bsp/renesas/ra6m3-hmi-board/board/lvgl/lv_port_disp.c new file mode 100644 index 0000000000..15ed301098 --- /dev/null +++ b/bsp/renesas/ra6m3-hmi-board/board/lvgl/lv_port_disp.c @@ -0,0 +1,141 @@ +/* + * Copyright (c) 2006-2023, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2021-11-24 Rbb666 The first version + */ +#include +#include "hal_data.h" + +#if DLG_LVGL_USE_GPU_RA6M3 + #include "lv_port_gpu.h" +#endif + +#ifdef PKG_USING_ILI9341 + #include "lcd_ili9341.h" +#else + #include "lcd_port.h" +#endif + +#define COLOR_BUFFER (LV_HOR_RES_MAX * LV_VER_RES_MAX / 4) + +/*A static or global variable to store the buffers*/ +static lv_disp_draw_buf_t disp_buf; + +/*Descriptor of a display driver*/ +static lv_disp_drv_t disp_drv; +static struct rt_device_graphic_info info; + +/*Static or global buffer(s). The second buffer is optional*/ +// 0x1FFE0000 0x20040000 +__attribute__((section(".ARM.__at_0x1FFE0000"))) lv_color_t buf_1[COLOR_BUFFER]; + +#if !DLG_LVGL_USE_GPU_RA6M3 +static void color_to16_maybe(lv_color16_t *dst, lv_color_t *src) +{ +#if (LV_COLOR_DEPTH == 16) + dst->full = src->full; +#else + dst->ch.blue = src->ch.blue; + dst->ch.green = src->ch.green; + dst->ch.red = src->ch.red; +#endif +} +#endif + +static void disp_flush(lv_disp_drv_t *disp_drv, const lv_area_t *area, lv_color_t *color_p) +{ +#ifdef PKG_USING_ILI9341 + lcd_fill_array_spi(area->x1, area->y1, area->x2, area->y2, color_p); +#elif DLG_LVGL_USE_GPU_RA6M3 + lv_port_gpu_flush(); +#else + int x1, x2, y1, y2; + + x1 = area->x1; + x2 = area->x2; + y1 = area->y1; + y2 = area->y2; + + /*Return if the area is out the screen*/ + if (x2 < 0) + return; + if (y2 < 0) + return; + if (x1 > info.width - 1) + return; + if (y1 > info.height - 1) + return; + + /*Truncate the area to the screen*/ + int32_t act_x1 = x1 < 0 ? 0 : x1; + int32_t act_y1 = y1 < 0 ? 0 : y1; + int32_t act_x2 = x2 > info.width - 1 ? info.width - 1 : x2; + int32_t act_y2 = y2 > info.height - 1 ? info.height - 1 : y2; + + uint32_t x; + uint32_t y; + long int location = 0; + + /* color_p is a buffer pointer; the buffer is provided by LVGL */ + lv_color16_t *fbp16 = (lv_color16_t *)info.framebuffer; + + for (y = act_y1; y <= act_y2; y++) + { + for (x = act_x1; x <= act_x2; x++) + { + location = (x) + (y) * info.width; + color_to16_maybe(&fbp16[location], color_p); + color_p++; + } + + color_p += x2 - act_x2; + } +#endif + lv_disp_flush_ready(disp_drv); +} + +void lv_port_disp_init(void) +{ +#ifdef PKG_USING_ILI9341 + spi_lcd_init(20); +#else + static rt_device_t device; + /* LCD Device Init */ + device = rt_device_find("lcd"); + RT_ASSERT(device != RT_NULL); + + if (rt_device_open(device, RT_DEVICE_OFLAG_RDWR) == RT_EOK) + { + rt_device_control(device, RTGRAPHIC_CTRL_GET_INFO, &info); + } + + RT_ASSERT(info.bits_per_pixel == 8 || info.bits_per_pixel == 16 || + info.bits_per_pixel == 24 || info.bits_per_pixel == 32); +#endif + /*Initialize `disp_buf` with the buffer(s). With only one buffer use NULL instead buf_2 */ + lv_disp_draw_buf_init(&disp_buf, buf_1, NULL, COLOR_BUFFER); + + lv_disp_drv_init(&disp_drv); /*Basic initialization*/ + + /*Set the resolution of the display*/ + disp_drv.hor_res = LV_HOR_RES_MAX; + disp_drv.ver_res = LV_VER_RES_MAX; + + /*Set a display buffer*/ + disp_drv.draw_buf = &disp_buf; + + /*Used to copy the buffer's content to the display*/ + disp_drv.flush_cb = disp_flush; + +#if DLG_LVGL_USE_GPU_RA6M3 + /* Initialize GPU module */ + lv_port_gpu_init(); +#endif /* LV_PORT_DISP_GPU_EN */ + + /*Finally register the driver*/ + lv_disp_drv_register(&disp_drv); +} diff --git a/bsp/renesas/ra6m3-hmi-board/board/lvgl/lv_port_indev.c b/bsp/renesas/ra6m3-hmi-board/board/lvgl/lv_port_indev.c new file mode 100644 index 0000000000..fcfc8e6234 --- /dev/null +++ b/bsp/renesas/ra6m3-hmi-board/board/lvgl/lv_port_indev.c @@ -0,0 +1,15 @@ +/* + * Copyright (c) 2006-2023, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2021-10-18 Meco Man The first version + */ +#include +#include + +void lv_port_indev_init(void) +{ +} diff --git a/bsp/renesas/ra6m3-hmi-board/board/ports/SConscript b/bsp/renesas/ra6m3-hmi-board/board/ports/SConscript new file mode 100644 index 0000000000..09bd4c2582 --- /dev/null +++ b/bsp/renesas/ra6m3-hmi-board/board/ports/SConscript @@ -0,0 +1,16 @@ +import os +from building import * + +src = [] +objs = [] +cwd = GetCurrentDir() +CPPPATH = [cwd] + +objs = DefineGroup('Drivers', src, depend = [''], CPPPATH = CPPPATH) + +list = os.listdir(cwd) +for item in list: + if os.path.isfile(os.path.join(cwd, item, 'SConscript')): + objs = objs + SConscript(os.path.join(item, 'SConscript')) + +Return('objs') diff --git a/bsp/renesas/ra6m3-hmi-board/board/ports/gpio_cfg.h b/bsp/renesas/ra6m3-hmi-board/board/ports/gpio_cfg.h new file mode 100644 index 0000000000..dd5c5d043c --- /dev/null +++ b/bsp/renesas/ra6m3-hmi-board/board/ports/gpio_cfg.h @@ -0,0 +1,82 @@ +/* + * Copyright (c) 2006-2023, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2022-01-19 Sherman first version + */ + +/* Number of IRQ channels on the device */ +#define RA_IRQ_MAX 16 + +/* PIN to IRQx table */ +#define PIN2IRQX_TABLE \ +{ \ + 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/ra6m3-hmi-board/board/ports/lcd_port.h b/bsp/renesas/ra6m3-hmi-board/board/ports/lcd_port.h new file mode 100644 index 0000000000..ddb5533b71 --- /dev/null +++ b/bsp/renesas/ra6m3-hmi-board/board/ports/lcd_port.h @@ -0,0 +1,34 @@ +/* + * Copyright (c) 2006-2021, 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 +#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_BL_PIN BSP_IO_PORT_06_PIN_03 + +#endif \ No newline at end of file diff --git a/bsp/renesas/ra6m3-hmi-board/buildinfo.gpdsc b/bsp/renesas/ra6m3-hmi-board/buildinfo.gpdsc new file mode 100644 index 0000000000..971a3d223d --- /dev/null +++ b/bsp/renesas/ra6m3-hmi-board/buildinfo.gpdsc @@ -0,0 +1,159 @@ + + + Renesas + Project Content + Project content managed by the Renesas Smart Configurator + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/bsp/renesas/ra6m3-hmi-board/configuration.xml b/bsp/renesas/ra6m3-hmi-board/configuration.xml new file mode 100644 index 0000000000..6f4dd28f74 --- /dev/null +++ b/bsp/renesas/ra6m3-hmi-board/configuration.xml @@ -0,0 +1,238 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Board Support Package Common Files + Renesas.RA.3.5.0.pack + + + I/O Port + Renesas.RA.3.5.0.pack + + + Arm CMSIS Version 5 - Core (M) + Arm.CMSIS5.5.8.0+renesas.0.fsp.3.5.0.pack + + + Board support package for R7FA6M3AH3CFB + Renesas.RA_mcu_ra6m3.3.5.0.pack + + + Board support package for RA6M3 + Renesas.RA_mcu_ra6m3.3.5.0.pack + + + Board support package for RA6M3 - FSP Data + Renesas.RA_mcu_ra6m3.3.5.0.pack + + + Custom Board Support Files + Renesas.RA_board_custom.3.5.0.pack + + + SCI UART + Renesas.RA.3.5.0.pack + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/bsp/renesas/ra6m3-hmi-board/docs/lvgl使用文档.md b/bsp/renesas/ra6m3-hmi-board/docs/lvgl使用文档.md new file mode 100644 index 0000000000..b29a1fd332 --- /dev/null +++ b/bsp/renesas/ra6m3-hmi-board/docs/lvgl使用文档.md @@ -0,0 +1,105 @@ +# RA6M3-HMI-Board-lvgl 使用文档 + +## ENV 配置 + +首先在BSP目录下打开env工具,输入 `menuconfig` 进入配置界面 + +![](picture/lvgl/00.png) + +## RGB 屏使用配置 + +在 `Hardware Drivers Config → On-chip Peripheral Drivers → Enable LVGL for LCD` 中使能 `Enable LVGL for LCD_RGB565` 选项 + +![](picture/lvgl/12.png) + +接下来退出菜单界面,输入 `pkgs --update` 命令手动联网获取 lvgl 的软件包到 `packages` 文件夹下 + +![](picture/lvgl/02.png) + +接着在env 终端中输入 `scons --target=mdk5` 生成 mdk 工程 + +![](picture/lvgl/03.png) + +### fsp 中配置 GLCDC 外设 + +点击 mdk 中的 `Tools->RA Smart Configurator` 进入 rasc 配置软件 + +![](picture/lvgl/04.png) + +点击 New Stack,选择 `Graphics->Graphics LCD`,使能 LCD 外设 + +![](picture/lvgl/05.png) + +在 `Interrupt->Callback Function` 中,设置中断回调函数,输入 :`_ra_port_display_callback` + +![](picture/lvgl/06.png) + +在 `Input->Graphics Layer 1->Framebuffer` 中,将 `Number of framebuffers` 属性设置为1,其他选项默认 + +![](picture/lvgl/07.png) + +接着我们配置 LCD 的引脚属性,进入 Pins 界面按照下图进行配置: + +![](picture/lvgl/08.png) + +接着向下拉,按照下图配置 LCD_TCONx 引脚: + +![](picture/lvgl/09.png) + +完成以上配置后,点击 `Generate Project Content` 生成配置相关代码 + +![](picture/lvgl/10.png) + +### 编译烧录 + +退出 rasc 后,在 mdk 中进行编译,仿真下载即可 + +![](picture/lvgl/11.png) + +## SPI(ILI9431) 屏使用配置 + +### 硬件连接 + +硬件按照如下引脚进行连接: + +![](picture/lvgl/tft-pin.png) + +在 `Hardware Drivers Config → On-chip Peripheral Drivers → Enable LVGL for LCD` 中使能 `Enable LVGL for LCD_ILI9431` 选项 + +![](picture/lvgl/01.png) + +接下来退出菜单界面,输入 `pkgs --update` 命令手动联网获取 lvgl 的软件包到 `packages` 文件夹下 + +![](picture/lvgl/02.png) + +接着在env 终端中输入 `scons --target=mdk5` 生成 mdk 工程 + +![](picture/lvgl/03.png) + +### fsp 中配置 SPI 外设 + +点击 mdk 中的 `Tools->RA Smart Configurator` 进入 rasc 配置软件 + +![](picture/lvgl/04.png) + +点击 New Stack,选择 `Connectivity->SPI(r_spi)`,使能 SPI 外设 + +![](picture/lvgl/13.png) + +在 `Callback` 中,设置中断回调函数,(默认使用SPI0)输入 :`spi0_callback` + +![](picture/lvgl/14.png) + +接着我们配置 SPI 的引脚属性(默认使用SPI0),进入 Pins 界面按照下图进行配置: + +![](picture/lvgl/15.png) + +完成以上配置后,点击 `Generate Project Content` 生成配置相关代码 + +![](picture/lvgl/16.png) + +### 编译烧录 + +退出 rasc 后,在 mdk 中进行编译,仿真下载即可 + +![](picture/lvgl/11.png) \ No newline at end of file diff --git a/bsp/renesas/ra6m3-hmi-board/docs/picture/lvgl/00.png b/bsp/renesas/ra6m3-hmi-board/docs/picture/lvgl/00.png new file mode 100644 index 0000000000000000000000000000000000000000..7c206f75728bb048ab1faa1610cc67c85420dc6f GIT binary patch literal 3957 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 literal 0 HcmV?d00001 diff --git a/bsp/renesas/ra6m3-hmi-board/docs/picture/lvgl/01.png b/bsp/renesas/ra6m3-hmi-board/docs/picture/lvgl/01.png new file mode 100644 index 0000000000000000000000000000000000000000..5d3c673ff00e6581aec36ae04f031076d4133c46 GIT binary patch literal 17442 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 wMoW;yjTVu4FmOxhc7?;Z=E|vQ~&?~ literal 0 HcmV?d00001 diff --git a/bsp/renesas/ra6m3-hmi-board/docs/picture/lvgl/02.png b/bsp/renesas/ra6m3-hmi-board/docs/picture/lvgl/02.png new file mode 100644 index 0000000000000000000000000000000000000000..c370fa92d6e3a3ec53e13225f11f30c7a01d7566 GIT binary patch literal 21693 zcmd43byQVd*Z+-(N`oMsBGL`gA>Eyl(k__a5W@_Z@>F$Fuidd&OL9edc%0MW~9BGzKa$DgpumhOCT)8Ug}hA@F$u`6=*k z+mps41O!S1SqV`M&$QhZzZjBful$>j#Ivt3$fUq;_McDJ>{=xxf8-gLlj(kL>Sw># zi08DWf%1K8ZVk2CEj@X{{%VSUl;ub1Bk2RiOj)LsmZ(tPu?4qs*Qx*vPpwJ zcZJ#KJq?yjk85)15+$U?Z0Wk?YwPH% zE3c({_=U^q=BOrXlLkYj-;Mil8qt33#FV@d_7uTRrBPXrDbCXnJc2?rht|^Gb#(DUjZazCJ02d~Z;xQV-ufnoWxsuR?IgT@ws;C;`2dEM1s<(+~KeTd*|B5T^$ z6(L`ZFS3IRy)=T*l!Y^CV`U~pQWR)77H@9_S65f5aZrB!`ZXotiY8X5QFJkRbmX)F zgEd*&yj)01vJuA)gukm?h6nLLb?DU*(%`dwGk!2gX7T;K(Ovufqo1>N_?O2Z532FZ z+pV3mdy!Mn9TcItwgNllJU!{B9&^)@F#nu-`je~#PRn7(lOdjy5YT1FkMXV7`9#!F zWCFiVPr0sqZ#$P#I4$e%&gW;FJXo)MGt>&Z_UfQY4f+++ne>u+XXpf2ORdTE4wHu{8+!1S<`CvZSl?zU#(o z8sfux&v%l48_nk1e6{gS@Td#7_aK|I&#Y<{E|=R8ic32KycnTw(Vaxw$nOpGdaBNw z#WWex%{F}}R+YN<@HR|R-k+UVBF$!>P}#V-e@(ZZ*IsvO@~3Zf6By}N#}IDm4M@*9 zdd?gsl>6o$;Np>UfPkUEyT~phurYCiPeAxwHWYUA@gEbCtJ#og73I#ifkc22h;<5( zjwUy^vnvt4B_>ZSokg90=iq7^ZFo7*b}Qd{vv^Py50%{E^S-}!6r2#kDV6==qtHcxVs z3{B?2_GctFGc$w_4NZ{Cg`MjUHx!I|`!1UvoZoyI@W|R(I^Zii%M!WH5eXB#PrsJZ zAbATD#!a#;oqJtYR@*1R-Eq3JzX@^3AGI$`RxO}F}!QV+lb^@dicClWfv`Y ze|zG)&SaZ`TL znVXZu%6D+p-TfL?+NvA5c(Kk3O0k)Q-lre<=37G{{^y*-8A513jc&V*5Grh^SrCB# z>Os#hK=&8=Zj+j~L(p5ryPKre)7OT6XOnr$lXKB+Ds(YQ`Fvg+!X??$@QN|7q$=OZ zt}didiEMZa&{kNw$8n^CZvZf(FYI8M@NrPTZF$QtHGhIPs6k?WRu%IqaA2rdn-9g* zQ&V-kkGctt1fz4Lqn&T|>K-P2<1ZNw7z&H zwW_n_@?7{F81u@VgI5eji85xcB!4&3xxFIo=#D($hSEm!7BwOP6j z7|Y67TTXGHw;MbuDJjdgMmM^8O%DqetN&5>AOv!9Rt`#6pb_U!FRNSLUu=4qq=4a) z3VFwWb7)QBS@H}3o{KW(Tl9~9^K_jU??ZKEWo6lPxGu7C$PVxMov!7gIx&T zosJ7xHm+wb{#v-_8Q3WwI$68FocoH3&mstgpV#qu9aDpD>Ogw;&By(Wx3igdM9Ly} zuF{|Q2Paqp9|i&{5+Tph5a`N3^e{{|hGBHx=?YxHOtut0A^J(7>p*6Rm2_0<;1~Wd zVRp*fG9;+lfyF*0JsmLfhba%gyYV_~e>N|e`>;UNUvC$G`;fN$&4JZz5$F+Gr8Fzt z+{KPZ-p08QN#3>ZG-@kas$T}`wA>C{qh7YQx%LxGKTW?@sB_obbKla?{%AiBp1ipL z#pmbe+(6vZo{rQxw)szeCYk^w6(G^o@8n;bSG#V_5thKJ4`%fTccHu=U`L2P|Kb^1dKMv&ucTiQhZdP;p{3rovK{N6~b zydbz>u3BjBEsJ;72HuHax$r3%$8H`RIi9b)>ScHr2Z8N~+aqMajs`g)r=*#63ys06 z=QbIw{#`pkf&{gu-!d~{Wlj6KN0ZN3Bou_>smAnT(H1FYnD=uxg@MXvcNdF>4I|T6;h_VpZD|4r&DF96!B1>vni^kl z>$?oS@oQ>iZSsx4x}S>lJ%=uKt|vuTuKOJrIX^)%eqEqde7kEYvKmU8@s_^Z1tQc_ zJ8d{{e{FPM41>&8Tk-+z+j30>-8kGc1HVsT5SR1a*=tMeLX6HSK?#JL^F334|BNI< z?@%+2cNZ$YcRNPqXgyQDmcwbw?awH7b*6x=%X2x1U>kY>>_cThCx7ju23GV^tjMY6 zS8wKP+l9O(B#m369y|KbFVBacKrU0g&ga64lzq5AT)`wn!-#x6!!W5FM zux*#j8&Y6h;pKt)xy`#K54af#6O1tEb27_Nb@fWLRJa z7v)3a77g&t4$oR73C~v<>g4ov`{S@ZXj_{#&V(Y*;zVsTFgvCPynr=uenr)`=k%}> zYkH@~0V+%mx;<)brlYv(mA*U-5ozB2CR1AW43o5=XW1Uwn$GICC4XkzRb1ZM$UMx( z0JWKJk;->zp73?DA1Q>Kj(tei`C~wpmFz%CPQd>BmMZr5^-j4ZuuS?zBijLGJUm<| z;<`Q1l2HsS)+ZfktQ8K>)>az0elJwAZb$O6Uajzj$AXh|kLeuPUJr7vTP`BM)znfo zcBf*6U&Q!Y%xe+n?yQ(?bhTyuQl8aSxob`_ZSHi~gPHGOW;9VzqWSs<>1!Nq(P_ zdfQntV*-DpWwUwT)!anoj3hj- zN+&P2z=by~h(>GhIiK&|$E9d`^rF~WX$cwYtjGaf-_H)}dHqBSUQ(SQvR7{H4Uupg z;C?&5f@QY-tbP86!3kL;eqbU@>*KP%PwIr;-$9MAn?5U~;Q$u{(IUT0xDAS2OW$vP zp1VJa2KkEap*;|>;}I2=rVaMf zA~W`mY3CFC1^z%Z2}s7owq%W5SGQ})-|GP~D-Q4t2k&=q^?%#~t;j%_*MG=e%;bL{ zUR3_@O@8h^iiEL|ca?Dof&8D=Ns)QX_Nc(lQMF~xQ+?P14-LgcBI*1(oKz-Z;+;@2gz4t3? z+-88EwZW&UG#>nkWhx1YA~ux?r0onLpUX8`k-mp5=g$Ctc6<)>4IyC%q8n^D9YNn` zulE0V#`icbvjlB|_)V5>sn&FX)}K0-aKExOcqCeI6y?zz@a;n*y)zV8)SCMLj*&6* zyRWoo5Y~La$ zX5O&_2j6q-8^eZ#yQW|B7n9`_PM6aOWD@ZPbpnvbv*M&E>vNUbWulMUcVD`bC&O^t zTh@9%gS;yZ>=gA4?o+@ zcbdA#9IfZico2Rc9IrkhO|kd-9f_BBWH;-^bJ0w?DtotGJRqX8{P{PO@%ElaaHG`) zaQ$jcsjE+Nns3szPvh$+O&jOL&MucjW_WI1p3m1g-hMo&D#tpjYgmKvxkAN#uh!p# z4C1-5hD3i)*2^IkQKD0rWBR#~3vYntt9Cw+&+j-~P)PJ#b=_s|5#qSs9>$U0&nyb! z3;sAKW58~YeT<>J4UCs=x$Wh$X9)UPIiEDK_;T%XnU=5B zOYrpWrTg&k<5k}kxX^C>0k%%mz_5B(faPWbU)Ts^lcm z4u5e`V^`SoZ5Xfu#w=Hk1re3q8Ir(HlOg8^7LWnaUMUUG?Ag2X38`J1>) zWpo&cVRfPxAtM|it^C8}O_NSgEzsU* zcF57tDjZq9i@M+y#e65N1?Z>Kd$g0*AuWh)G<%`jx7Z8~;}Kq0Xv-(d35vP4XT1KN zX=L;J8|0Wk~pt}Qb%n-Qfg1{QEvug;~l&TE7` z5i5ZD*fk|R!;GIDwWN!w;0jjz0d73(M*tul1!H1t~9pc=T*Ks<}hAAMDsO?XF3U6edf~D+s~Q zSi1xZ4P}@wL2P)R5KMiGFt`k>>+^RP9UZG{7w0v_gzYi*?s1UTs zTpQ5dTPDv~8yP4(4;f9$T=_JM>xnx-kc){DC3z!4Vto9@>& z#7SRu-UWzt#?6VDDQqw9LTmHACO*uQpSK-jV-4ojTk3U^FrrhLlk>7cX!n&X1H8`3 zSgP~8Nxat%v1X16ky*WP+v)a~^Xo0=naR{q2P_LDY?xcSqG|VrkCJ+3t3A>(2gUrD zyHg{*i(Xvp-aQg%JAC1@pM*(^+}R)1;-Q|&)>pb)C$iInZZXhm>B5PPPp!H`@d1v_ z!?bEV*(P=M65-%(!Ur&u;@v`4O)i!lCQL&6jEPzCT|q%eVp7lD34ScCH;2-IMB2#X zP&QL$&?LpL@NE3YVABKg_rhPa zPiWO7tL&A16^bd5#Ubys-Yn>z96TY;Ij0?9ogOiMv2xh4 zjgvM%m1Oy6B_yp+N}oMK?{h>W~O z?MUYNeT&ENgSYqsuskvt9=)LgL{fs<)wRC30gh(taT){wR0zq)3=)}vUD?pkYaOqw zvB*u4PIMDvOJs+HuWi6|WZt1uSNpGADvGW9{J%+_rjxWv={JWV+D$T|gve5W^7Idr zp<}Gb{ug?x%-i|Vf0$pf6nlvOpqlCsKip>gooMaNZD70fHRM`q_~4lE^c?rUz3soU zSrmq{(B0twQha9)fek(aS@R#QHf9Fla8BgbwRGp@U&$8PO^QQ6q`wL3)vY_7f6h2iUB)%pr;XvSDkb!?F3nE6<$285(cM}bm4H1 z@~eX#Rv~br=0EMcHuJQ+m|n;?Kq_hj?G^pu>d%y?kdZJABad?`6@n(K37iy(;ISuV z4p0r$A2{@=33wHn{V_6lIwSP)pqtKO zRA4SlhJqo-X05mO^}aa>=2~X@28~`wo_*f^1zB{h2g%M8j8{qB+{|gAUt9>kZxn5| zE1B!nOJSPg+0r8upaC}B^7gxT#{FyzrSA7C-ZbJje2TN*40m)(p5vhwzDTf+PC3<` z!+uH;v}d&zCdqXely9DcSG`%!o5;Ep7Cco|uGh*(6E0cxu}aa-2d70ctwHV+`((G4 zhBrY^m7_jcOTdx~*|R5I1LMQ)MP=brn!nwJr1#4$@Xbb~+ z?Mcs^MVH$?FYYW*c>-8>x*f}{8_uG;qX9yYvs*;!&oK=29up<=(KE~|F6g(ZnOsu= z78c|70!Pvj7vk@36?h5c5&F*`tAN8Mxa%>WB}8QjbVZ}v8tf@pEq0k-nC^Wr^(?H- z+|l9HEi<5IAQ^a*Dl{RttVG!UxR117ldhV^63^nhu%APpn;_{sFa-p*Pa~9YotOIY^&Uu zZR~+}RB(q=$Y$f4 zF&d6i)$dN=Yu>y9=j%wGQm+2OB)o~2MxWGZp4;4Ct~xlh@se~jN)Kfvza9Tr6keqHp zX>2(Bsy8dQba9(7AYlVh3svKQiY80_z?c+BR}z0&lZl$E@!7YY_$=()Q=x}yJ3fOZ zQ$dwMl%Fi4FEfG{Og+vi3q?yUPaqqgN#9P}&$~DozV=?cQ@Azw;Q|VS z1HuSfo@+?}ruXn$abrDHp(I* z2;Xeu+AXYwq-W>_*4fvm(F(hL#?3d%J*;iw^Et=iHf-q4uIqg&ILvYz@6mF><8?<1 z-D>wvb>$ad9!2#~`F#7zsml6^Ea$4%Luc57dEPUFVuUiiK|wM*oyemSh4 z>*$sohK<**c0>S$I3+v!ufHaBb)0|vaeYxsB6=2J^ebOBR}1X8RzqtO;Y0b~c|(BzO0a9aV-HT1Dj{_Y$$!DX`eL zirlrb3h!dw_H*w7&*XpS4oXEv?mT^psiY`P_w3nY@q@3dgjEi{ZemA2SmYWu;Zk>lA(ihG0@cBrP14s zi+=0>I=SJktFDR7;vPI4$M577hD1_-mBg{&Jw&dQR#tT)lFNHCg$Nsd?RnF??t4hE zG_LctAMI{0XpQVgUmTRbb5PEDVvQ?$P5#H{uXo`+<>EB4RIykNJM3^yA;s1h zDm=3fHn?9GVwJu^sAZ7ICuaD2YK;OhoXX0?i&$7t=QRSQmG9PlxgzKv4{)&CADSXO zULIl3Y>&4vPOTNn@+}iHX2Y9GOSe;$_+j*VqJ898&PlvaH^g*r@)!SiVWx6R`ln^e z<~Mg1uM>YC@9mg{^FedU%;`-`Q^8C^uaU`QJlR=(#nCFW3>@YuenS9M{P(V|HLZ6G zAtL(s_q`r%^L2}?z9%lXhi3CKDXMvpIf=!#_9aXk zgnj5(sKERF-&_FDEprXl!sh*5>3wC1DNdmOyAL3Or)cKicy$l5bD^gl+iH5WwQ(vX zZ6lO5N=55dYr33tBrYGSw#=WsIhybDk9&(>%Ydwio-Si>ia&c61pRGbs_nRPio#It zo9O}*T;fO5{xEjAcD{3YTE6two`~V%pf&PbzHR;f?#mYqW4GtAjTy+nwmC~QwNzVx zZWhQUPOH{VPy|wIOou>(+hrg@(mT{^^~Le|QM9--YqPkw(LSc2qDblPfZ|0UEc5h?%E+vrEZN(J5-J*;+1 ziuOVp&A(X(~abJ>Moh?&kNx2+Ty%_C{=_6;95Bg zm^5(NZ*^zb5NUfQ#%f}-`|6=*COf(-KTpTIi_OA|)%3tA2AtRB@Ah7%P$K{A{ma6} z)}E)-Dgg+Sn86G$)aV(;ha7Ae%yG<;+iku4)N^B~H09J;l;hCXA=)0f16${0pP!{E)9MY5ool&Gw^!*$nBceMlzutQ;wX}e(qHpYZ`wOZ zD}xVT5mz1rM~h4?*_RM-Md;(t*ErIw7+DtozX%kNEkEV1JVBg1xrGEHjUpy=4->x$ zcIC%N!FfH#b!r|YEsr-gZf^8l3-yPZ7kJpy^GxD3Mrvg`Yj$0vA<*b`UKc_=HoV*R|YjvBMMo-*<($-i9xH| zn`EaMJG^w1h8gZ)bvJ{WGQ_%*%5w`-Pba20tq?1+fi4u#G`ch2;~_W4B7SvvpG8^G zjR~08_|;UCP4?~vvp2Z6aq9ka1yZoq58<;g`K=o)=iN0YK`ei-an0KSTak`3kgq|w zj={=%5Wiw7dM?fnTd}fZx?H)`Ev~mg9UqLobECCzaju(_CQ~B&eUBRoYE#Od$1Fqp zu2L4IimTK3X<28mkg0L$W#)#@IB}D!T~GIGCPKWZ$KFbhYcPS91jI6$AoOd+&OM!8 z{yxU;8gdzHTw0utQu?ia*S}=Z9-X!J+=UEHdZ0F3!rZh$syalMegWl`CuNFw1FHGd zT1f}`L_X_&^$S{beZ}HBOTBkx^EF1;fltL7l(sYdIUyjwJyMXzHQy50_|u6cfsXGD zp6~w5wAU&DC<%Ew{!tGDJpXsSvVYVMGnf;9PuXh$Q}G||9``#CqMjG`9f$7FCh`FtC~x0 z^i0htuSk9$6hTeT?|s9eSN-KjZ4N1B({K1IzSLd12x2w6eUjg53y%=V ztZs-W|6hFH-Zxs3GS&?Jdv!# zO+%wtkTvD6tVt;!P~R(Z2*sVYd_N<4$NnTqF1|oT?sabnGimW#Z$`bon~ZTV2a@sK zZ{q>+y2T&paRD2@pPN0Ml6({rnBy8@7Y#NUlg_r=EfQsEs^U=LM0f2G zZFnjbZnf=MQpv4V~Dd1q;U*;bA0uS}}4$~-?z_!arpe~} zv)qLAlG35|3_pL#Hx4QEdW{}(Qg61l7pa|hE_)os)u;Ap@pUgxgX*{f>}95$s?OH; zVN*PYKEY@to2p|gdf^XT=`;p?>d1T!@+m*%_2`l2;}ntx*5dFOdbH}xK360n8TQ*v z)L1S4{MlZ(g}naz{rgRW<0syHs855H91b%7`aul|V41P?yuUgqJ&D=nUN|g?u zwsA09G{K9!!HxJQzJxsxIG@0H+H8Ras95)cI0Gj!zS!<~hRf5m??Pf6y!WdHcdaWfh6 zUap#LXf8uVSUZa?8P#@J2~0yZR*tj%-pVVtKFh4Mv+~@=luU&pak~1&}Bx2o>61J&uO7nSUadWji0ftb|IgaoU7akNS1p5u9n2uw^&Z2bJXQ2+f-in4pq zS`&0{exIQAiqHS@+T(H@dgY?j;`a5Ma9fZ%nuGH>vyP{2>|R?H2Im>$?Mbl+vS+;r z9DnZFhtqrb)VmTVZM3oGjgxkrlQs?W8l8b16}L zBp=W0X;nb#<(^raEM>SZULXzNezACm?_PH}9F|ow@;Y53C1|%o8eGU7(t{XztbLtt z+{rm8wD+jTl-{sPukwRnHmrlNcD$~Sq0$cwPG38A+P1GK7 zQ*$4t3{GDu~V(OCP`xS;@L4j^fPF@+P5F%jo5Pw z8Et@@UXQJFjQ1rliPu|MH_F-&Dwe<0oXLv}o11nKPPb#1pVyl-csAh79`^1u3QRQ? z(qBN#=Nx;WxCd@?X}lJI*><&%2QM|m>pX0US= z5o_;mvg_(?&TtxI((-l{pBV+q45B>_>u~3C?#>3WYjNlOcbO6iu{%S;K^3b^?Y)9q zC0;@+O@!+y=61Uq=?mBTKG#1KXo&Pde=(A@y8;nK;(V>~c>zYML~a$kVq61$7SRWJ z^KUv}{4W?r-(#57CO&KNFpGWFQNlXN>e52EOa)y zZ2oVowZu*6+F}$f-m3U*x9xcW;*!bQ0-GpyF!}$bcFqln^01MH^Cd`53#^U%maCa2 zMeWtskF4>z{73CHssM0t^uqIBT>PZ*2N&l{%hd(A@-?DB>ZJR6hFF{L!f=VTbgaN^ zS=JMa*=6#YoXJJB=ob`0_Kc@?m9qkcL~B(ndG?${>c4_=MjiBfI!2xMvbAP)%0_on zv{5~%4hIYQ;)_)*6o(lU%x|Wegb7P|8jV=9K_M(r>fOox=d3EWuV~5mmDDN7Ot{f= z-aa|R_d5XEh|#2NyMy1w^d4K~VVk5+=%vP?{;Zt$LP?DhuP%DSw@~bL_7_SJvnk|U z?FA|kP9b7K@7>V4CTijJxdfGX+-&k~sDeh(CHM<#PWK0@QMCg{Ju^C0Kv#_|e@l<6 zG%xOhDn@F9*^QL?RKq~ukAoV4s|E#HJ<4u0&k~fkGsJ`QCS=U@v{&^SSucI8Zh3{& zHJL4uQv(L5p$=hy8k&`5rT=Uo;^;?rZ9r9J@zY<8+69kNqsr(vs4}tjNXj@nAm!Ef8V_# zNux4v-D>E1O~&wopSRY}!pu{VGjcR*cyD1$IwU#EfYz;&MX=>MbL!>2_gwdW=UuKs zC=tZ;*S#23T-Mr9OrBWQgCyDq_Iu3{ir#Z<-kgUpAUDGnI>>%(9_>5^ogO0RBsb)j z`6l=1%{*`qVqaB{LRFPC2Sf}M`}HzcK@OWrl& zf6!Gi3pw&1boFci-w$7sP9R~dz8FsyDCv52hY+O4%e`vTYHdHz! zDa+tqA5%-nP(o`ZZb;mO0A4MxXZohN`+O6*B%njUR`{xbc8HmK76xwcfa zd(+s~B~sSoGE-w+RH5lFJ>xZ@uh&mFN!Ab{BWr1)L>Z?m{Je4w;X@I%cyYpCf12{u zb}Z2iv5go6Iip0CUP%$^c^pcH&YRv%{* ziXwZ}$DYbH#j*P+W>EdyciG@3K0od!0q?CB>Nnfp+ zLALmlk{UZcK>T;ZW<12c^-+BkZWwLkm$PlN;_?}`(&sP&-zslP-)lp;U-pfB^z$D` z#d&FJO&1@%aFMeORn~`1Sgb0$S)DlUmXW+Bv>{gmtz=Z`nS9*I!YdZCE+P@V6r~kA z%2#DCyt|lunLltwb?#BHwaH6b;)XumzO_}ip*%6xRH{7xa@aqaa4C60lGVgQB#>5N za{QcQK{-@{O8uUD^@;e>mi2Mai$V$Vk7oR2$G&+f^f1|69BQ$vR1>wh@%WZfxEUod z?eAvfze4h@3u>nBVlq%nq~pfzn5nHuJ0d73=GL|pI632JVneH;xqo{?Kz3h-w$BoW z`m0y}`qm|29dv)C(3z|uIEUc>P_ZrcQ=XBiEA%`rwDFQ>=WmW1P$fNSJP7n~pKocS zxQ*B$=hVN!6#zem54zDLlOB^8@T9Krz6sE;^!w$e-fZM4Bwt$FHp2DIh|~Fn8>p{v zDmPvCMp946`L0}S&g|8Pp(Pbv=<2szox!QPl=E(0c~EFg`u)h+XQeiABfCb69HZJ& z#OL8kVB}EL$D1Pak zuBs9c5ZtvbQ7vV|!gU;CyStYxF0h`;=26Igm7^|*ETBCxPvNCTe*8%ZT;Al=_K&_Q zu)z8^j$UFE?C#$7S9`4R|F7u*|2<$2EV!1yoa)teTxyyQj zcA1;zKS(V6P+c$bLXCc-XSJ1+AY~h>_G)P6>e;kW&xs(AKs;TR{g>6npy;JCPpFIn zbXV7tj4WJT;~Ng{KSm!I4&NxT9@?riK2a;g*>Wa&R}F}`%T&MIDwu*Y28=cA74*9E zBYo40?)%lJzkn9$5&C~QM{Z1?_3tPKJuO$f6SIkydH=;@p$Ri_eZ*>U%KfA}dsV6i5ZGRF1?Xck4Ir9kZ>2Rv1?8;shb#Xp zl4cK^ssuGKcvq;;;+MtlT&HR*i;d1Z$j{Qa#AW&G>;#BXsDfq3IThE$2M^gNsA_)| zszY4%7p%+bO}=KrU86=-BL`T<=f*Io`>gwyPIafnu!CRxjo#mzl-MZ@NHJQBIyo`j zuNeI=g|xekZ|0oZJDlG!0nxN598eqHJj%(DMvf}l$v&fgs@$61+Bk^}T(z-L_PKnvy z;iL4tR?q!0tvfiJboVyUx&Cr6ZQ26|OV>`LqB4rZpbnNV!0T+W%wN&gG47WV>`i9p zMtpur|8K=Tup0&yzF?b%9~&U(dv8hkUv`RYH0}sP6P2(7&w`b>3E=#p9|Y=IK8iK) zODW23J`FZy&#&6_4)IMrh_u-qt0W^xs*q9V#oXk>7~!7@lZ$3`L@+Owv1iLVqq45S zs~9gN`)ps0&ns-d{3K%iUV|Bv z-&>j7%KY0*jZgD83T}PU9m?esiXHPv!YPl0j&x*+>ePSr)>BQ#Xe_you`T#bB+Z)F z-ggmNE{qlO_rYHi>=r0tpYAK9&p=0n}NIw%O3o!rX z`Fn1A{|^HPgJvo$xgt@f+e2+U0Y*lTpmX}JoUNYQ;A2gw{*)I#y+eKn@L#HGda@g% z@Y1AlIad~}8*}P1 zb^-@A4w1#STS-j0!m1Z%yIINNi~X2Boes&so%c@+S;!n08Q5k$TCc&B8!8S&YLAWT zx1}l#>Lq8l<69$xJ-T@;ADGs!Cy}{bNn$a7i3qiLa)4OdyYx;RgM3dGBPlCK8*8QBTOC=M`(RdHal}z za89Q-&iPU_6^PI?siHOs$rJes5##vh;^dlTY( zBdoeKO7^(6D$XMY--$tAqCP6fn*LP(6^+U`O=A2*;2up-F3yFPBv!U840~FcziSA8RG{G>woG|;;bjw+uWuKjSFtIve zDh0zx^mg3n<sGR7XlDp)w9ZXQmgPgry;Jg*~z3a5HXmf6an>~m4F0B>N3JRQlH z=-ZCl1V`pXe7RJ9){{<2GRp?9Xsfc@jS_0_F14|GN+-?Eo+3H!^5X8NdPx8q-t>8@ z=x_xfB-CpXyLKY*@MbdDgceIFY&)xHGUGM1FP`yA{_;$ zA3y0_`lHHnQB4)cmA0C8F61Rkna>OTsya8OC5rb5rS#M-bJ;lO<=k z-vgpj0f^e1a;6fB*?Euc%(nCWbwy?aNnXJ#cuRj%imm(1+(W<&iXgUTFUPH;7%M= zGLG%f%8=`U_)n}f--bmLtFPX?l2*M)O0&64uHATDXfhH(k8b{k6=PB(i*KTfTI%q9 z{P^2hOkI|csDOY2S#_-w{sP4w)dvy<4~`jSZkmOEv^Lc;aOM-aZlhfKm)OE@67P9X=`UmKP#aasP0mW*oJQRd!i54H96 zLlT)Se#>nBxmL?m4DIhZ92S%R9J%Qk8Q%Zr$j=n(e@^oJSK|C%$9LFk9Ds=YtmTp5 zVRQHI@@HIAvgw&3?O^-1Vc_&*!_3UBpKH_vbHVfv*-S3`mSE;)>iG23U{I{S6i93VK@UiCE%nA zK}?-0HS=gFm+v9# z7)dHcTix;GM;$cruP9qF^(;U*+b%B8GPO4(dD*l;(k4^O%0qIBF)Jm zPBO@=&BgsI&X&6|BV}Q|0O!Oq;@^c=RW6cO3SVj-&*mOxa$ zM|H3Eb4UNk)x|tfkUgJ*S@@cmS7)2YgWAh|nsMazQtke{A*A6v=>YNfm^{yMCk32+ z+Th{}?E0CqgvYh2;c!~kb-vy0(Tn~`b{jdd|1HEiX#5po10_>CoZdpLKTZKjVBWr; z9@FVb+617K63FJ1eoR-|!?trF!(<>6_t<2+Z1#6FC`xVDxLYFM$3mUg+MG41PEzCS zH8)V0w@|}Exs`pKW8*Y3>T~>-alR{Wadq*wVtGa98A|584y$cfMQibkeF@6c$$xWH z^U6Q__^RL}DqTPwxL!hRpWX3gSz})ya7v)>;b@f3xt#97qpe+QpcI-xVho~rfb%I6 zgDjk)rhklB2wD6dhN*h_IL&F^Z;8AbC7)Er$Y_H_xAngx2+Wu`@MUpwnHMQ(7c z9tTF3#tOIYr}xvv7S@W-J0W*Gk@{cJeZkKUnWx78lX(_j^AO2atgqKJ zDoM@@B_ej-kH&QWqq6?2om}kZ+hj9FzppTcSP|ov1>jB|+F<4q5vs1d&6LQObGaB} z%R_f$;txuiQZx%UvyPT@BV*)^rm^U17g%=l_lsH|ILobXChD#EvPvgl-!;{e#KEw}Xbm#r!@64hqJ+o73(R%K z(~^Te=S6ZqT;{9oc|=t~7+Ef-WFxxXBWQTmcNOww5juZjM=QakZIZT9{{?r9xw z?}IP&%XaU*2BfuanalC0={} zbDd!#@Ht5x13Eb{{SR-{Uqprwi5RSPPQQZyQ@8kQ`G5+nNJ`ep+q0=82D^ohbxoIJ`L@s0VKNf9MW zcZBYyp;YJB=1lo1dh~_voQ|bAfKy)KZ=}kM|1VNCR#0lgE_!t zBwvuBx%G-gX8AatFQSYn zCJ!Qeo912m?V^@HA$$~*vOuHbDcnwqJM%BR}UXK_+Ceg zZmFr4jUhHHr1HpG+m1E4^uYYDm;aE|p%o@%yN-XyvS)xzz%DUp{JiVMZnh_1PreGHci z+(`c`H$Xr!T$%fukp5y`^yZG;{J0^178~%<5xy))s-h6&jz9Dy8fim=RiwElc{BHdKw_=Rsj+Txqv03~lKz5c(a zj4CgltYx}1ueaI}veswrBzjRSG`MbU4=hdES(htC5wk}Np>T=&k6IV#F6lJ;8aKui z9-sc2y`DPL$IrN_CAl4+)0Y6Su3UdV|Dx}JJ!({qMg@}kz05b|J^IHWr-#B*mU5oQ zX0Er3u1U^Sf7i!`nU(Z#H$hB%CDc7)>2)^QsCJ*xl%B$(QkaPHd!=m)7#F+GCx)l^ z?ca|^mAW0RF{4RuI+$)uRle1*A*Q#^eYLxL;oPDFx|M@_QL{Wf(B%9oarn-na7k%6 zS+MBj_j%jdpD*auSnX>pJfR-BV|?Lx!6*C^!ACa@@50U%$t&_hyjmvh4mwwU1m1d` zDjKESl}D}mD3wxgzM^wLAkcVO;lFP@ zKDn2tc?-&F0Bw3RcS9*hPkv<&~2eBSJa?TsF$~Q_=8?rD#~UT#J2#l zRM7s9yp8&DFy(n(aKeBl{IX#q3YRnv(@^DV_|Zs-pHODpze1Ox*k@rs?4t+kS}p>C zDqoWIq778IOfx&iRzB6%)QSO71x-5cxii}DSdDPwu3DY@^FI4Kb|7!Qyjrn^NWI@c0j*OAS$(He5B_Y=9@4$8NPvcW8wh(!{ z(Phjf?PIuAZgrQfso-)?C@;OX`DttU0pP~u%h|H1I`HoFu?N~?8Izi!+f#F7UsPAK zeJBe?>gHgYoMFpF0;#aD5fl}i2`E2=1H+QU-Sdp=%*a#(&YC;EV9Vo#89Cp~1D>R|_AZp6=xwDS^qBSY7kPO3oPraz9;kHB$HH07g? zK+ad+lHaPjI748}Izy>d`01_22Km(1fKXm&yo>YqC5Lt-&uQ)>GrCf%P?T2hykQrW zm_G|$SSk58KrHpM02Nmn&t|OMG$%+S)4qy^$=GyQs?KduD%8N;)hzrny%aTY>QCFW z9@=~*_yuz}3)_iZzb3U}R|#0Wsz8c`2;GeqUV$O=BRJURjuB}eXsJDZ&kw!O;!Ni^O6dGqNa_I34f zGaDh&w2j(brNa_prJ|x!_A&-SHoDlWfk zE_0$2zRLSv|Bro~O=XjhemBtJT3qRpQDTUzVE8+^VEsHnw}Jk1ytz%YK60-r5W9la zK1B)23rwM70a|p`>;&FBBF>8quVj3UV=o(e_UY5@eRCV4N}mhG4cs{m)@KS=Dz2z%^52N^kpth0l@b2#9Z-wh*%=?|l_x zm`A*LGx{tHu_azi@GnN%dgbHR-i1xMGJNAh_VOVl1k;uiLNm$8gxkpOe!MJaTg@m> zB3^t=MedaoK&A@j2B1(!y^ znL~d^yW;2G=U~MOy9DEgw1<^iHLmpVAEC7uXL-`alQ+Ere`Z6lPRdO}pmyc`mS3L9 z?ubpCy5=ls{>seFlZH$)s?8ErzIeMyS*Mvu<6FhM7I0{p)@|Y^1(|FwV6|!OI_*B8 zU|n2(B6HmNX10}$4P$+OXWGy~M<*vrQto_2Ojz`YQvS1?xQQ|snU~SA@snc#F2Jyi zWc_@2%6!DOC;4maP;zBrd!`zw;BwgVW$Wsyg!+Z|Z9GOv6Q{!fivp3VCas4RBC6Gh z1yS|G6;vyjPAZHg=I21c#s0VihMzGUC0 znyQw?ZxHy$iEG%#YsY5Ew;-G5*M`mk1_|B%$e^0%z)L)?ZLG1;vgwfnoFaxCbgboT z)+THnH1btBOa9zqObQ(0X^j@jm0a&O*=3#7iTG`JAk^=cE}Dw%!Xx5 z#OU-@#ze$G{WZ5JX1%uQJU4fHrzNEys{GkDTKXW2yDb4*R~J zx$yFmy&4aB7kX)G+dgd552;@9c5*@H)Bx8iQdDgqAj&1%Y{|;|bpO>`R`%mM9*~Ca z09@$J&&Ny^Rkn&pU4GIsJ9_s}1h~UNt7g-Z$C4gTk~Wt`h6CJRO>%c-S77?;+iM+8 z;k%aU2PKH5q9DHN^Rt?5HKvz;VXc&hJMWRR^>Db*^yBxos@!7-<&4da8r}##*4vAs z!R|F6PoI7kBo@ekp`JISMxt5X_u>r{1y~g)b3WkTA$L|2pQ`caw^wM%H8yW6+I-++ zXXH!!Wf+=q7ZvbP+Agm0iK7`WM*#1ZYe=Y|W49mrIlH-l0KlR&`96D`$Sn~e-w9C4 z1u&92L_3)$^rq)^jtNMZf^{AmKMDYVs%A=z@5v-(X?C4&3haPNlk&N!M=oDXisXN= zYRbz@Cl#V_vw0+1j6+*7P|qAIG~HTd$FMXIfupQC?0Qj1+W6KlnHNAqwNEi5y-4e` z6Ho$j19ZLTK`9Lk-X;I66 z?dNUdhegvIk_fD8=48US%wdtl$W&fZnNq|~`P{}`J-qlau1J8EHvF1T(3o}OR-!2w zY{<1VBt=pWJX~CDtR$f;7JPvwFankI%nCG`ifuGIW(C~AW?~54oGrYg(1J?JT5dU> z`Ki!St5Y%fYFW;lbRMX3jtLTb10r`148GqXye@erJ9frq#*Y8`z<2&nx$!7j|Ez$* zh@?~GNVGaaN1CDS2k(N2h=_>Xof&rph=_=YCJh59A|fK9 zkQhJ_5fKrE!~lwjh=?d822eyqL_{GmfFdFyA`0nTm^Z)t>Wc%fKmXVLkyeI?h=^zs z1X_W5`PCO4!4m)^pE?NrujiTXaOKtmym{*Z-n{i+JU6l?(W7prsA5j)j;Zu6GUaiW zKk5AYZ@lB{N3Z{EZrt_gJ8k{tU7zFczth$qC+*R0|7d?d4_Sfg;>E((c;T7;PqyE4 z22W9$LDbnFFXG>Syx70+bQezq%;WH2YGm~ZW9sZtKwdk@lrE#8 zjuX>4zQqo%uIykzGXB%HO5!GXdh0jvB(~d3gX^>&h}ZacabT73sh1_m)+8PmmhC@f|MU}eErh4+Q%)C-VR(R(sn!?7sS#}p`bTC`BedSgyzvLbD0}$q{iBJ2?RW_ae4St~* zY>Ts>e-c~sqMoPNMh55lt5Rk;N)oN|E@qJQ?prm17W#+UTk>UWiE6Kp0-e_~0s!ko z>{WiO@$s#PcY5FU`HX+i{)yE70ObRN0en+Vp;dPFzqWAwC7J`ugIUjEImBd7iJvwuWR+YNT++eP#-igVZDVK>Gd zsc~**jb3H^@O||E7k&(PV`VgI3LEpO6DY`ySHPx!n}=oFAua7-P8|B?;X<`fUt!1u z&0kHRg#$E8mimibq}3sJe5olk6xFf4=`bXH|DbUPv(+8U!6%4{Q@%sofZ9L3d;5Zo zf1v(})PA4xjWbJW5x__eeVd=Z0|4et2!5Ym|Nd>s#u=~jL$qRyrT=fTFD^yQnuzFh zYN?4K%lapm-j$j}Q|(~ZXWOi$_P>qKS|2%JOkgv{ZQyBXC*CuajQpEQ((&`Ts)_~s zN`#t3Q|%&CG=JVjM(PZ%Xjn9rVcRQK-sypJXn9W5dS6B_-zMPrj4u7~_PLIK!1Sij z?e{G|iKfyW*czOX+DI!GBL*oQJ;1Yn{@jG<-7=C1pm!#zk|!zP6@o4(67JQH=bK;N(v3hc}x9FuYLCP&N~dDOgjz% zyQdFUevtMJAD_7C{o3a@{=xdEe=ThL{mM7ae_7iX>i-RA{lh&6D%|*(b)Bnr(1`G; zgsJWA?W6tueeCV+VSRla?|<-axEw;d@VNfVEctl!Exb6}7USB&J35T9g?C}{w(!oM zoxCl)qaPzDjb&_Gcrmu&&ct{?>)~PaI!D>U8x}y(DUy4L1t~H7Huli;2{m~=;4 z{sel|+aJS;KgMA1@fNNWcJcMf8W_1OR=$h zkNwDL|F-pMjFOLkvP>k$6lqZ?44fu}G9BrGi$9t2$L+(!89H?(D;p4kqyjggF z7mOc$b@%xbuLe<6-Ogwy=I+3DeS~k&BQyBt7aT^mO+`dB`A&QbkBEqfXwvaXsPK^IiZ>m5z(WJhXja-h=@XB07XPZL=+MOC^~l8LKVw-^T8e>t}a<$6A=+j z9-e_ZCfPz2SG5vu)JF0=`;j}%^%L@CM}SpdoySUjOcf#`BC;7CK#9M_ocI76%7YWG z4v|i)ozCEnh=>Sq3!v0{`0}MUF!%d=`0%59Xot>L#MPxT@`CwV!OHat1{M&qMcgU$ z|47r|gqg$Q?IN3bF+Wf@6%V z{SRn0w+zj;oZJ`@5fR1ZvW52@zWC@Je3yG0e~>QWGx?KHe^^<_7m?R0xOUTJLe3U( zry!zsbKaQnt@Hp%sFiT7rox753lx(4htQqhK5|)=FXse}OUuFws zOZ$!f%jv1 z75}WO5Cq$yWY_Y?Z?Nqy_19$FFak!cu0Rt+=nFbIyp{#(bt5>`6x20X(&zA6R>4Xy z*i^AuQy^q>5D-KTi?^$|WB<1#_0wxIHtS|vA|vN7H?O3ultjv2tfce&11zuQ!y;I3d+0u0E|_g ze!yYdUh=yhI)A{PSgR}jKG0;`xNg2sp=m%qn*-_!Amor0RMhK6`veh!5d;lpC~&hDFobNBqAa@0iFSrn0p(qix2Rb{MS%hcz}Lp z=NbTgrJ;;vm_dvl0C=v37^^Ls?e%EN4?vS~hWLwRPbDn6}`6@WhX~m`0j5A(KMW~*2)mP~9VLt#wL`28PHGmRxZ{zjU zJ$xufIYe${518}`ak)@LcG$#OS5QaMa;C}L@+(CQ2m%Cb$3W9mecP-yJm~1HzzGr- z^P*z~%9XiA<`#5l3hG)Ji-nx$ij8~yVy-}GDl|yOHlrRKE@p=xBJZsfE=lgenbALW zu09bF(JA8k7=zdG2{t~8@)!f>9ayMW1`Y{pwGwWijAhF&;by!sZ=;ynZ3su|!04S){LaeZ8GB)c~#}-|`|5R+=ECEa9-U`*= zb-((>rJsMgW45ne!Ht@PMVEKiS4*fZm9cy~XWT_-A3xRQW&c@0000>IJA@!bApsHy?ry;$cyM=j*MhIo-P5aQ z&CIuErhe3__1>#@?VNq~-uFg*P*cD}BSV9OgTqvOFZ&S=?v)|z_c{s^>^qbnlNSz- z22N2{O3OR*I4dBL+&XJl@=vSJhIihbTzoKvVWvk$(%JXkNx`)kRIH=0@Oru;2zqsSX;CxJ2BJaf%Gf-v zeFghLj)-e0g%c`33t~k9jWaxmI=-v8=%w~t06p9fh>AJ})1c6R76}B8j%pF>e4ci* z>fhmnQs8~WL6EY+f71wigQGNpE)GJjYUCOkh^9758x5H0l7Orph|ZI2cXj8o;W2Gr zdo1su2dS@P6|l03fFjE-W|Y- zIs^S+-W>D=k3QiUo)&phkC;zFDne9VnK44=-s#RHG`+*aVv~bPT{;DA1;gk#={aM5 zGw0r!6V4EXziZUIiXQqn$$MY@ z@PNjZa$AqZb0F0IE)%@3u?PT&p6<<^Cb;crDyp@oZ*Qf^-)|^b327>TCr3F0fm7>J z4WEAzRPFopDYt($>slA`>F1$h%ziXerF^579(Z#LdD!%EQ0~wj>Dh0IoHHNh#|AU~5nP z#caT~3vp0ksM9`G9!k5->WB}^BugSouK2zTc+>wZTcw;p5&Eu1#Y zjQ-O4;&4L~>lgj0b`)^$Ev6=9xT>!4<0hjrF~AHk_c0T?Uh%Ix)EjA>sS-)b9{UR8{BJQPbm7VlK<8E1c7vIlki*f+8S(D7Y5B z?#26s2Puu4%E(PDx8sMmyY~acg^k7WJcU^XC%FsRMKim1O z&$H*@5>aAF`Rz9yJTW2QJAWP6uXCA&H$$er%PY}CdOM8sUO+P7XO{nYL|ct_Tq#lg z#NNp1l>ECDKK#F!XtcI|!?3ZA1{!CorUK#*7}S7h_(0zOL`tzGZP&ZAbu|bLicx|Y ziT}Q`$w4itQ3whUf9W~fPs9;KGtu9Q0Q@(s zr_!G9DYidNcWkqoKt=HqvX5$oQ@G#U`Ahhr=R&ku@r(2eZ9^irj+xChliDPtE#sK2 z3#EF9JAanE)KTS+GX=eLJZFQ!q;L|C^J5o)j%$Di_2UEi(4n2ZU20d@uj6h0muK7(XU`9R zzLgiI#poQbOI+-2I*{3|BJ8NjK)kmm`e#d_BWXaZp;UH5*Fk!R<>r*!T-t|+hq+o? ze5ZgzzlRg(&9c~5cy z8XPTQeZIQA^-@TenuxSxNaESBmVJXWk~l~=u0px26=jw8lgTCuBTBoehoQOX%b>-8 ztaj}CV}QTrEH?pSFCW(j4Zuzm@#3cg5u`Gb{7NFRr?YOjC*YRXtGg4gj-i186qDz} zj)U*|l)3APUFMAH+(JT;{fD_@ll{p>)a#uxsSd`aIyyQ7RyD1#Fm1eyuWDWp_jQOb zTddzW_dfG&^KLU{wN7643^I{qohL*>M)o<{Vg@#!H-{qw;$}_!vf5c6_NezF*enJ& zuD$gQjNd>;b{sEme84$5*1PeJ?8ia;Oa`D>E5Dj(`8T<_rlusOBoh9f;?oEjGt`Kx zHBe1$Ik|qe#qw>l10A_MQq0~d$gzJ)J<2kO5#1y{5Dal@CjI<)+L5E~zk!cgn@Cq5 zg!QsTXCCOK5eu!d2%PQk`Z8F>R|Vz%GV0rjilu^ZC^Tcz68n8RPy?byo=gvYyj2rm zXk?@g0tI)zYNY~Th*QBS+tj3vm$Ow=wzfJ1s6myFtp=-GEhuMaXBFzlh=f}>#nyV2 zXCRiQ&YzPLBs=2-4HqNtwVNIeN}9aS-@rrR*(%tQN38Y_Pt9#@quBJt^s$W-(t?9u zAt5z0mwv+=p&OT>b(eWtEUiINhX)Jz@8++6YVb_x%xe}n$w_g0U}&<|*^V6HG>19N zd<02CHxt~p%nnbuQk0TLtnOpR?4Blq>^6{vNzH>W7_cb5=_yTq&S~=rR^t^E9eO4~ z3@-I%`@U-h7C-U&I^SQI_4=?sC)=EZk`0PmIdt0`NOOS2{Ir(TkCt6HOJ9$bYh+;X z3D(nXOXb=F7z0bC=%_Y4OMRuh)rN?Dhnyg$FM%_%>cZ$YMh$ z`z_D*n}UN`oyfb{5gyN4yxpU4r66?sxc<%cnZtUwL($c>(M3xM7hSxHBXjH`J7ikSc*%y->`Y6%J!q8p=Dqn!_9_zL3HcPnqH!XL%e$y(JXso z!-^~Z5Nj&U4)F5Q`1m*45NrKAt1@=T$e+(4_RD>{V%w$cYpg@}H@elVsfAJfcv~r! zz_#rIB$1z^dyBV~wY5Ft<2b~`oYeu3p3;J=@Ar1d=j-f=t+PeD)q`#{js33qQ&Uq7 zW=@N_J)}qXb(Lz@mgV`!WjyuO^t80<7U1a*1(qY{9LXA~oSB)ddIH}g8fe+?VHr>0 z(P?#?)dYW>Kx{Z-6T2!&GcYF*krF@;7Bt#Yg-WjX8C85n<^jiE-+Od4KZH**e?dU~ zdd)Gk-hZl|tTrnoko5+9Q`2pM~(%rTn ze&~I4uE}OayidJn?c)RP4U^;GFscQT>s0$pT$%dhU2nh;$Ix&%g2;8H6t=kEf~?%jMzEpw%o> zVDb=U(hCrOPbDqMAo9G7o2{v??&=~(FA?_FW^1kb_51hlj41Zcu5n+mSy9wV zk==MEmGm%&&?{=5`s_=eF0^?h{gOHYPS93LTXP^lyBU3So_gYV;@%I*!y_p%KN+G% zs3O|TJq_y@syydQ-BP78n$j=tK0TS6-z6|A&VE?Z?y&V78WB7TYQGJcrdr|BuV%k2 zD5J}ap6KHP}gujJ5_dJXRec8wR%B1H&r3we{Ozj%WspNAE6C%zEki(}n0 z8$VYmGJq{TUtC($5~JXyO7+p=AKp1{z$IhVmHL;~I7n6*Li23RfFKo>?{m~8&vy<+ zg^C@g?T>d`jFR)?+^f*S)Ag36elV}~-N@?QyI$W2Z0enx+ohUvV^M-o9oLN>RE+Mm z#Z{5v-rktjs>Ys;4f0Yp_G%k-%Cg==C$@@`({u}e=X2K`OAf=vUt#FPB975CrRdL( z0XgRV@stj$?ODf*4Q|^h@VX_P;wO?IbqcIkiwF}F^EDrX=WHX zzal}#QklDl?7WXx<#K^bOoS0Ef@aPFOHvAlOy<-7s^?Mvhdls5mV8>r7KJfXltVb&C9>9=1$+PN z5|izLq_3J48IX~w?Hnwpvv;=Wq4x;UW)i9U@UiTKN4F!;&3#q;>!n;eMd z>dnUbOw{D0xbKxs;Rr55E;255!zgO5OtT>W z8jG(EarOnPoxAy^{@6{Wp_`OqVC+8=T|`xLHhrVF%9Y<+h0huzr6o3>y>!bcXuQQ;LN|6Bas+9~x# zD~ZA@Jj;g~z!oQsIZ^QZfsLW@ldD+`ebV;Mmd9};`ucwMKNVe1gr0xBdaR_W()to* z8q@xJQ20wHH^bpigR=#=FLdU;=gS7$YES0L6eP-ciyb*oH@{0`Tb6xBA=}x8F%1@R z`D3Q&98((IK|AZy@0S$xiuAPLC3PMvL6e&$K|J;HsRHT_NqIIR8ogW2{BhI=PQ%7= zTXNqo>+3KjRVn{9u;|qn{LY6~#uu!o{oi>hDnC$nrhdp9Dbp2^@ch&^R)S$z;8RUa zoX>HI6+6{vO2U1-DisZv;LtO)s2rVH>|rn8VZJ&Hmh$rQ@^kf$fI`&+5*~IHCI)ad zFbZ!LQ3EJaT`idt42n zcTn3uKFA_++nT1+BMqA8HC9C{1wjs=w&z+8;6 zv?b%;7abXBJt+3G|lAk+=3E*1f zWiwiWD&vz#{*i$=orM1f_wV0m@eeccUl`STH@@9^)`k98Wrh;bf)=-r7V1hS8Bn^4 zg#sSj3sv_-=)TkZbszurhkxez|6?mCzzTEOvwQ!0_U{l?fnA4wnvEFK+P**Xr8FCt z>oH$%91dvx+i_H}YFq%(^;Qppk+su-xsb#<0$mvTcyX>f%XQ&N9v*c-=Dc06 z^jK=)*LI^NN`2yH2z^2)C&XRyh$18#h)FKa%RrKUCa?HrYnO|GUsFIv&`@LpRIee! z0&sD~8kP!$0(A}na@y|h@LV45e6z>?b@fXDI@N8seoFzmBK>uv9hDle%A!qx_`|xR zCzUvBP!AyNBoa|Wh2Uh~_6Fc5lAJOiKYEe3NyaN7pX&bS&ncBxW{j1Oy>DLbcR zLNQWg^KL`Gr#YU|t7QrWn~^xIw1U|I^;|qWT`+OHSnqgPYfCA!vySFren8tFLx^U8 zjjF@B$Wcly>m1gsQHwxYHmOq@Z(MJrC;1-ZKMeE#ZOZ&#XTaiNEuFnn3GbjlOSU~D z@3yCApQ%|JZOrTy5Bu1{BFhv*4b)SrV5xk7gsoJtr~6pH*z&k6RZeiXXq#w}V{`^^ zmRMp9jgyu3Nf7BcYh<-A2Z}th=oa#VT}MQS*qj8+oo#itHZDH~n&_QIuHCTkSKsLL zy_+S>17mFx4tH}{)lTk#^L zS;-M0;4WcCg7QdYi+xk-YMzUWKhamqN@-NSlxLpL;1y>6^5D?~if=~19v93e)SpB7 z+hED)g1ujL^vZ|l@&c|mvXRZz>z*u{K1EHMOzf0KrglZSlVetF}7Kxco-GQX$qhnP$BrLKVhl^F#_ z=>Gp!+^4Q#$Y(ta#)DxDj2*^YhF}6yw@?))RNLj@YX7fc_&*Wa|E3ii$eQuvTFCK% z5{xpk+U7(+MqH0Wu>SVl+Tn7F0FrcW(T7Ybak?HHnR%8T&ds)>P! zKNs{K_x?Cln8Z&C~)(Owt9qt!`pq7tBp+pk`odFwdr`y%;8D7*Pba^dSB(iV9 z=@}%b+n;oTW^`c+Fqcf$J&gd26khaE0N|~!`6hJ9v61Wg!@Njwf!Ts2oTs_0G?Ja| z!P3VmCe)GIQJK1SOn5C(;qSPej4Z6R!S(I7H*L=8RUP-_D*<~rg(uB1m!e+vHIE*0 zNsK#}!FjpNB1ow=JJnwxzLAMVc{7`4WD-|TYA89R^yY#VWJm?Y+JijyK8v#WHfZ1E zqhN&rmwi<}3MxA&oAT#;ZjZK5{Ii=06eHulP;2H2rAfBa=P0%ljUoJ%UAa^DJMDZz z1qPI|yfRP=pV;tQ>L;28O0faQb0NkqGu&nEJb7LVuE;x#DOh?;p~}I8FXA$>v^w2~ zI2>9T`lLz(&Wu4Vhq1^zt|`!m7NrS~alDl6naI%bl#SZW=v12Ah)5DUjg|r`X^2LVIf0eU_+? zt3xa~m2c$YhD&xU)H53!Y0F3zF@65XuOS98+LAotT!_D4ycMz^Lpg z!ziG7^U2P~tfAG&`u#T=Q~8x+jP*(83z3+FDh+l{p;PgEbLc)vT5;Y114Cn<9jsK^ z<=ycb3I4j7RyFGXfS&DtO-&_b6CbaF?k7QF@jL?{HPl-RkD%K4ZBdPHbtS~m{Hiz) zZ^R}Yml8iDlCp+AgSJ?&YU!!08P}!9gAxKg8{ivS&e=sM7L)I>_M1>M(;den&sM2QR?>WC9+PcU;&j!zKQ{lwNx5R#}t5N0`Gsf~&s=?-`>I^8JLHNpIai7iey z*+Rj1LxlueSH;#CIN#2@(b?&nduor`_RWdrPwpHjiV;`WcDXTE7mUGSUoAJsa*m?(2qVxrUEk@; z{@@NHJ>eNY-(nr&-Q|gfAdThFOiA^d9Jj4qo=2Ly?rz^0E+^%@w1((7$`WX$NVm@L zaTET~b0B~@a+>EwZMGSyg{^kv8E4M4lDE3r)6s7Jh`Gt`hR&}7UA9xi0&kb^p+l3l zz?gnHcU`H$GXGw{r^6BM-Ll#|+n@C|q~RI?JJL-=s*@rGf4ZA8Xv36XPV}F%ck%ux zzdo>Y^4s+m^YhlSsO#g*M3*a8UHWqk)bHl(I$mDFVQ{bw)K+PK;BlI&Ezk(Q+|Su_JFNo1uh1F)|6%3+w8LUP1Z_cZcuW!wETo7_d`ql5%^q;o39LjqA zCpjjN+Ee;(YJNVeG@4pFG1le7!21bn9!C|N(Cc@zsKAr!)urJuiho=XCOXA}gTr$E zdltaB@DPC*t>UFQ$<`dEg?Wsa8$WnMXX8}J@ey)$_YFG3HfDpe25PxsGB~N6$dD-z zI;#j=NN4kZiy~byehoT=U5F|bU_g=PoVW&||M>T-UW?N}wXcKRw`qX88W3>(Fl+V~OoCa4G$?y}?gM1~}{lihehr(Hl0x`8}Zt zLf5%jb;X`=bvUv$H~L!F&}p6-a}w%4S;gRp01w}`SEFQJ9rRg?a5_>8XU}z>DetFc zs@*U&b)0r`@lb>1H$h3%~$hR>tzQW7+6i1t@Uy`tW5l? z|H=fm`D)XZWfyR**Ja>S$0PMKtz4hI6gP7|2$`68Xok6ALGL9D-7shiMLkTq_0Q%! zs6`Ss^!TW)WECPjb$J!ckyxBR__7n+b*|`X3ejJr3|K>?mS!DU)-PqUzy*?Dy{eGL=T79m&~}}aluc~-EvDwCe1~MHr8jad zM$i77C4<*KBpmM?mxmt@^~cYwM4*A>JD{U(DfPF=v4}C|K1{PP8a|9S5|q8PE7$B& z%qWPyJl_-Z{~UGzf!=$x(l2M&u*iq2Je;?lU8ofpAJO;Ib&I8B;GXg)34MBKyXh9p zgK^$O$_{>qSEE1rssOYbZsB-GTw!^F1VbGB3zd(trc>T$42N0hDSP_Zg8h@HzQk!+ z;zJN}oC)QzoZV_zz8AI`vf5XK+mY$%`@OyM_pK@{v>Mpz>8$(&N!8V17|b)n<5qFL z@4hc>+y4H0sth58W8LA2}sv_p~=)1zR?IrzGzMeZP^!%~u8-kJ4d@a-02n%N`h7@IzPY$JUBJbF4T7J+5JSX2BFn_Jh@%~O}TglKB0NAVp zW^1NQ547A9i8cp9$W*`W#q(Vi@b-+$&PnUtmZEotEx^+0@7hLF5iieF%j^4*i}$I0 z+W+qTTvh>{_a?*~@vtQfM8LC&zU-IY*+5It7X+c#!D8I47tCvKqiVeuUE0Pj(RaMA zgLhgdJxzE1eVlAY4#TUibsuc~{&}IIicf6GR?|RU*W%cymm6^rE_UO-Odj0mKA%Qy zr@53+GOW9RzFm+!uQ?lyaz6lJn-2~{b2pkIwfA}~(*)dT;d zUfkSkLl_Ap(|d~o`tZ9McS+atXzj{lR@=xtm%=IVW*)P)Ih_V2%VN35dF*s)Fj>^= zVr!)>_UUQ&NWvr9XiQAgr3{g=MJ>lzTko$aiaQgxCL-M7##ngL6rp*$)J>=^Ia1DR zT^xO?U8oiXJLyxoQ>xtQaj}st-r8u5t^WK_QFC}@>nZ-o=H%Mz$f;gPI%?7Q;e@#k zX4%E)>DCY&{CMd?^vseNIq9eF_d20~d+~CJ-7W8E|6cC98gMM2jx)pG2Q!at@kRQY zZ=Hu=(=>e9Ni&8Vg3)n-){-5NI`jv|a_LdJM66}d%9GL4jQYUjz`a^h5RC(zKiV*-qW&ZvH(R|;hfE+wjEnqU)C7_+hBp+YMQfEM#!zPKrTHE`9Orblv??kH8qVD zg*>C(()7oqjywC|&h$$B#+CD8J*C+Od&Btd97FqlvAM)A(Ul9c=Mw!NSx$EG0(MhI zby;z9&giF&r~3sDV(t|+S#MQZ4!WB8!;pQCc6v8QS`bfB zvjDe-X=955#MKK;x6eppEG(JKZ<1QE`kLg`KXM0-Jb2eO^|?;Z-#BfIDELJ6A5)Z@xNFkb&s+|YHj zhViQ^-@E+rb@n0Eo9vg?F_D|m zEFDVq9FIUTc*}Z;$JP|qNAC0dc+ZpO@Uwkh3fOp{8b3bhOm*~6M-)0hf)m0~c87{7 zcd0b%s{HH{)`e$Wi8}g#;sb~ z-EyYikH8kg;cJN3D>2n4rk;f7ADe$}@lMI<4eQG^uq2w2Nv|uw_oI#!ttDe8pWq%? zo}gJy8%;sTgN#8TaO&L8@zn2DX|Ar}sUDpwIk$kK?A?27vIcvoE8h3Hmr+zodkI4!)wJQc?ty{95?*Mh^^t;P>Hjt3$fph9AiJm z+Ay`}k>IesBfg!gssudif?uZ0HUdJNk4QJXUKr-5f<~Q?PXnXxCRmI$S3hs3d%HRM zmAo8ZcTMZ!?2&`a$ME{i8_Z+W0>z+MqRWe-;0Ji@$sFHMt>+rv;iVv|hZV)U6Stm( z>;?(R8;tW3h53elanIYpx@seYa?iSb7G-fkt%Bj{f?0IkQ@TXaS$cEMSWf?2P70{F z^3%a*bBvXX-5;qD09UHRHml!`<@V*YPR+wRq~Fg?65~R=8_RxeRsjnikRXmf4}j;$ z92JKdZ9Nj_h@g&h_<{-n)Q;P3x!HibfLDDlw>4*h3bkkR5vc7! z!q0)LqNpzsB-t8k+21_uR~m|F)B+$!&lPX|$7V@i)(WFwA^sHFVIvzX`6TmYMIV&^ zViAP5wKh4cFEAFEewU4W_Jj>5Il21m_!&(@3T z3Xt|(D&*9Ux(2Gq#JgbYn->e+Ea^!mQ`_HhGDezQ_I8nA1*N}ZAL}4e^=X_hZc+6c z$PQF^0yx*urdc~6>|VsC%zRv1X7;`(VaxQQG&<~ZOKW){1itc|bz18xzo)mUY~4TA zibGmB%Tk5*?xF-fnk4z3jgn!PWjsamvDxweCeQHPCepjD;xBKKccdf>9y-n1NKWo;*`L($_a1&e*hA`LK6V%3J*4akVlCZWy}&B6Bc5x2D>pc!y!0`028w zwPayb6!x_rewLX1u}(CF=d{8v)2(UV@x2{TxeU)lnrPng4b;X58JBxhZkrRi2{tlts+Fo#e37p{>jYw8)K#b literal 0 HcmV?d00001 diff --git a/bsp/renesas/ra6m3-hmi-board/docs/picture/lvgl/05.png b/bsp/renesas/ra6m3-hmi-board/docs/picture/lvgl/05.png new file mode 100644 index 0000000000000000000000000000000000000000..9e6a7d7236fe245bc59cf88ee907de9379633d4e GIT binary patch literal 28365 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 F{{xdfk#zt7 literal 0 HcmV?d00001 diff --git a/bsp/renesas/ra6m3-hmi-board/docs/picture/lvgl/06.png b/bsp/renesas/ra6m3-hmi-board/docs/picture/lvgl/06.png new file mode 100644 index 0000000000000000000000000000000000000000..ff3b365b40c7884b68ebd419a2410f0c8cf82727 GIT binary patch literal 14866 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